diff options
-rw-r--r-- | cmd/podman/containers/exists.go | 3 | ||||
-rw-r--r-- | cmd/podman/images/exists.go | 4 | ||||
-rw-r--r-- | cmd/podman/images/pull.go | 7 | ||||
-rw-r--r-- | cmd/podman/images/push.go | 8 | ||||
-rw-r--r-- | cmd/podman/pods/create.go | 35 | ||||
-rw-r--r-- | cmd/podman/pods/exists.go | 3 | ||||
-rw-r--r-- | cmd/podman/system/info.go | 2 | ||||
-rw-r--r-- | libpod/container_internal.go | 6 | ||||
-rw-r--r-- | pkg/api/server/server.go | 41 | ||||
-rw-r--r-- | pkg/domain/infra/abi/images.go | 4 | ||||
-rw-r--r-- | pkg/domain/infra/tunnel/images.go | 10 | ||||
-rw-r--r-- | pkg/selinux/selinux.go | 40 | ||||
-rw-r--r-- | pkg/util/utils.go | 36 | ||||
-rw-r--r-- | test/e2e/exists_test.go | 38 | ||||
-rw-r--r-- | test/e2e/info_test.go | 42 | ||||
-rw-r--r-- | test/e2e/pull_test.go | 1 | ||||
-rw-r--r-- | test/e2e/untag_test.go | 1 | ||||
-rw-r--r-- | test/e2e/version_test.go | 2 |
18 files changed, 185 insertions, 98 deletions
diff --git a/cmd/podman/containers/exists.go b/cmd/podman/containers/exists.go index f1bc09f78..e640ca5e1 100644 --- a/cmd/podman/containers/exists.go +++ b/cmd/podman/containers/exists.go @@ -2,7 +2,6 @@ package containers import ( "context" - "os" "github.com/containers/libpod/cmd/podman/registry" "github.com/containers/libpod/pkg/domain/entities" @@ -37,7 +36,7 @@ func exists(cmd *cobra.Command, args []string) error { return err } if !response.Value { - os.Exit(1) + registry.SetExitCode(1) } return nil } diff --git a/cmd/podman/images/exists.go b/cmd/podman/images/exists.go index 0bb288b96..6464e6cd8 100644 --- a/cmd/podman/images/exists.go +++ b/cmd/podman/images/exists.go @@ -1,8 +1,6 @@ package images import ( - "os" - "github.com/containers/libpod/cmd/podman/registry" "github.com/containers/libpod/pkg/domain/entities" "github.com/spf13/cobra" @@ -34,7 +32,7 @@ func exists(cmd *cobra.Command, args []string) error { return err } if !found.Value { - os.Exit(1) + registry.SetExitCode(1) } return nil } diff --git a/cmd/podman/images/pull.go b/cmd/podman/images/pull.go index fb107d00c..f996d0681 100644 --- a/cmd/podman/images/pull.go +++ b/cmd/podman/images/pull.go @@ -2,11 +2,13 @@ package images import ( "fmt" + "os" buildahcli "github.com/containers/buildah/pkg/cli" "github.com/containers/image/v5/types" "github.com/containers/libpod/cmd/podman/registry" "github.com/containers/libpod/pkg/domain/entities" + "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/pflag" ) @@ -99,6 +101,11 @@ func imagePull(cmd *cobra.Command, args []string) error { if cmd.Flags().Changed("tls-verify") { pullOptsAPI.TLSVerify = types.NewOptionalBool(pullOptions.TLSVerifyCLI) } + if pullOptsAPI.Authfile != "" { + if _, err := os.Stat(pullOptsAPI.Authfile); err != nil { + return errors.Wrapf(err, "error getting authfile %s", pullOptsAPI.Authfile) + } + } // Let's do all the remaining Yoga in the API to prevent us from // scattering logic across (too) many parts of the code. diff --git a/cmd/podman/images/push.go b/cmd/podman/images/push.go index f12a5ac86..ef2ffd0d7 100644 --- a/cmd/podman/images/push.go +++ b/cmd/podman/images/push.go @@ -1,6 +1,8 @@ package images import ( + "os" + buildahcli "github.com/containers/buildah/pkg/cli" "github.com/containers/image/v5/types" "github.com/containers/libpod/cmd/podman/registry" @@ -114,6 +116,12 @@ func imagePush(cmd *cobra.Command, args []string) error { pushOptsAPI.TLSVerify = types.NewOptionalBool(pushOptions.TLSVerifyCLI) } + if pushOptsAPI.Authfile != "" { + if _, err := os.Stat(pushOptsAPI.Authfile); err != nil { + return errors.Wrapf(err, "error getting authfile %s", pushOptsAPI.Authfile) + } + } + // Let's do all the remaining Yoga in the API to prevent us from scattering // logic across (too) many parts of the code. return registry.ImageEngine().Push(registry.GetContext(), source, destination, pushOptsAPI) diff --git a/cmd/podman/pods/create.go b/cmd/podman/pods/create.go index 647cf24b2..ff21166f3 100644 --- a/cmd/podman/pods/create.go +++ b/cmd/podman/pods/create.go @@ -69,10 +69,24 @@ func create(cmd *cobra.Command, args []string) error { return errors.Wrapf(err, "unable to process labels") } - if !createOptions.Infra && cmd.Flag("share").Changed && share != "none" && share != "" { - return errors.Errorf("You cannot share kernel namespaces on the pod level without an infra container") + if !createOptions.Infra { + if cmd.Flag("infra-command").Changed { + return errors.New("cannot set infra-command without an infra container") + } + createOptions.InfraCommand = "" + if cmd.Flag("infra-image").Changed { + return errors.New("cannot set infra-image without an infra container") + } + createOptions.InfraImage = "" + + if cmd.Flag("share").Changed && share != "none" && share != "" { + return fmt.Errorf("cannot set share(%s) namespaces without an infra container", cmd.Flag("share").Value) + } + createOptions.Share = nil + } else { + createOptions.Share = strings.Split(share, ",") } - createOptions.Share = strings.Split(share, ",") + if cmd.Flag("pod-id-file").Changed { podIdFile, err = util.OpenExclusiveFile(podIDFile) if err != nil && os.IsExist(err) { @@ -122,21 +136,6 @@ func create(cmd *cobra.Command, args []string) error { } } - if !createOptions.Infra { - if cmd.Flag("infra-command").Changed { - return errors.New("cannot set infra-command without an infra container") - } - createOptions.InfraCommand = "" - if cmd.Flag("infra-image").Changed { - return errors.New("cannot set infra-image without an infra container") - } - createOptions.InfraImage = "" - if cmd.Flag("share").Changed { - return errors.New("cannot set share namespaces without an infra container") - } - createOptions.Share = nil - } - response, err := registry.ContainerEngine().PodCreate(context.Background(), createOptions) if err != nil { return err diff --git a/cmd/podman/pods/exists.go b/cmd/podman/pods/exists.go index ad0e28b90..5a94bf150 100644 --- a/cmd/podman/pods/exists.go +++ b/cmd/podman/pods/exists.go @@ -2,7 +2,6 @@ package pods import ( "context" - "os" "github.com/containers/libpod/cmd/podman/registry" "github.com/containers/libpod/pkg/domain/entities" @@ -37,7 +36,7 @@ func exists(cmd *cobra.Command, args []string) error { return err } if !response.Value { - os.Exit(1) + registry.SetExitCode(1) } return nil } diff --git a/cmd/podman/system/info.go b/cmd/podman/system/info.go index 8e014a91b..8b36ef549 100644 --- a/cmd/podman/system/info.go +++ b/cmd/podman/system/info.go @@ -7,8 +7,8 @@ import ( "github.com/containers/libpod/cmd/podman/registry" "github.com/containers/libpod/pkg/domain/entities" + "github.com/ghodss/yaml" "github.com/spf13/cobra" - "gopkg.in/yaml.v2" ) var ( diff --git a/libpod/container_internal.go b/libpod/container_internal.go index 50bd9bc25..4cb80a98b 100644 --- a/libpod/container_internal.go +++ b/libpod/container_internal.go @@ -19,7 +19,7 @@ import ( "github.com/containers/libpod/pkg/hooks" "github.com/containers/libpod/pkg/hooks/exec" "github.com/containers/libpod/pkg/rootless" - "github.com/containers/libpod/pkg/util" + "github.com/containers/libpod/pkg/selinux" "github.com/containers/storage" "github.com/containers/storage/pkg/archive" "github.com/containers/storage/pkg/mount" @@ -435,12 +435,12 @@ func (c *Container) setupStorage(ctx context.Context) error { processLabel := containerInfo.ProcessLabel switch { case c.ociRuntime.SupportsKVM(): - processLabel, err = util.SELinuxKVMLabel(processLabel) + processLabel, err = selinux.SELinuxKVMLabel(processLabel) if err != nil { return err } case c.config.Systemd: - processLabel, err = util.SELinuxInitLabel(processLabel) + processLabel, err = selinux.SELinuxInitLabel(processLabel) if err != nil { return err } diff --git a/pkg/api/server/server.go b/pkg/api/server/server.go index 9576fd437..ce2d152e0 100644 --- a/pkg/api/server/server.go +++ b/pkg/api/server/server.go @@ -8,6 +8,7 @@ import ( "os" "os/signal" "runtime" + goRuntime "runtime" "strings" "sync" "syscall" @@ -30,6 +31,7 @@ type APIServer struct { net.Listener // mux for routing HTTP API calls to libpod routines context.CancelFunc // Stop APIServer idleTracker *IdleTracker // Track connections to support idle shutdown + pprof *http.Server // Sidecar http server for providing performance data } // Number of seconds to wait for next request, if exceeded shutdown server @@ -145,6 +147,20 @@ func (s *APIServer) Serve() error { _ = s.Shutdown() }() + if logrus.IsLevelEnabled(logrus.DebugLevel) { + go func() { + pprofMux := mux.NewRouter() + pprofMux.PathPrefix("/debug/pprof").Handler(http.DefaultServeMux) + goRuntime.SetMutexProfileFraction(1) + goRuntime.SetBlockProfileRate(1) + s.pprof = &http.Server{Addr: "localhost:8888", Handler: pprofMux} + err := s.pprof.ListenAndServe() + if err != nil && err != http.ErrServerClosed { + logrus.Warn("Profiler Service failed: " + err.Error()) + } + }() + } + go func() { err := s.Server.Serve(s.Listener) if err != nil && err != http.ErrServerClosed { @@ -166,26 +182,29 @@ func (s *APIServer) Serve() error { // Shutdown is a clean shutdown waiting on existing clients func (s *APIServer) Shutdown() error { - if logrus.IsLevelEnabled(logrus.DebugLevel) { - _, file, line, _ := runtime.Caller(1) - logrus.Debugf("APIServer.Shutdown by %s:%d, %d/%d connection(s)", - file, line, s.idleTracker.ActiveConnections(), s.idleTracker.TotalConnections()) - } - - // Duration == 0 flags no auto-shutdown of the server - if s.idleTracker.Duration == 0 { - logrus.Debug("APIServer.Shutdown ignored as Duration == 0") + if s.idleTracker.Duration == UnlimitedServiceDuration { + logrus.Debug("APIServer.Shutdown ignored as Duration is UnlimitedService.") return nil } - // Gracefully shutdown server, duration of wait same as idle window + // Gracefully shutdown server(s), duration of wait same as idle window // TODO: Should we really wait the idle window for shutdown? ctx, cancel := context.WithTimeout(context.Background(), s.idleTracker.Duration) defer cancel() + + if logrus.IsLevelEnabled(logrus.DebugLevel) { + _, file, line, _ := runtime.Caller(1) + logrus.Debugf("APIServer.Shutdown by %s:%d, %d/%d connection(s)", + file, line, s.idleTracker.ActiveConnections(), s.idleTracker.TotalConnections()) + if err := s.pprof.Shutdown(ctx); err != nil { + logrus.Warn("Failed to cleanly shutdown pprof Server: " + err.Error()) + } + } + go func() { err := s.Server.Shutdown(ctx) if err != nil && err != context.Canceled && err != http.ErrServerClosed { - logrus.Errorf("Failed to cleanly shutdown APIServer: %s", err.Error()) + logrus.Error("Failed to cleanly shutdown APIServer: " + err.Error()) } }() <-ctx.Done() diff --git a/pkg/domain/infra/abi/images.go b/pkg/domain/infra/abi/images.go index 32f7d75e5..d0b7b42b5 100644 --- a/pkg/domain/infra/abi/images.go +++ b/pkg/domain/infra/abi/images.go @@ -303,6 +303,10 @@ func (ir *ImageEngine) Untag(ctx context.Context, nameOrId string, tags []string if err != nil { return err } + // If only one arg is provided, all names are to be untagged + if len(tags) == 0 { + tags = newImage.Names() + } for _, tag := range tags { if err := newImage.UntagImage(tag); err != nil { return err diff --git a/pkg/domain/infra/tunnel/images.go b/pkg/domain/infra/tunnel/images.go index 822842936..27ed9f1ec 100644 --- a/pkg/domain/infra/tunnel/images.go +++ b/pkg/domain/infra/tunnel/images.go @@ -7,6 +7,7 @@ import ( "github.com/containers/common/pkg/config" "github.com/containers/image/v5/docker/reference" + "github.com/containers/libpod/pkg/bindings" images "github.com/containers/libpod/pkg/bindings/images" "github.com/containers/libpod/pkg/domain/entities" "github.com/containers/libpod/pkg/domain/utils" @@ -109,6 +110,15 @@ func (ir *ImageEngine) Tag(ctx context.Context, nameOrId string, tags []string, } func (ir *ImageEngine) Untag(ctx context.Context, nameOrId string, tags []string, options entities.ImageUntagOptions) error { + // Remove all tags if none are provided + if len(tags) == 0 { + newImage, err := images.GetImage(ir.ClientCxt, nameOrId, &bindings.PFalse) + if err != nil { + return err + } + tags = newImage.NamesHistory + } + for _, newTag := range tags { var ( tag, repo string diff --git a/pkg/selinux/selinux.go b/pkg/selinux/selinux.go new file mode 100644 index 000000000..975519cce --- /dev/null +++ b/pkg/selinux/selinux.go @@ -0,0 +1,40 @@ +package selinux + +import ( + "github.com/opencontainers/selinux/go-selinux" +) + +// SELinuxKVMLabel returns labels for running kvm isolated containers +func SELinuxKVMLabel(cLabel string) (string, error) { + if cLabel == "" { + // selinux is disabled + return "", nil + } + processLabel, _ := selinux.KVMContainerLabels() + selinux.ReleaseLabel(processLabel) + return swapSELinuxLabel(cLabel, processLabel) +} + +// SELinuxInitLabel returns labels for running systemd based containers +func SELinuxInitLabel(cLabel string) (string, error) { + if cLabel == "" { + // selinux is disabled + return "", nil + } + processLabel, _ := selinux.InitContainerLabels() + selinux.ReleaseLabel(processLabel) + return swapSELinuxLabel(cLabel, processLabel) +} + +func swapSELinuxLabel(cLabel, processLabel string) (string, error) { + dcon, err := selinux.NewContext(cLabel) + if err != nil { + return "", err + } + scon, err := selinux.NewContext(processLabel) + if err != nil { + return "", err + } + dcon["type"] = scon["type"] + return dcon.Get(), nil +} diff --git a/pkg/util/utils.go b/pkg/util/utils.go index 55e775d7a..64331cf66 100644 --- a/pkg/util/utils.go +++ b/pkg/util/utils.go @@ -22,7 +22,6 @@ import ( "github.com/containers/storage" "github.com/containers/storage/pkg/idtools" v1 "github.com/opencontainers/image-spec/specs-go/v1" - "github.com/opencontainers/selinux/go-selinux" "github.com/pkg/errors" "github.com/sirupsen/logrus" "golang.org/x/crypto/ssh/terminal" @@ -647,41 +646,6 @@ func ValidateSysctls(strSlice []string) (map[string]string, error) { return sysctl, nil } -// SELinuxKVMLabel returns labels for running kvm isolated containers -func SELinuxKVMLabel(cLabel string) (string, error) { - if cLabel == "" { - // selinux is disabled - return "", nil - } - processLabel, _ := selinux.KVMContainerLabels() - selinux.ReleaseLabel(processLabel) - return swapSELinuxLabel(cLabel, processLabel) -} - -// SELinuxInitLabel returns labels for running systemd based containers -func SELinuxInitLabel(cLabel string) (string, error) { - if cLabel == "" { - // selinux is disabled - return "", nil - } - processLabel, _ := selinux.InitContainerLabels() - selinux.ReleaseLabel(processLabel) - return swapSELinuxLabel(cLabel, processLabel) -} - -func swapSELinuxLabel(cLabel, processLabel string) (string, error) { - dcon, err := selinux.NewContext(cLabel) - if err != nil { - return "", err - } - scon, err := selinux.NewContext(processLabel) - if err != nil { - return "", err - } - dcon["type"] = scon["type"] - return dcon.Get(), nil -} - func DefaultContainerConfig() *config.Config { return containerConfig } diff --git a/test/e2e/exists_test.go b/test/e2e/exists_test.go index e25eb33c6..e26fad51d 100644 --- a/test/e2e/exists_test.go +++ b/test/e2e/exists_test.go @@ -6,6 +6,7 @@ import ( . "github.com/containers/libpod/test/utils" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + . "github.com/onsi/gomega/gexec" ) var _ = Describe("Podman image|container exists", func() { @@ -16,7 +17,6 @@ var _ = Describe("Podman image|container exists", func() { ) BeforeEach(func() { - Skip(v2fail) tempdir, err = CreateTempDirInTempDir() if err != nil { os.Exit(1) @@ -36,17 +36,17 @@ var _ = Describe("Podman image|container exists", func() { It("podman image exists in local storage by fq name", func() { session := podmanTest.Podman([]string{"image", "exists", ALPINE}) session.WaitWithDefaultTimeout() - Expect(session.ExitCode()).To(Equal(0)) + Expect(session).Should(Exit(0)) }) It("podman image exists in local storage by short name", func() { session := podmanTest.Podman([]string{"image", "exists", "alpine"}) session.WaitWithDefaultTimeout() - Expect(session.ExitCode()).To(Equal(0)) + Expect(session).Should(Exit(0)) }) It("podman image does not exist in local storage", func() { session := podmanTest.Podman([]string{"image", "exists", "alpine9999"}) session.WaitWithDefaultTimeout() - Expect(session.ExitCode()).To(Equal(1)) + Expect(session).Should(Exit(1)) }) It("podman container exists in local storage by name", func() { setup := podmanTest.RunTopContainer("foobar") @@ -55,17 +55,17 @@ var _ = Describe("Podman image|container exists", func() { session := podmanTest.Podman([]string{"container", "exists", "foobar"}) session.WaitWithDefaultTimeout() - Expect(session.ExitCode()).To(Equal(0)) + Expect(session).Should(Exit(0)) }) It("podman container exists in local storage by container ID", func() { setup := podmanTest.RunTopContainer("") setup.WaitWithDefaultTimeout() - Expect(setup.ExitCode()).To(Equal(0)) + Expect(setup).Should(Exit(0)) cid := setup.OutputToString() session := podmanTest.Podman([]string{"container", "exists", cid}) session.WaitWithDefaultTimeout() - Expect(session.ExitCode()).To(Equal(0)) + Expect(session).Should(Exit(0)) }) It("podman container exists in local storage by short container ID", func() { setup := podmanTest.RunTopContainer("") @@ -75,46 +75,46 @@ var _ = Describe("Podman image|container exists", func() { session := podmanTest.Podman([]string{"container", "exists", cid}) session.WaitWithDefaultTimeout() - Expect(session.ExitCode()).To(Equal(0)) + Expect(session).Should(Exit(0)) }) It("podman container does not exist in local storage", func() { session := podmanTest.Podman([]string{"container", "exists", "foobar"}) session.WaitWithDefaultTimeout() - Expect(session.ExitCode()).To(Equal(1)) + Expect(session).Should(Exit(1)) }) It("podman pod exists in local storage by name", func() { - setup, rc, _ := podmanTest.CreatePod("foobar") + setup, _, _ := podmanTest.CreatePod("foobar") setup.WaitWithDefaultTimeout() - Expect(rc).To(Equal(0)) + Expect(setup).Should(Exit(0)) session := podmanTest.Podman([]string{"pod", "exists", "foobar"}) session.WaitWithDefaultTimeout() - Expect(session.ExitCode()).To(Equal(0)) + Expect(session).Should(Exit(0)) }) It("podman pod exists in local storage by container ID", func() { - setup, rc, podID := podmanTest.CreatePod("") + setup, _, podID := podmanTest.CreatePod("") setup.WaitWithDefaultTimeout() - Expect(rc).To(Equal(0)) + Expect(setup).Should(Exit(0)) session := podmanTest.Podman([]string{"pod", "exists", podID}) session.WaitWithDefaultTimeout() - Expect(session.ExitCode()).To(Equal(0)) + Expect(session).Should(Exit(0)) }) It("podman pod exists in local storage by short container ID", func() { - setup, rc, podID := podmanTest.CreatePod("") + setup, _, podID := podmanTest.CreatePod("") setup.WaitWithDefaultTimeout() - Expect(rc).To(Equal(0)) + Expect(setup).Should(Exit(0)) session := podmanTest.Podman([]string{"pod", "exists", podID[0:12]}) session.WaitWithDefaultTimeout() - Expect(session.ExitCode()).To(Equal(0)) + Expect(session).Should(Exit(0)) }) It("podman pod does not exist in local storage", func() { // The exit code for non-existing pod is incorrect (125 vs 1) SkipIfRemote() session := podmanTest.Podman([]string{"pod", "exists", "foobar"}) session.WaitWithDefaultTimeout() - Expect(session.ExitCode()).To(Equal(1)) + Expect(session).Should(Exit(1)) }) }) diff --git a/test/e2e/info_test.go b/test/e2e/info_test.go index ff3615dcd..7cb299e0f 100644 --- a/test/e2e/info_test.go +++ b/test/e2e/info_test.go @@ -1,8 +1,13 @@ package integration import ( + "fmt" + "io/ioutil" "os" + "os/exec" + "path/filepath" + "github.com/containers/libpod/pkg/rootless" . "github.com/containers/libpod/test/utils" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -50,4 +55,41 @@ var _ = Describe("Podman Info", func() { Expect(session.ExitCode()).To(Equal(0)) Expect(session.OutputToString()).To(ContainSubstring("registry")) }) + + It("podman info rootless storage path", func() { + if !rootless.IsRootless() { + Skip("test of rootless_storage_path is only meaningful as rootless") + } + SkipIfRemote() + oldHOME, hasHOME := os.LookupEnv("HOME") + defer func() { + if hasHOME { + os.Setenv("HOME", oldHOME) + } else { + os.Unsetenv("HOME") + } + }() + os.Setenv("HOME", podmanTest.TempDir) + configPath := filepath.Join(os.Getenv("HOME"), ".config", "containers", "storage.conf") + err := os.RemoveAll(filepath.Dir(configPath)) + Expect(err).To(BeNil()) + + err = os.MkdirAll(filepath.Dir(configPath), os.ModePerm) + Expect(err).To(BeNil()) + + rootlessStoragePath := `"/tmp/$HOME/$USER/$UID"` + driver := `"overlay"` + storageOpt := `"/usr/bin/fuse-overlayfs"` + storageConf := []byte(fmt.Sprintf("[storage]\ndriver=%s\nrootless_storage_path=%s\n[storage.options]\nmount_program=%s", driver, rootlessStoragePath, storageOpt)) + err = ioutil.WriteFile(configPath, storageConf, os.ModePerm) + Expect(err).To(BeNil()) + + expect := filepath.Join("/tmp", os.Getenv("HOME"), os.Getenv("USER"), os.Getenv("UID")) + podmanPath := podmanTest.PodmanTest.PodmanBinary + cmd := exec.Command(podmanPath, "info", "--format", "{{.Store.GraphRoot}}") + out, err := cmd.CombinedOutput() + fmt.Println(string(out)) + Expect(err).To(BeNil()) + Expect(string(out)).To(ContainSubstring(expect)) + }) }) diff --git a/test/e2e/pull_test.go b/test/e2e/pull_test.go index 153195825..96340ef30 100644 --- a/test/e2e/pull_test.go +++ b/test/e2e/pull_test.go @@ -22,7 +22,6 @@ var _ = Describe("Podman pull", func() { ) BeforeEach(func() { - Skip(v2fail) tempdir, err = CreateTempDirInTempDir() if err != nil { os.Exit(1) diff --git a/test/e2e/untag_test.go b/test/e2e/untag_test.go index 8b4b454db..17171cd41 100644 --- a/test/e2e/untag_test.go +++ b/test/e2e/untag_test.go @@ -16,7 +16,6 @@ var _ = Describe("Podman untag", func() { ) BeforeEach(func() { - Skip(v2fail) tempdir, err = CreateTempDirInTempDir() if err != nil { os.Exit(1) diff --git a/test/e2e/version_test.go b/test/e2e/version_test.go index 036b6f621..4d2e14589 100644 --- a/test/e2e/version_test.go +++ b/test/e2e/version_test.go @@ -17,7 +17,6 @@ var _ = Describe("Podman version", func() { ) BeforeEach(func() { - Skip(v2fail) tempdir, err = CreateTempDirInTempDir() if err != nil { os.Exit(1) @@ -43,6 +42,7 @@ var _ = Describe("Podman version", func() { }) It("podman -v", func() { + Skip(v2fail) session := podmanTest.Podman([]string{"-v"}) session.WaitWithDefaultTimeout() Expect(session.ExitCode()).To(Equal(0)) |