fragment-ts 1.0.19 → 1.0.21

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.
@@ -177,7 +177,7 @@ class InitCommand {
177
177
  "migrate:revert": "fragment migrate:revert",
178
178
  },
179
179
  dependencies: {
180
- "fragment-ts": "^1.0.19",
180
+ "fragment-ts": "^1.0.21",
181
181
  "reflect-metadata": "^0.1.13",
182
182
  },
183
183
  devDependencies: {
@@ -2,5 +2,6 @@ import { Command } from "commander";
2
2
  export declare class TestCommand {
3
3
  static register(program: Command): void;
4
4
  private static runTests;
5
+ private static generateRunnerScript;
5
6
  }
6
7
  //# sourceMappingURL=test.command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;mBAiBlB,QAAQ;CAwQ9B"}
1
+ {"version":3,"file":"test.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;mBAkBlB,QAAQ;IAkJ7B,OAAO,CAAC,MAAM,CAAC,oBAAoB;CA6GpC"}
@@ -41,6 +41,7 @@ const chalk_1 = __importDefault(require("chalk"));
41
41
  const path = __importStar(require("path"));
42
42
  const child_process_1 = require("child_process");
43
43
  const fs = __importStar(require("fs"));
44
+ const chokidar_1 = __importDefault(require("chokidar"));
44
45
  class TestCommand {
45
46
  static register(program) {
46
47
  program
@@ -50,6 +51,7 @@ class TestCommand {
50
51
  .option("--env <environment>", "Environment mode: dev (use src/) or prod (use dist/)", "auto")
51
52
  .option("--pattern <pattern>", "Test file pattern", "**/*.spec.ts")
52
53
  .option("--coverage", "Generate coverage report")
54
+ .option("--no-color", "Disable colored output")
53
55
  .action(async (options) => {
54
56
  await this.runTests(options);
55
57
  });
@@ -81,7 +83,7 @@ class TestCommand {
81
83
  useTypeScript = false;
82
84
  mode = "production (dist/)";
83
85
  basePath = "dist";
84
- pattern = options.pattern.replace(".ts", ".js") || "**/*.spec.js";
86
+ pattern = options.pattern.replace(/\.ts$/, ".js") || "**/*.spec.js";
85
87
  }
86
88
  else {
87
89
  // Auto-detect
@@ -95,216 +97,157 @@ class TestCommand {
95
97
  useTypeScript = false;
96
98
  mode = "auto-detected production (dist/)";
97
99
  basePath = "dist";
98
- pattern = options.pattern.replace(".ts", ".js") || "**/*.spec.js";
100
+ pattern = options.pattern.replace(/\.ts$/, ".js") || "**/*.spec.js";
99
101
  }
100
102
  else {
101
103
  console.log(chalk_1.default.red("No src/ or dist/ directory found. Run: fragment init"));
102
104
  return;
103
105
  }
104
106
  }
105
- console.log(chalk_1.default.gray(` Mode: ${mode}\n`));
106
- const scriptContent = `
107
+ console.log(chalk_1.default.gray(` Mode: ${mode}`));
108
+ console.log(chalk_1.default.gray(` Pattern: ${basePath}/${pattern}`));
109
+ // Check if we need to use ts-node for TypeScript files
110
+ const tsConfigPath = path.join(cwd, "tsconfig.json");
111
+ const hasTsConfig = fs.existsSync(tsConfigPath);
112
+ // Create a simple runner script that uses our test runner module
113
+ const scriptContent = this.generateRunnerScript({
114
+ useTypeScript,
115
+ basePath,
116
+ pattern,
117
+ hasTsConfig,
118
+ tsConfigPath,
119
+ watchMode: options.watch,
120
+ coverage: options.coverage,
121
+ noColor: options.color === false,
122
+ });
123
+ const scriptPath = path.join(cwd, ".fragment-test-runner.js");
124
+ try {
125
+ fs.writeFileSync(scriptPath, scriptContent);
126
+ fs.chmodSync(scriptPath, "755");
127
+ // -----------------------
128
+ // Watch / Coverage / Single Run
129
+ // -----------------------
130
+ if (options.watch) {
131
+ console.log(chalk_1.default.green("\nšŸ‘€ Watch mode enabled. Listening for changes...\n"));
132
+ const watcher = chokidar_1.default.watch(`${basePath}/**/*.spec.${useTypeScript ? "ts" : "js"}`, {
133
+ ignoreInitial: true,
134
+ });
135
+ const runTests = () => {
136
+ const proc = (0, child_process_1.spawn)("node", [scriptPath], { stdio: "inherit" });
137
+ proc.on("close", (code) => {
138
+ if (code !== 0)
139
+ console.log(chalk_1.default.red(`Test run exited with code ${code}`));
140
+ });
141
+ };
142
+ runTests(); // Initial run
143
+ watcher.on("all", (event, pathChanged) => {
144
+ console.log(chalk_1.default.blue(`\nšŸ”„ File changed (${event}): ${pathChanged}`));
145
+ runTests();
146
+ });
147
+ }
148
+ else if (options.coverage) {
149
+ console.log(chalk_1.default.green("\nšŸ“Š Coverage enabled. Running tests with coverage...\n"));
150
+ const proc = (0, child_process_1.spawn)("npx", ["c8", "--reporter=lcov", "--reporter=text", "node", scriptPath], { stdio: "inherit" });
151
+ proc.on("close", (code) => process.exit(code || 0));
152
+ proc.on("error", (err) => {
153
+ console.error(chalk_1.default.red("Failed to run coverage:"), err);
154
+ process.exit(1);
155
+ });
156
+ }
157
+ else {
158
+ const proc = (0, child_process_1.spawn)("node", [scriptPath], { stdio: "inherit" });
159
+ proc.on("close", (code) => process.exit(code || 0));
160
+ proc.on("error", (err) => {
161
+ console.error(chalk_1.default.red("Failed to run tests:"), err);
162
+ process.exit(1);
163
+ });
164
+ }
165
+ }
166
+ catch (error) {
167
+ console.error(chalk_1.default.red("Failed to create test runner:"), error.message);
168
+ process.exit(1);
169
+ }
170
+ }
171
+ static generateRunnerScript(options) {
172
+ const { useTypeScript, basePath, pattern, hasTsConfig, tsConfigPath, noColor, } = options;
173
+ let runnerImportPath = "fragment-ts";
174
+ const possiblePaths = [
175
+ path.join(process.cwd(), "node_modules", "fragment-ts", "testing"),
176
+ path.join(process.cwd(), "node_modules", "fragment-ts", "dist", "testing"),
177
+ path.join(__dirname, "..", "..", "testing"),
178
+ ];
179
+ let resolvedRunnerPath = runnerImportPath;
180
+ for (const testPath of possiblePaths) {
181
+ if (fs.existsSync(testPath + ".ts") || fs.existsSync(testPath + ".js")) {
182
+ resolvedRunnerPath = testPath;
183
+ break;
184
+ }
185
+ }
186
+ return `
187
+ "use strict";
188
+
107
189
  ${useTypeScript ? "require('ts-node/register/transpile-only');" : ""}
108
190
  require('reflect-metadata');
109
191
 
110
- const { glob } = require('glob');
111
- const path = require('path');
192
+ process.env.NODE_ENV = 'test';
193
+ ${noColor ? "process.env.FORCE_COLOR = '0';" : "process.env.FORCE_COLOR = '1';"}
112
194
 
113
- // Global test state
114
- const testState = {
115
- suites: [],
116
- currentSuite: null,
117
- passed: 0,
118
- failed: 0,
119
- errors: []
120
- };
195
+ ${hasTsConfig && useTypeScript
196
+ ? `
197
+ try {
198
+ const tsNode = require('ts-node');
199
+ tsNode.register({
200
+ project: '${tsConfigPath}',
201
+ transpileOnly: true,
202
+ compilerOptions: {
203
+ module: 'commonjs',
204
+ target: 'ES2020',
205
+ esModuleInterop: true,
206
+ skipLibCheck: true
207
+ }
208
+ });
209
+ } catch (error) {}`
210
+ : ""}
121
211
 
122
- // Global test functions
123
- global.describe = function(name, fn) {
124
- const suite = { name, tests: [] };
125
- testState.suites.push(suite);
126
- testState.currentSuite = suite;
127
- fn();
128
- testState.currentSuite = null;
129
- };
212
+ let testRunner;
213
+ try {
214
+ const testModule = require('${resolvedRunnerPath}');
130
215
 
131
- global.it = function(name, fn) {
132
- if (!testState.currentSuite) {
133
- throw new Error('it() must be called inside describe()');
216
+ if (testModule.getTestRunner) {
217
+ testRunner = testModule.getTestRunner();
218
+ } else if (testModule.TestRunner) {
219
+ testRunner = new testModule.TestRunner();
220
+ } else if (testModule.default && testModule.default.getTestRunner) {
221
+ testRunner = testModule.default.getTestRunner();
222
+ } else {
223
+ testRunner = testModule;
134
224
  }
135
- testState.currentSuite.tests.push({ name, fn });
136
- };
137
-
138
- global.expect = function(actual) {
139
- return {
140
- toBe(expected) {
141
- if (actual !== expected) {
142
- throw new Error(\`Expected \${actual} to be \${expected}\`);
143
- }
144
- },
145
- toEqual(expected) {
146
- if (JSON.stringify(actual) !== JSON.stringify(expected)) {
147
- throw new Error(\`Expected \${JSON.stringify(actual)} to equal \${JSON.stringify(expected)}\`);
148
- }
149
- },
150
- toBeTruthy() {
151
- if (!actual) {
152
- throw new Error(\`Expected \${actual} to be truthy\`);
153
- }
154
- },
155
- toBeFalsy() {
156
- if (actual) {
157
- throw new Error(\`Expected \${actual} to be falsy\`);
158
- }
159
- },
160
- toThrow(expectedError) {
161
- let threw = false;
162
- let error = null;
163
- try {
164
- actual();
165
- } catch (e) {
166
- threw = true;
167
- error = e;
168
- }
169
- if (!threw) {
170
- throw new Error('Expected function to throw');
171
- }
172
- if (expectedError && error.message !== expectedError) {
173
- throw new Error(\`Expected error message "\${expectedError}" but got "\${error.message}"\`);
174
- }
175
- },
176
- toBeInstanceOf(expected) {
177
- if (!(actual instanceof expected)) {
178
- throw new Error(\`Expected \${actual} to be instance of \${expected.name}\`);
179
- }
180
- },
181
- toContain(expected) {
182
- if (!actual.includes(expected)) {
183
- throw new Error(\`Expected \${actual} to contain \${expected}\`);
184
- }
185
- },
186
- toHaveProperty(property, value) {
187
- if (!(property in actual)) {
188
- throw new Error(\`Expected object to have property \${property}\`);
189
- }
190
- if (value !== undefined && actual[property] !== value) {
191
- throw new Error(\`Expected property \${property} to be \${value} but got \${actual[property]}\`);
192
- }
193
- },
194
- toBeNull() {
195
- if (actual !== null) {
196
- throw new Error(\`Expected \${actual} to be null\`);
197
- }
198
- },
199
- toBeUndefined() {
200
- if (actual !== undefined) {
201
- throw new Error(\`Expected \${actual} to be undefined\`);
202
- }
203
- },
204
- toHaveLength(expected) {
205
- if (actual.length !== expected) {
206
- throw new Error(\`Expected length \${expected} but got \${actual.length}\`);
207
- }
208
- }
209
- };
210
- };
225
+ } catch (error) {
226
+ console.error('Failed to load test runner:', error.message);
227
+ console.error('Make sure fragment-ts is installed as a dependency');
228
+ process.exit(1);
229
+ }
211
230
 
212
231
  async function runTests() {
213
232
  try {
214
- // Find and load test files
215
- const files = await glob('${basePath}/${pattern}', { cwd: process.cwd() });
216
-
217
- if (files.length === 0) {
218
- console.log('No test files found matching pattern: ${basePath}/${pattern}');
219
- process.exit(0);
220
- }
221
-
222
- console.log(\`Found \${files.length} test file(s)\\n\`);
223
-
224
- // Load all test files
225
- for (const file of files) {
226
- require(path.resolve(file));
227
- }
228
-
229
- // Run all tests
230
- for (const suite of testState.suites) {
231
- console.log(\`\\nšŸ“¦ \${suite.name}\`);
232
-
233
- for (const test of suite.tests) {
234
- try {
235
- await test.fn();
236
- console.log(\` āœ“ \${test.name}\`);
237
- testState.passed++;
238
- } catch (error) {
239
- console.log(\` āœ— \${test.name}\`);
240
- console.error(\` \${error.message}\`);
241
- testState.failed++;
242
- testState.errors.push({
243
- suite: suite.name,
244
- test: test.name,
245
- error: error.message,
246
- stack: error.stack
247
- });
248
- }
249
- }
250
- }
251
-
252
- // Print summary
253
- console.log(\`\\n\\nšŸ“Š Results: \${testState.passed} passed, \${testState.failed} failed\\n\`);
254
-
255
- if (testState.failed > 0) {
256
- console.log('\\nāŒ Failed Tests:\\n');
257
- testState.errors.forEach(err => {
258
- console.log(\` \${err.suite} > \${err.test}\`);
259
- console.log(\` \${err.error}\\n\`);
260
- });
261
- process.exit(1);
262
- } else {
263
- console.log('āœ… All tests passed!\\n');
264
- process.exit(0);
265
- }
233
+ console.log('Looking for test files...');
234
+ await testRunner.loadTestFiles('${basePath}/${pattern}');
235
+ await testRunner.run();
266
236
  } catch (error) {
267
- console.error('Error running tests:', error);
237
+ console.error('\\nāŒ Error running tests:', error.message);
238
+ if (error.stack && process.env.DEBUG) console.error(error.stack);
268
239
  process.exit(1);
269
240
  }
270
241
  }
271
242
 
272
- runTests();
243
+ process.on('SIGINT', () => { console.log('\\n\\nTest run interrupted'); process.exit(130); });
244
+ process.on('SIGTERM', () => { console.log('\\n\\nTest run terminated'); process.exit(143); });
245
+
246
+ runTests().catch(error => {
247
+ console.error('Unhandled error:', error);
248
+ process.exit(1);
249
+ });
273
250
  `;
274
- const scriptPath = path.join(cwd, ".fragment-test-runner.js");
275
- try {
276
- fs.writeFileSync(scriptPath, scriptContent);
277
- const nodeArgs = [scriptPath];
278
- const env = {
279
- ...process.env,
280
- TS_NODE_TRANSPILE_ONLY: "true",
281
- NODE_ENV: "test",
282
- };
283
- const proc = (0, child_process_1.spawn)("node", nodeArgs, {
284
- cwd,
285
- stdio: "inherit",
286
- env,
287
- });
288
- proc.on("close", (code) => {
289
- try {
290
- fs.unlinkSync(scriptPath);
291
- }
292
- catch { }
293
- process.exit(code || 0);
294
- });
295
- proc.on("error", (error) => {
296
- console.error(chalk_1.default.red("Failed to run tests:"), error);
297
- try {
298
- fs.unlinkSync(scriptPath);
299
- }
300
- catch { }
301
- process.exit(1);
302
- });
303
- }
304
- catch (error) {
305
- console.error(chalk_1.default.red("Failed to create test runner:"), error.message);
306
- process.exit(1);
307
- }
308
251
  }
309
252
  }
310
253
  exports.TestCommand = TestCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"test.command.js","sourceRoot":"","sources":["../../../src/cli/commands/test.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.command.js","sourceRoot":"","sources":["../../../src/cli/commands/test.command.ts"],"names":[],"mappings":"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"}
@@ -12,10 +12,13 @@ export declare class TestRunner {
12
12
  private suites;
13
13
  private passed;
14
14
  private failed;
15
+ private errors;
15
16
  describe(name: string, fn: () => void): void;
16
17
  run(): Promise<void>;
17
18
  loadTestFiles(pattern: string): Promise<void>;
18
19
  }
20
+ export declare function getTestRunner(): TestRunner;
21
+ export declare function initTestRunner(): TestRunner;
19
22
  export declare function describe(name: string, fn: () => void): void;
20
23
  export declare function it(name: string, fn: () => void | Promise<void>): void;
21
24
  export declare function beforeEach(fn: () => void | Promise<void>): void;
@@ -25,10 +28,10 @@ export declare function expect(actual: any): {
25
28
  toEqual(expected: any): void;
26
29
  toBeTruthy(): void;
27
30
  toBeFalsy(): void;
28
- toThrow(): void;
31
+ toThrow(expectedError?: string): void;
29
32
  toBeInstanceOf(expected: any): void;
30
33
  toContain(expected: any): void;
31
- toHaveProperty(prop: string): void;
34
+ toHaveProperty(property: string, value?: any): void;
32
35
  toBeNull(): void;
33
36
  toBeUndefined(): void;
34
37
  toHaveLength(expected: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/testing/runner.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,eAAe,EAAE,KAAK,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,cAAc,EAAE,KAAK,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAKD,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAK;IAEnB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAiCtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCpB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOpD;AAKD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAK3D;AAED,wBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAKrE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAK/D;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAK9D;AAKD,wBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG;mBAEf,GAAG;sBAMA,GAAG;;;;6BAqCI,GAAG;wBAMR,GAAG;yBAUF,MAAM;;;2BAkBJ,MAAM;EAUhC"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/testing/runner.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,eAAe,EAAE,KAAK,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,cAAc,EAAE,KAAK,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAKD,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAKN;IAER,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAiCtC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAiEpB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA2BpD;AAOD,wBAAgB,aAAa,IAAI,UAAU,CAM1C;AAED,wBAAgB,cAAc,IAAI,UAAU,CAE3C;AAkBD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAa3D;AAED,wBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAKrE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAK/D;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAK9D;AAKD,wBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG;mBAEf,GAAG;sBAMA,GAAG;;;4BAoBG,MAAM;6BAyBL,GAAG;wBAMR,GAAG;6BAUE,MAAM,UAAU,GAAG;;;2BAwBrB,MAAM;EAUhC"}