Skip to content

Commit

Permalink
fix up tests
Browse files Browse the repository at this point in the history
  • Loading branch information
emma-sg committed Aug 20, 2024
1 parent 8a4009a commit 623d2b9
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 45 deletions.
3 changes: 1 addition & 2 deletions test/testIndexer.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import fs from "fs";
import path from "path";
import { jest } from "@jest/globals";
import { main } from "../src/commands";
import { Indexer, CDXIndexer, CDXAndRecordIndexer } from "../src/lib";
Expand Down Expand Up @@ -251,7 +250,7 @@ com,example,some:8080)/ 20200405201750 {"url":"http://some.example.com:8080/","m
const hasRequest = !!reqRecord;
const contentType =
record?.httpHeaders?.headers.get("Content-Type") || null;
const dataLength = (await record?.contentText()).length;
const dataLength = (await record?.contentText())?.length;
entries.push({
cdxOffset,
cdxLength,
Expand Down
8 changes: 5 additions & 3 deletions test/testReaders.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ async function readDecompTypes(
const result = decoder.decode(await reader.readFully());

if (match) {
// @ts-expect-error Expected 1 arguments, but got 2. -- TODO figure out why this second argument is here
expect(result, JSON.stringify([compress, decompress, match])).toBe(
expected,
);
Expand All @@ -159,11 +160,11 @@ async function readDecompLines(chunks: string[], expected: string[]) {
expect(lines).toEqual(expected);
}

const READ_WHOLE_LINE = "line";
type READ_WHOLE_LINE = "line";

async function readChunkSizes(
chunks: string[],
sizes: (number | typeof READ_WHOLE_LINE)[],
sizes: (number | READ_WHOLE_LINE)[],
expected: string[],
) {
const inputs = [[compressMembers(chunks)], chunks];
Expand Down Expand Up @@ -500,7 +501,8 @@ chunks.\r\n\
const result = await reader.readFully();
expect(
decoder.decode(result),
`expected\n${encodedText}\nbut got\n${result}`,
// @ts-expect-error Expected 1 arguments, but got 2. -- TODO figure out why this second argument is here
`expected\n${encodedText.toString()}\nbut got\n${result.toString()}`,
).toBe("testsome\nmo\rredata");
});

Expand Down
20 changes: 10 additions & 10 deletions test/testSerializer.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,23 @@ import { WARCSerializer } from "../src/node/warcserializer";
const decoder = new TextDecoder("utf-8");
const encoder = new TextEncoder();

const [majorVerison, minorVersion, patchVersion] = process.versions.node
const [majorVersion, minorVersion, patchVersion] = process.versions.node
.split(".")
.map((v) => Number(v));

// added in 18.14.2
const nodeHeadersSupportsMultipleCookies =
(majorVerison !== undefined && majorVerison > 18) ||
(majorVerison !== undefined &&
majorVerison === 18 &&
(majorVersion !== undefined && majorVersion > 18) ||
(majorVersion !== undefined &&
majorVersion === 18 &&
minorVersion !== undefined &&
minorVersion > 14) ||
(majorVerison !== undefined &&
majorVerison === 18 &&
(majorVersion !== undefined &&
majorVersion === 18 &&
minorVersion !== undefined &&
minorVersion === 14 &&
minorVersion !== undefined &&
minorVersion >= 2);
patchVersion !== undefined &&
patchVersion >= 2);

async function* iter(data: string) {
yield encoder.encode(data);
Expand Down Expand Up @@ -685,10 +685,10 @@ text\r\n\r\n',
expect(await serializer.digestRecord()).toBe(28);
expect(await serializer.digestRecord()).toBe(28);

const buffs = [];
const buffs: Uint8Array[] = [];

for await (const chunk of serializer) {
buffs.push(chunk);
buffs.push(chunk as Uint8Array);
}

expect(buffs.length).toBe(6);
Expand Down
61 changes: 31 additions & 30 deletions test/testWARCParser.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,24 @@ import {
} from "../src/lib";
import { getReader, getReadableStream } from "./utils";
import fs from "fs";
import path from "path";

const [majorVerison, minorVersion, patchVersion] = process.versions.node
const [majorVersion, minorVersion, patchVersion] = process.versions.node
.split(".")
.map((v) => Number(v));

// added in 18.14.2
const nodeHeadersSupportsMultipleCookies =
(majorVerison !== undefined && majorVerison > 18) ||
(majorVerison !== undefined &&
majorVerison === 18 &&
(majorVersion !== undefined && majorVersion > 18) ||
(majorVersion !== undefined &&
majorVersion === 18 &&
minorVersion !== undefined &&
minorVersion > 14) ||
(majorVerison !== undefined &&
majorVerison === 18 &&
(majorVersion !== undefined &&
majorVersion === 18 &&
minorVersion !== undefined &&
minorVersion === 14 &&
minorVersion !== undefined &&
minorVersion >= 2);
patchVersion !== undefined &&
patchVersion >= 2);

const decoder = new TextDecoder("utf-8");

Expand All @@ -53,8 +52,8 @@ Multi-Line: Value1\r\n\
Also This\r\n\
\r\n\
Body",
]),
),
])
)
);
expect(result?.toString()).toBe(`\
HTTP/1.0 200 OK\r
Expand All @@ -77,8 +76,8 @@ Content-Type: Value\r\n\
Content-Length: 0\r\n\
Bad: multi\nline\r\n\
\r\n",
]),
),
])
)
);
expect(result?.toString()).toBe(`HTTP/1.0 204 Empty\r
Content-Type: Value\r
Expand All @@ -90,15 +89,15 @@ Bad: multi\r
test("StatusAndHeaders test 3", async () => {
const parser = new StatusAndHeadersParser();
const result = await parser.parse(
new AsyncIterReader(getReader(["HTTP/1.0 204 None\r\n\r\n"])),
new AsyncIterReader(getReader(["HTTP/1.0 204 None\r\n\r\n"]))
);
expect(result?.toString()).toBe("HTTP/1.0 204 None\r\n");
});

test("StatusAndHeaders test empty", async () => {
const parser = new StatusAndHeadersParser();
const result = await parser.parse(
new AsyncIterReader(getReader(["\r\n\r\n"])),
new AsyncIterReader(getReader(["\r\n\r\n"]))
);
expect(result).toBe(null);
});
Expand Down Expand Up @@ -179,12 +178,13 @@ text\r\n\
software: recorder test\r\n\
format: WARC File Format 1.0\r\n\
json-metadata: {"foo": "bar"}\r\n\
',
'
);

// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- checked in expect
const record = (await parser.parse())!;
expect(record).not.toBeNull();
// @ts-expect-error Expected 1 arguments, but got 2. -- TODO figure out why this second argument is here
expect(record.warcTargetURI, "http://example.com/");

expect(decoder.decode(await record.readFully())).toBe("some\ntext");
Expand Down Expand Up @@ -253,15 +253,15 @@ Content-Length: 0\r\n\

expect(record.warcHeaders.protocol).toBe("WARC/1.0");
expect(record.warcHeader("WARC-Record-ID")).toBe(
"<urn:uuid:12345678-feb0-11e6-8f83-68a86d1772ce>",
"<urn:uuid:12345678-feb0-11e6-8f83-68a86d1772ce>"
);
expect(record.warcType).toBe("revisit");
expect(record.warcTargetURI).toBe("http://example.com/");
expect(record.warcDate).toBe("2000-01-01T00:00:00Z");
expect(record.warcRefersToTargetURI).toBe("http://example.com/foo");
expect(record.warcRefersToDate).toBe("1999-01-01T00:00:00Z");
expect(record.warcPayloadDigest).toBe(
"sha1:B6QJ6BNJ3R4B23XXMRKZKHLPGJY2VE4O",
"sha1:B6QJ6BNJ3R4B23XXMRKZKHLPGJY2VE4O"
);
expect(record.warcContentType).toBe("application/http; msgtype=response");
expect(record.warcContentLength).toBe(0);
Expand Down Expand Up @@ -308,15 +308,15 @@ Foo: Bar\r\n\
expect(record).not.toBeNull();
expect(record.warcHeaders.protocol).toBe("WARC/1.0");
expect(record.warcHeader("WARC-Record-ID")).toBe(
"<urn:uuid:12345678-feb0-11e6-8f83-68a86d1772ce>",
"<urn:uuid:12345678-feb0-11e6-8f83-68a86d1772ce>"
);
expect(record.warcType).toBe("revisit");
expect(record.warcTargetURI).toBe("http://example.com/");
expect(record.warcDate).toBe("2000-01-01T00:00:00Z");
expect(record.warcRefersToTargetURI).toBe("http://example.com/foo");
expect(record.warcRefersToDate).toBe("1999-01-01T00:00:00Z");
expect(record.warcPayloadDigest).toBe(
"sha1:B6QJ6BNJ3R4B23XXMRKZKHLPGJY2VE4O",
"sha1:B6QJ6BNJ3R4B23XXMRKZKHLPGJY2VE4O"
);
expect(record.warcContentType).toBe("application/http; msgtype=response");
expect(record.warcContentLength).toBe(54);
Expand Down Expand Up @@ -375,7 +375,7 @@ Foo: Bar\r\n\

