From a35bf114eb9fa040d8b11cd023a29467f882d45b Mon Sep 17 00:00:00 2001 From: Victor Berchet Date: Fri, 20 Apr 2018 18:03:41 -0700 Subject: [PATCH] build: make commit validation accept typical Revert messages (#23480) fixes #23479 PR Close #23480 --- .../validate-commit-message.js | 13 +++++---- .../validate-commit-message.spec.js | 28 +++++++++++-------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/tools/validate-commit-message/validate-commit-message.js b/tools/validate-commit-message/validate-commit-message.js index 85f544ae61..d83b00d076 100644 --- a/tools/validate-commit-message/validate-commit-message.js +++ b/tools/validate-commit-message/validate-commit-message.js @@ -22,18 +22,21 @@ const configPath = path.resolve(__dirname, './commit-message.json'); const config = JSON.parse(fs.readFileSync(configPath, 'utf8')); const PATTERN = /^(\w+)(?:\(([^)]+)\))?\: (.+)$/; const FIXUP_SQUASH = /^(fixup|squash)\! /i; -const REVERT = /^revert:? (\"(.*)\"|(.*))?$/i; +const REVERT = /^revert:? /i; module.exports = function(commitSubject) { - commitSubject = commitSubject.replace(FIXUP_SQUASH, ''); - commitSubject = commitSubject.replace(REVERT, function(m, g1, g2, g3) { return g2 || g3; }); + const subject = commitSubject.replace(FIXUP_SQUASH, ''); - if (commitSubject.length > config['maxLength']) { + if (subject.match(REVERT)) { + return true; + } + + if (subject.length > config['maxLength']) { error(`The commit message is longer than ${config['maxLength']} characters`, commitSubject); return false; } - const match = PATTERN.exec(commitSubject); + const match = PATTERN.exec(subject); if (!match) { error( `The commit message does not match the format of '(): ' OR 'Revert: "type(): "'`, diff --git a/tools/validate-commit-message/validate-commit-message.spec.js b/tools/validate-commit-message/validate-commit-message.spec.js index 04dea9579f..c9d048d7bd 100644 --- a/tools/validate-commit-message/validate-commit-message.spec.js +++ b/tools/validate-commit-message/validate-commit-message.spec.js @@ -98,20 +98,26 @@ describe('validate-commit-message.js', function() { }); - it('should support "revert: type(scope):" syntax and reject "revert(scope):" syntax', - function() { - let correctMsg = 'revert: fix(compiler): reduce generated code payload size by 65%'; - expect(validateMessage(correctMsg)).toBe(VALID); + it('should support "revert: type(scope):" syntax', function() { + const correctMsg = 'revert: fix(compiler): reduce generated code payload size by 65%'; + expect(validateMessage(correctMsg)).toBe(VALID); + }); - let incorretMsg = 'revert(compiler): reduce generated code payload size by 65%'; - expect(validateMessage(incorretMsg)).toBe(INVALID); - expect(errors).toEqual([ - 'INVALID COMMIT MSG: "revert(compiler): reduce generated code payload size by 65%"\n' + + it('should support reject "revert(scope):" syntax', function() { + const incorretMsg = 'revert(compiler): reduce generated code payload size by 65%'; + expect(validateMessage(incorretMsg)).toBe(INVALID); + expect(errors).toEqual( + ['INVALID COMMIT MSG: "revert(compiler): reduce generated code payload size by 65%"\n' + ' => ERROR: revert is not an allowed type.\n' + - ' => TYPES: ' + TYPES - ]); - }); + ' => TYPES: ' + TYPES]); + }); + // https://github.com/angular/angular/issues/23479 + it('should support typical Angular messages generated by git', function() { + const correctMsg = + 'Revert "fix(compiler): Pretty print object instead of [Object object] (#22689)" (#23442)'; + expect(validateMessage(correctMsg)).toBe(VALID); + }); it('should validate type', function() { expect(validateMessage('weird($filter): something')).toBe(INVALID);