diff options
Diffstat (limited to 'internal/rosa/builtins.go')
| -rw-r--r-- | internal/rosa/builtins.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/internal/rosa/builtins.go b/internal/rosa/builtins.go index 78123921..b0ec65b1 100644 --- a/internal/rosa/builtins.go +++ b/internal/rosa/builtins.go @@ -2,6 +2,8 @@ package rosa import ( "path" + "slices" + "strconv" "strings" "hakurei.app/internal/pkg" @@ -68,3 +70,37 @@ func newFromGitHubRelease( compression, ) } + +// skipGNUTests generates a string for skipping specific tests by number in a +// GNU test suite. This is nontrivial because the test suite does not support +// excluding tests in any way, so ranges for all but the skipped tests have to +// be specified instead. +// +// For example, to skip test 764, ranges around the skipped test must be +// specified: +// +// 1-763 765- +// +// Tests are numbered starting from 1. The resulting string is unquoted. +func skipGNUTests(tests ...int64) string { + tests = slices.Clone(tests) + slices.Sort(tests) + + var buf strings.Builder + + if tests[0] != 1 { + buf.WriteString("1-") + } + + for i, n := range tests { + if n != 1 && (i == 0 || tests[i-1] != n-1) { + buf.WriteString(strconv.Itoa(int(n - 1))) + buf.WriteString(" ") + } + if i == len(tests)-1 || tests[i+1] != n+1 { + buf.WriteString(strconv.Itoa(int(n + 1))) + buf.WriteString("-") + } + } + return buf.String() +} |
