From a1b7c5f19e7d37a02e4eae89d10b712c3a752c81 Mon Sep 17 00:00:00 2001 From: Mike Jerred Date: Tue, 6 Sep 2022 17:21:10 +0100 Subject: [PATCH] fix: strip extra fields out before creating snap.yaml (#7104) --- packages/app-builder-lib/src/targets/snap.ts | 12 ++++-- test/src/helpers/packTester.ts | 2 +- test/src/linux/snapTest.ts | 40 ++++++++++++++++---- 3 files changed, 42 insertions(+), 12 deletions(-) diff --git a/packages/app-builder-lib/src/targets/snap.ts b/packages/app-builder-lib/src/targets/snap.ts index 2f7dd22c7cf..8b455a93680 100644 --- a/packages/app-builder-lib/src/targets/snap.ts +++ b/packages/app-builder-lib/src/targets/snap.ts @@ -124,7 +124,6 @@ export default class SnapTarget extends Target { const archTriplet = archNameToTriplet(arch) appDescriptor.environment = { DISABLE_WAYLAND: options.allowNativeWayland ? "" : "1", - TMPDIR: "$XDG_RUNTIME_DIR", PATH: "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH", SNAP_DESKTOP_RUNTIME: "$SNAP/gnome-platform", LD_LIBRARY_PATH: [ @@ -175,9 +174,6 @@ export default class SnapTarget extends Target { }) const snap = await this.createDescriptor(arch) - if (this.isUseTemplateApp) { - delete snap.parts - } const stageDir = await createStageDirPath(this, packager, arch) const snapArch = toLinuxArchString(arch, "snap") @@ -210,6 +206,14 @@ export default class SnapTarget extends Target { args.push("--compression", snap.compression) } + if (this.isUseTemplateApp) { + // remove fields that are valid in snapcraft.yaml, but not snap.yaml + const fieldsToStrip = ["compression", "contact", "donation", "issues", "parts", "source-code", "website"] + for (const field of fieldsToStrip) { + delete snap[field] + } + } + if (packager.packagerOptions.effectiveOptionComputed != null && (await packager.packagerOptions.effectiveOptionComputed({ snap, desktopFile, args }))) { return } diff --git a/test/src/helpers/packTester.ts b/test/src/helpers/packTester.ts index 2712f060948..9aa2a509eff 100644 --- a/test/src/helpers/packTester.ts +++ b/test/src/helpers/packTester.ts @@ -27,7 +27,7 @@ if (process.env.TRAVIS !== "true") { } export const linuxDirTarget = Platform.LINUX.createTarget(DIR_TARGET) -export const snapTarget = Platform.LINUX.createTarget("snap") +export const snapTarget = Platform.LINUX.createTarget("snap", Arch.x64) export interface AssertPackOptions { readonly projectDirCreated?: (projectDir: string, tmpDir: TmpDir) => Promise diff --git a/test/src/linux/snapTest.ts b/test/src/linux/snapTest.ts index 9c0a2ba26a8..1d994bee1fc 100644 --- a/test/src/linux/snapTest.ts +++ b/test/src/linux/snapTest.ts @@ -40,7 +40,7 @@ test.ifAll.ifDevOrLinuxCi( test.ifAll.ifDevOrLinuxCi("default stagePackages", async () => { for (const p of [["default"], ["default", "custom"], ["custom", "default"], ["foo1", "default", "foo2"]]) { await assertPack("test-app-one", { - targets: Platform.LINUX.createTarget("snap"), + targets: snapTarget, config: { extraMetadata: { name: "sep", @@ -82,7 +82,7 @@ test.ifAll.ifDevOrLinuxCi( test.ifAll.ifDevOrLinuxCi("buildPackages", async () => { await assertPack("test-app-one", { - targets: Platform.LINUX.createTarget("snap"), + targets: snapTarget, config: { extraMetadata: { name: "sep", @@ -122,7 +122,7 @@ test.ifDevOrLinuxCi("plugs option", async () => { }, ]) { await assertPack("test-app-one", { - targets: Platform.LINUX.createTarget("snap"), + targets: snapTarget, config: { snap: { plugs: p, @@ -154,7 +154,7 @@ test.ifDevOrLinuxCi("slots option", async () => { ], ]) { await assertPack("test-app-one", { - targets: Platform.LINUX.createTarget("snap"), + targets: snapTarget, config: { extraMetadata: { name: "sep", @@ -175,7 +175,7 @@ test.ifDevOrLinuxCi("slots option", async () => { test.ifDevOrLinuxCi( "custom env", app({ - targets: Platform.LINUX.createTarget("snap"), + targets: snapTarget, config: { extraMetadata: { name: "sep", @@ -197,7 +197,7 @@ test.ifDevOrLinuxCi( test.ifDevOrLinuxCi( "custom after, no desktop", app({ - targets: Platform.LINUX.createTarget("snap"), + targets: snapTarget, config: { extraMetadata: { name: "sep", @@ -217,7 +217,7 @@ test.ifDevOrLinuxCi( test.ifDevOrLinuxCi( "no desktop plugs", app({ - targets: Platform.LINUX.createTarget("snap"), + targets: snapTarget, config: { extraMetadata: { name: "sep", @@ -294,3 +294,29 @@ test.ifDevOrLinuxCi( }, }) ) + +test.ifDevOrLinuxCi( + "use template app", + app({ + targets: snapTarget, + config: { + snap: { + useTemplateApp: true, + compression: "xz", + }, + }, + effectiveOptionComputed: async ({ snap, args }) => { + expect(snap).toMatchSnapshot() + expect(snap.parts).toBeUndefined() + expect(snap.compression).toBeUndefined() + expect(snap.contact).toBeUndefined() + expect(snap.donation).toBeUndefined() + expect(snap.issues).toBeUndefined() + expect(snap.parts).toBeUndefined() + expect(snap["source-code"]).toBeUndefined() + expect(snap.website).toBeUndefined() + expect(args).toEqual(expect.arrayContaining(["--exclude", "chrome-sandbox", "--compression", "xz"])) + return true + }, + }) +)