fix tests for default home
This commit is contained in:
		
							parent
							
								
									5bbb40e4f0
								
							
						
					
					
						commit
						b29431227a
					
				|  | @ -39,6 +39,11 @@ type RunCommand struct { | |||
| 	cmd *instructions.RunCommand | ||||
| } | ||||
| 
 | ||||
| // for testing
 | ||||
| var ( | ||||
| 	userLookup = user.Lookup | ||||
| ) | ||||
| 
 | ||||
| func (r *RunCommand) ExecuteCommand(config *v1.Config, buildArgs *dockerfile.BuildArgs) error { | ||||
| 	var newCommand []string | ||||
| 	if r.cmd.PrependShell { | ||||
|  | @ -134,9 +139,12 @@ func addDefaultHOME(u string, envs []string) []string { | |||
| 	// If user is set to username, set value of HOME to /home/${user}
 | ||||
| 	// Otherwise the user is set to uid and HOME is /
 | ||||
| 	home := fmt.Sprintf("%s=/", constants.HOME) | ||||
| 	userObj, err := user.Lookup(u) | ||||
| 	userObj, err := userLookup(u) | ||||
| 	if err == nil { | ||||
| 		u = userObj.Username | ||||
| 		u = userObj.HomeDir | ||||
| 		if u == "" { | ||||
| 			u = userObj.Username | ||||
| 		} | ||||
| 		home = fmt.Sprintf("%s=/home/%s", constants.HOME, u) | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -16,6 +16,7 @@ limitations under the License. | |||
| package commands | ||||
| 
 | ||||
| import ( | ||||
| 	"os/user" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/GoogleContainerTools/kaniko/testutil" | ||||
|  | @ -25,6 +26,7 @@ func Test_addDefaultHOME(t *testing.T) { | |||
| 	tests := []struct { | ||||
| 		name     string | ||||
| 		user     string | ||||
| 		mockUser *user.User | ||||
| 		initial  []string | ||||
| 		expected []string | ||||
| 	}{ | ||||
|  | @ -52,19 +54,54 @@ func Test_addDefaultHOME(t *testing.T) { | |||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "HOME isn't set, user is set", | ||||
| 			user: "newuser", | ||||
| 			name: "HOME isn't set, user and homedir for the user set", | ||||
| 			user: "www-add", | ||||
| 			mockUser: &user.User{ | ||||
| 				Username: "www-add", | ||||
| 				HomeDir: "some-other", | ||||
| 			}, | ||||
| 			initial: []string{ | ||||
| 				"PATH=/something/else", | ||||
| 			}, | ||||
| 			expected: []string{ | ||||
| 				"PATH=/something/else", | ||||
| 				"HOME=/", | ||||
| 				"HOME=/home/some-other", | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "HOME isn't set, user set", | ||||
| 			user: "www-add", | ||||
| 			mockUser: &user.User{ | ||||
| 				Username: "www-add", | ||||
| 			}, | ||||
| 			initial: []string{ | ||||
| 				"PATH=/something/else", | ||||
| 			}, | ||||
| 			expected: []string{ | ||||
| 				"PATH=/something/else", | ||||
| 				"HOME=/home/www-add", | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "HOME isn't set, user is set", | ||||
| 			user: "newuser", | ||||
| 			mockUser: &user.User{ | ||||
| 				Username: "newuser", | ||||
| 			}, | ||||
| 			initial: []string{ | ||||
| 				"PATH=/something/else", | ||||
| 			}, | ||||
| 			expected: []string{ | ||||
| 				"PATH=/something/else", | ||||
| 				"HOME=/home/newuser", | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "HOME isn't set, user is set to root", | ||||
| 			user: "root", | ||||
| 			mockUser: &user.User{ | ||||
| 				Username: "root", | ||||
| 			}, | ||||
| 			initial: []string{ | ||||
| 				"PATH=/something/else", | ||||
| 			}, | ||||
|  | @ -76,6 +113,8 @@ func Test_addDefaultHOME(t *testing.T) { | |||
| 	} | ||||
| 	for _, test := range tests { | ||||
| 		t.Run(test.name, func(t *testing.T) { | ||||
| 			userLookup = func(username string) ( *user.User,  error) { return test.mockUser, nil} | ||||
| 			defer func() {userLookup = user.Lookup}() | ||||
| 			actual := addDefaultHOME(test.user, test.initial) | ||||
| 			testutil.CheckErrorAndDeepEqual(t, false, nil, test.expected, actual) | ||||
| 		}) | ||||
|  |  | |||
|  | @ -33,6 +33,10 @@ var userTests = []struct { | |||
| 		user:        "root", | ||||
| 		expectedUID: "root", | ||||
| 	}, | ||||
| 	{ | ||||
| 		user:        "root-add", | ||||
| 		expectedUID: "root-add", | ||||
| 	}, | ||||
| 	{ | ||||
| 		user:        "0", | ||||
| 		expectedUID: "0", | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue