diff --git a/bin/restore-policies.sh b/bin/restore-policies.sh index de1c2608aa..4472fb601f 100755 --- a/bin/restore-policies.sh +++ b/bin/restore-policies.sh @@ -39,7 +39,8 @@ snap="$(ops_find_snapshot "$ID")" # Policy definition tables present in BOTH the snapshot and the live DB. GLOB # keeps `_` literal; we drop usage counters / logs so accounting isn't rewound. -readarray -t tables < <( +tables=() +while IFS= read -r t; do tables+=("$t"); done < <( sqlite3 "$snap/storage.sqlite" \ "SELECT name FROM sqlite_master WHERE type='table' AND name GLOB 'api_key*' \ AND name NOT GLOB '*counter*' AND name NOT GLOB '*_log*' ORDER BY name;" diff --git a/changelog.d/fixes/8577-fix.plan.md b/changelog.d/fixes/8577-fix.plan.md new file mode 100644 index 0000000000..2b7b175101 --- /dev/null +++ b/changelog.d/fixes/8577-fix.plan.md @@ -0,0 +1,2 @@ +- fix(tests): make machineId tests macOS-compatible by stubbing ioreg in test helper (#8577) +- fix(scripts): replace bash 4+ readarray with compatible while-read loop in restore-policies.sh (#8577) diff --git a/tests/unit/shared/machineId.test.ts b/tests/unit/shared/machineId.test.ts index 46bc5441ae..cde9b9a4f6 100644 --- a/tests/unit/shared/machineId.test.ts +++ b/tests/unit/shared/machineId.test.ts @@ -38,6 +38,14 @@ function disableWindowsRegistryStrategy(): () => void { return origReadFileSync(filePath, encoding); }; + const origExecSync = childProcess.execSync; + childProcess.execSync = ((cmd: Parameters[0], opts: Parameters[1]) => { + if (String(cmd ?? "").includes("ioreg")) { + throw new Error("ENOENT: mocked ioreg not available"); + } + return origExecSync(cmd, opts); + }) as typeof childProcess.execSync; + return () => { if (origSysRoot !== undefined) { process.env.SystemRoot = origSysRoot; @@ -50,6 +58,7 @@ function disableWindowsRegistryStrategy(): () => void { delete process.env.windir; } fs.readFileSync = origReadFileSync; + childProcess.execSync = origExecSync; }; }