26 lines
1.2 KiB
JavaScript
26 lines
1.2 KiB
JavaScript
const assert = require('assert');
|
|
const path = require('path');
|
|
const { spawnSync } = require('child_process');
|
|
const packageVersion = require('../../../package.json').version;
|
|
|
|
const installerPath = path.resolve(__dirname, '..', '..', 'bin', 'install.js');
|
|
const installer = require(installerPath);
|
|
|
|
assert.throws(() => installer.parseArgs(['--path']), /requires a value/i);
|
|
assert.throws(() => installer.parseArgs(['--path', '--codex']), /requires a value/i);
|
|
assert.throws(() => installer.parseArgs(['--unknown']), /unknown option/i);
|
|
assert.throws(() => installer.parseArgs(['status']), /unknown option or command/i);
|
|
|
|
const release = installer.parseArgs(['--release', '14.0.0']);
|
|
assert.strictEqual(release.versionArg, '14.0.0');
|
|
assert.strictEqual(release.versionInfo, false);
|
|
|
|
const version = spawnSync(process.execPath, [installerPath, '--version'], { encoding: 'utf8' });
|
|
assert.strictEqual(version.status, 0, version.stderr);
|
|
assert.strictEqual(version.stdout.trim(), packageVersion);
|
|
assert.doesNotMatch(version.stdout, /Cloning repository/i);
|
|
|
|
const invalid = spawnSync(process.execPath, [installerPath, '--unknown'], { encoding: 'utf8' });
|
|
assert.notStrictEqual(invalid.status, 0);
|
|
assert.match(invalid.stderr, /unknown option/i);
|