diff --git a/git-codereview/change.go b/git-codereview/change.go
index ccc7836..991707d 100644
--- a/git-codereview/change.go
+++ b/git-codereview/change.go
@@ -6,7 +6,6 @@
 
 import (
 	"fmt"
-	"os"
 	"regexp"
 	"strconv"
 	"strings"
@@ -24,7 +23,7 @@
 	flags.Parse(args)
 	if len(flags.Args()) > 1 {
 		fmt.Fprintf(stderr(), "Usage: %s change %s [-a] [-m msg] [-q] [branch]\n", progName, globalFlags)
-		os.Exit(2)
+		exit(2)
 	}
 
 	// Checkout or create branch, if specified.
@@ -56,13 +55,11 @@
 }
 
 func (b *Branch) check() {
-	// TODO(rsc): Test
 	staged, unstaged, _ := LocalChanges()
 	if len(staged) == 0 && len(unstaged) == 0 {
 		// No staged changes, no unstaged changes.
 		// If the branch is behind upstream, now is a good time to point that out.
 		// This applies to both local work branches and tracking branches.
-		// TODO(rsc): Test.
 		b.loadPending()
 		if n := b.CommitsBehind(); n > 0 {
 			printf("warning: %d commit%s behind %s; run 'git codereview sync' to update.", n, suffix(n, "s"), b.OriginBranch())
diff --git a/git-codereview/change_test.go b/git-codereview/change_test.go
index 206ed82..8a3960d 100644
--- a/git-codereview/change_test.go
+++ b/git-codereview/change_test.go
@@ -38,6 +38,20 @@
 	t.Logf("main -> dev.branch")
 	testMain(t, "change", "dev.branch")
 	testRan(t, "git checkout -q -t -b dev.branch origin/dev.branch")
+
+	testMain(t, "pending", "-c")
+	testPrintedStdout(t, "tracking dev.branch")
+	testMain(t, "change", "main")
+	testMain(t, "change", "work2")
+
+	t.Logf("server work × 2")
+	gt.serverWork(t)
+	gt.serverWork(t)
+	testMain(t, "sync")
+
+	t.Logf("-> work with server ahead")
+	testMain(t, "change", "work")
+	testPrintedStderr(t, "warning: 2 commits behind origin/main; run 'git codereview sync' to update")
 }
 
 func TestChangeHEAD(t *testing.T) {
diff --git a/git-codereview/gofmt.go b/git-codereview/gofmt.go
index bfba123..7986d07 100644
--- a/git-codereview/gofmt.go
+++ b/git-codereview/gofmt.go
@@ -23,7 +23,7 @@
 	flags.Parse(args)
 	if len(flag.Args()) > 0 {
 		fmt.Fprintf(stderr(), "Usage: %s gofmt %s [-l]\n", progName, globalFlags)
-		os.Exit(2)
+		exit(2)
 	}
 
 	f := gofmtCommand
diff --git a/git-codereview/mail.go b/git-codereview/mail.go
index e6cdb90..55ab8ed 100644
--- a/git-codereview/mail.go
+++ b/git-codereview/mail.go
@@ -6,7 +6,6 @@
 
 import (
 	"fmt"
-	"os"
 	"regexp"
 	"sort"
 	"strings"
@@ -38,11 +37,12 @@
 			"Usage: %s mail %s [-r reviewer,...] [-cc mail,...]\n"+
 				"\t[-f] [-diff] [-hashtag tag,...] [-nokeycheck] [-topic topic]\n"+
 				"\t[-trust] [-trybot] [-wip] [commit]\n", progName, globalFlags)
+		exit(2)
 	}
 	flags.Parse(args)
 	if len(flags.Args()) > 1 {
 		flags.Usage()
-		os.Exit(2)
+		exit(2)
 	}
 
 	b := CurrentBranch()
@@ -221,7 +221,7 @@
 		verbosef("expanded %s to %s", short[1:], long[1:])
 	}
 	if errors {
-		die()
+		exit(1)
 	}
 	return spec
 }
diff --git a/git-codereview/pending.go b/git-codereview/pending.go
index e17a905..5808764 100644
--- a/git-codereview/pending.go
+++ b/git-codereview/pending.go
@@ -9,7 +9,6 @@
 	"fmt"
 	"io"
 	"net/http"
-	"os"
 	"sort"
 	"strings"
 	"time"
@@ -87,7 +86,7 @@
 	flags.Parse(args)
 	if len(flags.Args()) > 0 {
 		fmt.Fprintf(stderr(), "Usage: %s pending %s [-c] [-l] [-s]\n", progName, globalFlags)
-		os.Exit(2)
+		exit(2)
 	}
 
 	// Fetch info about remote changes, so that we can say which branches need sync.
