UpdateVersionFile function

Added UpdateVersionFile to the repo/manifest_version package.
This updates the chromeos_version.sh file and pushes the change
to a specified remote.

BUG=chromium:980346
TEST=run_tests.sh

Change-Id: Ib4900aac418561303d22bddbcf69f5f71dad9264
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/go/+/1701757
Commit-Queue: Jack Neus <jackneus@google.com>
Tested-by: Jack Neus <jackneus@google.com>
Reviewed-by: Evan Hernandez <evanhernandez@chromium.org>
diff --git a/internal/git/git_test.go b/internal/git/git_test.go
index 853c867..b632426 100644
--- a/internal/git/git_test.go
+++ b/internal/git/git_test.go
@@ -4,6 +4,7 @@
 package git
 
 import (
+	"fmt"
 	"go.chromium.org/chromiumos/infra/go/internal/cmd"
 	"gotest.tools/assert"
 	"regexp"
@@ -105,3 +106,67 @@
 	assert.NilError(t, err)
 	assert.Equal(t, res, sha)
 }
+
+func TestCreateBranch(t *testing.T) {
+	fakeGitRepo := "top-secret-project"
+	branchName := "project z"
+
+	CommandRunnerImpl = cmd.FakeCommandRunner{
+		ExpectedDir: fakeGitRepo,
+		ExpectedCmd: []string{"git", "checkout", "-B", branchName, "HEAD"},
+	}
+	assert.NilError(t, CreateBranch(fakeGitRepo, branchName))
+}
+
+func TestCommitAll(t *testing.T) {
+	fakeGitRepo := "repo"
+	commitMsg := "commit"
+
+	CommandRunnerImpl = &cmd.FakeCommandRunnerMulti{
+		CommandRunners: []cmd.FakeCommandRunner{
+			{
+				ExpectedDir: fakeGitRepo,
+				ExpectedCmd: []string{"git", "add", "-A"},
+			},
+			{
+				ExpectedDir: fakeGitRepo,
+				ExpectedCmd: []string{"git", "commit", "-m", commitMsg},
+			},
+		},
+	}
+
+	err := CommitAll(fakeGitRepo, commitMsg)
+	assert.NilError(t, err)
+}
+
+func TestPushChanges(t *testing.T) {
+	fakeGitRepo := "da-bank"
+	commitMsg := "da-money"
+	localRef := "da-vault"
+
+	remoteRef := RemoteRef{
+		Remote: "da-family",
+		Ref:    "da-van",
+	}
+
+	pushStr := fmt.Sprintf("%s:%s", localRef, remoteRef.Ref)
+	CommandRunnerImpl = &cmd.FakeCommandRunnerMulti{
+		CommandRunners: []cmd.FakeCommandRunner{
+			{
+				ExpectedDir: fakeGitRepo,
+				ExpectedCmd: []string{"git", "add", "-A"},
+			},
+			{
+				ExpectedDir: fakeGitRepo,
+				ExpectedCmd: []string{"git", "commit", "-m", commitMsg},
+			},
+			{
+				ExpectedDir: fakeGitRepo,
+				ExpectedCmd: []string{"git", "push", remoteRef.Remote, pushStr, "--dry-run"},
+			},
+		},
+	}
+
+	err := PushChanges(fakeGitRepo, localRef, commitMsg, true, remoteRef)
+	assert.NilError(t, err)
+}