mirror of
https://github.com/containers/podman.git
synced 2025-06-23 02:18:13 +08:00
urfave/cli: fix regression in short-opts parsing
Add the actual argument, not the one we're looking for when searching the to-be-translated short-opt string. Otherwise, we're likely to hit an infinite loop. Signed-off-by: Valentin Rothberg <vrothberg@suse.com> Closes: #1066 Approved by: rhatdan
This commit is contained in:

committed by
Atomic Bot

parent
4855998f1c
commit
a62b3436db
@ -43,6 +43,25 @@ var _ = Describe("Podman UserNS support", func() {
|
|||||||
Expect(ok).To(BeTrue())
|
Expect(ok).To(BeTrue())
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// It essentially repeats the test above but with the `-it` short option
|
||||||
|
// that broke execution at:
|
||||||
|
// https://github.com/projectatomic/libpod/pull/1066#issuecomment-403562116
|
||||||
|
// To avoid a potential future regression, use this as a test.
|
||||||
|
It("podman uidmapping and gidmapping with short-opts", func() {
|
||||||
|
if os.Getenv("SKIP_USERNS") != "" {
|
||||||
|
Skip("Skip userns tests.")
|
||||||
|
}
|
||||||
|
if _, err := os.Stat("/proc/self/uid_map"); err != nil {
|
||||||
|
Skip("User namespaces not supported.")
|
||||||
|
}
|
||||||
|
|
||||||
|
session := podmanTest.Podman([]string{"run", "--uidmap=0:1:70000", "--gidmap=0:20000:70000", "-it", "busybox", "echo", "hello"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
ok, _ := session.GrepString("hello")
|
||||||
|
Expect(ok).To(BeTrue())
|
||||||
|
})
|
||||||
|
|
||||||
It("podman uidmapping and gidmapping --net=host", func() {
|
It("podman uidmapping and gidmapping --net=host", func() {
|
||||||
if os.Getenv("SKIP_USERNS") != "" {
|
if os.Getenv("SKIP_USERNS") != "" {
|
||||||
Skip("Skip userns tests.")
|
Skip("Skip userns tests.")
|
||||||
|
9
vendor/github.com/urfave/cli/command.go
generated
vendored
9
vendor/github.com/urfave/cli/command.go
generated
vendored
@ -204,7 +204,7 @@ PARSE:
|
|||||||
newArgs := Args{}
|
newArgs := Args{}
|
||||||
for i, arg := range args {
|
for i, arg := range args {
|
||||||
if arg != trimmed {
|
if arg != trimmed {
|
||||||
newArgs = append(newArgs, trimmed)
|
newArgs = append(newArgs, arg)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
shortOpts := translateShortOptions(set, Args{trimmed})
|
shortOpts := translateShortOptions(set, Args{trimmed})
|
||||||
@ -215,7 +215,12 @@ PARSE:
|
|||||||
newArgs = append(newArgs, shortOpts...)
|
newArgs = append(newArgs, shortOpts...)
|
||||||
newArgs = append(newArgs, args[i+1:]...)
|
newArgs = append(newArgs, args[i+1:]...)
|
||||||
args = newArgs
|
args = newArgs
|
||||||
// now parse again
|
// now reset the flagset parse again
|
||||||
|
set, err = flagSet(c.Name, c.Flags)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
set.SetOutput(ioutil.Discard)
|
||||||
goto PARSE
|
goto PARSE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user