Skip to content

Commit a92c664

Browse files
authored
Merge pull request #69 from bertdeblock/smoke-test
Run smoke test in CI
2 parents f3ff44e + 0ba7663 commit a92c664

File tree

7 files changed

+58
-13
lines changed

7 files changed

+58
-13
lines changed

.github/workflows/ci.yml

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,19 @@ jobs:
1212
steps:
1313
- uses: actions/checkout@v4
1414
- uses: ./.github/actions/setup-environment
15-
- run: pnpm lint
15+
- name: Lint
16+
run: pnpm lint
1617

1718
test:
18-
name: "test (node: ${{matrix.node-version}}, os: ${{matrix.os}})"
19+
name: "Test (Node: ${{matrix.node-version}}, OS: ${{matrix.os}})"
1920
runs-on: ${{matrix.os}}
2021
steps:
2122
- uses: actions/checkout@v4
2223
- uses: ./.github/actions/setup-environment
2324
with:
2425
node-version: ${{matrix.node-version}}
25-
- run: pnpm test:coverage
26+
- name: Run tests with coverage
27+
run: pnpm test:coverage
2628
strategy:
2729
fail-fast: false
2830
matrix:
@@ -35,3 +37,27 @@ jobs:
3537
- macos-latest
3638
- ubuntu-latest
3739
- windows-latest
40+
41+
smoke-test:
42+
runs-on: ubuntu-latest
43+
steps:
44+
- uses: actions/checkout@v4
45+
- uses: ./.github/actions/setup-environment
46+
- name: Build gember
47+
run: pnpm build
48+
- name: Create test app
49+
run: pnpm dlx ember-cli@latest new test-app -b @ember/app-blueprint --pnpm --skip-git
50+
- name: Run generators in test-app
51+
run: |
52+
node bin/gember.js component foo --cwd=test-app
53+
node bin/gember.js component-test foo --cwd=test-app
54+
node bin/gember.js helper foo --cwd=test-app
55+
node bin/gember.js helper-test foo --cwd=test-app
56+
node bin/gember.js modifier foo --cwd=test-app
57+
node bin/gember.js modifier-test foo --cwd=test-app
58+
node bin/gember.js service foo --cwd=test-app
59+
node bin/gember.js service-test foo --cwd=test-app
60+
- name: Run tests in test app
61+
run: |
62+
cd test-app
63+
pnpm test