diff --git a/git-codereview/pending_test.go b/git-codereview/pending_test.go
index ccb2f76..1124e4d 100644
--- a/git-codereview/pending_test.go
+++ b/git-codereview/pending_test.go
@@ -323,6 +323,7 @@
 				file
 
 	`)
+
 	testPendingArgs(t, []string{"-l", "-s"}, `
 		work REVHASH..REVHASH (current branch, 1 behind)
 		+ REVHASH msg
diff --git a/git-codereview/review.go b/git-codereview/review.go
index 0242ec7..0deb039 100644
--- a/git-codereview/review.go
+++ b/git-codereview/review.go
@@ -34,6 +34,7 @@
 	flags.Usage = func() {
 		fmt.Fprintf(stderr(), usage, progName, progName)
 	}
+	flags.SetOutput(stderr())
 	flags.BoolVar(noRun, "n", false, "print but do not run commands")
 	flags.Var(verbose, "v", "report commands")
 }
@@ -76,10 +77,7 @@
 
 	if len(os.Args) < 2 {
 		flags.Usage()
-		if dieTrap != nil {
-			dieTrap()
-		}
-		os.Exit(2)
+		exit(2)
 	}
 	command, args := os.Args[1], os.Args[2:]
 
@@ -88,7 +86,7 @@
 	switch command {
 	default:
 		flags.Usage()
-		return // avoid installing hooks.
+		exit(2) // avoid installing hooks.
 	case "help":
 		fmt.Fprintf(stdout(), help, progName)
 		return // avoid installing hooks.
@@ -140,7 +138,7 @@
 	flags.Parse(args)
 	if len(flags.Args()) > 0 {
 		fmt.Fprintf(stderr(), "Usage: %s %s %s\n", progName, command, globalFlags)
-		os.Exit(2)
+		exit(2)
 	}
 }
 
@@ -292,18 +290,18 @@
 	return strings.Join(append([]string{command}, args...), " ")
 }
 
-var dieTrap func()
-
 func dief(format string, args ...interface{}) {
 	printf(format, args...)
-	die()
+	exit(1)
 }
 
-func die() {
-	if dieTrap != nil {
-		dieTrap()
+var exitTrap func()
+
+func exit(code int) {
+	if exitTrap != nil {
+		exitTrap()
 	}
-	os.Exit(1)
+	os.Exit(code)
 }
 
 func verbosef(format string, args ...interface{}) {
diff --git a/git-codereview/submit.go b/git-codereview/submit.go
index 9045ea4..5f684ca 100644
--- a/git-codereview/submit.go
+++ b/git-codereview/submit.go
@@ -7,7 +7,6 @@
 import (
 	"bytes"
 	"fmt"
-	"os"
 	"strings"
 	"time"
 )
@@ -22,7 +21,7 @@
 	flags.Parse(args)
 	if interactive && flags.NArg() > 0 {
 		flags.Usage()
-		os.Exit(2)
+		exit(2)
 	}
 
 	b := CurrentBranch()
diff --git a/git-codereview/submit_test.go b/git-codereview/submit_test.go
index fbe2cb3..29f9c02 100644
--- a/git-codereview/submit_test.go
+++ b/git-codereview/submit_test.go
@@ -80,7 +80,7 @@
 	testPrintedStderr(t, "cannot submit: change abandoned")
 
 	t.Logf("> missing approval")
-	srv.setJSON(id, `{"status": "NEW", "labels": {"Code-Review": {}}}`)
+	srv.setJSON(id, `{"status": "NEW", "labels": {"Code-Review": {}, "Color": {"Optional": true}}}`)
 	testMainDied(t, "submit")
 	testRan(t) // nothing
 	testPrintedStderr(t, "cannot submit: change missing Code-Review approval")
@@ -160,6 +160,15 @@
 		submitted = true
 		return gerritReply{body: ")]}'\n" + submittedJSON}
 	}})
