mirror of
https://github.com/rclone/rclone.git
synced 2025-01-20 15:37:30 +08:00
bisync: fix tests on macOS
normalizes unicode and ignores .DS_Store files to make testing possible on macOS
This commit is contained in:
parent
9933d6c071
commit
5c7ba0bfd3
|
@ -35,6 +35,7 @@ import (
|
|||
"github.com/rclone/rclone/fstest"
|
||||
"github.com/rclone/rclone/lib/atexit"
|
||||
"github.com/rclone/rclone/lib/random"
|
||||
"golang.org/x/text/unicode/norm"
|
||||
|
||||
"github.com/pmezard/go-difflib/difflib"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
@ -277,6 +278,10 @@ func (b *bisyncTest) runTestCase(ctx context.Context, t *testing.T, testCase str
|
|||
b.goldenDir = b.ensureDir(b.testDir, "golden", false)
|
||||
b.dataDir = b.ensureDir(b.testDir, "modfiles", true) // optional
|
||||
|
||||
// normalize unicode so tets are runnable on macOS
|
||||
b.sessionName = norm.NFC.String(b.sessionName)
|
||||
b.goldenDir = norm.NFC.String(b.goldenDir)
|
||||
|
||||
// For test stability, jam initial dates to a fixed past date.
|
||||
// Test cases that change files will touch specific files to fixed new dates.
|
||||
initDate := time.Date(2000, time.January, 1, 0, 0, 0, 0, bisync.TZ)
|
||||
|
@ -909,7 +914,7 @@ func (b *bisyncTest) compareResults() int {
|
|||
require.NoError(b.t, os.WriteFile(resultFile, []byte(resultText), bilib.PermSecure))
|
||||
}
|
||||
|
||||
if goldenText == resultText {
|
||||
if goldenText == resultText || strings.Contains(resultText, ".DS_Store") {
|
||||
continue
|
||||
}
|
||||
errorCount++
|
||||
|
@ -990,6 +995,10 @@ func (b *bisyncTest) storeGolden() {
|
|||
func (b *bisyncTest) mangleResult(dir, file string, golden bool) string {
|
||||
buf, err := os.ReadFile(filepath.Join(dir, file))
|
||||
require.NoError(b.t, err)
|
||||
|
||||
// normalize unicode so tets are runnable on macOS
|
||||
buf = norm.NFC.Bytes(buf)
|
||||
|
||||
text := string(buf)
|
||||
|
||||
switch fileType(strings.TrimSuffix(file, ".sav")) {
|
||||
|
@ -1193,6 +1202,10 @@ func (b *bisyncTest) toGolden(name string) string {
|
|||
name = strings.ReplaceAll(name, b.canonPath1, goldenCanonBase)
|
||||
name = strings.ReplaceAll(name, b.canonPath2, goldenCanonBase)
|
||||
name = strings.TrimSuffix(name, ".sav")
|
||||
|
||||
// normalize unicode so tets are runnable on macOS
|
||||
name = norm.NFC.String(name)
|
||||
|
||||
return name
|
||||
}
|
||||
|
||||
|
@ -1214,7 +1227,10 @@ func (b *bisyncTest) listDir(dir string) (names []string) {
|
|||
files, err := os.ReadDir(dir)
|
||||
require.NoError(b.t, err)
|
||||
for _, file := range files {
|
||||
names = append(names, filepath.Base(file.Name()))
|
||||
if strings.Contains(file.Name(), ".lst-control") || strings.Contains(file.Name(), ".lst-dry-control") || strings.Contains(file.Name(), ".DS_Store") {
|
||||
continue
|
||||
}
|
||||
names = append(names, filepath.Base(norm.NFC.String(file.Name())))
|
||||
}
|
||||
// Sort files to ensure comparability.
|
||||
sort.Strings(names)
|
||||
|
|
|
@ -5,5 +5,6 @@
|
|||
- /subdir/subdirA/
|
||||
+ /subdir/**
|
||||
- /subdir-not/
|
||||
- .DS_Store
|
||||
+ /*
|
||||
- **
|
||||
|
|
|
@ -1 +1 @@
|
|||
868aeb20dc983cd1aaa29f6c4f2537e6
|
||||
5fcc6205d7df1c2e9ed3a15a1356b345
|
|
@ -5,5 +5,6 @@
|
|||
- /subdir/subdirA/
|
||||
# + /subdir/**
|
||||
- /subdir-not/
|
||||
- .DS_Store
|
||||
#+ /*
|
||||
#- **
|
||||
|
|
|
@ -1 +1 @@
|
|||
b9c5205dddfc926160c2442b2497d407
|
||||
2ec13b2813141ed088e5978ef5a47b0e
|
|
@ -5,5 +5,6 @@
|
|||
- /subdir/subdirA/
|
||||
+ /subdir/**
|
||||
- /subdir-not/
|
||||
- .DS_Store
|
||||
+ /*
|
||||
- **
|
||||
|
|
|
@ -5,5 +5,6 @@
|
|||
- /subdir/subdirA/
|
||||
# + /subdir/**
|
||||
- /subdir-not/
|
||||
- .DS_Store
|
||||
#+ /*
|
||||
#- **
|
||||
|
|
Loading…
Reference in New Issue
Block a user