-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathpcm.test.ts
More file actions
54 lines (49 loc) · 1.78 KB
/
Copy pathpcm.test.ts
File metadata and controls
54 lines (49 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import assert from "node:assert/strict";
import {
existsSync,
mkdirSync,
mkdtempSync,
readFileSync,
rmSync,
utimesSync,
writeFileSync,
} from "node:fs";
import os from "node:os";
import path from "node:path";
import test from "node:test";
import { stageAvailableProjectPcms } from "../src/pcm";
test("stages missing and newer module PCMs for a consumer", () => {
const root = mkdtempSync(path.join(os.tmpdir(), "mcpp-vscode-pcm-"));
const source = path.join(root, "build", "pcm.cache");
const destination = path.join(root, "test", "pcm.cache");
try {
mkdirSync(source, { recursive: true });
mkdirSync(destination, { recursive: true });
writeFileSync(path.join(source, "mcpplibs.demo.pcm"), "module");
writeFileSync(path.join(source, "std.pcm"), "std");
writeFileSync(path.join(destination, "std.pcm"), "existing");
const copied = stageAvailableProjectPcms({
kind: "llvm",
capability: "full",
reason: "test",
modulePcmSourceDirectories: [source],
modulePcmConsumerDirectories: [destination],
});
assert.equal(copied, 1);
assert.equal(existsSync(path.join(destination, "mcpplibs.demo.pcm")), true);
assert.equal(readFileSync(path.join(destination, "std.pcm"), "utf8"), "existing");
writeFileSync(path.join(source, "std.pcm"), "updated");
const newer = new Date(Date.now() + 1_000);
utimesSync(path.join(source, "std.pcm"), newer, newer);
assert.equal(stageAvailableProjectPcms({
kind: "llvm",
capability: "full",
reason: "test",
modulePcmSourceDirectories: [source],
modulePcmConsumerDirectories: [destination],
}), 1);
assert.equal(readFileSync(path.join(destination, "std.pcm"), "utf8"), "updated");
} finally {
rmSync(root, { recursive: true, force: true });
}
});