79 lines
2.7 KiB
JavaScript
79 lines
2.7 KiB
JavaScript
"use strict";
|
|
|
|
const test = require("node:test");
|
|
const assert = require("node:assert/strict");
|
|
const fs = require("fs");
|
|
const os = require("os");
|
|
const path = require("path");
|
|
|
|
const { cleanupStaleLocalFiles } = require("../lib/cleanupStale");
|
|
|
|
function makeTmpDir() {
|
|
return fs.mkdtempSync(path.join(os.tmpdir(), "cleanup-stale-test-"));
|
|
}
|
|
|
|
function fakeLogger() {
|
|
const warnings = [];
|
|
return { warnings, warn: (msg) => warnings.push(msg) };
|
|
}
|
|
|
|
test("前回実行の残骸dmpファイルを削除する", () => {
|
|
const dir = makeTmpDir();
|
|
const staleFile = path.join(dir, "[host]postgres-20260715-020002.dmp014");
|
|
fs.writeFileSync(staleFile, "dummy");
|
|
const logger = fakeLogger();
|
|
|
|
const removed = cleanupStaleLocalFiles({ outputDir: dir, hostname: "host", logger });
|
|
|
|
assert.equal(fs.existsSync(staleFile), false);
|
|
assert.deepEqual(removed, [staleFile]);
|
|
assert.equal(logger.warnings.length, 1);
|
|
assert.match(logger.warnings[0], /前回実行の残骸ローカルファイルを削除/);
|
|
});
|
|
|
|
test("前回実行の残骸configアーカイブを削除する", () => {
|
|
const dir = makeTmpDir();
|
|
const staleFile = path.join(dir, "[host]config-20260715-020002.tar.gz");
|
|
fs.writeFileSync(staleFile, "dummy");
|
|
const logger = fakeLogger();
|
|
|
|
const removed = cleanupStaleLocalFiles({ outputDir: dir, hostname: "host", logger });
|
|
|
|
assert.equal(fs.existsSync(staleFile), false);
|
|
assert.deepEqual(removed, [staleFile]);
|
|
});
|
|
|
|
test("パターンに一致しないファイルは削除しない", () => {
|
|
const dir = makeTmpDir();
|
|
const keepFile = path.join(dir, "keep-me.txt");
|
|
fs.writeFileSync(keepFile, "dummy");
|
|
const logger = fakeLogger();
|
|
|
|
const removed = cleanupStaleLocalFiles({ outputDir: dir, hostname: "host", logger });
|
|
|
|
assert.equal(fs.existsSync(keepFile), true);
|
|
assert.deepEqual(removed, []);
|
|
assert.equal(logger.warnings.length, 0);
|
|
});
|
|
|
|
test("他ホスト名のファイルは削除しない", () => {
|
|
const dir = makeTmpDir();
|
|
const otherHostFile = path.join(dir, "[otherhost]postgres-20260715-020002.dmp000");
|
|
fs.writeFileSync(otherHostFile, "dummy");
|
|
const logger = fakeLogger();
|
|
|
|
const removed = cleanupStaleLocalFiles({ outputDir: dir, hostname: "host", logger });
|
|
|
|
assert.equal(fs.existsSync(otherHostFile), true);
|
|
assert.deepEqual(removed, []);
|
|
});
|
|
|
|
test("outputDirが存在しない場合は何もせず空配列を返す", () => {
|
|
const dir = path.join(os.tmpdir(), "cleanup-stale-does-not-exist-" + Date.now());
|
|
const logger = fakeLogger();
|
|
|
|
const removed = cleanupStaleLocalFiles({ outputDir: dir, hostname: "host", logger });
|
|
|
|
assert.deepEqual(removed, []);
|
|
});
|