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  })