Fix case where no tags does not trigger false

This commit is contained in:
Webber 2020-05-01 20:19:25 +02:00 committed by Webber Takken
parent e9514b4e37
commit 34e4b86924
4 changed files with 36 additions and 12 deletions

File diff suppressed because one or more lines are too long

View File

@ -26,4 +26,24 @@ expect.extend({
pass, pass,
}; };
}, },
toBeParsableToANumber(received) {
let pass = false;
let errorMessage = '';
try {
Number.parseInt(received, 10);
pass = true;
} catch (error) {
errorMessage = error;
}
const message = () => `Expected ${this.utils.printExpected(received)} to be parsable as a number
, but received error: ${this.utils.printReceived(errorMessage)}.`;
return {
message,
pass,
};
},
}); });

View File

@ -44,5 +44,13 @@ describe('System', () => {
expect(info).toHaveBeenCalledTimes(2); expect(info).toHaveBeenCalledTimes(2);
expect(info).toHaveBeenLastCalledWith('3\n'); expect(info).toHaveBeenLastCalledWith('3\n');
}); });
it('allows pipes using buffer', async () => {
await expect(
System.run('sh', undefined, {
input: Buffer.from('git tag --list --merged HEAD | grep v[0-9]* | wc -l'),
}),
).resolves.toBeParsableToANumber();
});
}); });
}); });

View File

@ -183,18 +183,14 @@ export default class Versioning {
* Whether or not the repository has any version tags yet. * Whether or not the repository has any version tags yet.
*/ */
static async hasAnyVersionTags() { static async hasAnyVersionTags() {
const numberOfVersionCommits = await System.run('git', [ const numberOfCommitsAsString = await System.run('sh', undefined, {
'tag', input: Buffer.from('git tag --list --merged HEAD | grep v[0-9]* | wc -l'),
'--list', silent: false,
'--merged', });
'HEAD',
'|',
'grep v[0-9]*',
'|',
'wc -l',
]);
return numberOfVersionCommits !== '0'; const numberOfCommits = Number.parseInt(numberOfCommitsAsString, 10);
return numberOfCommits !== 0;
} }
/** /**