@ni-kismet/sl-webapp-nipkg 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -20
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +5 -3
- package/dist/builder.js.map +1 -1
- package/dist/builder.test.d.ts +2 -0
- package/dist/builder.test.d.ts.map +1 -0
- package/dist/builder.test.js +388 -0
- package/dist/builder.test.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/cli.test.d.ts +2 -0
- package/dist/cli.test.d.ts.map +1 -0
- package/dist/cli.test.js +309 -0
- package/dist/cli.test.js.map +1 -0
- package/package.json +9 -2
package/README.md
CHANGED
|
@@ -335,7 +335,7 @@ The `--build-suffix` option allows you to create unique package names for PR/bra
|
|
|
335
335
|
|
|
336
336
|
**Output examples:**
|
|
337
337
|
|
|
338
|
-
- PR builds: `my-app_1.0.
|
|
338
|
+
- PR builds: `my-app_1.0.0.12345_all.nipkg` (includes build ID)
|
|
339
339
|
- Main/production: `my-app_1.0.0_all.nipkg` (standard naming)
|
|
340
340
|
|
|
341
341
|
### GitHub Actions
|
|
@@ -433,7 +433,6 @@ your-webapp-project/
|
|
|
433
433
|
## Requirements
|
|
434
434
|
|
|
435
435
|
- Node.js 16+
|
|
436
|
-
- National Instruments Package Manager (nipkg)
|
|
437
436
|
|
|
438
437
|
## Development
|
|
439
438
|
|
|
@@ -446,19 +445,6 @@ npm install
|
|
|
446
445
|
npm run build
|
|
447
446
|
```
|
|
448
447
|
|
|
449
|
-
### Running Tests
|
|
450
|
-
|
|
451
|
-
```bash
|
|
452
|
-
# Run all tests
|
|
453
|
-
npm test
|
|
454
|
-
|
|
455
|
-
# Run tests with coverage
|
|
456
|
-
npm run test:coverage
|
|
457
|
-
|
|
458
|
-
# Run tests in watch mode
|
|
459
|
-
npm run test:watch
|
|
460
|
-
```
|
|
461
|
-
|
|
462
448
|
### Local Development
|
|
463
449
|
|
|
464
450
|
```bash
|
|
@@ -496,11 +482,9 @@ sl-webapp-nipkg --help
|
|
|
496
482
|
1. Fork the repository
|
|
497
483
|
2. Create a feature branch: `git checkout -b feature/amazing-feature`
|
|
498
484
|
3. Make your changes
|
|
499
|
-
4.
|
|
500
|
-
5.
|
|
501
|
-
6.
|
|
502
|
-
7. Push to the branch: `git push origin feature/amazing-feature`
|
|
503
|
-
8. Submit a pull request
|
|
485
|
+
4. Commit your changes: `git commit -m 'Add amazing feature'`
|
|
486
|
+
5. Push to the branch: `git push origin feature/amazing-feature`
|
|
487
|
+
6. Submit a pull request
|
|
504
488
|
|
|
505
489
|
## License
|
|
506
490
|
|
package/dist/builder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAMvD,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB;IAM3D;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAMvD,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB;IAM3D;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BnC;;OAEG;IACH,OAAO,CAAC,OAAO;IA4Bf;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,UAAU;IA2BlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqCvB;;OAEG;YACW,sBAAsB;IAwCpC;;OAEG;YACW,kBAAkB;CAkEnC"}
|
package/dist/builder.js
CHANGED
|
@@ -25,9 +25,11 @@ export class SystemLinkNipkgBuilder {
|
|
|
25
25
|
// Run custom build command if requested
|
|
26
26
|
this.runProjectBuild();
|
|
27
27
|
// Set up output directory
|
|
28
|
-
const outputDir = this.options.outputDir
|
|
28
|
+
const outputDir = this.options.outputDir
|
|
29
|
+
|| this.config.outputDir
|
|
30
|
+
|| path.join(this.projectRoot, 'dist', 'nipkg');
|
|
29
31
|
await fs.ensureDir(outputDir);
|
|
30
|
-
const nipkgDir =
|
|
32
|
+
const nipkgDir = outputDir;
|
|
31
33
|
await fs.ensureDir(nipkgDir);
|
|
32
34
|
// Package the application
|
|
33
35
|
await this.packageApplication(nipkgDir);
|
|
@@ -236,7 +238,7 @@ export class SystemLinkNipkgBuilder {
|
|
|
236
238
|
architecture,
|
|
237
239
|
...(depends && { depends }),
|
|
238
240
|
...(this.config.displayName && { displayName: this.config.displayName }),
|
|
239
|
-
...(this.config.userVisible && { userVisible: String(this.config.userVisible) }),
|
|
241
|
+
...(this.config.userVisible !== undefined && { userVisible: String(this.config.userVisible) }),
|
|
240
242
|
};
|
|
241
243
|
// Use Deboa to create the .deb file
|
|
242
244
|
if (this.options.verbose) {
|
package/dist/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,gEAAgE;AAChE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,CAAgC,CAAC;AAElE,MAAM,OAAO,sBAAsB;IACd,MAAM,CAAc;IACpB,OAAO,CAAe;IACtB,WAAW,CAAS;IAErC,YAAY,MAAmB,EAAE,UAAwB,EAAE;QACvD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QACd,IAAI,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAE9D,wCAAwC;YACxC,IAAI,CAAC,eAAe,EAAE,CAAC;YAEvB,0BAA0B;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.test.d.ts","sourceRoot":"","sources":["../src/builder.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention -- Class name constructor reference
|
|
6
|
+
let SystemLinkNipkgBuilderCtor;
|
|
7
|
+
const deboaState = {
|
|
8
|
+
lastOptions: undefined,
|
|
9
|
+
packageCalls: 0,
|
|
10
|
+
};
|
|
11
|
+
vi.mock('fs-extra', () => {
|
|
12
|
+
const fsMock = {
|
|
13
|
+
ensureDir: vi.fn(),
|
|
14
|
+
readJsonSync: vi.fn(),
|
|
15
|
+
existsSync: vi.fn(),
|
|
16
|
+
pathExists: vi.fn(),
|
|
17
|
+
remove: vi.fn(),
|
|
18
|
+
copy: vi.fn(),
|
|
19
|
+
readdir: vi.fn(),
|
|
20
|
+
rename: vi.fn(),
|
|
21
|
+
};
|
|
22
|
+
return { default: fsMock };
|
|
23
|
+
});
|
|
24
|
+
vi.mock('child_process', () => ({
|
|
25
|
+
execSync: vi.fn(),
|
|
26
|
+
}));
|
|
27
|
+
vi.mock('node:module', () => {
|
|
28
|
+
class Deboa {
|
|
29
|
+
constructor(options) {
|
|
30
|
+
deboaState.lastOptions = options;
|
|
31
|
+
}
|
|
32
|
+
async package() {
|
|
33
|
+
deboaState.packageCalls += 1;
|
|
34
|
+
await Promise.resolve();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
createRequire: () => (id) => {
|
|
39
|
+
if (id === 'deboa') {
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention -- Match deboa named export case
|
|
41
|
+
return { Deboa };
|
|
42
|
+
}
|
|
43
|
+
throw new Error(`Unexpected require: ${id}`);
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
// Constants for commonly used test values
|
|
48
|
+
const TEST_OUTPUT_DIR = '/tmp/nipkg';
|
|
49
|
+
const TEST_BUILD_DIR = 'dist';
|
|
50
|
+
const TEST_TEMP_SOURCE_DIR = 'temp-source';
|
|
51
|
+
const TEST_APP_FILES_DIR = 'ApplicationFiles_64';
|
|
52
|
+
// Constants for default metadata values
|
|
53
|
+
const DEFAULT_MAINTAINER = 'Unknown <unknown@example.com>';
|
|
54
|
+
const DEFAULT_VERSION = '1.0.0';
|
|
55
|
+
const DEFAULT_ARCHITECTURE = 'all';
|
|
56
|
+
describe('SystemLinkNipkgBuilder', () => {
|
|
57
|
+
const fsMock = fs;
|
|
58
|
+
/**
|
|
59
|
+
* Creates a spy on the packageApplication method of a builder instance.
|
|
60
|
+
* This is the most common pattern in tests that need to mock the packaging step.
|
|
61
|
+
*/
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -- Return type is complex MockInstance
|
|
63
|
+
function spyOnPackageApplication(builder) {
|
|
64
|
+
return vi
|
|
65
|
+
.spyOn(builder, 'packageApplication')
|
|
66
|
+
.mockResolvedValue(undefined);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Helper to access deboa control file options from the mock state.
|
|
70
|
+
*/
|
|
71
|
+
function getDeboaControlFileOptions() {
|
|
72
|
+
if (!deboaState.lastOptions) {
|
|
73
|
+
throw new Error('deboaState.lastOptions is undefined');
|
|
74
|
+
}
|
|
75
|
+
return deboaState.lastOptions.controlFileOptions;
|
|
76
|
+
}
|
|
77
|
+
beforeEach(async () => {
|
|
78
|
+
vi.clearAllMocks();
|
|
79
|
+
fsMock.ensureDir.mockResolvedValue(undefined);
|
|
80
|
+
fsMock.readJsonSync.mockReturnValue({});
|
|
81
|
+
fsMock.pathExists.mockResolvedValue(false);
|
|
82
|
+
fsMock.remove.mockResolvedValue(undefined);
|
|
83
|
+
fsMock.copy.mockResolvedValue(undefined);
|
|
84
|
+
fsMock.readdir.mockResolvedValue([]);
|
|
85
|
+
fsMock.rename.mockResolvedValue(undefined);
|
|
86
|
+
fsMock.existsSync.mockReturnValue(true);
|
|
87
|
+
deboaState.lastOptions = undefined;
|
|
88
|
+
deboaState.packageCalls = 0;
|
|
89
|
+
({ SystemLinkNipkgBuilder: SystemLinkNipkgBuilderCtor } = await import('./builder.js'));
|
|
90
|
+
});
|
|
91
|
+
describe('build()', () => {
|
|
92
|
+
describe('output directory handling', () => {
|
|
93
|
+
it('creates output directories and calls packaging', async () => {
|
|
94
|
+
const config = {};
|
|
95
|
+
const options = { outputDir: 'out' };
|
|
96
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
97
|
+
const packageSpy = spyOnPackageApplication(builder);
|
|
98
|
+
await builder.build();
|
|
99
|
+
expect(fsMock.ensureDir).toHaveBeenCalledWith('out');
|
|
100
|
+
expect(packageSpy).toHaveBeenCalledWith('out');
|
|
101
|
+
});
|
|
102
|
+
it('uses dist/nipkg when outputDir is not provided', async () => {
|
|
103
|
+
const config = {};
|
|
104
|
+
const options = {};
|
|
105
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
106
|
+
const packageSpy = spyOnPackageApplication(builder);
|
|
107
|
+
await builder.build();
|
|
108
|
+
const expectedOutput = path.join(process.cwd(), 'dist', 'nipkg');
|
|
109
|
+
expect(fsMock.ensureDir).toHaveBeenCalledWith(expectedOutput);
|
|
110
|
+
expect(packageSpy).toHaveBeenCalledWith(expectedOutput);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe('build command execution', () => {
|
|
114
|
+
it('uses CLI build command override with verbose stdio', async () => {
|
|
115
|
+
const config = { buildCommand: 'npm run build' };
|
|
116
|
+
const options = { build: 'make build', verbose: true };
|
|
117
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
118
|
+
const packageSpy = spyOnPackageApplication(builder);
|
|
119
|
+
await builder.build();
|
|
120
|
+
expect(execSync).toHaveBeenCalledWith('make build', { stdio: 'inherit' });
|
|
121
|
+
expect(packageSpy).toHaveBeenCalled();
|
|
122
|
+
});
|
|
123
|
+
it('runs config build command when build=true', async () => {
|
|
124
|
+
const config = { buildCommand: 'npm run compile' };
|
|
125
|
+
const options = { build: true };
|
|
126
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
127
|
+
const packageSpy = spyOnPackageApplication(builder);
|
|
128
|
+
await builder.build();
|
|
129
|
+
expect(execSync).toHaveBeenCalledWith('npm run compile', { stdio: 'pipe' });
|
|
130
|
+
expect(packageSpy).toHaveBeenCalled();
|
|
131
|
+
});
|
|
132
|
+
it('skips build when build is false', async () => {
|
|
133
|
+
const config = { buildCommand: 'npm run compile' };
|
|
134
|
+
const options = { build: false };
|
|
135
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
136
|
+
const packageSpy = spyOnPackageApplication(builder);
|
|
137
|
+
await builder.build();
|
|
138
|
+
expect(execSync).not.toHaveBeenCalled();
|
|
139
|
+
expect(packageSpy).toHaveBeenCalled();
|
|
140
|
+
});
|
|
141
|
+
it('exits when build command fails', async () => {
|
|
142
|
+
const config = { buildCommand: 'npm run compile' };
|
|
143
|
+
const options = { build: true };
|
|
144
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
145
|
+
const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {
|
|
146
|
+
throw new Error('exit');
|
|
147
|
+
});
|
|
148
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
|
|
149
|
+
execSync.mockImplementation(() => {
|
|
150
|
+
throw new Error('boom');
|
|
151
|
+
});
|
|
152
|
+
await expect(builder.build()).rejects.toThrow('exit');
|
|
153
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
154
|
+
exitSpy.mockRestore();
|
|
155
|
+
errorSpy.mockRestore();
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
describe('error handling', () => {
|
|
159
|
+
it('handles ensureDir failure gracefully', async () => {
|
|
160
|
+
const config = { buildDir: TEST_BUILD_DIR };
|
|
161
|
+
const options = { outputDir: TEST_OUTPUT_DIR };
|
|
162
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
163
|
+
const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {
|
|
164
|
+
throw new Error('exit');
|
|
165
|
+
});
|
|
166
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
|
|
167
|
+
fsMock.ensureDir.mockRejectedValue(new Error('Permission denied'));
|
|
168
|
+
await expect(builder.build()).rejects.toThrow('exit');
|
|
169
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
170
|
+
expect(errorSpy).toHaveBeenCalled();
|
|
171
|
+
exitSpy.mockRestore();
|
|
172
|
+
errorSpy.mockRestore();
|
|
173
|
+
});
|
|
174
|
+
it('handles copy failure during packaging', async () => {
|
|
175
|
+
const config = { buildDir: TEST_BUILD_DIR };
|
|
176
|
+
const options = { outputDir: TEST_OUTPUT_DIR };
|
|
177
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
178
|
+
const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {
|
|
179
|
+
throw new Error('exit');
|
|
180
|
+
});
|
|
181
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
|
|
182
|
+
fsMock.copy.mockRejectedValue(new Error('Disk full'));
|
|
183
|
+
await expect(builder.build()).rejects.toThrow('exit');
|
|
184
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
185
|
+
expect(errorSpy).toHaveBeenCalled();
|
|
186
|
+
exitSpy.mockRestore();
|
|
187
|
+
errorSpy.mockRestore();
|
|
188
|
+
});
|
|
189
|
+
it('handles readdir failure during cleanup', async () => {
|
|
190
|
+
const config = { buildDir: TEST_BUILD_DIR };
|
|
191
|
+
const options = {
|
|
192
|
+
name: 'test-app',
|
|
193
|
+
version: '1.0.0',
|
|
194
|
+
description: 'Test',
|
|
195
|
+
maintainer: 'Test <test@test.com>',
|
|
196
|
+
outputDir: TEST_OUTPUT_DIR,
|
|
197
|
+
};
|
|
198
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
199
|
+
const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {
|
|
200
|
+
throw new Error('exit');
|
|
201
|
+
});
|
|
202
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
|
|
203
|
+
fsMock.readdir.mockRejectedValue(new Error('Directory not accessible'));
|
|
204
|
+
await expect(builder.build()).rejects.toThrow('exit');
|
|
205
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
206
|
+
expect(errorSpy).toHaveBeenCalled();
|
|
207
|
+
exitSpy.mockRestore();
|
|
208
|
+
errorSpy.mockRestore();
|
|
209
|
+
});
|
|
210
|
+
it('handles remove failure during cleanup', async () => {
|
|
211
|
+
const config = { buildDir: TEST_BUILD_DIR };
|
|
212
|
+
const options = {
|
|
213
|
+
name: 'test-app',
|
|
214
|
+
version: '1.0.0',
|
|
215
|
+
description: 'Test',
|
|
216
|
+
maintainer: 'Test <test@test.com>',
|
|
217
|
+
outputDir: TEST_OUTPUT_DIR,
|
|
218
|
+
};
|
|
219
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
220
|
+
const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {
|
|
221
|
+
throw new Error('exit');
|
|
222
|
+
});
|
|
223
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
|
|
224
|
+
fsMock.readdir.mockResolvedValue(['old.nipkg']);
|
|
225
|
+
fsMock.remove.mockRejectedValue(new Error('File in use'));
|
|
226
|
+
await expect(builder.build()).rejects.toThrow('exit');
|
|
227
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
228
|
+
expect(errorSpy).toHaveBeenCalled();
|
|
229
|
+
exitSpy.mockRestore();
|
|
230
|
+
errorSpy.mockRestore();
|
|
231
|
+
});
|
|
232
|
+
it('handles rename failure after packaging', async () => {
|
|
233
|
+
const config = { buildDir: TEST_BUILD_DIR };
|
|
234
|
+
const options = {
|
|
235
|
+
name: 'test-app',
|
|
236
|
+
version: '1.0.0',
|
|
237
|
+
description: 'Test',
|
|
238
|
+
maintainer: 'Test <test@test.com>',
|
|
239
|
+
outputDir: TEST_OUTPUT_DIR,
|
|
240
|
+
};
|
|
241
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
242
|
+
const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {
|
|
243
|
+
throw new Error('exit');
|
|
244
|
+
});
|
|
245
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
|
|
246
|
+
fsMock.rename.mockRejectedValue(new Error('Cannot rename file'));
|
|
247
|
+
await expect(builder.build()).rejects.toThrow('exit');
|
|
248
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
249
|
+
expect(errorSpy).toHaveBeenCalled();
|
|
250
|
+
exitSpy.mockRestore();
|
|
251
|
+
errorSpy.mockRestore();
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
describe('packaging', () => {
|
|
255
|
+
it('prepares source directory and copies build output', async () => {
|
|
256
|
+
const config = { buildDir: TEST_BUILD_DIR };
|
|
257
|
+
const options = { outputDir: TEST_OUTPUT_DIR };
|
|
258
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
259
|
+
await builder.build();
|
|
260
|
+
const expectedSourceDir = path.join(TEST_OUTPUT_DIR, TEST_TEMP_SOURCE_DIR, TEST_APP_FILES_DIR);
|
|
261
|
+
expect(fsMock.copy).toHaveBeenCalledWith(TEST_BUILD_DIR, expectedSourceDir, { overwrite: true });
|
|
262
|
+
});
|
|
263
|
+
it('packages with suffix, metadata, and cleanup', async () => {
|
|
264
|
+
const config = {
|
|
265
|
+
architecture: 'amd64',
|
|
266
|
+
depends: ['ni-systemlink', 'nodejs'],
|
|
267
|
+
displayName: 'My App',
|
|
268
|
+
userVisible: false,
|
|
269
|
+
buildDir: TEST_BUILD_DIR,
|
|
270
|
+
};
|
|
271
|
+
const options = {
|
|
272
|
+
buildSuffix: 'build-123',
|
|
273
|
+
name: 'test-app',
|
|
274
|
+
version: '1.2.3',
|
|
275
|
+
description: 'My app description',
|
|
276
|
+
maintainer: 'Jane <jane@example.com>',
|
|
277
|
+
outputDir: TEST_OUTPUT_DIR,
|
|
278
|
+
};
|
|
279
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
280
|
+
fsMock.readdir.mockResolvedValue(['old.nipkg', 'old.deb', 'keep.txt']);
|
|
281
|
+
await builder.build();
|
|
282
|
+
expect(fsMock.remove).toHaveBeenCalledWith(path.join(TEST_OUTPUT_DIR, 'old.nipkg'));
|
|
283
|
+
expect(fsMock.remove).toHaveBeenCalledWith(path.join(TEST_OUTPUT_DIR, 'old.deb'));
|
|
284
|
+
expect(deboaState.packageCalls).toBe(1);
|
|
285
|
+
expect(getDeboaControlFileOptions()).toEqual({
|
|
286
|
+
maintainer: 'Jane <jane@example.com>',
|
|
287
|
+
packageName: 'test-app',
|
|
288
|
+
shortDescription: 'My app description',
|
|
289
|
+
version: '1.2.3',
|
|
290
|
+
architecture: 'amd64',
|
|
291
|
+
depends: 'ni-systemlink, nodejs',
|
|
292
|
+
displayName: 'My App',
|
|
293
|
+
userVisible: 'false',
|
|
294
|
+
});
|
|
295
|
+
const packageName = 'test-app_1.2.3.build-123_amd64';
|
|
296
|
+
expect(fsMock.rename).toHaveBeenCalledWith(path.join(TEST_OUTPUT_DIR, `${packageName}.deb`), path.join(TEST_OUTPUT_DIR, `${packageName}.nipkg`));
|
|
297
|
+
});
|
|
298
|
+
it('skips cleanup when skipCleanup is true', async () => {
|
|
299
|
+
const config = { buildDir: TEST_BUILD_DIR };
|
|
300
|
+
const options = {
|
|
301
|
+
skipCleanup: true,
|
|
302
|
+
name: 'app',
|
|
303
|
+
version: DEFAULT_VERSION,
|
|
304
|
+
description: 'App',
|
|
305
|
+
maintainer: 'Dev <dev@example.com>',
|
|
306
|
+
outputDir: TEST_OUTPUT_DIR,
|
|
307
|
+
};
|
|
308
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
309
|
+
fsMock.readdir.mockResolvedValue(['old.nipkg', 'old.deb']);
|
|
310
|
+
await builder.build();
|
|
311
|
+
expect(fsMock.remove).not.toHaveBeenCalledWith(path.join(TEST_OUTPUT_DIR, 'old.nipkg'));
|
|
312
|
+
expect(fsMock.remove).not.toHaveBeenCalledWith(path.join(TEST_OUTPUT_DIR, 'old.deb'));
|
|
313
|
+
});
|
|
314
|
+
it('packages without suffix when none provided', async () => {
|
|
315
|
+
const config = { architecture: DEFAULT_ARCHITECTURE, buildDir: TEST_BUILD_DIR };
|
|
316
|
+
const options = {
|
|
317
|
+
name: 'plain-app',
|
|
318
|
+
version: '2.0.0',
|
|
319
|
+
description: 'Plain app',
|
|
320
|
+
maintainer: 'Plain <plain@example.com>',
|
|
321
|
+
outputDir: TEST_OUTPUT_DIR,
|
|
322
|
+
};
|
|
323
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, options);
|
|
324
|
+
await builder.build();
|
|
325
|
+
const packageName = 'plain-app_2.0.0_all';
|
|
326
|
+
expect(fsMock.rename).toHaveBeenCalledWith(path.join(TEST_OUTPUT_DIR, `${packageName}.deb`), path.join(TEST_OUTPUT_DIR, `${packageName}.nipkg`));
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
describe('metadata and fallbacks', () => {
|
|
330
|
+
it('uses package.json fallbacks for name, description, and version', async () => {
|
|
331
|
+
const config = { buildDir: TEST_BUILD_DIR };
|
|
332
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, {});
|
|
333
|
+
fsMock.readJsonSync.mockReturnValue({
|
|
334
|
+
name: 'pkg-name',
|
|
335
|
+
description: 'pkg-desc',
|
|
336
|
+
version: '9.9.9',
|
|
337
|
+
});
|
|
338
|
+
await builder.build();
|
|
339
|
+
expect(getDeboaControlFileOptions()).toEqual({
|
|
340
|
+
maintainer: DEFAULT_MAINTAINER,
|
|
341
|
+
packageName: 'pkg-name',
|
|
342
|
+
shortDescription: 'pkg-desc',
|
|
343
|
+
version: '9.9.9',
|
|
344
|
+
architecture: DEFAULT_ARCHITECTURE,
|
|
345
|
+
});
|
|
346
|
+
});
|
|
347
|
+
it('falls back to defaults when package.json is missing', async () => {
|
|
348
|
+
const config = { buildDir: TEST_BUILD_DIR };
|
|
349
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, {});
|
|
350
|
+
fsMock.readJsonSync.mockImplementation(() => {
|
|
351
|
+
throw new Error('missing');
|
|
352
|
+
});
|
|
353
|
+
await builder.build();
|
|
354
|
+
expect(getDeboaControlFileOptions()).toEqual({
|
|
355
|
+
maintainer: DEFAULT_MAINTAINER,
|
|
356
|
+
packageName: path.basename(process.cwd()),
|
|
357
|
+
shortDescription: '',
|
|
358
|
+
version: DEFAULT_VERSION,
|
|
359
|
+
architecture: DEFAULT_ARCHITECTURE,
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
it('uses config values over package.json fallbacks', async () => {
|
|
363
|
+
const config = {
|
|
364
|
+
name: 'config-name',
|
|
365
|
+
description: 'config-desc',
|
|
366
|
+
version: '3.3.3',
|
|
367
|
+
maintainer: 'Config <config@example.com>',
|
|
368
|
+
buildDir: TEST_BUILD_DIR,
|
|
369
|
+
};
|
|
370
|
+
const builder = new SystemLinkNipkgBuilderCtor(config, {});
|
|
371
|
+
fsMock.readJsonSync.mockReturnValue({
|
|
372
|
+
name: 'pkg-name',
|
|
373
|
+
description: 'pkg-desc',
|
|
374
|
+
version: '9.9.9',
|
|
375
|
+
});
|
|
376
|
+
await builder.build();
|
|
377
|
+
expect(getDeboaControlFileOptions()).toEqual({
|
|
378
|
+
maintainer: 'Config <config@example.com>',
|
|
379
|
+
packageName: 'config-name',
|
|
380
|
+
shortDescription: 'config-desc',
|
|
381
|
+
version: '3.3.3',
|
|
382
|
+
architecture: DEFAULT_ARCHITECTURE,
|
|
383
|
+
});
|
|
384
|
+
});
|
|
385
|
+
});
|
|
386
|
+
});
|
|
387
|
+
});
|
|
388
|
+
//# sourceMappingURL=builder.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.test.js","sourceRoot":"","sources":["../src/builder.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -14,7 +14,7 @@ const program = new Command();
|
|
|
14
14
|
program
|
|
15
15
|
.name('sl-webapp-nipkg')
|
|
16
16
|
.description('Build tool for packaging Node.js applications into SystemLink WebApp .nipkg format')
|
|
17
|
-
.version(packageJson.version);
|
|
17
|
+
.version(packageJson.version, '-V, --cli-version', 'CLI version');
|
|
18
18
|
program
|
|
19
19
|
.command('build')
|
|
20
20
|
.description('Build and package application as SystemLink WebApp .nipkg')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,+BAA+B;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGtD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvC,iCAAiC;AACjC,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAwB,CAAC;AAEpG,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,oFAAoF,CAAC;KACjG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.test.d.ts","sourceRoot":"","sources":["../src/cli.test.ts"],"names":[],"mappings":""}
|
package/dist/cli.test.js
ADDED
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
5
|
+
const builderState = {
|
|
6
|
+
lastConfig: undefined,
|
|
7
|
+
lastOptions: undefined,
|
|
8
|
+
buildCalls: 0,
|
|
9
|
+
};
|
|
10
|
+
vi.mock('./builder.js', () => ({
|
|
11
|
+
SystemLinkNipkgBuilder: vi.fn().mockImplementation((config, options) => {
|
|
12
|
+
builderState.lastConfig = config;
|
|
13
|
+
builderState.lastOptions = options;
|
|
14
|
+
return {
|
|
15
|
+
build: async () => {
|
|
16
|
+
builderState.buildCalls += 1;
|
|
17
|
+
await Promise.resolve();
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}),
|
|
21
|
+
}));
|
|
22
|
+
vi.mock('chalk', () => ({
|
|
23
|
+
default: {
|
|
24
|
+
blue: (text) => text,
|
|
25
|
+
yellow: (text) => text,
|
|
26
|
+
green: (text) => text,
|
|
27
|
+
cyan: (text) => text,
|
|
28
|
+
gray: (text) => text,
|
|
29
|
+
red: { bold: (text) => text },
|
|
30
|
+
},
|
|
31
|
+
}));
|
|
32
|
+
vi.mock('fs-extra', () => ({
|
|
33
|
+
default: {
|
|
34
|
+
readJson: vi.fn(),
|
|
35
|
+
existsSync: vi.fn(),
|
|
36
|
+
writeJson: vi.fn(),
|
|
37
|
+
},
|
|
38
|
+
}));
|
|
39
|
+
const fsMock = fs;
|
|
40
|
+
const flushPromises = async () => {
|
|
41
|
+
await new Promise(resolve => {
|
|
42
|
+
setTimeout(resolve, 0);
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
// Constants for commonly used file names
|
|
46
|
+
const PACKAGE_JSON = 'package.json';
|
|
47
|
+
const NIPKG_CONFIG_JSON = 'nipkg.config.json';
|
|
48
|
+
const CUSTOM_CONFIG_JSON = 'custom-config.json';
|
|
49
|
+
const MISSING_CONFIG_JSON = 'missing-config.json';
|
|
50
|
+
// Constants for CLI arguments
|
|
51
|
+
const CLI_NODE = 'node';
|
|
52
|
+
const CLI_SCRIPT = 'cli';
|
|
53
|
+
const CLI_BUILD = 'build';
|
|
54
|
+
const CLI_INIT = 'init';
|
|
55
|
+
const packageJsonStub = {
|
|
56
|
+
version: '0.0.0',
|
|
57
|
+
name: 'cli-test-app',
|
|
58
|
+
author: 'Cli Tester <cli@test.local>',
|
|
59
|
+
};
|
|
60
|
+
describe('CLI', () => {
|
|
61
|
+
const originalArgv = process.argv.slice();
|
|
62
|
+
let exitSpy;
|
|
63
|
+
/**
|
|
64
|
+
* Helper to run the CLI by importing and flushing promises.
|
|
65
|
+
* This is the standard pattern for testing CLI behavior.
|
|
66
|
+
*/
|
|
67
|
+
async function runCli() {
|
|
68
|
+
await import('./cli.js');
|
|
69
|
+
await flushPromises();
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Helper to mock file existence for specific basenames.
|
|
73
|
+
* Makes tests more readable by clearly showing which files exist.
|
|
74
|
+
*/
|
|
75
|
+
function mockFileExistence(...fileBasenames) {
|
|
76
|
+
fsMock.existsSync.mockImplementation((filePath) => {
|
|
77
|
+
const basename = path.basename(filePath);
|
|
78
|
+
return fileBasenames.includes(basename);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Helper to mock readJson responses for multiple files.
|
|
83
|
+
* Allows tests to specify only the files they care about.
|
|
84
|
+
*/
|
|
85
|
+
function mockReadJson(fileMap) {
|
|
86
|
+
fsMock.readJson.mockImplementation((filePath) => {
|
|
87
|
+
const basename = path.basename(filePath);
|
|
88
|
+
return fileMap[basename] ?? {};
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
beforeEach(() => {
|
|
92
|
+
vi.resetModules();
|
|
93
|
+
vi.clearAllMocks();
|
|
94
|
+
builderState.lastConfig = undefined;
|
|
95
|
+
builderState.lastOptions = undefined;
|
|
96
|
+
builderState.buildCalls = 0;
|
|
97
|
+
exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => undefined);
|
|
98
|
+
// Default: package.json exists, nipkg.config.json does not
|
|
99
|
+
fsMock.existsSync.mockReturnValue(false);
|
|
100
|
+
fsMock.existsSync.mockImplementation((filePath) => path.basename(filePath) === PACKAGE_JSON);
|
|
101
|
+
// Default: return packageJsonStub for package.json, empty object for unknown files
|
|
102
|
+
fsMock.readJson.mockImplementation((filePath) => {
|
|
103
|
+
if (path.basename(filePath) === PACKAGE_JSON) {
|
|
104
|
+
return packageJsonStub;
|
|
105
|
+
}
|
|
106
|
+
return {};
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
afterEach(() => {
|
|
110
|
+
process.argv = originalArgv;
|
|
111
|
+
exitSpy.mockRestore();
|
|
112
|
+
});
|
|
113
|
+
describe('build command', () => {
|
|
114
|
+
describe('config loading', () => {
|
|
115
|
+
it('loads custom config and passes CLI overrides', async () => {
|
|
116
|
+
fsMock.existsSync.mockImplementation((filePath) => {
|
|
117
|
+
const basename = path.basename(filePath);
|
|
118
|
+
return basename === PACKAGE_JSON || basename === CUSTOM_CONFIG_JSON;
|
|
119
|
+
});
|
|
120
|
+
fsMock.readJson.mockImplementation((filePath) => {
|
|
121
|
+
const basename = path.basename(filePath);
|
|
122
|
+
if (basename === PACKAGE_JSON) {
|
|
123
|
+
return packageJsonStub;
|
|
124
|
+
}
|
|
125
|
+
if (basename === CUSTOM_CONFIG_JSON) {
|
|
126
|
+
return {
|
|
127
|
+
name: 'config-app',
|
|
128
|
+
buildDir: 'config-dist',
|
|
129
|
+
buildCommand: 'npm run build',
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
return {};
|
|
133
|
+
});
|
|
134
|
+
process.argv = [
|
|
135
|
+
CLI_NODE,
|
|
136
|
+
CLI_SCRIPT,
|
|
137
|
+
CLI_BUILD,
|
|
138
|
+
'--config',
|
|
139
|
+
CUSTOM_CONFIG_JSON,
|
|
140
|
+
'--build',
|
|
141
|
+
'--verbose',
|
|
142
|
+
'--skip-cleanup',
|
|
143
|
+
'--build-suffix',
|
|
144
|
+
'b123',
|
|
145
|
+
'--build-dir',
|
|
146
|
+
'dist',
|
|
147
|
+
'--name',
|
|
148
|
+
'cli-app',
|
|
149
|
+
'--version',
|
|
150
|
+
'2.0.0',
|
|
151
|
+
'--description',
|
|
152
|
+
'CLI description',
|
|
153
|
+
'--maintainer',
|
|
154
|
+
'Dev <dev@example.com>',
|
|
155
|
+
'--output-dir',
|
|
156
|
+
'out',
|
|
157
|
+
];
|
|
158
|
+
await runCli();
|
|
159
|
+
expect(exitSpy).not.toHaveBeenCalled();
|
|
160
|
+
expect(builderState.buildCalls).toBe(1);
|
|
161
|
+
expect(builderState.lastConfig).toEqual({
|
|
162
|
+
name: 'config-app',
|
|
163
|
+
buildDir: 'config-dist',
|
|
164
|
+
buildCommand: 'npm run build',
|
|
165
|
+
});
|
|
166
|
+
expect(builderState.lastOptions).toEqual({
|
|
167
|
+
build: true,
|
|
168
|
+
verbose: true,
|
|
169
|
+
skipCleanup: true,
|
|
170
|
+
buildSuffix: 'b123',
|
|
171
|
+
buildDir: 'dist',
|
|
172
|
+
name: 'cli-app',
|
|
173
|
+
version: '2.0.0',
|
|
174
|
+
description: 'CLI description',
|
|
175
|
+
maintainer: 'Dev <dev@example.com>',
|
|
176
|
+
outputDir: 'out',
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
it('uses default config path when present', async () => {
|
|
180
|
+
mockFileExistence(PACKAGE_JSON, NIPKG_CONFIG_JSON);
|
|
181
|
+
mockReadJson({
|
|
182
|
+
[NIPKG_CONFIG_JSON]: {
|
|
183
|
+
name: 'default-config-app',
|
|
184
|
+
buildDir: 'dist',
|
|
185
|
+
},
|
|
186
|
+
[PACKAGE_JSON]: packageJsonStub,
|
|
187
|
+
});
|
|
188
|
+
process.argv = [CLI_NODE, CLI_SCRIPT, CLI_BUILD];
|
|
189
|
+
await runCli();
|
|
190
|
+
expect(exitSpy).not.toHaveBeenCalled();
|
|
191
|
+
expect(builderState.buildCalls).toBe(1);
|
|
192
|
+
expect(builderState.lastConfig).toEqual({
|
|
193
|
+
name: 'default-config-app',
|
|
194
|
+
buildDir: 'dist',
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
it('warns when default config is missing', async () => {
|
|
198
|
+
const logSpy = vi.spyOn(console, 'log').mockImplementation(() => undefined);
|
|
199
|
+
process.argv = [CLI_NODE, CLI_SCRIPT, CLI_BUILD];
|
|
200
|
+
await runCli();
|
|
201
|
+
expect(exitSpy).not.toHaveBeenCalled();
|
|
202
|
+
expect(builderState.buildCalls).toBe(1);
|
|
203
|
+
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('No nipkg.config.json'));
|
|
204
|
+
logSpy.mockRestore();
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
describe('error handling', () => {
|
|
208
|
+
it('exits when custom config path is missing', async () => {
|
|
209
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
|
|
210
|
+
// Uses default mocks: package.json exists, custom config does not
|
|
211
|
+
process.argv = [CLI_NODE, CLI_SCRIPT, CLI_BUILD, '--config', MISSING_CONFIG_JSON];
|
|
212
|
+
await runCli();
|
|
213
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
214
|
+
expect(errorSpy).toHaveBeenCalled();
|
|
215
|
+
expect(builderState.buildCalls).toBe(0);
|
|
216
|
+
});
|
|
217
|
+
it('handles invalid JSON in config file', async () => {
|
|
218
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
|
|
219
|
+
mockFileExistence(PACKAGE_JSON, CUSTOM_CONFIG_JSON);
|
|
220
|
+
fsMock.readJson.mockImplementation((filePath) => {
|
|
221
|
+
const basename = path.basename(filePath);
|
|
222
|
+
if (basename === CUSTOM_CONFIG_JSON) {
|
|
223
|
+
throw new Error('Unexpected token in JSON');
|
|
224
|
+
}
|
|
225
|
+
if (basename === PACKAGE_JSON) {
|
|
226
|
+
return packageJsonStub;
|
|
227
|
+
}
|
|
228
|
+
return {};
|
|
229
|
+
});
|
|
230
|
+
process.argv = [CLI_NODE, CLI_SCRIPT, CLI_BUILD, '--config', CUSTOM_CONFIG_JSON];
|
|
231
|
+
await runCli();
|
|
232
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
233
|
+
expect(errorSpy).toHaveBeenCalled();
|
|
234
|
+
expect(builderState.buildCalls).toBe(0);
|
|
235
|
+
});
|
|
236
|
+
it('handles config file read error', async () => {
|
|
237
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
|
|
238
|
+
mockFileExistence(PACKAGE_JSON, NIPKG_CONFIG_JSON);
|
|
239
|
+
fsMock.readJson.mockImplementation((filePath) => {
|
|
240
|
+
const basename = path.basename(filePath);
|
|
241
|
+
if (basename === NIPKG_CONFIG_JSON) {
|
|
242
|
+
throw new Error('EACCES: permission denied');
|
|
243
|
+
}
|
|
244
|
+
if (basename === PACKAGE_JSON) {
|
|
245
|
+
return packageJsonStub;
|
|
246
|
+
}
|
|
247
|
+
return {};
|
|
248
|
+
});
|
|
249
|
+
process.argv = [CLI_NODE, CLI_SCRIPT, CLI_BUILD];
|
|
250
|
+
await runCli();
|
|
251
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
252
|
+
expect(errorSpy).toHaveBeenCalled();
|
|
253
|
+
expect(builderState.buildCalls).toBe(0);
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
describe('init command', () => {
|
|
258
|
+
it('writes a default config when missing', async () => {
|
|
259
|
+
// Uses default mocks: package.json exists, nipkg.config.json does not
|
|
260
|
+
process.argv = [CLI_NODE, CLI_SCRIPT, CLI_INIT];
|
|
261
|
+
await runCli();
|
|
262
|
+
expect(fsMock.writeJson).toHaveBeenCalledTimes(1);
|
|
263
|
+
const writeCall = fsMock.writeJson.mock.calls[0];
|
|
264
|
+
const [writePath, payload] = writeCall;
|
|
265
|
+
expect(path.basename(writePath)).toBe(NIPKG_CONFIG_JSON);
|
|
266
|
+
expect(payload).toEqual({
|
|
267
|
+
maintainer: 'Cli Tester <cli@test.local>',
|
|
268
|
+
architecture: 'all',
|
|
269
|
+
displayName: 'cli-test-app',
|
|
270
|
+
buildDir: 'dist',
|
|
271
|
+
buildCommand: 'npm run build',
|
|
272
|
+
userVisible: true,
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
it('does nothing when config already exists', async () => {
|
|
276
|
+
mockFileExistence(PACKAGE_JSON, NIPKG_CONFIG_JSON);
|
|
277
|
+
process.argv = [CLI_NODE, CLI_SCRIPT, CLI_INIT];
|
|
278
|
+
await runCli();
|
|
279
|
+
expect(fsMock.writeJson).not.toHaveBeenCalled();
|
|
280
|
+
expect(exitSpy).not.toHaveBeenCalled();
|
|
281
|
+
});
|
|
282
|
+
it('uses cwd name when package.json is missing', async () => {
|
|
283
|
+
fsMock.existsSync.mockReturnValue(false);
|
|
284
|
+
process.argv = [CLI_NODE, CLI_SCRIPT, CLI_INIT];
|
|
285
|
+
await runCli();
|
|
286
|
+
expect(fsMock.writeJson).toHaveBeenCalledTimes(1);
|
|
287
|
+
const writeCall = fsMock.writeJson.mock.calls[0];
|
|
288
|
+
const [, payload] = writeCall;
|
|
289
|
+
expect(payload).toEqual({
|
|
290
|
+
architecture: 'all',
|
|
291
|
+
displayName: path.basename(process.cwd()),
|
|
292
|
+
buildDir: 'dist',
|
|
293
|
+
buildCommand: 'npm run build',
|
|
294
|
+
userVisible: true,
|
|
295
|
+
});
|
|
296
|
+
});
|
|
297
|
+
describe('error handling', () => {
|
|
298
|
+
it('handles writeJson failure', async () => {
|
|
299
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
|
|
300
|
+
fsMock.writeJson.mockRejectedValue(new Error('EACCES: permission denied'));
|
|
301
|
+
process.argv = [CLI_NODE, CLI_SCRIPT, CLI_INIT];
|
|
302
|
+
await runCli();
|
|
303
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
304
|
+
expect(errorSpy).toHaveBeenCalled();
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
//# sourceMappingURL=cli.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../src/cli.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ni-kismet/sl-webapp-nipkg",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Build tool for packaging web applications into SystemLink WebApp .nipkg format. Supports Node.js, Python, .NET Blazor, and static sites.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
"scripts": {
|
|
29
29
|
"build": "tsc",
|
|
30
30
|
"dev": "tsc --watch",
|
|
31
|
+
"test": "vitest run",
|
|
32
|
+
"test:ui": "vitest --ui",
|
|
33
|
+
"test:coverage": "vitest run --coverage",
|
|
31
34
|
"lint": "eslint .",
|
|
32
35
|
"lint:fix": "eslint . --fix",
|
|
33
36
|
"change": "beachball change",
|
|
@@ -69,9 +72,13 @@
|
|
|
69
72
|
"@ni/eslint-config-typescript": "^5.0.5",
|
|
70
73
|
"@types/fs-extra": "^11.0.4",
|
|
71
74
|
"@types/node": "^25.3.0",
|
|
75
|
+
"@vitest/coverage-v8": "^2.1.8",
|
|
76
|
+
"@vitest/ui": "^2.1.8",
|
|
72
77
|
"beachball": "^2.63.0",
|
|
73
78
|
"eslint": "^9.39.3",
|
|
79
|
+
"eslint-plugin-n": "^17.24.0",
|
|
74
80
|
"eslint-plugin-tsdoc": "^0.5.0",
|
|
75
|
-
"typescript": "^5.9.3"
|
|
81
|
+
"typescript": "^5.9.3",
|
|
82
|
+
"vitest": "^2.1.8"
|
|
76
83
|
}
|
|
77
84
|
}
|