diff options
| author | Vojta Jina | 2012-09-01 19:31:06 -0700 | 
|---|---|---|
| committer | Misko Hevery | 2012-09-11 16:19:44 -0700 | 
| commit | e741107c550028dd47dad5a73e26f85b2a12f81c (patch) | |
| tree | 6feecfc1973a1d295d2e12b25f5206ee08350c07 /validate-commit-msg.spec.js | |
| parent | 82f4b99d994bd2dcb970c38e86a8ca0249c167bc (diff) | |
| download | angular.js-e741107c550028dd47dad5a73e26f85b2a12f81c.tar.bz2 | |
chore(scripts): add commit-msg hook (validation)
Diffstat (limited to 'validate-commit-msg.spec.js')
| -rw-r--r-- | validate-commit-msg.spec.js | 73 | 
1 files changed, 73 insertions, 0 deletions
| 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 "<type>(<scope>): <subject>" format', function() { +      var msg = 'not correct format'; + +      expect(m.validateMessage(msg)).toBe(INVALID); +      expect(errors).toEqual(['INVALID COMMIT MSG: does not match "<type>(<scope>): <subject>" !']); +    }); + + +    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); +    }); +  }); +}); | 
