summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--std/archive/tar.ts9
-rw-r--r--std/archive/tar_test.ts10
2 files changed, 13 insertions, 6 deletions
diff --git a/std/archive/tar.ts b/std/archive/tar.ts
index a169d5b4b..0685ad837 100644
--- a/std/archive/tar.ts
+++ b/std/archive/tar.ts
@@ -485,7 +485,10 @@ class TarEntry implements Reader {
entryBytesLeft,
);
- if (entryBytesLeft <= 0) return null;
+ if (entryBytesLeft <= 0) {
+ this.#consumed = true;
+ return null;
+ }
const block = new Uint8Array(bufSize);
const n = await readBlock(this.#reader, block);
@@ -493,9 +496,7 @@ class TarEntry implements Reader {
this.#read += n || 0;
if (n === null || bytesLeft <= 0) {
- // FIXME(bartlomieju): this condition makes no sense
- // deno-lint-ignore no-constant-condition
- if (null) this.#consumed = true;
+ if (n === null) this.#consumed = true;
return null;
}
diff --git a/std/archive/tar_test.ts b/std/archive/tar_test.ts
index ff1ada4d5..cec98face 100644
--- a/std/archive/tar_test.ts
+++ b/std/archive/tar_test.ts
@@ -113,7 +113,9 @@ Deno.test("appendFileWithLongNameToTarArchive", async function (): Promise<
const untar = new Untar(tar.getReader());
const result = await untar.extract();
assert(result !== null);
+ assert(!result.consumed);
const untarText = new TextDecoder("utf-8").decode(await Deno.readAll(result));
+ assert(result.consumed);
// tests
assertEquals(result.fileName, fileName);
@@ -137,6 +139,7 @@ Deno.test("untarAsyncIterator", async function (): Promise<void> {
// read data from a tar archive
const untar = new Untar(tar.getReader());
+ let lastEntry;
for await (const entry of untar) {
const expected = entries.shift();
assert(expected);
@@ -145,11 +148,14 @@ Deno.test("untarAsyncIterator", async function (): Promise<void> {
if (expected.filePath) {
content = await Deno.readFile(expected.filePath);
}
-
assertEquals(content, await Deno.readAll(entry));
assertEquals(expected.name, entry.fileName);
- }
+ if (lastEntry) assert(lastEntry.consumed);
+ lastEntry = entry;
+ }
+ assert(lastEntry);
+ assert(lastEntry.consumed);
assertEquals(entries.length, 0);
});