Skip to content

Commit a782051

Browse files
committed
Skip tests for broken rand.Reader on Go 1.24+.
Tests involving broken rand.Reader are skipped for Go 1.24 and above due to upstream changes that prevent failures. A `getGoVersion` helper function is added to determine the runtime version, ensuring test compatibility and reducing false negatives. Reference: golang/go#66821.
1 parent c9c8a3b commit a782051

File tree

4 files changed

+42
-0
lines changed

4 files changed

+42
-0
lines changed

helper_test.go

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package mail
2+
3+
import (
4+
"runtime"
5+
"strconv"
6+
"strings"
7+
"testing"
8+
)
9+
10+
// getGoVersion returns the current Go runtime version as a float64. It fails the test if the version
11+
// parsing encounters an error.
12+
func getGoVersion(t *testing.T) float64 {
13+
t.Helper()
14+
version := runtime.Version()
15+
version = version[2:]
16+
version = version[:strings.LastIndex(version, ".")]
17+
vernum, err := strconv.ParseFloat(version, 64)
18+
if err != nil {
19+
t.Fatalf("failed to parse Go version: %s", err)
20+
}
21+
return vernum
22+
}

msg_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -5925,6 +5925,10 @@ func TestMsg_WriteTo(t *testing.T) {
59255925
}
59265926
})
59275927
t.Run("WriteTo with S/MIME signing fails with broken rand.Reader", func(t *testing.T) {
5928+
version := getGoVersion(t)
5929+
if version >= 1.24 {
5930+
t.Skip("Go 1.24+ never fails on broken rand Reader. See: https://github.com/golang/go/issues/66821")
5931+
}
59285932
defaultRandReader := rand.Reader
59295933
t.Cleanup(func() { rand.Reader = defaultRandReader })
59305934
rand.Reader = &randReader{failon: 1}

msgwriter_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,10 @@ func TestMsgWriter_writeMsg(t *testing.T) {
282282
}
283283
})
284284
t.Run("msgWriter fails on S/MIME signing with broken rand.Reader", func(t *testing.T) {
285+
version := getGoVersion(t)
286+
if version >= 1.24 {
287+
t.Skip("Go 1.24+ never fails on broken rand Reader. See: https://github.com/golang/go/issues/66821")
288+
}
285289
defaultRandReader := rand.Reader
286290
t.Cleanup(func() { rand.Reader = defaultRandReader })
287291
rand.Reader = &randReader{failon: 1}

random_test.go

+12
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ func TestRandomStringSecure(t *testing.T) {
4141
}
4242
})
4343
t.Run("randomStringSecure fails on broken rand Reader (first read)", func(t *testing.T) {
44+
version := getGoVersion(t)
45+
if version >= 1.24 {
46+
t.Skip("Go 1.24+ never fails on broken rand Reader. See: https://github.com/golang/go/issues/66821")
47+
}
4448
defaultRandReader := rand.Reader
4549
t.Cleanup(func() { rand.Reader = defaultRandReader })
4650
rand.Reader = &randReader{failon: 1}
@@ -49,6 +53,10 @@ func TestRandomStringSecure(t *testing.T) {
4953
}
5054
})
5155
t.Run("randomStringSecure fails on broken rand Reader (second read)", func(t *testing.T) {
56+
version := getGoVersion(t)
57+
if version >= 1.24 {
58+
t.Skip("Go 1.24+ never fails on broken rand Reader. See: https://github.com/golang/go/issues/66821")
59+
}
5260
defaultRandReader := rand.Reader
5361
t.Cleanup(func() { rand.Reader = defaultRandReader })
5462
rand.Reader = &randReader{failon: 0}
@@ -69,6 +77,10 @@ func TestRandomBoundary(t *testing.T) {
6977
}
7078
})
7179
t.Run("randomBoundary fails on broken rand Reader", func(t *testing.T) {
80+
version := getGoVersion(t)
81+
if version >= 1.24 {
82+
t.Skip("Go 1.24+ never fails on broken rand Reader. See: https://github.com/golang/go/issues/66821")
83+
}
7284
defaultRandReader := rand.Reader
7385
t.Cleanup(func() { rand.Reader = defaultRandReader })
7486
rand.Reader = &randReader{failon: 1}

0 commit comments

Comments
 (0)