]> Cypherpunks repositories - gostls13.git/commitdiff
testing: replace CRLF by LF on windows before comparing to the expected output
authorConstantin Konstantinidis <constantinkonstantinidis@gmail.com>
Sun, 10 Nov 2024 15:57:06 +0000 (16:57 +0100)
committerGopher Robot <gobot@golang.org>
Wed, 13 Nov 2024 18:37:25 +0000 (18:37 +0000)
Fixes #51269

Change-Id: I06747db18ca078c1f1bda9b7bc60006f53191f4d
Reviewed-on: https://go-review.googlesource.com/c/go/+/627035
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
src/cmd/go/testdata/script/test_crlf_example.txt [new file with mode: 0644]
src/testing/example.go

diff --git a/src/cmd/go/testdata/script/test_crlf_example.txt b/src/cmd/go/testdata/script/test_crlf_example.txt
new file mode 100644 (file)
index 0000000..9c2a70a
--- /dev/null
@@ -0,0 +1,39 @@
+# Tests that crlf in the output of examples are handled.
+# Verifies golang.org/issue/51269
+go test x_test.go
+
+-- x_test.go --
+package  x
+
+import (
+    "io"
+    "fmt"
+    "os"
+    "runtime"
+)
+
+func Example_lf() {
+       fmt.Print("foo", "\n", "bar")
+       // Output:
+       // foo
+       // bar
+}
+
+func Example_println() {
+       fmt.Println("foo")
+       fmt.Println("bar")
+       // Output:
+       // foo
+       // bar
+}
+
+func Example_crlf() {
+       if runtime.GOOS == "windows" {
+               io.WriteString(os.Stdout, "foo\r\nbar\r\n")
+       } else {
+               io.WriteString(os.Stdout, "foo\nbar\n")
+       }
+       // Output:
+       // foo
+       // bar
+}
index b14477a40697396b59e99b80ad108a4b03b5a5d2..c343ae2aa2f39336c1d881449af602ff0fa079f0 100644 (file)
@@ -6,6 +6,7 @@ package testing
 
 import (
        "fmt"
+       "runtime"
        "slices"
        "strings"
        "time"
@@ -66,6 +67,10 @@ func (eg *InternalExample) processRunResult(stdout string, timeSpent time.Durati
        var fail string
        got := strings.TrimSpace(stdout)
        want := strings.TrimSpace(eg.Output)
+       if runtime.GOOS == "windows" {
+               got = strings.ReplaceAll(got, "\r\n", "\n")
+               want = strings.ReplaceAll(want, "\r\n", "\n")
+       }
        if eg.Unordered {
                if sortLines(got) != sortLines(want) && recovered == nil {
                        fail = fmt.Sprintf("got:\n%s\nwant (unordered):\n%s\n", stdout, eg.Output)