107 lines
1.9 KiB
Go
Executable File
107 lines
1.9 KiB
Go
Executable File
package rclone
|
|
|
|
import (
|
|
"bytes"
|
|
"io/ioutil"
|
|
"local/logb"
|
|
"local/sandbox/arlo-cleaner/config"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestCopyFrom(t *testing.T) {
|
|
logb.Set(logb.ERROR)
|
|
rc, def := makeRC()
|
|
defer def()
|
|
|
|
t.Log("making f")
|
|
f, err := ioutil.TempFile(os.TempDir(), "remote*")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
f.Write([]byte(`hello`))
|
|
f.Close()
|
|
defer os.Remove(f.Name())
|
|
|
|
t.Log("reading f")
|
|
b := bytes.NewBuffer(nil)
|
|
if err := rc.CopyFrom(b, "local:"+f.Name()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log("result")
|
|
if v := string(b.Bytes()); v != "hello" {
|
|
t.Fatal(v)
|
|
}
|
|
}
|
|
|
|
func TestCopyTo(t *testing.T) {
|
|
rc, def := makeRC()
|
|
defer def()
|
|
logb.Set(logb.VERBOSE)
|
|
|
|
t.Log("making f")
|
|
f, err := ioutil.TempFile(os.TempDir(), "remote*")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
f.Close()
|
|
defer os.Remove(f.Name())
|
|
|
|
t.Logf("writing %s", f.Name())
|
|
s := strings.NewReader("hello")
|
|
|
|
was := logb.Writer()
|
|
b := bytes.NewBuffer(nil)
|
|
logb.SetWriter(b)
|
|
if err := rc.CopyTo(s, "local:"+f.Name()); err != nil {
|
|
logb.SetWriter(was)
|
|
t.Fatal(err)
|
|
}
|
|
logb.SetWriter(was)
|
|
if !bytes.Contains(b.Bytes(), []byte("not re-uploading")) {
|
|
t.Fatalf("%q", string(b.Bytes()))
|
|
}
|
|
if err := os.Remove(f.Name()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if err := rc.CopyTo(s, "local:"+f.Name()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log("reading f from", f.Name())
|
|
if b, err := ioutil.ReadFile(f.Name()); err != nil {
|
|
t.Fatal(err)
|
|
} else if string(b) != "hello" {
|
|
t.Fatal(string(b))
|
|
}
|
|
}
|
|
|
|
func makeRC() (*RClone, func()) {
|
|
logb.Set(logb.ERROR)
|
|
f, err := ioutil.TempFile(os.TempDir(), "copy.config.*")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
f.Write([]byte(`
|
|
[local]
|
|
type = local
|
|
`))
|
|
f.Close()
|
|
os.Setenv("RCCONF", f.Name())
|
|
|
|
was := os.Args
|
|
os.Args = []string{"foo"}
|
|
config.Refresh()
|
|
rc, err := New()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return rc, func() {
|
|
os.Args = was
|
|
os.Remove(f.Name())
|
|
}
|
|
}
|