📦 deps(thirdparty): update snapshots
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
"use strict";
|
||||
|
||||
const assert = require("node:assert/strict");
|
||||
const childProcess = require("node:child_process");
|
||||
const path = require("node:path");
|
||||
const test = require("node:test");
|
||||
|
||||
const DURABILITY_MODULE = path.join(__dirname, "../../lib/aas-v1/durability.js");
|
||||
|
||||
function loadWithWindowsHelperResult(result) {
|
||||
const platformDescriptor = Object.getOwnPropertyDescriptor(process, "platform");
|
||||
const originalSpawnSync = childProcess.spawnSync;
|
||||
const invocations = [];
|
||||
Object.defineProperty(process, "platform", { ...platformDescriptor, value: "win32" });
|
||||
childProcess.spawnSync = (...invocation) => {
|
||||
invocations.push(invocation);
|
||||
return result;
|
||||
};
|
||||
delete require.cache[require.resolve(DURABILITY_MODULE)];
|
||||
const durability = require(DURABILITY_MODULE);
|
||||
return {
|
||||
durability,
|
||||
invocations,
|
||||
restore() {
|
||||
delete require.cache[require.resolve(DURABILITY_MODULE)];
|
||||
childProcess.spawnSync = originalSpawnSync;
|
||||
Object.defineProperty(process, "platform", platformDescriptor);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
test("Windows directory-flush failures expose only a structured native phase and error number", () => {
|
||||
const loaded = loadWithWindowsHelperResult({
|
||||
status: 42,
|
||||
stdout: "AAS_WIN32_DIRECTORY_FLUSH_FAILURE|flushFileBuffers|6\r\n",
|
||||
stderr: "sensitive path must not be copied",
|
||||
});
|
||||
try {
|
||||
const directoryPath = path.join(__dirname, "missing-directory");
|
||||
assert.throws(
|
||||
() => loaded.durability.fsyncDirectorySync(directoryPath),
|
||||
(error) => {
|
||||
assert.equal(error.code, "AAS_DURABILITY_CAPABILITY_UNAVAILABLE");
|
||||
assert.deepEqual(error.details, {
|
||||
platform: "win32",
|
||||
capability: "directoryMetadataFlush",
|
||||
helperPhase: "flushFileBuffers",
|
||||
win32Error: 6,
|
||||
});
|
||||
assert.ok(!JSON.stringify(error.details).includes("sensitive"));
|
||||
assert.ok(!JSON.stringify(error.details).includes(__dirname));
|
||||
return true;
|
||||
},
|
||||
);
|
||||
assert.equal(loaded.invocations.length, 1);
|
||||
const [, helperArguments, helperOptions] = loaded.invocations[0];
|
||||
assert.ok(!helperArguments.includes(directoryPath));
|
||||
assert.equal(helperOptions.env.AAS_WINDOWS_DIRECTORY_FLUSH_PATH, directoryPath);
|
||||
assert.equal(helperOptions.timeout, 60_000);
|
||||
} finally {
|
||||
loaded.restore();
|
||||
}
|
||||
});
|
||||
|
||||
test("Windows helper environment removes case-insensitive path-variable collisions", () => {
|
||||
const collisionName = "aas_windows_directory_flush_path";
|
||||
const previous = process.env[collisionName];
|
||||
process.env[collisionName] = "stale-sensitive-path";
|
||||
const loaded = loadWithWindowsHelperResult({ status: 0, stdout: "", stderr: "" });
|
||||
try {
|
||||
const directoryPath = path.join(__dirname, "missing-directory");
|
||||
loaded.durability.fsyncDirectorySync(directoryPath);
|
||||
const helperEnvironment = loaded.invocations[0][2].env;
|
||||
assert.equal(helperEnvironment.AAS_WINDOWS_DIRECTORY_FLUSH_PATH, directoryPath);
|
||||
assert.ok(!Object.keys(helperEnvironment).includes(collisionName));
|
||||
} finally {
|
||||
loaded.restore();
|
||||
if (previous === undefined) delete process.env[collisionName];
|
||||
else process.env[collisionName] = previous;
|
||||
}
|
||||
});
|
||||
|
||||
test("unexpected PowerShell output stays redacted and fail-closed", () => {
|
||||
const loaded = loadWithWindowsHelperResult({
|
||||
status: 1,
|
||||
stdout: "C:\\sensitive\\project\\path",
|
||||
stderr: "another sensitive path",
|
||||
});
|
||||
try {
|
||||
assert.throws(
|
||||
() => loaded.durability.fsyncDirectorySync(path.join(__dirname, "missing-directory")),
|
||||
(error) => {
|
||||
assert.equal(error.code, "AAS_DURABILITY_CAPABILITY_UNAVAILABLE");
|
||||
assert.deepEqual(error.details, {
|
||||
platform: "win32",
|
||||
capability: "directoryMetadataFlush",
|
||||
helperPhase: "unknown",
|
||||
helperExitCode: 1,
|
||||
});
|
||||
return true;
|
||||
},
|
||||
);
|
||||
} finally {
|
||||
loaded.restore();
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user