fix tests for default home

This commit is contained in:
Tejal Desai 2019-10-18 16:48:20 -07:00
parent 5bbb40e4f0
commit b29431227a
3 changed files with 56 additions and 5 deletions

View File

@ -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)
}

View File

@ -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)
})

View File

@ -33,6 +33,10 @@ var userTests = []struct {
user: "root",
expectedUID: "root",
},
{
user: "root-add",
expectedUID: "root-add",
},
{
user: "0",
expectedUID: "0",