Skip to content

Commit

Permalink
feat(version): created the .terraform-version file
Browse files Browse the repository at this point in the history
  • Loading branch information
travi committed May 2, 2024
1 parent 3892424 commit 748d5a1
Show file tree
Hide file tree
Showing 11 changed files with 77 additions and 15 deletions.
9 changes: 4 additions & 5 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,5 +74,8 @@
"rollup": "4.17.2",
"rollup-plugin-auto-external": "2.0.0",
"vitest": "1.5.3"
},
"dependencies": {
"make-dir": "^4.0.0"
}
}
7 changes: 0 additions & 7 deletions src/canary.test.js

This file was deleted.

12 changes: 10 additions & 2 deletions src/scaffolder.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
export default function () {
return undefined;
import makeDir from 'make-dir';

import {scaffold as scaffoldVersion} from './version/index.js';

export default async function ({projectRoot}) {
const terraformDirectory = await makeDir(`${projectRoot}/terraform`);

await scaffoldVersion({terraformDirectory});

return {};
}
22 changes: 22 additions & 0 deletions src/scaffolder.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import makeDir from 'make-dir';

import {describe, it, expect, vi} from 'vitest';
import any from '@travi/any';
import {when} from 'jest-when';

import {scaffold as scaffoldVersion} from './version/index.js';
import scaffold from './scaffolder.js';

vi.mock('make-dir');
vi.mock('./version/index.js');

describe('scaffolder', () => {
it('should scaffold terraform', async () => {
const projectRoot = any.string();
const createdTerraformDirectory = any.string();
when(makeDir).calledWith(`${projectRoot}/terraform`).mockResolvedValue(createdTerraformDirectory);

expect(await scaffold({projectRoot})).toEqual({});
expect(scaffoldVersion).toHaveBeenCalledWith({terraformDirectory: createdTerraformDirectory});
});
});
1 change: 1 addition & 0 deletions src/version/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export {default as scaffold} from './scaffolder.js';
5 changes: 5 additions & 0 deletions src/version/scaffolder.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import {promises as fs} from 'node:fs';

export default async function ({terraformDirectory}) {
await fs.writeFile(`${terraformDirectory}/.terraform-version`, 'v1.8.2');
}
18 changes: 18 additions & 0 deletions src/version/scaffolder.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import {promises as fs} from 'node:fs';

import any from '@travi/any';
import {vi, describe, it, expect} from 'vitest';

import scaffoldVersion from './scaffolder.js';

vi.mock('node:fs');

describe('version scaffolder', () => {
it('should create the version file', async () => {
const terraformDirectory = any.string();

await scaffoldVersion({terraformDirectory});

expect(fs.writeFile).toHaveBeenCalledWith(`${terraformDirectory}/.terraform-version`, 'v1.8.2');
});
});
1 change: 1 addition & 0 deletions test/integration/features/scaffolder.feature
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ Feature: Scaffolder

Scenario: Scaffold
When the project is scaffolded
Then the version file is created
4 changes: 3 additions & 1 deletion test/integration/features/step_definitions/common-steps.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ const stubbedNodeModules = stubbedFs.load(resolve(__dirname, '..', '..', '..', '
let scaffold;

Before(async function () {
this.projectRoot = process.cwd();

// eslint-disable-next-line import/no-extraneous-dependencies,import/no-unresolved
({scaffold} = await import('@form8ion/terraform'));

Expand All @@ -23,5 +25,5 @@ After(function () {
});

When('the project is scaffolded', async function () {
await scaffold({projectRoot: process.cwd()});
await scaffold({projectRoot: this.projectRoot});
});
10 changes: 10 additions & 0 deletions test/integration/features/step_definitions/version-steps.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import {promises as fs} from 'node:fs';
import assert from 'node:assert';

import {Then} from '@cucumber/cucumber';

Then('the version file is created', async function () {
const version = await fs.readFile(`${this.projectRoot}/terraform/.terraform-version`, 'utf-8');

assert.equal(version, 'v1.8.2');
});

0 comments on commit 748d5a1

Please sign in to comment.