Skip to content

Commit 8d6893f

Browse files
committed
wip
1 parent 90930ab commit 8d6893f

5 files changed

Lines changed: 75 additions & 11 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import fs from 'node:fs';
2+
import path from 'node:path';
3+
4+
const expected = [
5+
path.join('home', 'js_runtime', 'node', '20.18.0'),
6+
path.join('home', 'js_runtime', 'node', '24.11.0'),
7+
path.join('home', 'corepack-cleaned'),
8+
];
9+
const unexpected = [
10+
path.join('home', 'js_runtime', 'node', '22.18.0'),
11+
path.join('home', 'package_manager'),
12+
];
13+
14+
for (const filePath of expected) {
15+
if (!fs.existsSync(filePath)) {
16+
throw new Error(`Expected ${filePath} to exist`);
17+
}
18+
}
19+
20+
for (const filePath of unexpected) {
21+
if (fs.existsSync(filePath)) {
22+
throw new Error(`Expected ${filePath} to be removed`);
23+
}
24+
}
25+
26+
console.log('clean preserved current/default and removed caches');
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { spawnSync } from 'node:child_process';
2+
import path from 'node:path';
3+
4+
const env = { ...process.env, VP_HOME: path.resolve('home') };
5+
const pathKey = Object.keys(env).find((key) => key.toLowerCase() === 'path') ?? 'PATH';
6+
env[pathKey] = [path.resolve('fake-bin'), env[pathKey]].filter(Boolean).join(path.delimiter);
7+
8+
const result = spawnSync('vp', ['env', 'clean'], { env, stdio: 'inherit' });
9+
if (result.error) {
10+
console.error(result.error.message);
11+
process.exit(1);
12+
}
13+
14+
process.exit(result.status ?? 1);
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import fs from 'node:fs';
2+
import path from 'node:path';
3+
4+
const nodeVersions = ['20.18.0', '22.18.0', '24.11.0'];
5+
6+
for (const version of nodeVersions) {
7+
const runtimeDir = path.join('home', 'js_runtime', 'node', version);
8+
fs.mkdirSync(path.join(runtimeDir, 'bin'), { recursive: true });
9+
fs.writeFileSync(path.join(runtimeDir, 'node.exe'), '');
10+
}
11+
12+
fs.mkdirSync(path.join('home', 'package_manager', 'pnpm', '10.0.0', 'pnpm', 'bin'), {
13+
recursive: true,
14+
});
15+
fs.mkdirSync(path.join('home', 'package_manager', 'npm', '11.0.0', 'npm', 'bin'), {
16+
recursive: true,
17+
});
18+
fs.mkdirSync('fake-bin', { recursive: true });
19+
20+
fs.writeFileSync(
21+
path.join('fake-bin', 'corepack'),
22+
'#!/bin/sh\nmkdir -p "$VP_HOME"\ntouch "$VP_HOME/corepack-cleaned"\n',
23+
{ mode: 0o755 },
24+
);
25+
fs.writeFileSync(
26+
path.join('fake-bin', 'corepack.cmd'),
27+
'@echo off\r\nif not exist "%VP_HOME%" mkdir "%VP_HOME%"\r\ntype nul > "%VP_HOME%\\corepack-cleaned"\r\n',
28+
);
29+
fs.writeFileSync(path.join('home', 'config.json'), '{"defaultNodeVersion":"24.11.0"}\n');
Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
> mkdir -p fake-bin home/js_runtime/node/20.18.0/bin home/js_runtime/node/22.18.0/bin home/js_runtime/node/24.11.0/bin home/package_manager/pnpm/10.0.0/pnpm/bin home/package_manager/npm/11.0.0/npm/bin # Create isolated runtime and package-manager caches
2-
> printf '#!/bin/sh\nmkdir -p "$VP_HOME"\ntouch "$VP_HOME/corepack-cleaned"\n' > fake-bin/corepack && chmod +x fake-bin/corepack # Fake corepack for deterministic cache clean
3-
> printf '{"defaultNodeVersion":"24.11.0"}\n' > home/config.json # Configure default Node.js version
4-
> PATH="$(pwd)/fake-bin:$PATH" VP_HOME="$(pwd)/home" vp env clean # Clean isolated Vite+ caches
1+
> node setup-env-clean.mjs # Create isolated runtime/package-manager caches and fake corepack
2+
> node run-env-clean.mjs # Clean isolated Vite+ caches
53
✓ Cleaned Corepack cache
64
✓ Removed 1 Node.js runtime
75
✓ Removed 2 package manager installs
86

9-
> test -d home/js_runtime/node/20.18.0 && test -d home/js_runtime/node/24.11.0 && test ! -d home/js_runtime/node/22.18.0 && test ! -d home/package_manager && test -f home/corepack-cleaned && echo 'clean preserved current/default and removed caches'
7+
> node assert-env-clean.mjs # Assert current/default runtimes are preserved and caches are removed
108
clean preserved current/default and removed caches
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
{
2-
"ignoredPlatforms": ["win32"],
32
"env": {},
43
"commands": [
5-
"mkdir -p fake-bin home/js_runtime/node/20.18.0/bin home/js_runtime/node/22.18.0/bin home/js_runtime/node/24.11.0/bin home/package_manager/pnpm/10.0.0/pnpm/bin home/package_manager/npm/11.0.0/npm/bin # Create isolated runtime and package-manager caches",
6-
"printf '#!/bin/sh\\nmkdir -p \"$VP_HOME\"\\ntouch \"$VP_HOME/corepack-cleaned\"\\n' > fake-bin/corepack && chmod +x fake-bin/corepack # Fake corepack for deterministic cache clean",
7-
"printf '{\"defaultNodeVersion\":\"24.11.0\"}\\n' > home/config.json # Configure default Node.js version",
8-
"PATH=\"$(pwd)/fake-bin:$PATH\" VP_HOME=\"$(pwd)/home\" vp env clean # Clean isolated Vite+ caches",
9-
"test -d home/js_runtime/node/20.18.0 && test -d home/js_runtime/node/24.11.0 && test ! -d home/js_runtime/node/22.18.0 && test ! -d home/package_manager && test -f home/corepack-cleaned && echo 'clean preserved current/default and removed caches'"
4+
"node setup-env-clean.mjs # Create isolated runtime/package-manager caches and fake corepack",
5+
"node run-env-clean.mjs # Clean isolated Vite+ caches",
6+
"node assert-env-clean.mjs # Assert current/default runtimes are preserved and caches are removed"
107
]
118
}

0 commit comments

Comments
 (0)