11name : Test npm package
22on :
3+ workflow_call :
4+ inputs :
5+ target_run_id :
6+ description : ' The Run ID of the upstream CI workflow'
7+ required : true
8+ type : string
9+ node_version :
10+ description : ' Node.js version to test with'
11+ required : false
12+ default : ' 20'
13+ type : string
314 workflow_dispatch :
415 inputs :
516 target_run_id :
@@ -35,15 +46,15 @@ jobs:
3546 - name : Download artifact from specific run
3647 uses : actions/download-artifact@v5
3748 with :
38- run-id : ${{ github.event. inputs.target_run_id }}
49+ run-id : ${{ inputs.target_run_id }}
3950 github-token : ${{ secrets.GITHUB_TOKEN }}
4051 name : npm-package-tarball
4152 path : ./downloads
4253
4354 - name : Set up Node.js
4455 uses : actions/setup-node@v6
4556 with :
46- node-version : ${{ github.event. inputs.node_version || '20' }}
57+ node-version : ${{ inputs.node_version || '20' }}
4758
4859 - name : Install tarball and verify
4960 shell : bash
@@ -93,4 +104,62 @@ jobs:
93104 await db.close();
94105 }
95106 main().catch(err => { console.error(err); process.exit(1); });
96- "
107+ "
108+
109+ - name : Smoke test - ESM default import
110+ shell : bash
111+ run : |
112+ cd test-project
113+ cat > test-esm.mjs << 'EOF'
114+ import sqlite3 from '@homeofthings/sqlite3';
115+ console.log('ESM: sqlite3 version:', sqlite3.VERSION);
116+ const db = new sqlite3.Database(':memory:');
117+ db.serialize(() => {
118+ db.run('CREATE TABLE test (id INT, name TEXT)');
119+ db.run("INSERT INTO test VALUES (1, 'hello')");
120+ db.get('SELECT * FROM test', (err, row) => {
121+ if (err) { console.error('Query failed:', err); process.exit(1); }
122+ console.log('ESM default import result:', JSON.stringify(row));
123+ db.close();
124+ });
125+ });
126+ EOF
127+ node test-esm.mjs
128+
129+ - name : Smoke test - ESM named imports
130+ shell : bash
131+ run : |
132+ cd test-project
133+ cat > test-named.mjs << 'EOF'
134+ import { Database, OPEN_READWRITE, OPEN_CREATE } from '@homeofthings/sqlite3';
135+ console.log('ESM named: OPEN_READWRITE=', OPEN_READWRITE);
136+ const db = new Database(':memory:');
137+ db.serialize(() => {
138+ db.run('CREATE TABLE test (id INT, name TEXT)');
139+ db.run("INSERT INTO test VALUES (2, 'world')");
140+ db.get('SELECT * FROM test', (err, row) => {
141+ if (err) { console.error('Query failed:', err); process.exit(1); }
142+ console.log('ESM named import result:', JSON.stringify(row));
143+ db.close();
144+ });
145+ });
146+ EOF
147+ node test-named.mjs
148+
149+ - name : Smoke test - ESM promise API
150+ shell : bash
151+ run : |
152+ cd test-project
153+ cat > test-promise.mjs << 'EOF'
154+ import { SqliteDatabase } from '@homeofthings/sqlite3/promise';
155+ async function main() {
156+ const db = await SqliteDatabase.open(':memory:');
157+ await db.run('CREATE TABLE test (id INT, name TEXT)');
158+ await db.run("INSERT INTO test VALUES (3, 'esm')");
159+ const row = await db.get('SELECT * FROM test');
160+ console.log('ESM promise API result:', JSON.stringify(row));
161+ await db.close();
162+ }
163+ main().catch(err => { console.error(err); process.exit(1); });
164+ EOF
165+ node test-promise.mjs
0 commit comments