Use different ZIP file for unzip tests

This commit is contained in:
Koen Vlaswinkel
2023-12-19 14:43:49 +01:00
parent 4eee14be61
commit 1055515d59
2 changed files with 26 additions and 56 deletions

View File

@@ -6,72 +6,44 @@ import {
readZipEntries,
} from "../../../src/common/unzip";
const zipWithSingleFilePath = resolve(
__dirname,
"../../vscode-tests/no-workspace/data/archive-filesystem-provider-test/single_file.zip",
);
const zipWithFolderPath = resolve(
__dirname,
"../../vscode-tests/no-workspace/data/archive-filesystem-provider-test/zip_with_folder.zip",
);
const zipPath = resolve(__dirname, "../data/unzip/test-zip.zip");
describe("openZip", () => {
it("can open a zip file", async () => {
const zipFile = await openZip(zipWithFolderPath, {
const zipFile = await openZip(zipPath, {
lazyEntries: false,
});
expect(zipFile.entryCount).toEqual(8);
expect(zipFile.entryCount).toEqual(11);
});
});
describe("readZipEntries", () => {
it("can read the entries when there is a single file", async () => {
const zipFile = await openZip(zipWithSingleFilePath, {
it("can read the entries when there are multiple directories", async () => {
const zipFile = await openZip(zipPath, {
lazyEntries: true,
});
const entries = await readZipEntries(zipFile);
expect(entries.map((entry) => entry.fileName).sort()).toEqual([
"src_archive/",
"src_archive/aFileName.txt",
]);
});
it("can read the entries when there are multiple folders", async () => {
const zipFile = await openZip(zipWithFolderPath, {
lazyEntries: true,
});
const entries = await readZipEntries(zipFile);
expect(entries.map((entry) => entry.fileName).sort()).toEqual([
"__MACOSX/._folder1",
"__MACOSX/folder1/._textFile.txt",
"__MACOSX/folder1/._textFile2.txt",
"folder1/",
"folder1/folder2/",
"folder1/folder2/textFile3.txt",
"folder1/textFile.txt",
"folder1/textFile2.txt",
"directory/",
"directory/file.txt",
"directory/file2.txt",
"directory2/",
"directory2/file.txt",
"empty-directory/",
"tools/",
"tools/osx64/",
"tools/osx64/java-aarch64/",
"tools/osx64/java-aarch64/bin/",
"tools/osx64/java-aarch64/bin/java",
]);
});
});
describe("excludeDirectories", () => {
it("excludes directories when there is a single file", async () => {
const zipFile = await openZip(zipWithSingleFilePath, {
lazyEntries: true,
});
const entries = await readZipEntries(zipFile);
const entriesWithoutDirectories = excludeDirectories(entries);
expect(
entriesWithoutDirectories.map((entry) => entry.fileName).sort(),
).toEqual(["src_archive/aFileName.txt"]);
});
it("excludes directories when there are multiple folders", async () => {
const zipFile = await openZip(zipWithFolderPath, {
it("excludes directories", async () => {
const zipFile = await openZip(zipPath, {
lazyEntries: true,
});
const entries = await readZipEntries(zipFile);
@@ -80,26 +52,24 @@ describe("excludeDirectories", () => {
expect(
entriesWithoutDirectories.map((entry) => entry.fileName).sort(),
).toEqual([
"__MACOSX/._folder1",
"__MACOSX/folder1/._textFile.txt",
"__MACOSX/folder1/._textFile2.txt",
"folder1/folder2/textFile3.txt",
"folder1/textFile.txt",
"folder1/textFile2.txt",
"directory/file.txt",
"directory/file2.txt",
"directory2/file.txt",
"tools/osx64/java-aarch64/bin/java",
]);
});
});
describe("openZipBuffer", () => {
it("can read an entry in the zip file", async () => {
const zipFile = await openZip(zipWithFolderPath, {
const zipFile = await openZip(zipPath, {
lazyEntries: true,
autoClose: false,
});
const entries = await readZipEntries(zipFile);
const entry = entries.find(
(entry) => entry.fileName === "folder1/textFile.txt",
(entry) => entry.fileName === "directory/file.txt",
);
expect(entry).toBeDefined();
if (!entry) {
@@ -107,7 +77,7 @@ describe("openZipBuffer", () => {
}
const buffer = await openZipBuffer(zipFile, entry);
expect(buffer).toHaveLength(12);
expect(buffer.toString("utf8")).toEqual("I am a text\n");
expect(buffer).toHaveLength(13);
expect(buffer.toString("utf8")).toEqual("I am a file\n\n");
});
});