| /* |
| Copyright 2013 Google Inc. All Rights Reserved. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| package lint |
| |
| import ( |
| "fmt" |
| "strings" |
| "testing" |
| |
| "gwt.googlesource.com/buildglue.git/gerrit" |
| ) |
| |
| func checkEqual(t *testing.T, expect, actual interface{}) { |
| if fmt.Sprintf("%#v", expect) != fmt.Sprintf("%#v", actual) { |
| t.Errorf("expect %#v, actual %#v", expect, actual) |
| } |
| } |
| |
| func TestCheckMessage(t *testing.T) { |
| type testcase struct { |
| message []string |
| warnings []gerrit.Comment |
| } |
| tests := []testcase{ |
| { |
| message: []string{ |
| strings.Repeat("x", 60), |
| "", |
| "Change-Id: blah", |
| }, |
| // No warnings |
| }, |
| { |
| message: []string{ |
| strings.Repeat("x", 90), |
| "", |
| "Change-Id: blah2", |
| }, |
| warnings: []gerrit.Comment{ |
| gerrit.Comment{ |
| Line: 1, |
| Message: "[warning] Commit message lines should be 72 characters or fewer.", |
| }, |
| }, |
| }, |
| { |
| message: []string{ |
| "Subject line", |
| "No blank line", |
| "", |
| "Change-Id: blah2", |
| }, |
| warnings: []gerrit.Comment{ |
| gerrit.Comment{ |
| Line: 2, |
| Message: "[warning] Subject line and body should be separated by a blank line.", |
| }, |
| }, |
| }, |
| { |
| message: []string{ |
| "Subject line", |
| "", |
| "Fixes issue 3171", |
| "", |
| "Change-Id: blah2", |
| }, |
| warnings: []gerrit.Comment{ |
| gerrit.Comment{ |
| Line: 3, |
| Message: "[warning] Please use 'Bug: issue NNNN' and place it just above the Change-Id line.", |
| }, |
| }, |
| }, |
| { |
| message: []string{ |
| "ISSUE 712 - change some stuff", |
| "", |
| "Change-Id: blah2", |
| }, |
| warnings: []gerrit.Comment{ |
| gerrit.Comment{ |
| Line: 1, |
| Message: "[warning] Please use 'Bug: issue NNNN' and place it just above the Change-Id line.", |
| }, |
| }, |
| }, |
| { |
| message: []string{ |
| "Subject line", |
| "", |
| "bug: issue 88", |
| "Change-Id: blah2", |
| }, |
| warnings: []gerrit.Comment{ |
| gerrit.Comment{ |
| Line: 3, |
| Message: "[warning] Footer fields should be in Title-Case.", |
| }, |
| }, |
| }, |
| { |
| message: []string{ |
| "Topic: Subject line looking like footer line", |
| "", |
| "Change-Id: blah", |
| }, |
| // No warnings |
| }, |
| { |
| message: []string{ |
| "Subject line", |
| "", |
| "Message body", |
| "Change-Id: blah", |
| }, |
| warnings: []gerrit.Comment{ |
| gerrit.Comment{ |
| Line: 3, |
| Message: "[warning] Footer lines should be separated from message body by a blank line.", |
| }, |
| }, |
| }, |
| { |
| message: []string{ |
| "Subject line", |
| "", |
| "Bug: issue 8403", |
| "", |
| "Change-Id: blah", |
| }, |
| warnings: []gerrit.Comment{ |
| gerrit.Comment{ |
| Line: 3, |
| Message: "[warning] Footer lines should form a single paragraph (i.e. must not be separated by blank lines.)", |
| }, |
| }, |
| }, |
| } |
| |
| for _, test := range tests { |
| linter := newLinter("fakeref") |
| linter.checkMessage(test.message, 0) |
| checkEqual(t, test.warnings, linter.comments["/COMMIT_MSG"]) |
| } |
| } |