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