113 lines
2.3 KiB
Go
113 lines
2.3 KiB
Go
|
package plan_test
|
||
|
|
||
|
import (
|
||
|
"io/ioutil"
|
||
|
"os"
|
||
|
"path/filepath"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
|
||
|
"github.com/mattermost/mattermost-plugin-starter-template/build/sync/plan"
|
||
|
)
|
||
|
|
||
|
func TestCopyDirectory(t *testing.T) {
|
||
|
assert := assert.New(t)
|
||
|
|
||
|
// Create a temporary directory to copy to.
|
||
|
dir, err := ioutil.TempDir("", "test")
|
||
|
assert.Nil(err)
|
||
|
defer os.RemoveAll(dir)
|
||
|
|
||
|
wd, err := os.Getwd()
|
||
|
assert.Nil(err)
|
||
|
|
||
|
srcDir := filepath.Join(wd, "testdata")
|
||
|
err = plan.CopyDirectory(srcDir, dir)
|
||
|
assert.Nil(err)
|
||
|
|
||
|
compareDirectories(t, dir, srcDir)
|
||
|
}
|
||
|
|
||
|
func TestOverwriteFileAction(t *testing.T) {
|
||
|
assert := assert.New(t)
|
||
|
|
||
|
// Create a temporary directory to copy to.
|
||
|
dir, err := ioutil.TempDir("", "test")
|
||
|
assert.Nil(err)
|
||
|
defer os.RemoveAll(dir)
|
||
|
|
||
|
wd, err := os.Getwd()
|
||
|
assert.Nil(err)
|
||
|
|
||
|
setup := plan.Setup{
|
||
|
Source: plan.RepoSetup{
|
||
|
Git: nil,
|
||
|
Path: filepath.Join(wd, "testdata", "b"),
|
||
|
},
|
||
|
Target: plan.RepoSetup{
|
||
|
Git: nil,
|
||
|
Path: dir,
|
||
|
},
|
||
|
}
|
||
|
action := plan.OverwriteFileAction{}
|
||
|
action.Params.Create = true
|
||
|
err = action.Run("c", setup)
|
||
|
assert.Nil(err)
|
||
|
|
||
|
compareDirectories(t, dir, filepath.Join(wd, "testdata", "b"))
|
||
|
}
|
||
|
|
||
|
func TestOverwriteDirectoryAction(t *testing.T) {
|
||
|
assert := assert.New(t)
|
||
|
|
||
|
// Create a temporary directory to copy to.
|
||
|
dir, err := ioutil.TempDir("", "test")
|
||
|
assert.Nil(err)
|
||
|
defer os.RemoveAll(dir)
|
||
|
|
||
|
wd, err := os.Getwd()
|
||
|
assert.Nil(err)
|
||
|
|
||
|
setup := plan.Setup{
|
||
|
Source: plan.RepoSetup{
|
||
|
Git: nil,
|
||
|
Path: wd,
|
||
|
},
|
||
|
Target: plan.RepoSetup{
|
||
|
Git: nil,
|
||
|
Path: dir,
|
||
|
},
|
||
|
}
|
||
|
action := plan.OverwriteDirectoryAction{}
|
||
|
action.Params.Create = true
|
||
|
err = action.Run("testdata", setup)
|
||
|
assert.Nil(err)
|
||
|
|
||
|
destDir := filepath.Join(dir, "testdata")
|
||
|
srcDir := filepath.Join(wd, "testdata")
|
||
|
compareDirectories(t, destDir, srcDir)
|
||
|
}
|
||
|
|
||
|
func compareDirectories(t *testing.T, pathA, pathB string) {
|
||
|
assert := assert.New(t)
|
||
|
t.Helper()
|
||
|
|
||
|
aContents, err := ioutil.ReadDir(pathA)
|
||
|
assert.Nil(err)
|
||
|
bContents, err := ioutil.ReadDir(pathB)
|
||
|
assert.Nil(err)
|
||
|
assert.Len(aContents, len(bContents))
|
||
|
|
||
|
// Check the directory contents are equal.
|
||
|
for i, aFInfo := range aContents {
|
||
|
bFInfo := bContents[i]
|
||
|
assert.Equal(aFInfo.Name(), bFInfo.Name())
|
||
|
assert.Equal(aFInfo.Mode(), bFInfo.Mode())
|
||
|
assert.Equal(aFInfo.IsDir(), bFInfo.IsDir())
|
||
|
if !aFInfo.IsDir() {
|
||
|
assert.Equal(aFInfo.Size(), bFInfo.Size())
|
||
|
}
|
||
|
}
|
||
|
}
|