+
+	testMain(t, "submit", "-n")
+	testPrintedStderr(t, "submitting")
+	testPrintedStderr(t, "stopped before submit")
+
+	testMain(t, "pending", "-c", "-l")
+	testPrintedStdout(t, "(current branch)")
+	testPrintedStdout(t, "Files in this change:")
+
 	testMain(t, "submit")
 	testRan(t,
 		"git fetch -q",
@@ -196,17 +205,31 @@
 	gt := newGitTest(t)
 	defer gt.done()
 
+	os.Setenv("GIT_EDITOR", ":")
+	testMain(t, "submit", "-i")
+	testPrintedStderr(t, "nothing to submit")
+
 	srv := newGerritServer(t)
 	defer srv.done()
 
 	cl1, cl2 := testSubmitMultiple(t, gt, srv)
-	os.Setenv("GIT_EDITOR", "echo "+cl1.CurrentRevision+" > ")
+
+	os.Setenv("GIT_EDITOR", "echo > ")
+	testMain(t, "submit", "-i")
+	if cl1.Status != "NEW" {
+		t.Fatalf("want cl1.Status == NEW; got %v", cl1.Status)
+	}
+	if cl2.Status != "NEW" {
+		t.Fatalf("want cl2.Status == NEW; got %v", cl2.Status)
+	}
+
+	os.Setenv("GIT_EDITOR", "( echo "+cl1.CurrentRevision+"; echo; echo '# comment' ) > ")
 	testMain(t, "submit", "-i")
 	if cl1.Status != "MERGED" {
 		t.Fatalf("want cl1.Status == MERGED; got %v", cl1.Status)
 	}
 	if cl2.Status != "NEW" {
-		t.Fatalf("want cl2.Status == NEW; got %v", cl1.Status)
+		t.Fatalf("want cl2.Status == NEW; got %v", cl2.Status)
 	}
 }
 
diff --git a/git-codereview/sync.go b/git-codereview/sync.go
index dc03c61..f518a3f 100644
--- a/git-codereview/sync.go
+++ b/git-codereview/sync.go
@@ -33,11 +33,11 @@
 		run("git", "pull", "-q", "-r", "origin", strings.TrimPrefix(b.OriginBranch(), "origin/"))
 	}
 
-	// If the change commit has been submitted,
-	// roll back change leaving any changes unstaged.
-	// Pull should have done this for us, but check just in case.
 	b = CurrentBranch() // discard any cached information
 	if len(b.Pending()) == 1 && b.Submitted(id) {
+		// If the change commit has been submitted,
+		// roll back change leaving any changes unstaged.
+		// Pull should have done this for us, but check just in case.
 		run("git", "reset", b.Branchpoint())
 	}
 }
diff --git a/git-codereview/sync_test.go b/git-codereview/sync_test.go
index a4210ab..72cbdf8 100644
--- a/git-codereview/sync_test.go
+++ b/git-codereview/sync_test.go
@@ -104,4 +104,22 @@
 	if len(b.Pending()) != 0 {
 		t.Fatalf("have %d pending CLs after final sync, want 0", len(b.Pending()))
 	}
+
+	// sync -v prints git output.
+	// also exercising -v parsing.
+	testMain(t, "sync", "-v=true")
+	testNoStdout(t)
+	testPrintedStderr(t, "git pull -q -r origin main")
+
+	testMain(t, "sync", "-v=1")
+	testNoStdout(t)
+	testPrintedStderr(t, "git pull -q -r origin main")
+
+	testMain(t, "sync", "-v")
+	testNoStdout(t)
+	testPrintedStderr(t, "git pull -q -r origin main")
+
+	testMain(t, "sync", "-v=false")
+	testNoStdout(t)
+	testNoStderr(t)
 }
diff --git a/git-codereview/util_test.go b/git-codereview/util_test.go
index 90a5b93..b1b5534 100644
--- a/git-codereview/util_test.go
+++ b/git-codereview/util_test.go
@@ -290,10 +290,9 @@
 	testStderr *bytes.Buffer
 	testStdout *bytes.Buffer
 	died       bool
+	mainCanDie bool
 )
 
-var mainCanDie bool
-
 func testMainDied(t *testing.T, args ...string) {
 	t.Helper()
 	mainCanDie = true
@@ -319,7 +318,7 @@
 		testStdout = stdoutTrap
 		testStderr = stderrTrap
 
-		dieTrap = nil
+		exitTrap = nil
 		runLogTrap = nil
 		stdoutTrap = nil
 		stderrTrap = nil
@@ -337,7 +336,7 @@
 		}
 	}()
 
-	dieTrap = func() {
+	exitTrap = func() {
 		died = true
 		panic("died")
 	}
@@ -526,3 +525,19 @@
 	fmt.Fprintf(&buf, "%s", end)
 	w.Write(buf.Bytes())
 }
+
+func TestUsage(t *testing.T) {
+	gt := newGitTest(t)
+	defer gt.done()
+
+	testMainDied(t)
+	testPrintedStderr(t, "Usage: git-codereview <command>")
+
+	testMainDied(t, "not-a-command")
+	testPrintedStderr(t, "Usage: git-codereview <command>")
+
+	// During tests we configure the flag package to panic on error
+	// instead of
+	testMainDied(t, "mail", "-not-a-flag")
+	testPrintedStderr(t, "flag provided but not defined")
+}
