(ctx context.Context, t *testing.T, r *fstest.Run, items []fstest.Item)
| 178 | } |
| 179 | |
| 180 | func compareNames(ctx context.Context, t *testing.T, r *fstest.Run, items []fstest.Item) { |
| 181 | var entries fs.DirEntries |
| 182 | |
| 183 | deleteDSStore(t, r) |
| 184 | err := walk.ListR(context.Background(), r.Fremote, "", true, -1, walk.ListObjects, func(e fs.DirEntries) error { |
| 185 | entries = append(entries, e...) |
| 186 | return nil |
| 187 | }) |
| 188 | assert.NoError(t, err) |
| 189 | entries = slices.DeleteFunc(entries, func(E fs.DirEntry) bool { // remove those pesky .DS_Store files |
| 190 | if strings.Contains(E.Remote(), ".DS_Store") { |
| 191 | err := operations.DeleteFile(context.Background(), E.(fs.Object)) |
| 192 | assert.NoError(t, err) |
| 193 | return true |
| 194 | } |
| 195 | return false |
| 196 | }) |
| 197 | require.Equal(t, len(items), entries.Len()) |
| 198 | |
| 199 | // sort by CONVERTED name |
| 200 | slices.SortStableFunc(items, func(a, b fstest.Item) int { |
| 201 | aConv := transform.Path(ctx, a.Path, false) |
| 202 | bConv := transform.Path(ctx, b.Path, false) |
| 203 | return cmp.Compare(aConv, bConv) |
| 204 | }) |
| 205 | slices.SortStableFunc(entries, func(a, b fs.DirEntry) int { |
| 206 | return cmp.Compare(a.Remote(), b.Remote()) |
| 207 | }) |
| 208 | |
| 209 | for i, e := range entries { |
| 210 | expect := transform.Path(ctx, items[i].Path, false) |
| 211 | msg := fmt.Sprintf("expected %v, got %v", detectEncoding(expect), detectEncoding(e.Remote())) |
| 212 | assert.Equal(t, expect, e.Remote(), msg) |
| 213 | } |
| 214 | } |
| 215 | |
| 216 | func detectEncoding(s string) string { |
| 217 | if norm.NFC.IsNormalString(s) && norm.NFD.IsNormalString(s) { |
no test coverage detected
searching dependent graphs…