Skip to content

Commit

Permalink
feat(linting): defined the markdown-lint style
Browse files Browse the repository at this point in the history
  • Loading branch information
travi committed Aug 21, 2019
1 parent 52cc753 commit db5589a
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 4 deletions.
31 changes: 31 additions & 0 deletions src/linting-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import {resolve} from 'path';
import {assert} from 'chai';
import sinon from 'sinon';
import any from '@travi/any';
import * as fsAsync from '../thirdparty-wrappers/fs';
import scaffoldLinting from './linting';

suite('Linting', () => {
let sandbox;

setup(() => {
sandbox = sinon.createSandbox();

sandbox.stub(fsAsync, 'copyFile');
});

teardown(() => sandbox.restore());

test('that the markdown lint style is defined', async () => {
const projectRoot = any.string();

const results = await scaffoldLinting(projectRoot);

assert.deepEqual(results.gems, ['mdl']);
assert.calledWith(
fsAsync.copyFile,
resolve(__dirname, '..', 'templates', 'markdownlint-style.rb'),
`${projectRoot}/markdownlint-style.rb`
);
});
});
14 changes: 14 additions & 0 deletions src/linting.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import {resolve} from 'path';
import {info} from '@travi/cli-messages';
import {copyFile} from '../thirdparty-wrappers/fs';

export default async function (projectRoot) {
info('Configuring Linting');

await copyFile(
resolve(__dirname, '..', 'templates', 'markdownlint-style.rb'),
`${projectRoot}/markdownlint-style.rb`
);

return {gems: ['mdl']};
}
6 changes: 5 additions & 1 deletion src/scaffolder-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import * as rubyVersionScaffolder from './ruby-version';
import * as rakeScaffolder from './rake';
import * as gemsScaffolder from './gems';
import * as documentationScaffolder from './documentation';
import * as lintingScaffolder from './linting';
import {scaffold} from './scaffolder';

suite('scaffolder', () => {
Expand All @@ -17,21 +18,24 @@ suite('scaffolder', () => {
sandbox.stub(rakeScaffolder, 'default');
sandbox.stub(gemsScaffolder, 'default');
sandbox.stub(documentationScaffolder, 'default');
sandbox.stub(lintingScaffolder, 'default');
});

teardown(() => sandbox.restore());

test('that the project is scaffolded', async () => {
const projectRoot = any.string();
const gemsForRake = any.listOf(any.word);
const gemsForLinting = any.listOf(any.word);
const documentation = any.simpleObject();
rakeScaffolder.default.withArgs(projectRoot).resolves({gems: gemsForRake});
lintingScaffolder.default.withArgs(projectRoot).resolves({gems: gemsForLinting});
documentationScaffolder.default.returns(documentation);

const result = await scaffold({projectRoot});

assert.calledWith(rubyVersionScaffolder.default, projectRoot);
assert.calledWith(gemsScaffolder.default, projectRoot, gemsForRake);
assert.calledWith(gemsScaffolder.default, projectRoot, [...gemsForRake, ...gemsForLinting]);
assert.equal(result.verificationCommand, 'rake');
assert.equal(result.documentation, documentation);
});
Expand Down
6 changes: 4 additions & 2 deletions src/scaffolder.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,18 @@ import scaffoldRubyVersion from './ruby-version';
import scaffoldRake from './rake';
import scaffoldGem from './gems';
import scaffoldDocumentation from './documentation';
import scaffoldLinting from './linting';

export async function scaffold({projectRoot}) {
info('Initializing Ruby project');

const [rakeResults] = await Promise.all([
const [rakeResults, lintingResults] = await Promise.all([
scaffoldRake(projectRoot),
scaffoldLinting(projectRoot),
scaffoldRubyVersion(projectRoot)
]);

await scaffoldGem(projectRoot, rakeResults.gems);
await scaffoldGem(projectRoot, [...rakeResults.gems, ...lintingResults.gems]);

return {
verificationCommand: 'rake',
Expand Down
3 changes: 3 additions & 0 deletions templates/markdownlint-style.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
all
rule 'no-trailing-punctuation', :punctuation => '.,;:!'
exclude_rule 'commands-show-output'
3 changes: 2 additions & 1 deletion test/integration/features/step_definitions/common-steps.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ Before(async function () {
stubbedFs({
templates: {
'Rakefile.rb': await readFile(resolve(__dirname, '../../../../', 'templates/Rakefile.rb')),
'Gemfile.rb': await readFile(resolve(__dirname, '../../../../', 'templates/Gemfile.rb'))
'Gemfile.rb': await readFile(resolve(__dirname, '../../../../', 'templates/Gemfile.rb')),
'markdownlint-style.rb': await readFile(resolve(__dirname, '../../../../', 'templates/markdownlint-style.rb'))
}
});

Expand Down

0 comments on commit db5589a

Please sign in to comment.