Prepare Windows release and signing process (#16)

This commit is contained in:
2026-03-08 19:51:30 -07:00
committed by GitHub
parent 34d2dce8dc
commit c799a8de3c
113 changed files with 5042 additions and 386 deletions

View File

@@ -10,19 +10,32 @@ function existsSyncFrom(paths: string[]): (candidate: string) => boolean {
test('resolveConfigBaseDirs trims xdg value and deduplicates fallback dir', () => {
const homeDir = '/home/tester';
const baseDirs = resolveConfigBaseDirs(' /home/tester/.config ', homeDir);
assert.deepEqual(baseDirs, [path.join(homeDir, '.config')]);
const trimmedXdgConfigHome = '/home/tester/.config';
const fallbackDir = path.posix.join(homeDir, '.config');
const baseDirs = resolveConfigBaseDirs(` ${trimmedXdgConfigHome} `, homeDir, 'linux');
const expected = Array.from(new Set([trimmedXdgConfigHome, fallbackDir]));
assert.deepEqual(baseDirs, expected);
});
test('resolveConfigBaseDirs prefers APPDATA on windows and deduplicates fallback dir', () => {
const homeDir = 'C:\\Users\\tester';
const appDataDir = 'C:\\Users\\tester\\AppData\\Roaming';
const baseDirs = resolveConfigBaseDirs(undefined, homeDir, 'win32', ` ${appDataDir} `);
assert.deepEqual(baseDirs, [appDataDir]);
});
test('resolveConfigDir prefers xdg SubMiner config when present', () => {
const homeDir = '/home/tester';
const xdgConfigHome = '/tmp/xdg-config';
const configDir = path.join(xdgConfigHome, 'SubMiner');
const existsSync = existsSyncFrom([path.join(configDir, 'config.jsonc')]);
const configDir = path.posix.join(xdgConfigHome, 'SubMiner');
const existsSync = existsSyncFrom([path.posix.join(configDir, 'config.jsonc')]);
const resolved = resolveConfigDir({
xdgConfigHome,
homeDir,
platform: 'linux',
existsSync,
});
@@ -37,20 +50,22 @@ test('resolveConfigDir ignores lowercase subminer candidate', () => {
const resolved = resolveConfigDir({
xdgConfigHome: '/tmp/missing-xdg',
homeDir,
platform: 'linux',
existsSync,
});
assert.equal(resolved, '/tmp/missing-xdg/SubMiner');
assert.equal(resolved, path.posix.join('/tmp/missing-xdg', 'SubMiner'));
});
test('resolveConfigDir falls back to existing directory when file is missing', () => {
const homeDir = '/home/tester';
const configDir = path.join(homeDir, '.config', 'SubMiner');
const configDir = path.posix.join(homeDir, '.config', 'SubMiner');
const existsSync = existsSyncFrom([configDir]);
const resolved = resolveConfigDir({
xdgConfigHome: '/tmp/missing-xdg',
homeDir,
platform: 'linux',
existsSync,
});
@@ -61,17 +76,18 @@ test('resolveConfigFilePath prefers jsonc before json', () => {
const homeDir = '/home/tester';
const xdgConfigHome = '/tmp/xdg-config';
const existsSync = existsSyncFrom([
path.join(xdgConfigHome, 'SubMiner', 'config.jsonc'),
path.join(xdgConfigHome, 'SubMiner', 'config.json'),
path.posix.join(xdgConfigHome, 'SubMiner', 'config.jsonc'),
path.posix.join(xdgConfigHome, 'SubMiner', 'config.json'),
]);
const resolved = resolveConfigFilePath({
xdgConfigHome,
homeDir,
platform: 'linux',
existsSync,
});
assert.equal(resolved, path.join(xdgConfigHome, 'SubMiner', 'config.jsonc'));
assert.equal(resolved, path.posix.join(xdgConfigHome, 'SubMiner', 'config.jsonc'));
});
test('resolveConfigFilePath keeps legacy fallback output path', () => {
@@ -82,8 +98,40 @@ test('resolveConfigFilePath keeps legacy fallback output path', () => {
const resolved = resolveConfigFilePath({
xdgConfigHome,
homeDir,
platform: 'linux',
existsSync,
});
assert.equal(resolved, path.join(xdgConfigHome, 'SubMiner', 'config.jsonc'));
assert.equal(resolved, path.posix.join(xdgConfigHome, 'SubMiner', 'config.jsonc'));
});
test('resolveConfigDir prefers APPDATA SubMiner config on windows when present', () => {
const homeDir = 'C:\\Users\\tester';
const appDataDir = 'C:\\Users\\tester\\AppData\\Roaming';
const configDir = path.win32.join(appDataDir, 'SubMiner');
const existsSync = existsSyncFrom([path.win32.join(configDir, 'config.jsonc')]);
const resolved = resolveConfigDir({
platform: 'win32',
appDataDir,
homeDir,
existsSync,
});
assert.equal(resolved, configDir);
});
test('resolveConfigFilePath uses APPDATA fallback output path on windows', () => {
const homeDir = 'C:\\Users\\tester';
const appDataDir = 'C:\\Users\\tester\\AppData\\Roaming';
const existsSync = existsSyncFrom([]);
const resolved = resolveConfigFilePath({
platform: 'win32',
appDataDir,
homeDir,
existsSync,
});
assert.equal(resolved, path.win32.join(appDataDir, 'SubMiner', 'config.jsonc'));
});