From 5dbd942bac8b8d045162d29467640107db14263b Mon Sep 17 00:00:00 2001 From: Vojta Jina Date: Sat, 1 Sep 2012 19:31:06 -0700 Subject: chore(scripts): add commit-msg hook (validation) --- validate-commit-msg.spec.js | 73 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 validate-commit-msg.spec.js (limited to 'validate-commit-msg.spec.js') diff --git a/validate-commit-msg.spec.js b/validate-commit-msg.spec.js new file mode 100644 index 00000000..8eb4f3bd --- /dev/null +++ b/validate-commit-msg.spec.js @@ -0,0 +1,73 @@ +describe('validate-commit-msg.js', function() { + var m = require('./validate-commit-msg'); + var errors = []; + var logs = []; + + var VALID = true; + var INVALID = false; + + beforeEach(function() { + errors.length = 0; + logs.length = 0; + + spyOn(console, 'error').andCallFake(function(msg) { + errors.push(msg.replace(/\x1B\[\d+m/g, '')); // uncolor + }); + + spyOn(console, 'log').andCallFake(function(msg) { + logs.push(msg.replace(/\x1B\[\d+m/g, '')); // uncolor + }); + }); + + describe('validateMessage', function() { + + it('should be valid', function() { + expect(m.validateMessage('fix($compile): something')).toBe(VALID); + expect(m.validateMessage('feat($location): something')).toBe(VALID); + expect(m.validateMessage('docs($filter): something')).toBe(VALID); + expect(m.validateMessage('style($http): something')).toBe(VALID); + expect(m.validateMessage('refactor($httpBackend): something')).toBe(VALID); + expect(m.validateMessage('test($resource): something')).toBe(VALID); + expect(m.validateMessage('chore($controller): something')).toBe(VALID); + expect(errors).toEqual([]); + }); + + + it('should validate 70 characters length', function() { + var msg = 'fix($compile): something super mega extra giga tera long, maybe even longer... ' + + 'way over 80 characters'; + + expect(m.validateMessage(msg)).toBe(INVALID); + expect(errors).toEqual(['INVALID COMMIT MSG: is longer than 70 characters !']); + }); + + + it('should validate "(): " format', function() { + var msg = 'not correct format'; + + expect(m.validateMessage(msg)).toBe(INVALID); + expect(errors).toEqual(['INVALID COMMIT MSG: does not match "(): " !']); + }); + + + it('should validate type', function() { + expect(m.validateMessage('weird($filter): something')).toBe(INVALID); + expect(errors).toEqual(['INVALID COMMIT MSG: "weird" is not allowed type !']); + }); + + + it('should allow empty scope', function() { + expect(m.validateMessage('fix: blablabla')).toBe(VALID); + }); + + + it('should allow dot in scope', function() { + expect(m.validateMessage('chore(mocks.$httpBackend): something')).toBe(VALID); + }); + + + it('should ignore msg prefixed with "WIP: "', function() { + expect(m.validateMessage('WIP: bullshit')).toBe(VALID); + }); + }); +}); -- cgit v1.2.3