mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-20 03:16:46 -07:00
83 lines
2.8 KiB
TypeScript
83 lines
2.8 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
import test from 'node:test';
|
|
import {
|
|
resolveConfigExampleOutputPaths,
|
|
writeConfigExampleArtifacts,
|
|
} from './generate-config-example';
|
|
|
|
function createWorkspace(name: string): string {
|
|
const baseDir = path.join(process.cwd(), '.tmp', 'generate-config-example-test');
|
|
fs.mkdirSync(baseDir, { recursive: true });
|
|
return fs.mkdtempSync(path.join(baseDir, `${name}-`));
|
|
}
|
|
|
|
test('resolveConfigExampleOutputPaths includes sibling docs repo and never local docs/public', () => {
|
|
const workspace = createWorkspace('with-docs-repo');
|
|
const projectRoot = path.join(workspace, 'SubMiner');
|
|
const docsRepoRoot = path.join(workspace, 'subminer-docs');
|
|
|
|
fs.mkdirSync(projectRoot, { recursive: true });
|
|
fs.mkdirSync(docsRepoRoot, { recursive: true });
|
|
|
|
try {
|
|
const outputPaths = resolveConfigExampleOutputPaths({ cwd: projectRoot });
|
|
|
|
assert.deepEqual(outputPaths, [
|
|
path.join(projectRoot, 'config.example.jsonc'),
|
|
path.join(docsRepoRoot, 'public', 'config.example.jsonc'),
|
|
]);
|
|
assert.equal(
|
|
outputPaths.includes(path.join(projectRoot, 'docs', 'public', 'config.example.jsonc')),
|
|
false,
|
|
);
|
|
} finally {
|
|
fs.rmSync(workspace, { recursive: true, force: true });
|
|
}
|
|
});
|
|
|
|
test('resolveConfigExampleOutputPaths stays repo-local when sibling docs repo is absent', () => {
|
|
const workspace = createWorkspace('without-docs-repo');
|
|
const projectRoot = path.join(workspace, 'SubMiner');
|
|
|
|
fs.mkdirSync(projectRoot, { recursive: true });
|
|
|
|
try {
|
|
const outputPaths = resolveConfigExampleOutputPaths({ cwd: projectRoot });
|
|
|
|
assert.deepEqual(outputPaths, [path.join(projectRoot, 'config.example.jsonc')]);
|
|
} finally {
|
|
fs.rmSync(workspace, { recursive: true, force: true });
|
|
}
|
|
});
|
|
|
|
test('writeConfigExampleArtifacts creates parent directories for resolved outputs', () => {
|
|
const workspace = createWorkspace('write-artifacts');
|
|
const projectRoot = path.join(workspace, 'SubMiner');
|
|
const docsRepoRoot = path.join(workspace, 'subminer-docs');
|
|
const template = '{\n "ok": true\n}\n';
|
|
|
|
fs.mkdirSync(projectRoot, { recursive: true });
|
|
fs.mkdirSync(docsRepoRoot, { recursive: true });
|
|
|
|
try {
|
|
const writtenPaths = writeConfigExampleArtifacts(template, {
|
|
cwd: projectRoot,
|
|
deps: { log: () => {} },
|
|
});
|
|
|
|
assert.deepEqual(writtenPaths, [
|
|
path.join(projectRoot, 'config.example.jsonc'),
|
|
path.join(docsRepoRoot, 'public', 'config.example.jsonc'),
|
|
]);
|
|
assert.equal(fs.readFileSync(path.join(projectRoot, 'config.example.jsonc'), 'utf8'), template);
|
|
assert.equal(
|
|
fs.readFileSync(path.join(docsRepoRoot, 'public', 'config.example.jsonc'), 'utf8'),
|
|
template,
|
|
);
|
|
} finally {
|
|
fs.rmSync(workspace, { recursive: true, force: true });
|
|
}
|
|
});
|