expect(record.warcHeaders.protocol).toBe("WARC/1.0");
expect(record.warcHeader("WARC-Record-ID")).toBe(
"<urn:uuid:12345678-feb0-11e6-8f83-68a86d1772ce>",
"<urn:uuid:12345678-feb0-11e6-8f83-68a86d1772ce>"
);
expect(record.warcType).toBe("revisit");
expect(record.warcContentLength).toBe(82);
Expand Down Expand Up @@ -543,7 +543,7 @@ test("warc1.1 serialize records match", async () => {

test("chunked warc read", async () => {
const input = fs.createReadStream(
get_warc_path("data/example-iana.org-chunked.warc"),
get_warc_path("data/example-iana.org-chunked.warc")
);

const parser = new WARCParser(input);
Expand All @@ -559,7 +559,7 @@ test("chunked warc read", async () => {

// can't read raw data anymore
await expect(async () => await record.readFully(false)).rejects.toThrow(
"WARC Record decoding already started, but requesting raw payload",
"WARC Record decoding already started, but requesting raw payload"
);

const text = await record.contentText();
Expand All @@ -569,15 +569,15 @@ test("chunked warc read", async () => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- checking invalid type
const busyRecord = record as any as { reader: LimitReader };
await expect(async () => await busyRecord.reader.readFully()).rejects.toThrow(
"WARC Record decoding already started, but requesting raw payload",
"WARC Record decoding already started, but requesting raw payload"
);

expect(await record.readFully(true)).not.toBeNull();
});

test("no await catch errors", async () => {
const input = fs.createReadStream(
get_warc_path("data/example-iana.org-chunked.warc"),
get_warc_path("data/example-iana.org-chunked.warc")
);

const parser = new WARCParser(input);
Expand All @@ -598,10 +598,10 @@ test("no await catch errors", async () => {
const record1 = (await parser.parse())!;
expect(record1).not.toBeNull();
await expect(async () => await iter.next()).rejects.toThrow(
"Record already consumed.. Perhaps a promise was not awaited?",
"Record already consumed.. Perhaps a promise was not awaited?"
);
await expect(async () => await record0.readline()).rejects.toThrow(
"Record already consumed.. Perhaps a promise was not awaited?",
"Record already consumed.. Perhaps a promise was not awaited?"
);

let count = 0;
Expand Down Expand Up @@ -670,6 +670,7 @@ text\r\n\
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- checked in expect
const record = (await parser.parse())!;
expect(record).not.toBeNull();
// @ts-expect-error Expected 1 arguments, but got 2. -- TODO figure out why this second argument is here
expect(record.warcTargetURI, "http://example.com/");

const headerEntries = [];
Expand All @@ -686,15 +687,15 @@ text\r\n\
["custom-header", "somevalue"],
["set-cookie", "greeting=hello"],
["set-cookie", "name=world"],
]),
])
);
} else {
expect(JSON.stringify(headerEntries)).toBe(
JSON.stringify([
["content-type", 'text/plain; charset="UTF-8"'],
["custom-header", "somevalue"],
["set-cookie", "greeting=hello, name=world"],
]),
])
);
}

Expand All @@ -719,7 +720,7 @@ text\r\n\
["content-type", 'text/plain; charset="UTF-8"'],
["custom-header", "somevalue"],
["unicode-header", "%F0%9F%93%81%20text%20%F0%9F%97%84%EF%B8%8F"],
]),
])
);

expect(decoder.decode(await record2.readFully())).toBe("more\ntext");
Expand Down

0 comments on commit 623d2b9

Please sign in to comment.