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,
};
},
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).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.
*/
static async hasAnyVersionTags() {
const numberOfVersionCommits = await System.run('git', [
'tag',
'--list',
'--merged',
'HEAD',
'|',
'grep v[0-9]*',
'|',
'wc -l',
]);
const numberOfCommitsAsString = await System.run('sh', undefined, {
input: Buffer.from('git tag --list --merged HEAD | grep v[0-9]* | wc -l'),
silent: false,
});
return numberOfVersionCommits !== '0';
const numberOfCommits = Number.parseInt(numberOfCommitsAsString, 10);
return numberOfCommits !== 0;
}
/**