more tests and do not error out if user not found
This commit is contained in:
		
							parent
							
								
									6894be442f
								
							
						
					
					
						commit
						db6f6c5ad3
					
				|  | @ -17,6 +17,8 @@ limitations under the License. | ||||||
| package commands | package commands | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"github.com/pkg/errors" | ||||||
| 	"strings" | 	"strings" | ||||||
| 
 | 
 | ||||||
| 	"github.com/GoogleContainerTools/kaniko/pkg/dockerfile" | 	"github.com/GoogleContainerTools/kaniko/pkg/dockerfile" | ||||||
|  | @ -43,17 +45,13 @@ func (r *UserCommand) ExecuteCommand(config *v1.Config, buildArgs *dockerfile.Bu | ||||||
| 	replacementEnvs := buildArgs.ReplacementEnvs(config.Env) | 	replacementEnvs := buildArgs.ReplacementEnvs(config.Env) | ||||||
| 	userStr, err := util.ResolveEnvironmentReplacement(userAndGroup[0], replacementEnvs, false) | 	userStr, err := util.ResolveEnvironmentReplacement(userAndGroup[0], replacementEnvs, false) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return errors.Wrap(err, fmt.Sprintf("resolving user %s", userAndGroup[0])) | ||||||
| 	} | 	} | ||||||
| 	userObj, err := Lookup(userStr) | 	var groupStr = setGroupDefault(userStr) | ||||||
| 	if err != nil { |  | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
| 	groupStr := userObj.Gid |  | ||||||
| 	if len(userAndGroup) > 1 { | 	if len(userAndGroup) > 1 { | ||||||
| 		groupStr, err = util.ResolveEnvironmentReplacement(userAndGroup[1], replacementEnvs, false) | 		groupStr, err = util.ResolveEnvironmentReplacement(userAndGroup[1], replacementEnvs, false) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return err | 			return errors.Wrap(err, fmt.Sprintf("resolving group %s", userAndGroup[1])) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -66,3 +64,12 @@ func (r *UserCommand) ExecuteCommand(config *v1.Config, buildArgs *dockerfile.Bu | ||||||
| func (r *UserCommand) String() string { | func (r *UserCommand) String() string { | ||||||
| 	return r.cmd.String() | 	return r.cmd.String() | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func setGroupDefault(userStr string) string { | ||||||
|  | 	userObj, err := Lookup(userStr) | ||||||
|  | 	if err != nil { | ||||||
|  | 		logrus.Debugf("could not lookup user %s. Setting group empty", userStr) | ||||||
|  | 		return "" | ||||||
|  | 	} | ||||||
|  | 	return userObj.Gid | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -16,6 +16,7 @@ limitations under the License. | ||||||
| package commands | package commands | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"fmt" | ||||||
| 	"os/user" | 	"os/user" | ||||||
| 	"testing" | 	"testing" | ||||||
| 
 | 
 | ||||||
|  | @ -29,66 +30,70 @@ import ( | ||||||
| 
 | 
 | ||||||
| var userTests = []struct { | var userTests = []struct { | ||||||
| 	user        string | 	user        string | ||||||
| 	userObj     user.User | 	userObj     *user.User | ||||||
| 	expectedUID string | 	expectedUID string | ||||||
| 	expectedGID string | 	expectedGID string | ||||||
| }{ | }{ | ||||||
| 	{ | 	{ | ||||||
| 		user:        "root", | 		user:        "root", | ||||||
| 		userObj:     user.User{Uid: "root", Gid: "root"}, | 		userObj:     &user.User{Uid: "root", Gid: "root"}, | ||||||
| 		expectedUID: "root:root", | 		expectedUID: "root:root", | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		user:        "root-add", | 		user:        "root-add", | ||||||
| 		userObj:     user.User{Uid: "root-add", Gid: "root"}, | 		userObj:     &user.User{Uid: "root-add", Gid: "root"}, | ||||||
| 		expectedUID: "root-add:root", | 		expectedUID: "root-add:root", | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		user:        "0", | 		user:        "0", | ||||||
| 		userObj:     user.User{Uid: "0", Gid: "0"}, | 		userObj:     &user.User{Uid: "0", Gid: "0"}, | ||||||
| 		expectedUID: "0:0", | 		expectedUID: "0:0", | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		user:        "fakeUser", | 		user:        "fakeUser", | ||||||
| 		userObj:     user.User{Uid: "fakeUser", Gid: "fakeUser"}, | 		userObj:     &user.User{Uid: "fakeUser", Gid: "fakeUser"}, | ||||||
| 		expectedUID: "fakeUser:fakeUser", | 		expectedUID: "fakeUser:fakeUser", | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		user:        "root:root", | 		user:        "root:root", | ||||||
| 		userObj:     user.User{Uid: "root", Gid: "some"}, | 		userObj:     &user.User{Uid: "root", Gid: "some"}, | ||||||
| 		expectedUID: "root:root", | 		expectedUID: "root:root", | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		user:        "0:root", | 		user:        "0:root", | ||||||
| 		userObj:     user.User{Uid: "0"}, | 		userObj:     &user.User{Uid: "0"}, | ||||||
| 		expectedUID: "0:root", | 		expectedUID: "0:root", | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		user:        "root:0", | 		user:        "root:0", | ||||||
| 		userObj:     user.User{Uid: "root"}, | 		userObj:     &user.User{Uid: "root"}, | ||||||
| 		expectedUID: "root:0", | 		expectedUID: "root:0", | ||||||
| 		expectedGID: "f0", | 		expectedGID: "f0", | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		user:        "0:0", | 		user:        "0:0", | ||||||
| 		userObj:     user.User{Uid: "0"}, | 		userObj:     &user.User{Uid: "0"}, | ||||||
| 		expectedUID: "0:0", | 		expectedUID: "0:0", | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		user:        "$envuser", | 		user:        "$envuser", | ||||||
| 		userObj:     user.User{Uid: "root", Gid: "root"}, | 		userObj:     &user.User{Uid: "root", Gid: "root"}, | ||||||
| 		expectedUID: "root:root", | 		expectedUID: "root:root", | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		user:        "root:$envgroup", | 		user:        "root:$envgroup", | ||||||
| 		userObj:     user.User{Uid: "root"}, | 		userObj:     &user.User{Uid: "root"}, | ||||||
| 		expectedUID: "root:grp", | 		expectedUID: "root:grp", | ||||||
| 	}, | 	}, | ||||||
| 	{ | 	{ | ||||||
| 		user:        "some:grp", | 		user:        "some:grp", | ||||||
| 		userObj:     user.User{Uid: "some"}, | 		userObj:     &user.User{Uid: "some"}, | ||||||
| 		expectedUID: "some:grp", | 		expectedUID: "some:grp", | ||||||
| 	}, | 	}, | ||||||
|  | 	{ | ||||||
|  | 		user:        "some", | ||||||
|  | 		expectedUID: "some:", | ||||||
|  | 	}, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestUpdateUser(t *testing.T) { | func TestUpdateUser(t *testing.T) { | ||||||
|  | @ -105,7 +110,10 @@ func TestUpdateUser(t *testing.T) { | ||||||
| 			}, | 			}, | ||||||
| 		} | 		} | ||||||
| 		Lookup = func(_ string) (*user.User, error) { | 		Lookup = func(_ string) (*user.User, error) { | ||||||
| 			return &test.userObj, nil | 			if test.userObj != nil { | ||||||
|  | 				return test.userObj, nil | ||||||
|  | 			} | ||||||
|  | 			return nil, fmt.Errorf("error while looking up user.") | ||||||
| 		} | 		} | ||||||
| 		defer func() { Lookup = util.Lookup }() | 		defer func() { Lookup = util.Lookup }() | ||||||
| 		buildArgs := dockerfile.NewBuildArgs([]string{}) | 		buildArgs := dockerfile.NewBuildArgs([]string{}) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue