From fd3c0999f4147e50dcac9371c782cf6eef1def23 Mon Sep 17 00:00:00 2001 From: cpanato Date: Thu, 23 May 2024 17:30:41 +0200 Subject: [PATCH] if GIT_COMMITTER_EMAIL/GIT_COMMITTER_NAME use that and not the git config info Signed-off-by: cpanato --- git/git.go | 14 ++++++++++++++ git/git_test.go | 20 ++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/git/git.go b/git/git.go index d7dadf8..2491744 100644 --- a/git/git.go +++ b/git/git.go @@ -1138,6 +1138,12 @@ func (r *Repo) Add(filename string) error { // GetUserName Reads the local user's name from the git configuration func GetUserName() (string, error) { + // check first if the env var is set otherwise check the git config + userNameFromEnv := os.Getenv("GIT_COMMITTER_NAME") + if userNameFromEnv != "" { + return userNameFromEnv, nil + } + // Retrieve username from git userName, err := filterCommand( "", "config", "--get", "user.name", @@ -1145,17 +1151,25 @@ func GetUserName() (string, error) { if err != nil { return "", fmt.Errorf("reading the user name from git: %w", err) } + return userName.OutputTrimNL(), nil } // GetUserEmail reads the user's name from git func GetUserEmail() (string, error) { + // check first if the env var is set otherwise check the git config + userEmailFromEnv := os.Getenv("GIT_COMMITTER_EMAIL") + if userEmailFromEnv != "" { + return userEmailFromEnv, nil + } + userEmail, err := filterCommand( "", "config", "--get", "user.email", ).RunSilentSuccessOutput() if err != nil { return "", fmt.Errorf("reading the user's email from git: %w", err) } + return userEmail.OutputTrimNL(), nil } diff --git a/git/git_test.go b/git/git_test.go index a557b68..4989276 100644 --- a/git/git_test.go +++ b/git/git_test.go @@ -102,6 +102,8 @@ func createTestRepository() (repoPath string, err error) { } func TestGetUserName(t *testing.T) { + require.Empty(t, os.Getenv("GIT_COMMITTER_NAME")) + const fakeUserName = "SIG Release Test User" currentDir, err := os.Getwd() require.Nil(t, err, "error reading the current directory") @@ -123,9 +125,19 @@ func TestGetUserName(t *testing.T) { require.Nil(t, err) require.Equal(t, fakeUserName, actual) require.NotEqual(t, fakeUserName, "") + + envVarName := fakeUserName + " env var" + require.Nil(t, os.Setenv("GIT_COMMITTER_NAME", envVarName)) + actual, err = git.GetUserName() + require.Nil(t, err) + require.Equal(t, envVarName, actual) + require.NotEqual(t, fakeUserName, "") + require.Nil(t, os.Unsetenv("GIT_COMMITTER_NAME")) } func TestGetUserEmail(t *testing.T) { + require.Empty(t, os.Getenv("GIT_COMMITTER_EMAIL")) + const fakeUserEmail = "kubernetes-test@example.com" currentDir, err := os.Getwd() require.Nil(t, err, "error reading the current directory") @@ -148,6 +160,14 @@ func TestGetUserEmail(t *testing.T) { require.Nil(t, err) require.Equal(t, fakeUserEmail, actual) require.NotEqual(t, fakeUserEmail, "") + + envVarEmail := "kubernetes-honk@example.com" + require.Nil(t, os.Setenv("GIT_COMMITTER_EMAIL", envVarEmail)) + actual, err = git.GetUserEmail() + require.Nil(t, err) + require.Equal(t, envVarEmail, actual) + require.NotEqual(t, envVarEmail, "") + require.Nil(t, os.Unsetenv("GIT_COMMITTER_EMAIL")) } func TestGetKubernetesRepoURLSuccess(t *testing.T) {