test(dump): don't depend on directory listing order
cmd/dump.go uses os.Readdir to list the directory.
This is fine on its own, but TestAddRecursiveExclude in cmd/dump_test.go
depends on the order of the directory listing, which is where the issue
lays.
Directory listings using os.Readdir (lstat) don't actually guarantee an
order. They can differ due to a number of factors. Most notably the OS,
file system and settings.
As such, the test should not check the /order of the files/ added to the
archive, but instead simply check whether the archive /contains/ them.
So this is precisely what this commit does.
Note that only TestAddRecursiveExclude/File_inside_directory/No_exclude
has been observed to fail due to this, but all TestAddRecursiveExclude
subtests have been updated for consistency.
(cherry picked from commit 230a677c74
)
This commit is contained in:
parent
2d42dbc495
commit
f01dc4b271
|
@ -50,7 +50,7 @@ func TestAddRecursiveExclude(t *testing.T) {
|
||||||
err = addRecursiveExclude(archiver, "", dir, nil, false)
|
err = addRecursiveExclude(archiver, "", dir, nil, false)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Len(t, archiver.addedFiles, 1)
|
assert.Len(t, archiver.addedFiles, 1)
|
||||||
assert.EqualValues(t, "example", archiver.addedFiles[0])
|
assert.Contains(t, archiver.addedFiles, "example")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("With exclude", func(t *testing.T) {
|
t.Run("With exclude", func(t *testing.T) {
|
||||||
|
@ -77,11 +77,11 @@ func TestAddRecursiveExclude(t *testing.T) {
|
||||||
err = addRecursiveExclude(archiver, "", dir, nil, false)
|
err = addRecursiveExclude(archiver, "", dir, nil, false)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Len(t, archiver.addedFiles, 5)
|
assert.Len(t, archiver.addedFiles, 5)
|
||||||
assert.EqualValues(t, "deep", archiver.addedFiles[0])
|
assert.Contains(t, archiver.addedFiles, "deep")
|
||||||
assert.EqualValues(t, "deep/nested", archiver.addedFiles[1])
|
assert.Contains(t, archiver.addedFiles, "deep/nested")
|
||||||
assert.EqualValues(t, "deep/nested/folder", archiver.addedFiles[2])
|
assert.Contains(t, archiver.addedFiles, "deep/nested/folder")
|
||||||
assert.EqualValues(t, "deep/nested/folder/example", archiver.addedFiles[3])
|
assert.Contains(t, archiver.addedFiles, "deep/nested/folder/example")
|
||||||
assert.EqualValues(t, "deep/nested/folder/another-file", archiver.addedFiles[4])
|
assert.Contains(t, archiver.addedFiles, "deep/nested/folder/another-file")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Exclude first directory", func(t *testing.T) {
|
t.Run("Exclude first directory", func(t *testing.T) {
|
||||||
|
@ -98,8 +98,8 @@ func TestAddRecursiveExclude(t *testing.T) {
|
||||||
err = addRecursiveExclude(archiver, "", dir, []string{dir + "/deep/nested/folder"}, false)
|
err = addRecursiveExclude(archiver, "", dir, []string{dir + "/deep/nested/folder"}, false)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Len(t, archiver.addedFiles, 2)
|
assert.Len(t, archiver.addedFiles, 2)
|
||||||
assert.EqualValues(t, "deep", archiver.addedFiles[0])
|
assert.Contains(t, archiver.addedFiles, "deep")
|
||||||
assert.EqualValues(t, "deep/nested", archiver.addedFiles[1])
|
assert.Contains(t, archiver.addedFiles, "deep/nested")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Exclude file", func(t *testing.T) {
|
t.Run("Exclude file", func(t *testing.T) {
|
||||||
|
@ -108,10 +108,10 @@ func TestAddRecursiveExclude(t *testing.T) {
|
||||||
err = addRecursiveExclude(archiver, "", dir, []string{dir + "/deep/nested/folder/example"}, false)
|
err = addRecursiveExclude(archiver, "", dir, []string{dir + "/deep/nested/folder/example"}, false)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Len(t, archiver.addedFiles, 4)
|
assert.Len(t, archiver.addedFiles, 4)
|
||||||
assert.EqualValues(t, "deep", archiver.addedFiles[0])
|
assert.Contains(t, archiver.addedFiles, "deep")
|
||||||
assert.EqualValues(t, "deep/nested", archiver.addedFiles[1])
|
assert.Contains(t, archiver.addedFiles, "deep/nested")
|
||||||
assert.EqualValues(t, "deep/nested/folder", archiver.addedFiles[2])
|
assert.Contains(t, archiver.addedFiles, "deep/nested/folder")
|
||||||
assert.EqualValues(t, "deep/nested/folder/another-file", archiver.addedFiles[3])
|
assert.Contains(t, archiver.addedFiles, "deep/nested/folder/another-file")
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue