lib/model: Improve filesystem operations during tests (fixes #5422)
* lib/fs, lib/model: Improve filesystem operations during tests (fixes #5422) Introduces MustFilesystem that panics on errors and should be used for operations during testing which must never fail. Create temporary directories outside of testdata. * don't do a filesystem, just a wrapper around os for testing * fix copyright
This commit is contained in:
committed by
Audrius Butkevicius
parent
24ffd8be99
commit
0b03b6a9ec
@@ -22,29 +22,19 @@ import (
|
||||
)
|
||||
|
||||
func TestRecvOnlyRevertDeletes(t *testing.T) {
|
||||
testOs := &fatalOs{t}
|
||||
|
||||
// Make sure that we delete extraneous files and directories when we hit
|
||||
// Revert.
|
||||
|
||||
if err := os.RemoveAll("_recvonly"); err != nil && !os.IsNotExist(err) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer func() {
|
||||
if err := os.RemoveAll("_recvonly"); err != nil && !os.IsNotExist(err) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}()
|
||||
testOs.RemoveAll("_recvonly")
|
||||
defer testOs.RemoveAll("_recvonly")
|
||||
|
||||
// Create some test data
|
||||
|
||||
if err := os.MkdirAll("_recvonly/.stfolder", 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.MkdirAll("_recvonly/ignDir", 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.MkdirAll("_recvonly/unknownDir", 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
testOs.MkdirAll("_recvonly/.stfolder", 0755)
|
||||
testOs.MkdirAll("_recvonly/ignDir", 0755)
|
||||
testOs.MkdirAll("_recvonly/unknownDir", 0755)
|
||||
if err := ioutil.WriteFile("_recvonly/ignDir/ignFile", []byte("hello\n"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -125,23 +115,17 @@ func TestRecvOnlyRevertDeletes(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestRecvOnlyRevertNeeds(t *testing.T) {
|
||||
testOs := &fatalOs{t}
|
||||
|
||||
// Make sure that a new file gets picked up and considered latest, then
|
||||
// gets considered old when we hit Revert.
|
||||
|
||||
if err := os.RemoveAll("_recvonly"); err != nil && !os.IsNotExist(err) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer func() {
|
||||
if err := os.RemoveAll("_recvonly"); err != nil && !os.IsNotExist(err) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}()
|
||||
testOs.RemoveAll("_recvonly")
|
||||
defer testOs.RemoveAll("_recvonly")
|
||||
|
||||
// Create some test data
|
||||
|
||||
if err := os.MkdirAll("_recvonly/.stfolder", 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
testOs.MkdirAll("_recvonly/.stfolder", 0755)
|
||||
oldData := []byte("hello\n")
|
||||
knownFiles := setupKnownFiles(t, oldData)
|
||||
|
||||
@@ -231,20 +215,14 @@ func TestRecvOnlyRevertNeeds(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestRecvOnlyUndoChanges(t *testing.T) {
|
||||
if err := os.RemoveAll("_recvonly"); err != nil && !os.IsNotExist(err) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer func() {
|
||||
if err := os.RemoveAll("_recvonly"); err != nil && !os.IsNotExist(err) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}()
|
||||
testOs := &fatalOs{t}
|
||||
|
||||
testOs.RemoveAll("_recvonly")
|
||||
defer testOs.RemoveAll("_recvonly")
|
||||
|
||||
// Create some test data
|
||||
|
||||
if err := os.MkdirAll("_recvonly/.stfolder", 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
testOs.MkdirAll("_recvonly/.stfolder", 0755)
|
||||
oldData := []byte("hello\n")
|
||||
knownFiles := setupKnownFiles(t, oldData)
|
||||
|
||||
@@ -307,9 +285,7 @@ func TestRecvOnlyUndoChanges(t *testing.T) {
|
||||
|
||||
// Remove the file again and undo the modification
|
||||
|
||||
if err := os.Remove(file); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
testOs.Remove(file)
|
||||
if err := ioutil.WriteFile("_recvonly/knownDir/knownFile", oldData, 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -324,22 +300,17 @@ func TestRecvOnlyUndoChanges(t *testing.T) {
|
||||
}
|
||||
|
||||
func setupKnownFiles(t *testing.T, data []byte) []protocol.FileInfo {
|
||||
if err := os.MkdirAll("_recvonly/knownDir", 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
testOs := &fatalOs{t}
|
||||
|
||||
testOs.MkdirAll("_recvonly/knownDir", 0755)
|
||||
if err := ioutil.WriteFile("_recvonly/knownDir/knownFile", data, 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
t0 := time.Now().Add(-1 * time.Minute)
|
||||
if err := os.Chtimes("_recvonly/knownDir/knownFile", t0, t0); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
testOs.Chtimes("_recvonly/knownDir/knownFile", t0, t0)
|
||||
|
||||
fi, err := os.Stat("_recvonly/knownDir/knownFile")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
fi, _ := testOs.Stat("_recvonly/knownDir/knownFile")
|
||||
blocks, _ := scanner.Blocks(context.TODO(), bytes.NewReader(data), protocol.BlockSize(int64(len(data))), int64(len(data)), nil, true)
|
||||
knownFiles := []protocol.FileInfo{
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user