aboutsummaryrefslogtreecommitdiffhomepage
path: root/testdata
diff options
context:
space:
mode:
authorDan Kegel <[email protected]>2022-03-19 19:56:43 -0700
committerRon Evans <[email protected]>2022-04-06 20:03:04 +0200
commit0f9f316db2b2c4d4189bee7b8fc5dbcd2584e148 (patch)
tree6d7ccc6ef76ce9ac293bd5deba7b8c516bc291a8 /testdata
parent0dd521e1d13da8ee5ed4982ce6ea12ad2a3f7918 (diff)
downloadtinygo-0f9f316db2b2c4d4189bee7b8fc5dbcd2584e148.tar.gz
tinygo-0f9f316db2b2c4d4189bee7b8fc5dbcd2584e148.zip
main_test.go: fork testdata/testing.go for go 1.18
Diffstat (limited to 'testdata')
-rw-r--r--testdata/testing_go118.go100
-rw-r--r--testdata/testing_go118.txt21
2 files changed, 121 insertions, 0 deletions
diff --git a/testdata/testing_go118.go b/testdata/testing_go118.go
new file mode 100644
index 000000000..4c1cf44ef
--- /dev/null
+++ b/testdata/testing_go118.go
@@ -0,0 +1,100 @@
+package main
+
+// TODO: also test the verbose version.
+
+import (
+ "errors"
+ "flag"
+ "io"
+ "strings"
+ "testing"
+)
+
+func TestFoo(t *testing.T) {
+ t.Log("log Foo.a")
+ t.Log("log Foo.b")
+}
+
+func TestBar(t *testing.T) {
+ t.Log("log Bar")
+ t.Log("log g\nh\ni\n")
+ t.Run("Bar1", func(t *testing.T) {})
+ t.Run("Bar2", func(t *testing.T) {
+ t.Log("log Bar2\na\nb\nc")
+ t.Error("failed")
+ t.Log("after failed")
+ })
+ t.Run("Bar3", func(t *testing.T) {})
+ t.Log("log Bar end")
+}
+
+func TestAllLowercase(t *testing.T) {
+ names := []string {
+ "alpha",
+ "BETA",
+ "gamma",
+ "BELTA",
+ }
+
+ for _, name := range names {
+ t.Run(name, func(t *testing.T) {
+ if 'a' <= name[0] && name[0] <= 'a' {
+ t.Logf("expected lowercase name, and got one, so I'm happy")
+ } else {
+ t.Errorf("expected lowercase name, got %s", name)
+ }
+ })
+ }
+}
+
+var tests = []testing.InternalTest{
+ {"TestFoo", TestFoo},
+ {"TestBar", TestBar},
+ {"TestAllLowercase", TestAllLowercase},
+}
+
+var benchmarks = []testing.InternalBenchmark{}
+
+var fuzzes = []testing.InternalFuzzTarget{}
+
+var examples = []testing.InternalExample{}
+
+// A fake regexp matcher.
+// Inflexible, but saves 50KB of flash and 50KB of RAM per -size full,
+// and lets tests pass on cortex-m.
+// Must match the one in src/testing/match.go that is substituted on bare-metal platforms,
+// or "make test" will fail there.
+func fakeMatchString(pat, str string) (bool, error) {
+ if pat == ".*" {
+ return true, nil
+ }
+ matched := strings.Contains(str, pat)
+ return matched, nil
+}
+
+func main() {
+ testing.Init()
+ flag.Set("test.run", ".*/B")
+ m := testing.MainStart(matchStringOnly(fakeMatchString /*regexp.MatchString*/), tests, benchmarks, fuzzes, examples)
+
+ exitcode := m.Run()
+ if exitcode != 0 {
+ println("exitcode:", exitcode)
+ }
+}
+
+var errMain = errors.New("testing: unexpected use of func Main")
+
+// matchStringOnly is part of upstream, and is used below to provide a dummy deps to pass to MainStart
+// so it can be run with go (tested with go 1.16) to provide a baseline for the regression test.
+// See c56cc9b3b57276. Unfortunately, testdeps is internal, so we can't just use &testdeps.TestDeps{}.
+type matchStringOnly func(pat, str string) (bool, error)
+
+func (f matchStringOnly) MatchString(pat, str string) (bool, error) { return f(pat, str) }
+func (f matchStringOnly) StartCPUProfile(w io.Writer) error { return errMain }
+func (f matchStringOnly) StopCPUProfile() {}
+func (f matchStringOnly) WriteProfileTo(string, io.Writer, int) error { return errMain }
+func (f matchStringOnly) ImportPath() string { return "" }
+func (f matchStringOnly) StartTestLog(io.Writer) {}
+func (f matchStringOnly) StopTestLog() error { return errMain }
+func (f matchStringOnly) SetPanicOnExit0(bool) {}
diff --git a/testdata/testing_go118.txt b/testdata/testing_go118.txt
new file mode 100644
index 000000000..6a8ee0591
--- /dev/null
+++ b/testdata/testing_go118.txt
@@ -0,0 +1,21 @@
+--- FAIL: TestBar (0.00s)
+ log Bar
+ log g
+ h
+ i
+
+ --- FAIL: TestBar/Bar2 (0.00s)
+ log Bar2
+ a
+ b
+ c
+ failed
+ after failed
+ log Bar end
+--- FAIL: TestAllLowercase (0.00s)
+ --- FAIL: TestAllLowercase/BETA (0.00s)
+ expected lowercase name, got BETA
+ --- FAIL: TestAllLowercase/BELTA (0.00s)
+ expected lowercase name, got BELTA
+FAIL
+exitcode: 1