summaryrefslogtreecommitdiffstats
path: root/utils/file_test.go
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-11-13 14:46:29 -0500
committerChristopher Speller <crspeller@gmail.com>2017-11-13 11:46:29 -0800
commit79726b5d8e6ebc13d61e083a4f598d9356328e5e (patch)
treeadabe77494e2cf30c8dc7eaf330aa10f8641d49c /utils/file_test.go
parent120fbed0f7715506cee8d2ba90f445eefcb072d7 (diff)
downloadchat-79726b5d8e6ebc13d61e083a4f598d9356328e5e.tar.gz
chat-79726b5d8e6ebc13d61e083a4f598d9356328e5e.tar.bz2
chat-79726b5d8e6ebc13d61e083a4f598d9356328e5e.zip
Replace os.Rename with directory copy util in plugin extraction (#7825)
Diffstat (limited to 'utils/file_test.go')
-rw-r--r--utils/file_test.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/utils/file_test.go b/utils/file_test.go
index 5c7162450..91e78f24e 100644
--- a/utils/file_test.go
+++ b/utils/file_test.go
@@ -5,9 +5,13 @@ package utils
import (
"fmt"
+ "io/ioutil"
"os"
+ "path/filepath"
"testing"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
"github.com/mattermost/mattermost-server/model"
@@ -180,3 +184,53 @@ func (s *FileTestSuite) TestRemoveDirectory() {
_, err = ReadFile("tests2/asdf")
s.Error(err)
}
+
+func TestCopyDir(t *testing.T) {
+ srcDir, err := ioutil.TempDir("", "src")
+ require.NoError(t, err)
+ defer os.RemoveAll(srcDir)
+
+ dstParentDir, err := ioutil.TempDir("", "dstparent")
+ require.NoError(t, err)
+ defer os.RemoveAll(dstParentDir)
+
+ dstDir := filepath.Join(dstParentDir, "dst")
+
+ tempFile := "temp.txt"
+ err = ioutil.WriteFile(filepath.Join(srcDir, tempFile), []byte("test file"), 0655)
+ require.NoError(t, err)
+
+ childDir := "child"
+ err = os.Mkdir(filepath.Join(srcDir, childDir), 0777)
+ require.NoError(t, err)
+
+ childTempFile := "childtemp.txt"
+ err = ioutil.WriteFile(filepath.Join(srcDir, childDir, childTempFile), []byte("test file"), 0755)
+ require.NoError(t, err)
+
+ err = CopyDir(srcDir, dstDir)
+ assert.NoError(t, err)
+
+ stat, err := os.Stat(filepath.Join(dstDir, tempFile))
+ assert.NoError(t, err)
+ assert.Equal(t, uint32(0655), uint32(stat.Mode()))
+ assert.False(t, stat.IsDir())
+ data, err := ioutil.ReadFile(filepath.Join(dstDir, tempFile))
+ assert.NoError(t, err)
+ assert.Equal(t, "test file", string(data))
+
+ stat, err = os.Stat(filepath.Join(dstDir, childDir))
+ assert.NoError(t, err)
+ assert.True(t, stat.IsDir())
+
+ stat, err = os.Stat(filepath.Join(dstDir, childDir, childTempFile))
+ assert.NoError(t, err)
+ assert.Equal(t, uint32(0755), uint32(stat.Mode()))
+ assert.False(t, stat.IsDir())
+ data, err = ioutil.ReadFile(filepath.Join(dstDir, childDir, childTempFile))
+ assert.NoError(t, err)
+ assert.Equal(t, "test file", string(data))
+
+ err = CopyDir(srcDir, dstDir)
+ assert.Error(t, err)
+}