Skip to content

Commit c6fbffd

Browse files
committed
Add assert for platform in updateInfoPlist
1 parent 8c0eca8 commit c6fbffd

File tree

2 files changed

+87
-46
lines changed

2 files changed

+87
-46
lines changed

packages/host/src/node/cli/apple.test.ts

Lines changed: 83 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,13 @@ describe("apple", () => {
8787
});
8888

8989
describe("updateInfoPlist", () => {
90-
it("updates an xml plist", async (context) => {
91-
const infoPlistSubPath = "Info.plist";
92-
const tempDirectoryPath = setupTempDirectory(context, {
93-
[infoPlistSubPath]: `
90+
it(
91+
"updates an xml plist",
92+
{ skip: process.platform !== "darwin" },
93+
async (context) => {
94+
const infoPlistSubPath = "Info.plist";
95+
const tempDirectoryPath = setupTempDirectory(context, {
96+
[infoPlistSubPath]: `
9497
<?xml version="1.0" encoding="UTF-8"?>
9598
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
9699
<plist version="1.0">
@@ -100,47 +103,81 @@ describe("apple", () => {
100103
</dict>
101104
</plist>
102105
`,
103-
});
104-
105-
await updateInfoPlist({
106-
frameworkPath: tempDirectoryPath,
107-
oldLibraryName: "addon",
108-
newLibraryName: "new-addon-name",
109-
});
110-
111-
const contents = await fs.promises.readFile(
112-
path.join(tempDirectoryPath, infoPlistSubPath),
113-
"utf-8",
114-
);
115-
assert.match(contents, /<\?xml version="1.0" encoding="UTF-8"\?>/);
116-
assert.match(
117-
contents,
118-
/<key>CFBundleExecutable<\/key>\s*<string>new-addon-name<\/string>/,
119-
);
120-
});
121-
122-
it("converts a binary plist to xml", async (context) => {
123-
const tempDirectoryPath = setupTempDirectory(context, {});
124-
// Write a binary plist file
125-
const binaryPlistContents = Buffer.from(
126-
"YnBsaXN0MDDfEBUBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4cICEiIyQiJSYnJChfEBNCdWlsZE1hY2hpbmVPU0J1aWxkXxAZQ0ZCdW5kbGVEZXZlbG9wbWVudFJlZ2lvbl8QEkNGQnVuZGxlRXhlY3V0YWJsZV8QEkNGQnVuZGxlSWRlbnRpZmllcl8QHUNGQnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJzaW9uXxATQ0ZCdW5kbGVQYWNrYWdlVHlwZV8QGkNGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5nXxARQ0ZCdW5kbGVTaWduYXR1cmVfEBpDRkJ1bmRsZVN1cHBvcnRlZFBsYXRmb3Jtc18QD0NGQnVuZGxlVmVyc2lvbl8QFUNTUmVzb3VyY2VzRmlsZU1hcHBlZFpEVENvbXBpbGVyXxAPRFRQbGF0Zm9ybUJ1aWxkXkRUUGxhdGZvcm1OYW1lXxARRFRQbGF0Zm9ybVZlcnNpb25aRFRTREtCdWlsZFlEVFNES05hbWVXRFRYY29kZVxEVFhjb2RlQnVpbGRfEBBNaW5pbXVtT1NWZXJzaW9uXlVJRGV2aWNlRmFtaWx5VjI0RzIzMVdFbmdsaXNoVWFkZG9uXxAPZXhhbXBsZV82LmFkZG9uUzYuMFRGTVdLUzEuMFQ/Pz8/oR9fEA9pUGhvbmVTaW11bGF0b3IJXxAiY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMFYyMkMxNDZfEA9pcGhvbmVzaW11bGF0b3JUMTguMl8QE2lwaG9uZXNpbXVsYXRvcjE4LjJUMTYyMFgxNkM1MDMyYaEpEAEACAA1AEsAZwB8AJEAsQDHAOQA+AEVAScBPwFKAVwBawF/AYoBlAGcAakBvAHLAdIB2gHgAfIB9gH7Af8CBAIGAhgCGQI+AkUCVwJcAnICdwKAAoIAAAAAAAACAQAAAAAAAAAqAAAAAAAAAAAAAAAAAAAChA==",
127-
"base64",
128-
);
129-
const binaryPlistPath = path.join(tempDirectoryPath, "Info.plist");
130-
await fs.promises.writeFile(binaryPlistPath, binaryPlistContents);
131-
132-
await updateInfoPlist({
133-
frameworkPath: tempDirectoryPath,
134-
oldLibraryName: "addon",
135-
newLibraryName: "new-addon-name",
136-
});
137-
138-
const contents = await fs.promises.readFile(binaryPlistPath, "utf-8");
139-
assert.match(contents, /<\?xml version="1.0" encoding="UTF-8"\?>/);
140-
assert.match(
141-
contents,
142-
/<key>CFBundleExecutable<\/key>\s*<string>new-addon-name<\/string>/,
143-
);
144-
});
106+
});
107+
108+
await updateInfoPlist({
109+
frameworkPath: tempDirectoryPath,
110+
oldLibraryName: "addon",
111+
newLibraryName: "new-addon-name",
112+
});
113+
114+
const contents = await fs.promises.readFile(
115+
path.join(tempDirectoryPath, infoPlistSubPath),
116+
"utf-8",
117+
);
118+
assert.match(contents, /<\?xml version="1.0" encoding="UTF-8"\?>/);
119+
assert.match(
120+
contents,
121+
/<key>CFBundleExecutable<\/key>\s*<string>new-addon-name<\/string>/,
122+
);
123+
},
124+
);
125+
126+
it(
127+
"converts a binary plist to xml",
128+
{ skip: process.platform !== "darwin" },
129+
async (context) => {
130+
const tempDirectoryPath = setupTempDirectory(context, {});
131+
// Write a binary plist file
132+
const binaryPlistContents = Buffer.from(
133+
"YnBsaXN0MDDfEBUBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4cICEiIyQiJSYnJChfEBNCdWlsZE1hY2hpbmVPU0J1aWxkXxAZQ0ZCdW5kbGVEZXZlbG9wbWVudFJlZ2lvbl8QEkNGQnVuZGxlRXhlY3V0YWJsZV8QEkNGQnVuZGxlSWRlbnRpZmllcl8QHUNGQnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJzaW9uXxATQ0ZCdW5kbGVQYWNrYWdlVHlwZV8QGkNGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5nXxARQ0ZCdW5kbGVTaWduYXR1cmVfEBpDRkJ1bmRsZVN1cHBvcnRlZFBsYXRmb3Jtc18QD0NGQnVuZGxlVmVyc2lvbl8QFUNTUmVzb3VyY2VzRmlsZU1hcHBlZFpEVENvbXBpbGVyXxAPRFRQbGF0Zm9ybUJ1aWxkXkRUUGxhdGZvcm1OYW1lXxARRFRQbGF0Zm9ybVZlcnNpb25aRFRTREtCdWlsZFlEVFNES05hbWVXRFRYY29kZVxEVFhjb2RlQnVpbGRfEBBNaW5pbXVtT1NWZXJzaW9uXlVJRGV2aWNlRmFtaWx5VjI0RzIzMVdFbmdsaXNoVWFkZG9uXxAPZXhhbXBsZV82LmFkZG9uUzYuMFRGTVdLUzEuMFQ/Pz8/oR9fEA9pUGhvbmVTaW11bGF0b3IJXxAiY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMFYyMkMxNDZfEA9pcGhvbmVzaW11bGF0b3JUMTguMl8QE2lwaG9uZXNpbXVsYXRvcjE4LjJUMTYyMFgxNkM1MDMyYaEpEAEACAA1AEsAZwB8AJEAsQDHAOQA+AEVAScBPwFKAVwBawF/AYoBlAGcAakBvAHLAdIB2gHgAfIB9gH7Af8CBAIGAhgCGQI+AkUCVwJcAnICdwKAAoIAAAAAAAACAQAAAAAAAAAqAAAAAAAAAAAAAAAAAAAChA==",
134+
"base64",
135+
);
136+
const binaryPlistPath = path.join(tempDirectoryPath, "Info.plist");
137+
await fs.promises.writeFile(binaryPlistPath, binaryPlistContents);
138+
139+
await updateInfoPlist({
140+
frameworkPath: tempDirectoryPath,
141+
oldLibraryName: "addon",
142+
newLibraryName: "new-addon-name",
143+
});
144+
145+
const contents = await fs.promises.readFile(binaryPlistPath, "utf-8");
146+
assert.match(contents, /<\?xml version="1.0" encoding="UTF-8"\?>/);
147+
assert.match(
148+
contents,
149+
/<key>CFBundleExecutable<\/key>\s*<string>new-addon-name<\/string>/,
150+
);
151+
},
152+
);
153+
154+
it(
155+
"throws when not on darwin",
156+
{ skip: process.platform === "darwin" },
157+
async (context) => {
158+
const tempDirectoryPath = setupTempDirectory(context, {
159+
["Info.plist"]: '<?xml version="1.0" encoding="UTF-8"?>',
160+
});
161+
162+
await assert.rejects(
163+
() =>
164+
updateInfoPlist({
165+
frameworkPath: tempDirectoryPath,
166+
oldLibraryName: "addon",
167+
newLibraryName: "new-addon-name",
168+
}),
169+
(err) => {
170+
assert(err instanceof Error);
171+
assert.match(err.message, /Failed to convert Info.plist at path/);
172+
assert(err.cause instanceof Error);
173+
assert.match(
174+
err.cause.message,
175+
/Updating Info.plist files are not supported on this platform/,
176+
);
177+
return true;
178+
},
179+
);
180+
},
181+
);
145182
});
146183
});

packages/host/src/node/cli/apple.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ export async function updateInfoPlist({
7777

7878
// Convert to XML format if needed
7979
try {
80+
assert(
81+
process.platform === "darwin",
82+
"Updating Info.plist files are not supported on this platform",
83+
);
8084
await spawn("plutil", ["-convert", "xml1", infoPlistPath], {
8185
outputMode: "inherit",
8286
});

0 commit comments

Comments
 (0)