Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions packages/preview2-shim/src/io/worker-io.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,7 @@ export function earlyDispose(finalizer) {
finalizer();
}

const _Error = Error;
const IoError = class Error extends _Error {
class IoError extends Error {
payload: any;
constructor(payload: any) {
super(payload);
Expand All @@ -151,7 +150,7 @@ const IoError = class Error extends _Error {
toDebugString() {
return this.message;
}
};
}

function streamIoErrorCall(call, id, payload) {
try {
Expand Down
4 changes: 2 additions & 2 deletions packages/preview2-shim/test/browser/http-input-stream.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ afterEach(() => {

suite("Browser HTTP input stream", () => {
test.each([true, false])(
"only unconsumed response futures abort Fetch on drop (consumed=%s)",
"settled response futures do not abort Fetch on drop (consumed=%s)",
async (consumed) => {
let signal: AbortSignal | null | undefined;
vi.stubGlobal(
Expand All @@ -95,7 +95,7 @@ suite("Browser HTTP input stream", () => {
assert.ok(future.get());
}
dispose(future);
assert.strictEqual(signal.aborted, !consumed);
assert.strictEqual(signal.aborted, false);
},
);

Expand Down
4 changes: 3 additions & 1 deletion packages/preview2-shim/test/browser/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,9 @@ suite("browser", () => {
return;
}
const chunks: Uint8Array[] = [];
stream.on("data", (chunk) => chunks.push(chunk));
stream.on("data", (chunk) => {
chunks.push(typeof chunk === "string" ? new TextEncoder().encode(chunk) : chunk);
});
stream.on("end", () => {
stream.respond({
":status": 200,
Expand Down
4 changes: 2 additions & 2 deletions packages/preview2-shim/test/browser/io.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,8 @@ suite("Browser I/O", () => {
}),
});
const child = input.subscribe();
const blocked = child.block();
const polled = poll.poll([child]) as Promise<Uint32Array>;
const blocked = Promise.resolve(child.block());
const polled = Promise.resolve(poll.poll([child]));

(input as any)[symbolDispose]();

Expand Down
19 changes: 19 additions & 0 deletions packages/preview2-shim/test/fixtures/tls/localhost.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE-----
MIIDADCCAeigAwIBAgIUPkkLpP56FfjUfelKxbjuCuMa/5MwDQYJKoZIhvcNAQEL
BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MCAXDTI2MDgyODA4NDgyNFoYDzIxMjYw
ODA0MDg0ODI0WjAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQDLN8h1wyJuWFMfso9CuV4XHr3v0gD7dNY6N+ER0WtA
/cjghklox/4k2qnb4DjsvQfMzxKH0u28ybQKpe9AL/EXobFJnjuus2R1U7zE8QrV
bS5axKD5xr8xVzuPcILX/Ciwd+N+/hdWesosa7v/a8Sj284/e0+2jH9bY5AaRxWx
nZ1Az24SuAmx8bntmT22Uoz5ii4DmcDc+ax5xB7QZiV/oXe7XYzUBM0xZ3UUk2t8
Wbhur+2PVOK+XpKGdR8f+ycWB2Tmtmos5uZ1iRCmXxAUjSssmlgzO4+tclUSc4oR
4xIu25ZblKhVc7z2g1Xj9Akh8k57bAZRRbI4k2QVGs7DAgMBAAGjSDBGMB0GA1Ud
DgQWBBTy1t+w64/aQgI/6cx4IxAFxzU7xzAPBgNVHRMBAf8EBTADAQH/MBQGA1Ud
EQQNMAuCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAQEATOXmX4u4AJLKCHOK
ZTEXPVWx0SsUlxMncm9SxjSWlSzrXea3+n8ytIbIZVmQylhdIwoe41871ukxzydr
6272W2QBzq+/inNDmszssVCHu41UeYf1UT+321Z5Cf7qKCYGC1uz+IypbkWLp52v
3YVXe7qG+NmwWfA+5GIR/1mDR5qFz+WCIhQHiDTSE1bkQB07msXr857U6A84FZpI
HrQwLszeS/ilqH11YKNPNntsZWwXD9QxqFaG0EA5PambbI/mQbeNushYb5HW8IYd
2moXbq4VpMgcikHmtpfx7XU/ljLnlNO3vZsGvAU4f+45xoT5dMSEuSVgViDqJYfV
M3bI1Q==
-----END CERTIFICATE-----
28 changes: 28 additions & 0 deletions packages/preview2-shim/test/fixtures/tls/localhost.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDLN8h1wyJuWFMf
so9CuV4XHr3v0gD7dNY6N+ER0WtA/cjghklox/4k2qnb4DjsvQfMzxKH0u28ybQK
pe9AL/EXobFJnjuus2R1U7zE8QrVbS5axKD5xr8xVzuPcILX/Ciwd+N+/hdWesos
a7v/a8Sj284/e0+2jH9bY5AaRxWxnZ1Az24SuAmx8bntmT22Uoz5ii4DmcDc+ax5
xB7QZiV/oXe7XYzUBM0xZ3UUk2t8Wbhur+2PVOK+XpKGdR8f+ycWB2Tmtmos5uZ1
iRCmXxAUjSssmlgzO4+tclUSc4oR4xIu25ZblKhVc7z2g1Xj9Akh8k57bAZRRbI4
k2QVGs7DAgMBAAECggEAKfr3l9A8VCQ9473s12FYvRj2Ls0os8mCmdtCTP6AlBf5
P9yt3I34A+ACF/B9gfZY3qfmUZWy0/2tCkgWISHmQbX+3FDqTmAzwAMQ63RKAyX/
XfPht0el5oj5PlwFQ54NP8s8fVb7Nju+eSe2WgEGybzWIgoUwQbMJnJuaedGZX7l
+DjrKbUnmhsUzSBbHaPmBnqSFn2tG8ym6ayTYgeMm+/xf8bDQVg3skgXRPx62vms
Bt8hRtY4UWWksuzEliUAvJBHQ7Pn7gm2qzL0pV01OO/wa9H2NOwwuDLpQk6efWpw
tCn5QPTFiCWjG2cmyC4p/Ccv3m5VkQihHNomfAqj9QKBgQDzGD35whYDMyFxEtvg
qhzuW59UW+P1891icSbvVMYJmQ/0MWhStPpl3vMSGrAOODnCfd5tRfkM7jvkkKq2
hdYqUgTS+Kk3vBtWYTYixYJvijUbg8X7yPh2x8NEOp8c/NqDJ1R90n1xtPuEmvZG
dxtZyrfBXKE33EdilsY3oIfpXQKBgQDWAZlI7QEwTspn16n8kHzDAAtEvF9qDKxo
7MLev7CV6VZsnfMDmr57qKVjcBy36rjvTYRXCYDC+jff73dZtoGf/yXURclIYEtY
nu8tccr7vGcRc3EsUneOxM7aSVCO7b3k5LQQJpL5J7Qvc2GHNSkLkrHDSt2GxnzW
js1nVaB2nwKBgQCc/cboiSNWJasvLxK44KOWe61F+aIasMcEUDbo0UKj6CmZdl79
KsubBoTL6FhSlpUWudrvjwTsCN69GYBmJ8DLy/Q5m0UNLXoqKtWfVxaJmiP6BPvT
Q1LSwuekJIelXNZxZPD34PwKdusIFFt/3mPXdUd+pKepP6UKUnzoZ8/eMQKBgC8d
6P66V6GoJz4XqHBX63APaWu3wZYatjbfscPTFnDbD9EYMXHgtwGIzukGvPvtLMxb
F8EF8Zh7+KNQGMniucVdKpoCx18s/EnFrEkoHZWxFEwuS4ODoJkJUbWToK3nQADO
LarEo2VBzZUI5TcciC3pHUQvDnjm6INgq26N1qdnAoGAf6yPUSmbNKNk+GWUolKa
Y1ZZ3uuTZkfOABQzpUB3GzLIQBc3dwmv/ORaQ/QQ0MaLT8vfxM5/kmABxD0kSnG2
YDTccZRYhxkNPzqw8CdqW7NBc8+G7vxUWe+75fl1nj8kFWsD8SA2mdsZRDWlFSdL
8CXKLyzyrep0S3YFPYUVkSw=
-----END PRIVATE KEY-----
11 changes: 8 additions & 3 deletions packages/preview2-shim/test/node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -881,7 +881,7 @@ suite("Instantiation", () => {
});
const imports = shim.getImportObject();
assert.strictEqual(receivedPreopens, configuredPreopens);
assert.strictEqual(receivedPreopens["/guest"], capability);
assert.strictEqual(receivedPreopens?.["/guest"], capability);
assert.strictEqual(imports["wasi:filesystem/types"], filesystem.types);
assert.strictEqual(imports["wasi:filesystem/preopens"], customPreopens);
});
Expand Down Expand Up @@ -1105,7 +1105,7 @@ suite("Sandboxing", () => {
/access-denied/,
);
assert.strictEqual(dispatched, 0, "denied HTTP must not reach the configured handler");
assert.strictEqual(
assert.strictEqual<unknown>(
allowed["wasi:http/outgoing-handler"].handle({} as any, undefined),
"dispatched",
);
Expand Down Expand Up @@ -1308,7 +1308,7 @@ suite("Sandboxing", () => {
const testDir = mkdtempSync(join(tmpdir(), "jco-symlink-follow-"));
try {
writeFileSync(join(testDir, "real.txt"), "target contents");
symlinkSync(join(testDir, "real.txt"), join(testDir, "link.txt"));
symlinkSync("real.txt", join(testDir, "link.txt"));

const shim = new WASIShim({ sandbox: { preopens: { "/test": testDir } } });
const [rootDescriptor] = shim
Expand All @@ -1330,6 +1330,11 @@ suite("Sandboxing", () => {
false,
"following the symlink should hard-link the real file",
);
assert.strictEqual(
lstatSync(join(testDir, "followed.txt")).ino,
lstatSync(join(testDir, "real.txt")).ino,
"the hard link should refer to the symlink target",
);
} finally {
rmSync(testDir, { recursive: true, force: true });
}
Expand Down
2 changes: 1 addition & 1 deletion packages/preview2-shim/test/vitest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export default defineConfig({
printConsoleTrace: true,
passWithNoTests: false,
include: ["test/*.ts", "test/browser/**/*.ts"],
exclude: ["test/common.ts", "test/vitest.ts"],
exclude: ["test/common.ts", "test/filesystem-conformance.ts", "test/vitest.ts"],
testTimeout: DEFAULT_TIMEOUT_MS,
hookTimeout: DEFAULT_TIMEOUT_MS,
teardownTimeout: DEFAULT_TIMEOUT_MS,
Expand Down
Loading