MM-21722 - Repository synchronization tool (#86)
This commit is contained in:
parent
4e7a2d3734
commit
0688e8df4c
18 changed files with 1589 additions and 0 deletions
107
build/sync/plan/actions_test.go
Normal file
107
build/sync/plan/actions_test.go
Normal file
|
@ -0,0 +1,107 @@
|
|||
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(assert, 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(assert, 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(assert, destDir, srcDir)
|
||||
}
|
||||
|
||||
func compareDirectories(assert *assert.Assertions, pathA, pathB string) {
|
||||
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.Size(), bFInfo.Size())
|
||||
assert.Equal(aFInfo.Mode(), bFInfo.Mode())
|
||||
assert.Equal(aFInfo.IsDir(), bFInfo.IsDir())
|
||||
}
|
||||
}
|
Reference in a new issue