Skip to content
This repository has been archived by the owner on Mar 30, 2022. It is now read-only.

Commit

Permalink
Add test cases for SendDir with AcceptFunc
Browse files Browse the repository at this point in the history
    --- PASS: TestSendDir/send_only_files_case_#1 (0.20s)
    --- FAIL: TestSendDir/send_only_files_case_#2 (0.15s)
        source_test.go:443: unmatch entry count. got:2, want:0
  • Loading branch information
hnakamur committed Feb 28, 2017
1 parent 196fb15 commit 7e30af2
Showing 1 changed file with 88 additions and 0 deletions.
88 changes: 88 additions & 0 deletions source_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,94 @@ func TestSendDir(t *testing.T) {
remoteDestDir := filepath.Join(remoteDir, localDirBase)
sameDirTreeContent(t, localDir, remoteDestDir)
})

t.Run("send only files case #1", func(t *testing.T) {
localDir, err := ioutil.TempDir("", "go-scp-TestSendDir-local")
if err != nil {
t.Fatalf("fail to get tempdir; %s", err)
}
defer os.RemoveAll(localDir)

remoteDir, err := ioutil.TempDir("", "go-scp-TestSendDir-remote")
if err != nil {
t.Fatalf("fail to get tempdir; %s", err)
}
defer os.RemoveAll(remoteDir)

entries := []fileInfo{
{name: "01_file", maxSize: testMaxFileSize, mode: 0644},
{name: "02_file", maxSize: testMaxFileSize, mode: 0600},
{name: "03_dir", isDir: true, mode: 0755,
entries: []fileInfo{
{name: "01_file", maxSize: testMaxFileSize, mode: 0600},
{name: "02_file", maxSize: testMaxFileSize, mode: 0600},
},
},
}
err = generateRandomFiles(localDir, entries)
if err != nil {
t.Fatalf("fail to generate local files; %s", err)
}

err = scp.NewSCP(c).SendDir(localDir, remoteDir, func(parentDir string, info os.FileInfo) (bool, error) {
current := filepath.Join(parentDir, info.Name())
return localDir == current || (localDir == parentDir && !info.IsDir()), nil
})
if err != nil {
t.Errorf("fail to SendDir; %s", err)
}
localDirBase := filepath.Base(localDir)
remoteDestDir := filepath.Join(remoteDir, localDirBase)
err = os.RemoveAll(filepath.Join(localDir, "03_dir"))
if err != nil {
t.Errorf("fail to remove directory; %s", err)
}
sameDirTreeContent(t, localDir, remoteDestDir)
})

t.Run("send only files case #2", func(t *testing.T) {
localDir, err := ioutil.TempDir("", "go-scp-TestSendDir-local")
if err != nil {
t.Fatalf("fail to get tempdir; %s", err)
}
defer os.RemoveAll(localDir)

remoteDir, err := ioutil.TempDir("", "go-scp-TestSendDir-remote")
if err != nil {
t.Fatalf("fail to get tempdir; %s", err)
}
defer os.RemoveAll(remoteDir)

entries := []fileInfo{
{name: "01_dir", isDir: true, mode: 0755,
entries: []fileInfo{
{name: "01_file", maxSize: testMaxFileSize, mode: 0600},
{name: "02_file", maxSize: testMaxFileSize, mode: 0600},
},
},
{name: "02_file", maxSize: testMaxFileSize, mode: 0644},
{name: "03_file", maxSize: testMaxFileSize, mode: 0600},
}
err = generateRandomFiles(localDir, entries)
if err != nil {
t.Fatalf("fail to generate local files; %s", err)
}

err = scp.NewSCP(c).SendDir(localDir, remoteDir, func(parentDir string, info os.FileInfo) (bool, error) {
current := filepath.Join(parentDir, info.Name())
return localDir == current || (localDir == parentDir && !info.IsDir()), nil
})
if err != nil {
t.Errorf("fail to SendDir; %s", err)
}
localDirBase := filepath.Base(localDir)
remoteDestDir := filepath.Join(remoteDir, localDirBase)
err = os.RemoveAll(filepath.Join(localDir, "01_dir"))
if err != nil {
t.Errorf("fail to remove directory; %s", err)
}
sameDirTreeContent(t, localDir, remoteDestDir)
})
}

var (
Expand Down

0 comments on commit 7e30af2

Please sign in to comment.