Context
As part of the pnpm migration (#381), regenerating the lockfile floated @expo/plist from 0.4.7 (the version main's package-lock.json happened to hold) up to 0.4.9. In 0.4.9, plist.parse() returns a null-prototype object, which makes the strict assert.deepEqual in packages/host/src/node/cli/apple.test.ts ("should read Info.plist contents, plus extra keys not in schema") fail on the prototype mismatch.
To keep the migration behaviour-neutral, @expo/plist was pinned to an exact 0.4.7 in packages/host/package.json:
- "@expo/plist": "^0.4.7",
+ "@expo/plist": "0.4.7",
The null prototype only affects the test's strict equality — runtime property access on the parsed object is unaffected — so this is a test-only concern, not a functional regression.
Follow-up
Once the pnpm migration is merged, revisit this pin:
References
Context
As part of the pnpm migration (#381), regenerating the lockfile floated
@expo/plistfrom0.4.7(the version main'spackage-lock.jsonhappened to hold) up to0.4.9. In0.4.9,plist.parse()returns a null-prototype object, which makes the strictassert.deepEqualinpackages/host/src/node/cli/apple.test.ts("should read Info.plist contents, plus extra keys not in schema") fail on the prototype mismatch.To keep the migration behaviour-neutral,
@expo/plistwas pinned to an exact0.4.7inpackages/host/package.json:The null prototype only affects the test's strict equality — runtime property access on the parsed object is unaffected — so this is a test-only concern, not a functional regression.
Follow-up
Once the pnpm migration is merged, revisit this pin:
@expo/plistto the latest0.4.x(or newer) and restore a caret range (^) inpackages/host/package.json.readInfoPlist/apple.test.tsrobust to the null-prototype return so the test no longer depends on the parser's object prototype. Options:{ ...contents }orstructuredClone), orreadAndParsePlistreturn a plain object, orUnit testsjob passes with the unpinned version.References
packages/host/package.json(@expo/plistpin)packages/host/src/node/cli/apple.test.ts