diff --git a/lint/lint.go b/lint/lint.go
index a3931ab..0d48050 100644
--- a/lint/lint.go
+++ b/lint/lint.go
@@ -150,14 +150,11 @@
 		l.comment("/COMMIT_MSG", line+6, "warning", message)
 	}
 
-	if len(commitmsg) >= 1 && len(commitmsg[0]) > 50 {
-		warn(1, "Subject line should be 50 characters or fewer.")
-	}
 	if len(commitmsg) >= 3 && len(commitmsg[1]) > 0 {
 		warn(2, "Subject line and body should be separated by a blank line.")
 	}
 	for i, line := range commitmsg {
-		if i >= 2 && len(line) > 72 {
+		if i != 1 && len(line) > 72 {
 			warn(i+1, "Commit message lines should be 72 characters or fewer.")
 			break
 		}
diff --git a/lint/lint_test.go b/lint/lint_test.go
new file mode 100644
index 0000000..ac1fc3b
--- /dev/null
+++ b/lint/lint_test.go
@@ -0,0 +1,81 @@
+/*
+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: 7,
+					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: 8,
+					Message: "[warning] Subject line and body should be separated by a blank line.",
+				},
+			},
+		},
+	}
+
+	for _, test := range tests {
+		linter := newLinter("fakeref")
+		linter.checkMessage(test.message)
+		checkEqual(t, test.warnings, linter.comments["/COMMIT_MSG"])
+	}
+}
