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.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