github.com/kaituanwang/hyperledger@v2.0.1+incompatible/core/container/externalbuilder/copy_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package externalbuilder 8 9 import ( 10 "io/ioutil" 11 "os" 12 "path/filepath" 13 14 "github.com/hyperledger/fabric/common/flogging" 15 . "github.com/onsi/ginkgo" 16 . "github.com/onsi/gomega" 17 "go.uber.org/zap" 18 ) 19 20 var _ = Describe("copy", func() { 21 var ( 22 logger *flogging.FabricLogger 23 srcRootDir, srcSubDir, destRootDir string 24 srcRootFile, srcSubFile *os.File 25 err error 26 ) 27 28 BeforeEach(func() { 29 srcRootDir, err = ioutil.TempDir("", "copy-test-") 30 Expect(err).NotTo(HaveOccurred()) 31 srcSubDir, err = ioutil.TempDir(srcRootDir, "sub-") 32 Expect(err).NotTo(HaveOccurred()) 33 srcRootFile, err = ioutil.TempFile(srcRootDir, "file-") 34 Expect(err).NotTo(HaveOccurred()) 35 srcSubFile, err = ioutil.TempFile(srcSubDir, "subfile-") 36 Expect(err).NotTo(HaveOccurred()) 37 err = os.Chmod(srcSubFile.Name(), os.ModePerm) 38 Expect(err).NotTo(HaveOccurred()) 39 40 logger = flogging.NewFabricLogger(zap.NewNop()) 41 }) 42 43 AfterEach(func() { 44 os.RemoveAll(srcRootDir) 45 os.RemoveAll(destRootDir) 46 }) 47 48 When("dest dir does not exist", func() { 49 BeforeEach(func() { 50 destRootDir, err = ioutil.TempDir("", "dest-") 51 Expect(err).NotTo(HaveOccurred()) 52 err = os.RemoveAll(destRootDir) 53 Expect(err).NotTo(HaveOccurred()) 54 }) 55 56 It("make copy by simply moving", func() { 57 err = MoveOrCopyDir(logger, srcRootDir, destRootDir) 58 Expect(err).NotTo(HaveOccurred()) 59 60 _, err = os.Stat(srcRootDir) 61 Expect(os.IsNotExist(err)).To(BeTrue()) 62 63 _, err = os.Stat(filepath.Join(destRootDir, filepath.Base(srcRootFile.Name()))) 64 Expect(err).NotTo(HaveOccurred()) 65 _, err = os.Stat(filepath.Join(destRootDir, filepath.Base(srcSubDir))) 66 Expect(err).NotTo(HaveOccurred()) 67 f, err := os.Stat(filepath.Join(destRootDir, filepath.Base(srcSubDir), filepath.Base(srcSubFile.Name()))) 68 Expect(err).NotTo(HaveOccurred()) 69 Expect(f.Mode()).To(Equal(os.ModePerm)) 70 }) 71 }) 72 73 When("dest dir exits", func() { 74 BeforeEach(func() { 75 destRootDir, err = ioutil.TempDir("", "dest-") 76 Expect(err).NotTo(HaveOccurred()) 77 }) 78 79 It("fails to move and try copy", func() { 80 err = MoveOrCopyDir(logger, srcRootDir, destRootDir) 81 Expect(err).NotTo(HaveOccurred()) 82 83 _, err = os.Stat(srcRootDir) 84 Expect(err).NotTo(HaveOccurred()) 85 86 _, err = os.Stat(filepath.Join(destRootDir, filepath.Base(srcRootFile.Name()))) 87 Expect(err).NotTo(HaveOccurred()) 88 _, err = os.Stat(filepath.Join(destRootDir, filepath.Base(srcSubDir))) 89 Expect(err).NotTo(HaveOccurred()) 90 f, err := os.Stat(filepath.Join(destRootDir, filepath.Base(srcSubDir), filepath.Base(srcSubFile.Name()))) 91 Expect(err).NotTo(HaveOccurred()) 92 Expect(f.Mode()).To(Equal(os.ModePerm)) 93 }) 94 }) 95 })