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