Skip to content

Commit b1e96b6

Browse files
committed
feat(directory): create the workflows directory
1 parent 10cedfb commit b1e96b6

7 files changed

Lines changed: 91 additions & 8 deletions

File tree

package-lock.json

Lines changed: 49 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"devDependencies": {
5757
"@cucumber/cucumber": "10.3.1",
5858
"@form8ion/commitlint-config": "1.0.76",
59+
"@form8ion/core": "4.2.1",
5960
"@form8ion/eslint-config": "7.0.9",
6061
"@form8ion/eslint-config-cucumber": "1.4.1",
6162
"@form8ion/remark-lint-preset": "6.0.2",
@@ -79,5 +80,8 @@
7980
"rollup": "4.13.0",
8081
"rollup-plugin-auto-external": "2.0.0",
8182
"vitest": "1.4.0"
83+
},
84+
"dependencies": {
85+
"make-dir": "^4.0.0"
8286
}
8387
}

src/scaffolder.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1-
export default function () {
2-
return undefined;
1+
import makeDir from 'make-dir';
2+
3+
export default async function ({projectRoot}) {
4+
await makeDir(`${projectRoot}/.github/workflows`);
5+
6+
return {};
37
}

src/scaffolder.test.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import makeDir from 'make-dir';
2+
3+
import any from '@travi/any';
4+
import {vi, describe, it, expect, afterEach} from 'vitest';
5+
6+
import scaffold from './scaffolder.js';
7+
8+
vi.mock('make-dir');
9+
10+
describe('scaffolder', () => {
11+
afterEach(() => {
12+
vi.clearAllMocks();
13+
});
14+
15+
it('should create the workflows directory', async () => {
16+
const projectRoot = any.string();
17+
18+
expect(await scaffold({projectRoot})).toEqual({});
19+
20+
expect(makeDir).toHaveBeenCalledWith(`${projectRoot}/.github/workflows`);
21+
});
22+
});

test/integration/features/scaffolder.feature

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ Feature: Scaffolder
22

33
Scenario: Scaffold
44
When the project is scaffolded
5+
Then the workflows directory will be created

test/integration/features/step_definitions/common-steps.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const stubbedNodeModules = stubbedFs.load(resolve(__dirname, '..', '..', '..', '
1010
let scaffold;
1111

1212
Before(async function () {
13+
this.projectRoot = process.cwd();
1314
// eslint-disable-next-line import/no-extraneous-dependencies,import/no-unresolved
1415
({scaffold} = await import('@form8ion/github-workflows'));
1516

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import {directoryExists} from '@form8ion/core';
2+
3+
import {Then} from '@cucumber/cucumber';
4+
import assert from 'node:assert';
5+
6+
Then('the workflows directory will be created', async function () {
7+
assert.equal(await directoryExists(`${this.projectRoot}/.github/workflows`), true);
8+
});

0 commit comments

Comments
 (0)