aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/builtins.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/rosa/builtins.go')
-rw-r--r--internal/rosa/builtins.go36
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()
+}