mirror of
https://github.com/schollz/croc.git
synced 2025-10-11 13:21:00 +02:00
#463 fixed croc tests for empty folders, and to work in Windows
This commit is contained in:
parent
f78ee15605
commit
b316c0159f
1 changed files with 107 additions and 10 deletions
|
@ -4,6 +4,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
@ -65,11 +66,76 @@ func TestCrocReadme(t *testing.T) {
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(2)
|
wg.Add(2)
|
||||||
go func() {
|
go func() {
|
||||||
filesInfo, errGet := GetFilesInfo([]string{"../../README.md"})
|
filesInfo, emptyFolders, totalNumberFolders, errGet := GetFilesInfo([]string{"../../README.md"})
|
||||||
if errGet != nil {
|
if errGet != nil {
|
||||||
t.Errorf("failed to get minimal info: %v", errGet)
|
t.Errorf("failed to get minimal info: %v", errGet)
|
||||||
}
|
}
|
||||||
err := sender.Send(filesInfo)
|
err := sender.Send(filesInfo, emptyFolders, totalNumberFolders)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("send failed: %v", err)
|
||||||
|
}
|
||||||
|
wg.Done()
|
||||||
|
}()
|
||||||
|
time.Sleep(100 * time.Millisecond)
|
||||||
|
go func() {
|
||||||
|
err := receiver.Receive()
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("receive failed: %v", err)
|
||||||
|
}
|
||||||
|
wg.Done()
|
||||||
|
}()
|
||||||
|
|
||||||
|
wg.Wait()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCrocEmptyFolder(t *testing.T) {
|
||||||
|
pathName := "../../testEmpty"
|
||||||
|
defer os.RemoveAll(pathName)
|
||||||
|
os.MkdirAll(pathName, 0755)
|
||||||
|
|
||||||
|
log.Debug("setting up sender")
|
||||||
|
sender, err := New(Options{
|
||||||
|
IsSender: true,
|
||||||
|
SharedSecret: "8123-testingthecroc",
|
||||||
|
Debug: true,
|
||||||
|
RelayAddress: "localhost:8281",
|
||||||
|
RelayPorts: []string{"8281"},
|
||||||
|
RelayPassword: "pass123",
|
||||||
|
Stdout: false,
|
||||||
|
NoPrompt: true,
|
||||||
|
DisableLocal: true,
|
||||||
|
Curve: "siec",
|
||||||
|
Overwrite: true,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Debug("setting up receiver")
|
||||||
|
receiver, err := New(Options{
|
||||||
|
IsSender: false,
|
||||||
|
SharedSecret: "8123-testingthecroc",
|
||||||
|
Debug: true,
|
||||||
|
RelayAddress: "localhost:8281",
|
||||||
|
RelayPassword: "pass123",
|
||||||
|
Stdout: false,
|
||||||
|
NoPrompt: true,
|
||||||
|
DisableLocal: true,
|
||||||
|
Curve: "siec",
|
||||||
|
Overwrite: true,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
wg.Add(2)
|
||||||
|
go func() {
|
||||||
|
filesInfo, emptyFolders, totalNumberFolders, errGet := GetFilesInfo([]string{pathName})
|
||||||
|
if errGet != nil {
|
||||||
|
t.Errorf("failed to get minimal info: %v", errGet)
|
||||||
|
}
|
||||||
|
err := sender.Send(filesInfo, emptyFolders, totalNumberFolders)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("send failed: %v", err)
|
t.Errorf("send failed: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -131,11 +197,11 @@ func TestCrocSymlink(t *testing.T) {
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(2)
|
wg.Add(2)
|
||||||
go func() {
|
go func() {
|
||||||
filesInfo, errGet := GetFilesInfo([]string{pathName})
|
filesInfo, emptyFolders, totalNumberFolders, errGet := GetFilesInfo([]string{pathName})
|
||||||
if errGet != nil {
|
if errGet != nil {
|
||||||
t.Errorf("failed to get minimal info: %v", errGet)
|
t.Errorf("failed to get minimal info: %v", errGet)
|
||||||
}
|
}
|
||||||
err := sender.Send(filesInfo)
|
err := sender.Send(filesInfo, emptyFolders, totalNumberFolders)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("send failed: %v", err)
|
t.Errorf("send failed: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -153,7 +219,8 @@ func TestCrocSymlink(t *testing.T) {
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|
||||||
s, err := filepath.EvalSymlinks(path.Join(pathName, "README.link"))
|
s, err := filepath.EvalSymlinks(path.Join(pathName, "README.link"))
|
||||||
if s != "../../README.md" {
|
if s != "../../README.md" && s != "..\\..\\README.md" {
|
||||||
|
log.Debug(s)
|
||||||
t.Errorf("symlink failed to transfer in folder")
|
t.Errorf("symlink failed to transfer in folder")
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -207,11 +274,11 @@ func TestCrocLocal(t *testing.T) {
|
||||||
os.Create("touched")
|
os.Create("touched")
|
||||||
wg.Add(2)
|
wg.Add(2)
|
||||||
go func() {
|
go func() {
|
||||||
filesInfo, errGet := GetFilesInfo([]string{"../../LICENSE", "touched"})
|
filesInfo, emptyFolders, totalNumberFolders, errGet := GetFilesInfo([]string{"../../LICENSE", "touched"})
|
||||||
if errGet != nil {
|
if errGet != nil {
|
||||||
t.Errorf("failed to get minimal info: %v", errGet)
|
t.Errorf("failed to get minimal info: %v", errGet)
|
||||||
}
|
}
|
||||||
err := sender.Send(filesInfo)
|
err := sender.Send(filesInfo, emptyFolders, totalNumberFolders)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("send failed: %v", err)
|
t.Errorf("send failed: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -260,12 +327,42 @@ func TestCrocError(t *testing.T) {
|
||||||
Curve: "siec",
|
Curve: "siec",
|
||||||
Overwrite: true,
|
Overwrite: true,
|
||||||
})
|
})
|
||||||
filesInfo, errGet := GetFilesInfo([]string{tmpfile.Name()})
|
filesInfo, emptyFolders, totalNumberFolders, errGet := GetFilesInfo([]string{tmpfile.Name()})
|
||||||
if errGet != nil {
|
if errGet != nil {
|
||||||
t.Errorf("failed to get minimal info: %v", errGet)
|
t.Errorf("failed to get minimal info: %v", errGet)
|
||||||
}
|
}
|
||||||
err = sender.Send(filesInfo)
|
err = sender.Send(filesInfo, emptyFolders, totalNumberFolders)
|
||||||
log.Debug(err)
|
log.Debug(err)
|
||||||
assert.NotNil(t, err)
|
assert.NotNil(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCleanUp(t *testing.T) {
|
||||||
|
// windows allows files to be deleted only if they
|
||||||
|
// are not open by another program so the remove actions
|
||||||
|
// from the above tests will not always do a good clean up
|
||||||
|
// This "test" will make sure
|
||||||
|
operatingSystem := runtime.GOOS
|
||||||
|
log.Debugf("The operating system is %s", operatingSystem)
|
||||||
|
if operatingSystem == "windows" {
|
||||||
|
time.Sleep(1 * time.Second)
|
||||||
|
log.Debug("Full cleanup")
|
||||||
|
var err error
|
||||||
|
|
||||||
|
for _, file := range []string{"README.md", "./README.md"} {
|
||||||
|
err = os.Remove(file)
|
||||||
|
if err == nil {
|
||||||
|
log.Debugf("Successfuly purged %s", file)
|
||||||
|
} else {
|
||||||
|
log.Debug("%s was already purged.", file)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, folder := range []string{"./testEmpty", "./link-in-folder"} {
|
||||||
|
err = os.RemoveAll(folder)
|
||||||
|
if err == nil {
|
||||||
|
log.Debugf("Successfuly purged %s", folder)
|
||||||
|
} else {
|
||||||
|
log.Debug("%s was already purged.", folder)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue