More assert functions for repo_harness

Added two assert functions to the repo_harness package.
This of course required adding a number of helper functions to
different libraries.

BUG=chromium:980346
TEST=run_tests.sh

Change-Id: I062638741d9d8e527ab436807f5152e2937b649f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/go/+/1716140
Reviewed-by: Benjamin Gordon <bmgordon@chromium.org>
Reviewed-by: Evan Hernandez <evanhernandez@chromium.org>
Commit-Queue: Jack Neus <jackneus@google.com>
Tested-by: Jack Neus <jackneus@google.com>
diff --git a/internal/git/git_test.go b/internal/git/git_test.go
index 5b9202f..745c835 100644
--- a/internal/git/git_test.go
+++ b/internal/git/git_test.go
@@ -126,11 +126,43 @@
 		ExpectedDir: "project",
 		Stdout:      sha,
 	}
-	res, err := GetGitRepoRevision("project")
+	res, err := GetGitRepoRevision("project", "")
 	assert.NilError(t, err)
 	assert.Equal(t, res, sha)
 }
 
+func TestIsReachable_true(t *testing.T) {
+	fakeGitRepo := "gitRepo"
+	toRef := "beef"
+	fromRef := "deaf"
+
+	CommandRunnerImpl = cmd.FakeCommandRunner{
+		ExpectedCmd: []string{"git", "merge-base", "--is-ancestor", toRef, fromRef},
+		ExpectedDir: fakeGitRepo,
+	}
+
+	ok, err := IsReachable(fakeGitRepo, toRef, fromRef)
+	assert.NilError(t, err)
+	assert.Assert(t, ok)
+}
+
+func TestIsReachable_false(t *testing.T) {
+	fakeGitRepo := "gitRepo"
+	toRef := "beef"
+	fromRef := "deaf"
+
+	CommandRunnerImpl = cmd.FakeCommandRunner{
+		ExpectedCmd: []string{"git", "merge-base", "--is-ancestor", toRef, fromRef},
+		ExpectedDir: fakeGitRepo,
+		FailCommand: true,
+		FailError:   "exit status 1",
+	}
+
+	ok, err := IsReachable(fakeGitRepo, toRef, fromRef)
+	assert.NilError(t, err)
+	assert.Assert(t, !ok)
+}
+
 func TestCreateBranch(t *testing.T) {
 	fakeGitRepo := "top-secret-project"
 	branchName := "project z"