mirror of
https://github.com/affaan-m/ECC.git
synced 2026-10-14 12:15:29 +02:00
66 lines
2.0 KiB
JavaScript
66 lines
2.0 KiB
JavaScript
'use strict';
|
|
/**
|
|
* Tests for scripts/lib/file-tail.js.
|
|
*
|
|
* Run with: node tests/lib/file-tail.test.js
|
|
*/
|
|
|
|
const assert = require('assert');
|
|
const fs = require('fs');
|
|
const os = require('os');
|
|
const path = require('path');
|
|
|
|
const { readFileTail, DEFAULT_TRANSCRIPT_TAIL_BYTES } = require(path.join(__dirname, '..', '..', 'scripts', 'lib', 'file-tail.js'));
|
|
|
|
console.log('=== Testing file-tail.js ===\n');
|
|
|
|
let passed = 0;
|
|
let failed = 0;
|
|
|
|
function test(desc, fn) {
|
|
try {
|
|
fn();
|
|
console.log(` ✓ ${desc}`);
|
|
passed++;
|
|
} catch (e) {
|
|
console.log(` ✗ ${desc}: ${e.message}`);
|
|
failed++;
|
|
}
|
|
}
|
|
|
|
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'file-tail-'));
|
|
const file = path.join(dir, 'f.txt');
|
|
fs.writeFileSync(file, 'abcdef');
|
|
|
|
test('the default tail is 256 KiB', () => {
|
|
assert.strictEqual(DEFAULT_TRANSCRIPT_TAIL_BYTES, 256 * 1024);
|
|
});
|
|
|
|
test('a file smaller than the tail is read whole', () => {
|
|
assert.deepStrictEqual(readFileTail(file, 1024), { text: 'abcdef', truncated: false });
|
|
});
|
|
|
|
test('a larger file is cut to its last bytes and marked truncated', () => {
|
|
assert.deepStrictEqual(readFileTail(file, 2), { text: 'ef', truncated: true });
|
|
});
|
|
|
|
test('an empty file gives empty text', () => {
|
|
const empty = path.join(dir, 'empty.txt');
|
|
fs.writeFileSync(empty, '');
|
|
assert.deepStrictEqual(readFileTail(empty, 10), { text: '', truncated: false });
|
|
});
|
|
|
|
test('a missing file gives null', () => {
|
|
assert.strictEqual(readFileTail(path.join(dir, 'missing.txt'), 10), null);
|
|
});
|
|
|
|
test('transcript-context still exports the same reader', () => {
|
|
const context = require(path.join(__dirname, '..', '..', 'scripts', 'lib', 'transcript-context.js'));
|
|
assert.strictEqual(context.readFileTail, readFileTail);
|
|
assert.strictEqual(context.DEFAULT_TRANSCRIPT_TAIL_BYTES, DEFAULT_TRANSCRIPT_TAIL_BYTES);
|
|
});
|
|
|
|
fs.rmSync(dir, { recursive: true, force: true });
|
|
console.log(`\nResults: Passed: ${passed}, Failed: ${failed}`);
|
|
process.exit(failed > 0 ? 1 : 0);
|