diff options
author | Qi Wang <qiwan@redhat.com> | 2019-06-20 17:43:40 -0400 |
---|---|---|
committer | Qi Wang <qiwan@redhat.com> | 2019-06-20 17:52:12 -0400 |
commit | c962d214e6156bd4d89e0eb20246549eca272ba7 (patch) | |
tree | e3de4fb063f97d789229207544643edcae94ea99 | |
parent | f65ddc09914050275eb8ddc0b8f805d2cdd3be46 (diff) | |
download | podman-c962d214e6156bd4d89e0eb20246549eca272ba7.tar.gz podman-c962d214e6156bd4d89e0eb20246549eca272ba7.tar.bz2 podman-c962d214e6156bd4d89e0eb20246549eca272ba7.zip |
fix bug creats directory copying file
close #3384
Signed-off-by: Qi Wang <qiwan@redhat.com>
-rw-r--r-- | cmd/podman/cp.go | 23 | ||||
-rw-r--r-- | test/e2e/cp_test.go | 4 |
2 files changed, 12 insertions, 15 deletions
diff --git a/cmd/podman/cp.go b/cmd/podman/cp.go index a9418e6e0..efe343bfd 100644 --- a/cmd/podman/cp.go +++ b/cmd/podman/cp.go @@ -326,20 +326,6 @@ func copy(src, destPath, dest string, idMappingOpts storage.IDMappingOptions, ch } return nil } - if !archive.IsArchivePath(srcPath) { - // This srcPath is a file, and either it's not an - // archive, or we don't care whether or not it's an - // archive. - destfi, err := os.Stat(destPath) - if err != nil { - if !os.IsNotExist(err) { - return errors.Wrapf(err, "failed to get stat of dest path %s", destPath) - } - } - if destfi != nil && destfi.IsDir() { - destPath = filepath.Join(destPath, filepath.Base(srcPath)) - } - } if extract { // We're extracting an archive into the destination directory. @@ -350,9 +336,16 @@ func copy(src, destPath, dest string, idMappingOpts storage.IDMappingOptions, ch return nil } - if destDirIsExist || strings.HasSuffix(dest, string(os.PathSeparator)) { + destfi, err := os.Stat(destPath) + if err != nil { + if !os.IsNotExist(err) { + return errors.Wrapf(err, "failed to get stat of dest path %s", destPath) + } + } + if destfi != nil && destfi.IsDir() { destPath = filepath.Join(destPath, filepath.Base(srcPath)) } + // Copy the file, preserving attributes. logrus.Debugf("copying %q to %q", srcPath, destPath) if err = copyFileWithTar(srcPath, destPath); err != nil { diff --git a/test/e2e/cp_test.go b/test/e2e/cp_test.go index f7596d77d..5e98e73eb 100644 --- a/test/e2e/cp_test.go +++ b/test/e2e/cp_test.go @@ -58,6 +58,10 @@ var _ = Describe("Podman cp", func() { session = podmanTest.Podman([]string{"cp", name + ":foo", dstPath}) session.WaitWithDefaultTimeout() Expect(session.ExitCode()).To(Equal(0)) + + session = podmanTest.Podman([]string{"start", name}) + session.WaitWithDefaultTimeout() + Expect(session.ExitCode()).To(Equal(0)) }) It("podman cp file to dir", func() { |