From 62512ca0abb651780a01ba535bdc31f6930d4300 Mon Sep 17 00:00:00 2001 From: Nick White Date: Thu, 20 Feb 2020 11:25:05 +0000 Subject: [pare-gt] Add some tests, and make deterministic These tests have uncovered at least 2 bugs that haven't yet been squashed: - 1% selection hangs - 20% selection only takes as many as 10% --- pare-gt/main.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'pare-gt/main.go') diff --git a/pare-gt/main.go b/pare-gt/main.go index c645480..0a8b067 100644 --- a/pare-gt/main.go +++ b/pare-gt/main.go @@ -9,6 +9,7 @@ import ( "path" "path/filepath" "strings" + "sort" ) const usage = `Usage: pare-gt [-n num] gtdir movedir @@ -65,13 +66,20 @@ func inStrSlice(sl []string, s string) bool { // total of perctosample% are sampled. func samplePrefixes(perctosample int, prefixes Prefixes) (filestomove []string) { var total, sample int - for _, v := range prefixes { + var keys []string + for i, v := range prefixes { total += len(v) + // needed for determinism + sort.Strings(prefixes[i]) + keys = append(keys, i) } sample = total / perctosample - for _, prefix := range prefixes { + // This ensures the map is looped over deterministically + sort.Strings(keys) + for _, key := range keys { + prefix := prefixes[key] len := len(prefix) if len == 1 { continue -- cgit v1.2.1-24-ge1ad