github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/fileutils/moveallfiles_test.go (about)

     1  package fileutils_test
     2  
     3  import (
     4  	"os"
     5  	"path"
     6  	"testing"
     7  
     8  	"github.com/ActiveState/cli/internal/testhelpers/suite"
     9  
    10  	"github.com/ActiveState/cli/internal/fileutils"
    11  	"github.com/ActiveState/cli/internal/locale"
    12  )
    13  
    14  type MoveAllFilesTestSuite struct {
    15  	suite.Suite
    16  
    17  	fromDir string
    18  	toDir   string
    19  }
    20  
    21  func (suite *MoveAllFilesTestSuite) BeforeTest(suiteName, testName string) {
    22  	var err error
    23  
    24  	suite.fromDir, err = os.MkdirTemp("", "mvallfiles-from")
    25  	suite.Require().NoError(err, "creating temp from-dir")
    26  
    27  	suite.toDir, err = os.MkdirTemp("", "mvallfiles-to")
    28  	suite.Require().NoError(err, "creating temp to-dir")
    29  }
    30  
    31  func (suite *MoveAllFilesTestSuite) AfterTest(suiteName, testName string) {
    32  	os.RemoveAll(suite.toDir)
    33  	os.RemoveAll(suite.fromDir)
    34  }
    35  
    36  func (suite *MoveAllFilesTestSuite) TestFromDir_IsNotDirectory() {
    37  	tmpFile, err := os.CreateTemp("", "mvallfiles-tmpfile")
    38  	suite.Require().NoError(err, "creating fake from-dir as a file")
    39  
    40  	err = fileutils.MoveAllFiles(tmpFile.Name(), suite.toDir)
    41  	suite.Require().NotNil(err, "moving files")
    42  	suite.Equal(locale.Tr("err_os_not_a_directory", tmpFile.Name()), err.Error())
    43  }
    44  
    45  func (suite *MoveAllFilesTestSuite) TestToDir_IsNotDirectory() {
    46  	tmpFile, err := os.CreateTemp("", "mvallfiles-tmpfile")
    47  	suite.Require().NoError(err, "creating fake from-dir as a file")
    48  
    49  	err = fileutils.MoveAllFiles(suite.fromDir, tmpFile.Name())
    50  	suite.Require().NotNil(err, "moving files")
    51  	suite.Equal(locale.Tr("err_os_not_a_directory", tmpFile.Name()), err.Error())
    52  }
    53  
    54  func (suite *MoveAllFilesTestSuite) addFileToFrom(relPath string) {
    55  	err := fileutils.Touch(path.Join(suite.fromDir, relPath))
    56  	suite.Require().Nil(err, "touching test file: %s", relPath)
    57  }
    58  
    59  func (suite *MoveAllFilesTestSuite) addDirToFrom(relPath string) {
    60  	err := fileutils.Mkdir(path.Join(suite.fromDir, relPath))
    61  	suite.Require().Nil(err, "creating test dir: %s", relPath)
    62  }
    63  
    64  func (suite *MoveAllFilesTestSuite) TestSuccess() {
    65  	suite.addFileToFrom("a")
    66  	suite.addDirToFrom("dir1")
    67  	suite.addFileToFrom("dir1/b")
    68  	suite.addDirToFrom("dir1/dir1.1")
    69  	suite.addFileToFrom("dir1/dir1.1/c")
    70  	suite.addDirToFrom("dir2")
    71  	suite.addFileToFrom("dir2/d")
    72  
    73  	suite.False(fileutils.FileExists(path.Join(suite.toDir, "a")))
    74  	suite.False(fileutils.FileExists(path.Join(suite.toDir, "dir1/b")))
    75  	suite.False(fileutils.FileExists(path.Join(suite.toDir, "dir1/dir1.1/c")))
    76  	suite.False(fileutils.FileExists(path.Join(suite.toDir, "dir2/d")))
    77  
    78  	suite.Require().Nil(fileutils.MoveAllFiles(suite.fromDir, suite.toDir))
    79  	suite.True(fileutils.FileExists(path.Join(suite.toDir, "a")))
    80  	suite.True(fileutils.FileExists(path.Join(suite.toDir, "dir1/b")))
    81  	suite.True(fileutils.FileExists(path.Join(suite.toDir, "dir1/dir1.1/c")))
    82  	suite.True(fileutils.FileExists(path.Join(suite.toDir, "dir2/d")))
    83  }
    84  
    85  func Test_MoveAllFilesTestSuite(t *testing.T) {
    86  	suite.Run(t, new(MoveAllFilesTestSuite))
    87  }