diff options
author | Valentin Rothberg <vrothberg@suse.com> | 2018-07-09 19:20:45 +0200 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-07-09 20:02:29 +0000 |
commit | a62b3436db1929b5f73e247f4d1913072db09db1 (patch) | |
tree | 86bb0d735922cb282ae2fd069cdb362d55b0c024 | |
parent | 4855998f1cf533b27e48b2ded5541841fe6a3ea6 (diff) | |
download | podman-a62b3436db1929b5f73e247f4d1913072db09db1.tar.gz podman-a62b3436db1929b5f73e247f4d1913072db09db1.tar.bz2 podman-a62b3436db1929b5f73e247f4d1913072db09db1.zip |
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
-rw-r--r-- | test/e2e/run_userns_test.go | 19 | ||||
-rw-r--r-- | vendor/github.com/urfave/cli/command.go | 9 |
2 files changed, 26 insertions, 2 deletions
diff --git a/test/e2e/run_userns_test.go b/test/e2e/run_userns_test.go index 512857bcb..57c11848a 100644 --- a/test/e2e/run_userns_test.go +++ b/test/e2e/run_userns_test.go @@ -43,6 +43,25 @@ var _ = Describe("Podman UserNS support", func() { 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() { if os.Getenv("SKIP_USERNS") != "" { Skip("Skip userns tests.") diff --git a/vendor/github.com/urfave/cli/command.go b/vendor/github.com/urfave/cli/command.go index c9ba5ec68..56b633c1a 100644 --- a/vendor/github.com/urfave/cli/command.go +++ b/vendor/github.com/urfave/cli/command.go @@ -204,7 +204,7 @@ PARSE: newArgs := Args{} for i, arg := range args { if arg != trimmed { - newArgs = append(newArgs, trimmed) + newArgs = append(newArgs, arg) continue } shortOpts := translateShortOptions(set, Args{trimmed}) @@ -215,7 +215,12 @@ PARSE: newArgs = append(newArgs, shortOpts...) newArgs = append(newArgs, args[i+1:]...) 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 } } |