- Add .goreleaser.yml for multi-platform binary releases - Add npm-package/ with postinstall binary download - Add release.yml workflow for GoReleaser + npm publish + Homebrew tap 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
const { execSync } = require('child_process');
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
const os = require('os');
|
|
|
|
console.log('Running gt npm package tests...\n');
|
|
|
|
let passed = 0;
|
|
let failed = 0;
|
|
|
|
function test(name, fn) {
|
|
try {
|
|
fn();
|
|
console.log(`[PASS] ${name}`);
|
|
passed++;
|
|
} catch (err) {
|
|
console.log(`[FAIL] ${name}: ${err.message}`);
|
|
failed++;
|
|
}
|
|
}
|
|
|
|
// Test 1: Check binary exists
|
|
test('Binary exists in bin directory', () => {
|
|
const binaryName = os.platform() === 'win32' ? 'gt.exe' : 'gt';
|
|
const binaryPath = path.join(__dirname, '..', 'bin', binaryName);
|
|
if (!fs.existsSync(binaryPath)) {
|
|
throw new Error(`Binary not found at ${binaryPath}`);
|
|
}
|
|
});
|
|
|
|
// Test 2: Binary is executable (version check)
|
|
test('Binary executes and returns version', () => {
|
|
const binaryName = os.platform() === 'win32' ? 'gt.exe' : 'gt';
|
|
const binaryPath = path.join(__dirname, '..', 'bin', binaryName);
|
|
const output = execSync(`"${binaryPath}" version`, { encoding: 'utf8' });
|
|
if (!output.includes('gt version')) {
|
|
throw new Error(`Unexpected version output: ${output}`);
|
|
}
|
|
});
|
|
|
|
// Test 3: Wrapper script exists
|
|
test('Wrapper script (gt.js) exists', () => {
|
|
const wrapperPath = path.join(__dirname, '..', 'bin', 'gt.js');
|
|
if (!fs.existsSync(wrapperPath)) {
|
|
throw new Error(`Wrapper not found at ${wrapperPath}`);
|
|
}
|
|
});
|
|
|
|
// Summary
|
|
console.log(`\n${passed} passed, ${failed} failed`);
|
|
process.exit(failed > 0 ? 1 : 0);
|