Add tests to cover #1854
These tests show issues when with foo/repo and foo-bar/repo are compared, because - is below / in the ascii table and affects path based sorting. Signed-off-by: James Hewitt <james.hewitt@uk.ibm.com>
This commit is contained in:
parent
409c92229c
commit
09fbf5d9ea
1 changed files with 75 additions and 20 deletions
|
@ -524,6 +524,8 @@ func TestWalk(t *testing.T) {
|
||||||
|
|
||||||
fileset := []string{
|
fileset := []string{
|
||||||
"/file1",
|
"/file1",
|
||||||
|
"/folder1-suffix",
|
||||||
|
"/folder1-suffix/file1",
|
||||||
"/folder1/file1",
|
"/folder1/file1",
|
||||||
"/folder2/file1",
|
"/folder2/file1",
|
||||||
"/folder3/subfolder1/subfolder1/file1",
|
"/folder3/subfolder1/subfolder1/file1",
|
||||||
|
@ -557,6 +559,8 @@ func TestWalk(t *testing.T) {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
noopFn := func(fileInfo storagedriver.FileInfo) error { return nil }
|
||||||
|
|
||||||
tcs := []struct {
|
tcs := []struct {
|
||||||
name string
|
name string
|
||||||
fn storagedriver.WalkFn
|
fn storagedriver.WalkFn
|
||||||
|
@ -567,9 +571,11 @@ func TestWalk(t *testing.T) {
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "walk all",
|
name: "walk all",
|
||||||
fn: func(fileInfo storagedriver.FileInfo) error { return nil },
|
fn: noopFn,
|
||||||
expected: []string{
|
expected: []string{
|
||||||
"/file1",
|
"/file1",
|
||||||
|
"/folder1-suffix",
|
||||||
|
"/folder1-suffix/file1",
|
||||||
"/folder1",
|
"/folder1",
|
||||||
"/folder1/file1",
|
"/folder1/file1",
|
||||||
"/folder2",
|
"/folder2",
|
||||||
|
@ -598,6 +604,8 @@ func TestWalk(t *testing.T) {
|
||||||
},
|
},
|
||||||
expected: []string{
|
expected: []string{
|
||||||
"/file1",
|
"/file1",
|
||||||
|
"/folder1-suffix",
|
||||||
|
"/folder1-suffix/file1",
|
||||||
"/folder1",
|
"/folder1",
|
||||||
"/folder1/file1",
|
"/folder1/file1",
|
||||||
"/folder2",
|
"/folder2",
|
||||||
|
@ -608,25 +616,9 @@ func TestWalk(t *testing.T) {
|
||||||
"/folder4/file1",
|
"/folder4/file1",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "stop early",
|
|
||||||
fn: func(fileInfo storagedriver.FileInfo) error {
|
|
||||||
if fileInfo.Path() == "/folder1/file1" {
|
|
||||||
return storagedriver.ErrFilledBuffer
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
expected: []string{
|
|
||||||
"/file1",
|
|
||||||
"/folder1",
|
|
||||||
"/folder1/file1",
|
|
||||||
// stop early
|
|
||||||
},
|
|
||||||
err: false,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "start late without from",
|
name: "start late without from",
|
||||||
fn: func(fileInfo storagedriver.FileInfo) error { return nil },
|
fn: noopFn,
|
||||||
options: []func(*storagedriver.WalkOptions){
|
options: []func(*storagedriver.WalkOptions){
|
||||||
storagedriver.WithStartAfterHint("/folder3/subfolder1/subfolder1/file1"),
|
storagedriver.WithStartAfterHint("/folder3/subfolder1/subfolder1/file1"),
|
||||||
},
|
},
|
||||||
|
@ -643,7 +635,7 @@ func TestWalk(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "start late with from",
|
name: "start late with from",
|
||||||
fn: func(fileInfo storagedriver.FileInfo) error { return nil },
|
fn: noopFn,
|
||||||
from: "/folder3",
|
from: "/folder3",
|
||||||
options: []func(*storagedriver.WalkOptions){
|
options: []func(*storagedriver.WalkOptions){
|
||||||
storagedriver.WithStartAfterHint("/folder3/subfolder1/subfolder1/file1"),
|
storagedriver.WithStartAfterHint("/folder3/subfolder1/subfolder1/file1"),
|
||||||
|
@ -656,6 +648,69 @@ func TestWalk(t *testing.T) {
|
||||||
},
|
},
|
||||||
err: false,
|
err: false,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "start after from",
|
||||||
|
fn: noopFn,
|
||||||
|
from: "/folder1",
|
||||||
|
options: []func(*storagedriver.WalkOptions){
|
||||||
|
storagedriver.WithStartAfterHint("/folder1-suffix"),
|
||||||
|
},
|
||||||
|
expected: []string{},
|
||||||
|
err: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "start matches from",
|
||||||
|
fn: noopFn,
|
||||||
|
from: "/folder3",
|
||||||
|
options: []func(*storagedriver.WalkOptions){
|
||||||
|
storagedriver.WithStartAfterHint("/folder3"),
|
||||||
|
},
|
||||||
|
expected: []string{
|
||||||
|
"/folder3/subfolder1",
|
||||||
|
"/folder3/subfolder1/subfolder1",
|
||||||
|
"/folder3/subfolder1/subfolder1/file1",
|
||||||
|
"/folder3/subfolder2",
|
||||||
|
"/folder3/subfolder2/subfolder1",
|
||||||
|
"/folder3/subfolder2/subfolder1/file1",
|
||||||
|
},
|
||||||
|
err: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "start doesn't exist",
|
||||||
|
fn: noopFn,
|
||||||
|
from: "/folder3",
|
||||||
|
options: []func(*storagedriver.WalkOptions){
|
||||||
|
storagedriver.WithStartAfterHint("/folder3/notafolder/notafile"),
|
||||||
|
},
|
||||||
|
expected: []string{
|
||||||
|
"/folder3/subfolder1",
|
||||||
|
"/folder3/subfolder1/subfolder1",
|
||||||
|
"/folder3/subfolder1/subfolder1/file1",
|
||||||
|
"/folder3/subfolder2",
|
||||||
|
"/folder3/subfolder2/subfolder1",
|
||||||
|
"/folder3/subfolder2/subfolder1/file1",
|
||||||
|
},
|
||||||
|
err: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "stop early",
|
||||||
|
fn: func(fileInfo storagedriver.FileInfo) error {
|
||||||
|
if fileInfo.Path() == "/folder1/file1" {
|
||||||
|
return storagedriver.ErrFilledBuffer
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
expected: []string{
|
||||||
|
"/file1",
|
||||||
|
"/folder1-suffix",
|
||||||
|
"/folder1-suffix/file1",
|
||||||
|
"/folder1",
|
||||||
|
"/folder1/file1",
|
||||||
|
// stop early
|
||||||
|
},
|
||||||
|
err: false,
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
name: "error",
|
name: "error",
|
||||||
fn: func(fileInfo storagedriver.FileInfo) error {
|
fn: func(fileInfo storagedriver.FileInfo) error {
|
||||||
|
@ -668,7 +723,7 @@ func TestWalk(t *testing.T) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "from folder",
|
name: "from folder",
|
||||||
fn: func(fileInfo storagedriver.FileInfo) error { return nil },
|
fn: noopFn,
|
||||||
expected: []string{
|
expected: []string{
|
||||||
"/folder1/file1",
|
"/folder1/file1",
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue