| ... | @@ -1040,6 +1040,9 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { | ... | @@ -1040,6 +1040,9 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { |
| 1040 | ), | 1040 | ), |
| 1041 | ); | 1041 | ); |
| 1042 | | 1042 | |
| | 1043 | // The fixture's t3code.exe is a text placeholder, not an executable. These |
| | 1044 | // cases reach the native-load probe, so pin only that host-platform check to |
| | 1045 | // Linux. Host-native paths and the real Windows tar/archive checks still run. |
| 1043 | it.effect("validates every ASAR-unpacked native in the packaged Windows payload", () => | 1046 | it.effect("validates every ASAR-unpacked native in the packaged Windows payload", () => |
| 1044 | Effect.scoped( | 1047 | Effect.scoped( |
| 1045 | Effect.gen(function* () { | 1048 | Effect.gen(function* () { |
| ... | @@ -1068,7 +1071,7 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { | ... | @@ -1068,7 +1071,7 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { |
| 1068 | assert.isBelow(result.fileCount, WINDOWS_PACKAGED_PAYLOAD_FILE_LIMIT); | 1071 | assert.isBelow(result.fileCount, WINDOWS_PACKAGED_PAYLOAD_FILE_LIMIT); |
| 1069 | assert.deepStrictEqual(secondAsar, firstAsar); | 1072 | assert.deepStrictEqual(secondAsar, firstAsar); |
| 1070 | }), | 1073 | }), |
| 1071 | ), | 1074 | ).pipe(Effect.provideService(HostProcessPlatform, "linux")), |
| 1072 | ); | 1075 | ); |
| 1073 | | 1076 | |
| 1074 | it.effect("validates the emitted WSL archive and its SHA-256 sidecar", () => | 1077 | it.effect("validates the emitted WSL archive and its SHA-256 sidecar", () => |
| ... | @@ -1087,7 +1090,7 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { | ... | @@ -1087,7 +1090,7 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { |
| 1087 | | 1090 | |
| 1088 | assert.equal(result.packagedAppDir, fixture.packagedAppDir); | 1091 | assert.equal(result.packagedAppDir, fixture.packagedAppDir); |
| 1089 | }), | 1092 | }), |
| 1090 | ), | 1093 | ).pipe(Effect.provideService(HostProcessPlatform, "linux")), |
| 1091 | ); | 1094 | ); |
| 1092 | | 1095 | |
| 1093 | it.effect("rejects a Windows package missing its expected WSL runtime", () => | 1096 | it.effect("rejects a Windows package missing its expected WSL runtime", () => |
| ... | @@ -1235,11 +1238,12 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { | ... | @@ -1235,11 +1238,12 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { |
| 1235 | command.args.some((arg) => arg.endsWith("build-browser-secret.mjs")), | 1238 | command.args.some((arg) => arg.endsWith("build-browser-secret.mjs")), |
| 1236 | ); | 1239 | ); |
| 1237 | assert.isDefined(helper); | 1240 | assert.isDefined(helper); |
| | 1241 | const path = yield* Path.Path; |
| 1238 | assert.deepStrictEqual(helper.args.slice(-4), [ | 1242 | assert.deepStrictEqual(helper.args.slice(-4), [ |
| 1239 | "--arch", | 1243 | "--arch", |
| 1240 | "x64", | 1244 | "x64", |
| 1241 | "--output", | 1245 | "--output", |
| 1242 | "/stage/resources/browser-secret/t3-browser-secret", | 1246 | path.join("/stage/resources", "browser-secret", "t3-browser-secret"), |
| 1243 | ]); | 1247 | ]); |
| 1244 | }).pipe( | 1248 | }).pipe( |
| 1245 | Effect.provide( | 1249 | Effect.provide( |
| ... | @@ -1461,7 +1465,7 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { | ... | @@ -1461,7 +1465,7 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { |
| 1461 | assert.instanceOf(error, BundleNotSelfContainedError); | 1465 | assert.instanceOf(error, BundleNotSelfContainedError); |
| 1462 | assert.include(error.output, "t3code-deliberately-missing-package"); | 1466 | assert.include(error.output, "t3code-deliberately-missing-package"); |
| 1463 | }), | 1467 | }), |
| 1464 | ), | 1468 | ).pipe(Effect.provideService(HostProcessPlatform, "linux")), |
| 1465 | ); | 1469 | ); |
| 1466 | | 1470 | |
| 1467 | it.effect("preserves both Linux icon resize failures with structural context", () => { | 1471 | it.effect("preserves both Linux icon resize failures with structural context", () => { |
| ... | @@ -1701,7 +1705,7 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { | ... | @@ -1701,7 +1705,7 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { |
| 1701 | assert.equal(config.appId, "com.t3tools.t3code"); | 1705 | assert.equal(config.appId, "com.t3tools.t3code"); |
| 1702 | assert.equal(mac.entitlements, "/tmp/entitlements.mac.plist"); | 1706 | assert.equal(mac.entitlements, "/tmp/entitlements.mac.plist"); |
| 1703 | assert.equal(mac.provisioningProfile, "/tmp/t3code.provisionprofile"); | 1707 | assert.equal(mac.provisioningProfile, "/tmp/t3code.provisionprofile"); |
| 1704 | assert.match(String(mac.sign), /\/scripts\/sign-macos\.ts$/); | 1708 | assert.match(String(mac.sign), /[\\/]scripts[\\/]sign-macos\.ts$/); |
| 1705 | assert.deepStrictEqual(mac.protocols, [ | 1709 | assert.deepStrictEqual(mac.protocols, [ |
| 1706 | { name: "T3 Code", schemes: ["t3code", "t3code-dev"] }, | 1710 | { name: "T3 Code", schemes: ["t3code", "t3code-dev"] }, |
| 1707 | ]); | 1711 | ]); |