src/generator.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { ensureDir, pathExists, readJson } from "fs-extra/esm";
44
import Handlebars from "handlebars";
55
import { readFile, writeFile } from "node:fs/promises";
66
import { dirname, join, relative } from "node:path";
7-
import { cwd, env } from "node:process";
7+
import { cwd as processCwd, env } from "node:process";
88
import { fileURLToPath } from "node:url";
99
import { resolveConfig, type Config } from "./config.js";
1010
import { FileReference } from "./file-reference.js";
@@ -60,12 +60,12 @@ export function defineGenerator({
6060
name,
6161
}: GeneratorOptions): Generator {
6262
const generatorName = name;
63-
const generatorArgs = [copy(), log(), ...args]
63+
const generatorArgs = [copy(), cwd(), log(), ...args]
6464
.map((argFactory) => argFactory(generatorName))
6565
.sort((a, b) => a.name.localeCompare(b.name));
6666

6767
async function run(args: Args): Promise<void> {
68-
const packagePath = cwd();
68+
const packagePath = args.cwd ?? processCwd();
6969
const packageJson: EmberPackageJson = await readJson(
7070
join(packagePath, "package.json"),
7171
);
@@ -119,7 +119,8 @@ export function defineGenerator({
119119
const templateCompiled = template({
120120
name: {
121121
...entityNameCases,
122-
pathMaybeQuoted: /(-|\/)/.test(entityNameCases.path)
122+
camelCurlyBrackets: `{{${entityNameCases.camel}}}`,
123+
pathMaybeQuotes: /(-|\/)/.test(entityNameCases.path)
123124
? `"${entityNameCases.path}"`
124125
: entityNameCases.path,
125126
signature: entityNameCases.pascal + "Signature",
@@ -252,6 +253,14 @@ export function copy(): GeneratorArgFactory {
252253
});
253254
}
254255

256+
export function cwd(): GeneratorArgFactory {
257+
return () => ({
258+
description: "The current working directory to run the generator in",
259+
name: "cwd",
260+
type: "string",
261+
});
262+
}
263+
255264
export function log(): GeneratorArgFactory {
256265
return (generatorName) => ({
257266
description: `Log the generated ${generatorName} to the console, instead of writing it to disk`,

templates/helper-test/helper-test.gjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { render } from '@ember/test-helpers';
22
import { module, test } from 'qunit';
3+
import {{name.camel}} from '{{package.name}}/helpers/{{name.path}}';
34
import { setupRenderingTest } from '{{testHelpersImportPath}}';
45

56
module('Integration | Helper | {{name.camel}}', function (hooks) {

templates/modifier-test/modifier-test.gjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { render } from '@ember/test-helpers';
22
import { module, test } from 'qunit';
3+
import {{name.camel}} from '{{package.name}}/modifiers/{{name.path}}';
34
import { setupRenderingTest } from '{{testHelpersImportPath}}';
45

56
module('Integration | Modifier | {{name.camel}}', function (hooks) {
67
setupRenderingTest(hooks);
78

89
test('it renders', async function (assert) {
9-
await render(<template><div \{{{{name.camel}}\}}></div></template>);
10+
await render(<template><div {{name.camelCurlyBrackets}}></div></template>);
1011

1112
assert.ok(true);
1213
});

templates/service/service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ export default class {{name.pascal}}Service extends Service {}
44

55
declare module "@ember/service" {
66
interface Registry {
7-
{{{name.pathMaybeQuoted}}}: {{name.pascal}}Service;
7+
{{{name.pathMaybeQuotes}}}: {{name.pascal}}Service;
88
}
99
}

test/__snapshots__/helper-test.test.ts.snap

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
exports[`generates a \`.gjs\` helper-test 1`] = `
44
"import { render } from '@ember/test-helpers';
55
import { module, test } from 'qunit';
6+
import foo from 'v2-addon/helpers/foo';
67
import { setupRenderingTest } from 'v2-addon/tests/helpers';
78
89
module('Integration | Helper | foo', function (hooks) {
@@ -22,6 +23,7 @@ module('Integration | Helper | foo', function (hooks) {
2223
exports[`generates a \`.gjs\` helper-test at a custom path 1`] = `
2324
"import { render } from '@ember/test-helpers';
2425
import { module, test } from 'qunit';
26+
import foo from 'v2-addon/helpers/foo';
2527
import { setupRenderingTest } from 'v2-addon/tests/helpers';
2628
2729
module('Integration | Helper | foo', function (hooks) {
@@ -41,6 +43,7 @@ module('Integration | Helper | foo', function (hooks) {
4143
exports[`generates a \`.gts\` helper-test 1`] = `
4244
"import { render } from '@ember/test-helpers';
4345
import { module, test } from 'qunit';
46+
import foo from 'v2-addon/helpers/foo';
4447
import { setupRenderingTest } from 'v2-addon/tests/helpers';
4548
4649
module('Integration | Helper | foo', function (hooks) {
@@ -60,6 +63,7 @@ module('Integration | Helper | foo', function (hooks) {
6063
exports[`generates a \`.gts\` helper-test at a custom path 1`] = `
6164
"import { render } from '@ember/test-helpers';
6265
import { module, test } from 'qunit';
66+
import foo from 'v2-addon/helpers/foo';
6367
import { setupRenderingTest } from 'v2-addon/tests/helpers';
6468
6569
module('Integration | Helper | foo', function (hooks) {

test/__snapshots__/modifier-test.test.ts.snap

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
exports[`generates a \`.gjs\` modifier-test 1`] = `
44
"import { render } from '@ember/test-helpers';
55
import { module, test } from 'qunit';
6+
import foo from 'v2-addon/modifiers/foo';
67
import { setupRenderingTest } from 'v2-addon/tests/helpers';
78
89
module('Integration | Modifier | foo', function (hooks) {
910
setupRenderingTest(hooks);
1011
1112
test('it renders', async function (assert) {
12-
await render(<template><div {{foo\\}}></div></template>);
13+
await render(<template><div {{foo}}></div></template>);
1314
1415
assert.ok(true);
1516
});
@@ -20,13 +21,14 @@ module('Integration | Modifier | foo', function (hooks) {
2021
exports[`generates a \`.gjs\` modifier-test at a custom path 1`] = `
2122
"import { render } from '@ember/test-helpers';
2223
import { module, test } from 'qunit';
24+
import foo from 'v2-addon/modifiers/foo';
2325
import { setupRenderingTest } from 'v2-addon/tests/helpers';
2426
2527
module('Integration | Modifier | foo', function (hooks) {
2628
setupRenderingTest(hooks);
2729
2830
test('it renders', async function (assert) {
29-
await render(<template><div {{foo\\}}></div></template>);
31+
await render(<template><div {{foo}}></div></template>);
3032
3133
assert.ok(true);
3234
});
@@ -37,13 +39,14 @@ module('Integration | Modifier | foo', function (hooks) {
3739
exports[`generates a \`.gts\` modifier-test 1`] = `
3840
"import { render } from '@ember/test-helpers';
3941
import { module, test } from 'qunit';
42+
import foo from 'v2-addon/modifiers/foo';
4043
import { setupRenderingTest } from 'v2-addon/tests/helpers';
4144
4245
module('Integration | Modifier | foo', function (hooks) {
4346
setupRenderingTest(hooks);
4447
4548
test('it renders', async function (assert) {
46-
await render(<template><div {{foo\\}}></div></template>);
49+
await render(<template><div {{foo}}></div></template>);
4750
4851
assert.ok(true);
4952
});
@@ -54,13 +57,14 @@ module('Integration | Modifier | foo', function (hooks) {
5457
exports[`generates a \`.gts\` modifier-test at a custom path 1`] = `
5558
"import { render } from '@ember/test-helpers';
5659
import { module, test } from 'qunit';
60+
import foo from 'v2-addon/modifiers/foo';
5761
import { setupRenderingTest } from 'v2-addon/tests/helpers';
5862
5963
module('Integration | Modifier | foo', function (hooks) {
6064
setupRenderingTest(hooks);
6165
6266
test('it renders', async function (assert) {
63-
await render(<template><div {{foo\\}}></div></template>);
67+
await render(<template><div {{foo}}></div></template>);
6468
6569
assert.ok(true);
6670
});

0 commit comments

Comments
 (0)