[go] tests/GoTest.sh: Fix flags.Parse location to work on new go SDKs. (#6388)
authorAaron Son <aaron@dolthub.com>
Thu, 7 Jan 2021 19:54:00 +0000 (11:54 -0800)
committerGitHub <noreply@github.com>
Thu, 7 Jan 2021 19:54:00 +0000 (11:54 -0800)
* tests/GoTest.sh: Fix flags.Parse location to work on new go SDKs.

Calling flags.Parse() within init() races with other packages which register
flags in their init(), and in particular with the testing package itself. It is
more reliable to call flags.Parse() from a TestMain implementation.

See https://github.com/golang/go/issues/31859,
https://github.com/golang/go/issues/33869.

* .github: Enable build-go action in build.yaml workflow.

.github/workflows/build.yml
tests/GoTest.sh
tests/go_test.go
tests/monsterdata_go_wire.mon.sp [new file with mode: 0644]

index 65475d8..c4d75cd 100644 (file)
@@ -149,17 +149,17 @@ jobs:
       working-directory: tests
       run: bash PythonTest.sh
 
-  #build-go:
-  #  name: Build Go
-  #  runs-on: ubuntu-latest
-  #  steps:
-  #  - uses: actions/checkout@v1
-  #  - name: flatc
-  #    # FIXME: make test script not rely on flatc
-  #    run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF . && make -j4
-  #  - name: test
-  #    working-directory: tests
-  #    run: bash GoTest.sh
+  build-go:
+    name: Build Go
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v1
+    - name: flatc
+      # FIXME: make test script not rely on flatc
+      run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF . && make -j4
+    - name: test
+      working-directory: tests
+      run: bash GoTest.sh
 
   #build-csharp:
   #  name: Build CSharp
index 60ef927..8cbadcb 100755 (executable)
@@ -47,11 +47,11 @@ cp -a ./go_test.go ./go_gen/src/flatbuffers_test/
 # flag -test.bench and the wildcard regexp ".":
 #   go -test -test.bench=. ...
 GOPATH=${go_path} go test flatbuffers_test \
-                     --test.coverpkg=github.com/google/flatbuffers/go \
+                     --coverpkg=github.com/google/flatbuffers/go \
                      --cpp_data=${test_dir}/monsterdata_test.mon \
                      --out_data=${test_dir}/monsterdata_go_wire.mon \
-                     --test.bench=. \
-                     --test.benchtime=3s \
+                     --bench=. \
+                     --benchtime=3s \
                      --fuzz=true \
                      --fuzz_fields=4 \
                      --fuzz_objects=10000
index 9e64cca..5d408f6 100644 (file)
@@ -50,12 +50,6 @@ func init() {
        flag.IntVar(&fuzzFields, "fuzz_fields", 4, "fields per fuzzer object")
        flag.IntVar(&fuzzObjects, "fuzz_objects", 10000,
                "number of fuzzer objects (higher is slower and more thorough")
-       flag.Parse()
-
-       if cppData == "" {
-               fmt.Fprintf(os.Stderr, "cpp_data argument is required\n")
-               os.Exit(1)
-       }
 }
 
 // Store specific byte patterns in these variables for the fuzzer. These
@@ -65,6 +59,15 @@ var (
        overflowingInt64Val = flatbuffers.GetInt64([]byte{0x84, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44})
 )
 
+func TestMain(m *testing.M) {
+       flag.Parse()
+       if cppData == "" {
+               fmt.Fprintf(os.Stderr, "cpp_data argument is required\n")
+               os.Exit(1)
+       }
+       os.Exit(m.Run())
+}
+
 // TestAll runs all checks, failing if any errors occur.
 func TestAll(t *testing.T) {
        // Verify that the Go FlatBuffers runtime library generates the
diff --git a/tests/monsterdata_go_wire.mon.sp b/tests/monsterdata_go_wire.mon.sp
new file mode 100644 (file)
index 0000000..cf3019c
Binary files /dev/null and b/tests/monsterdata_go_wire.mon.sp differ