[CI] Adds Code Generation tests on Github Actions (#6482)
authormustiikhalil <mustii@mmk.one>
Tue, 23 Feb 2021 05:51:39 +0000 (08:51 +0300)
committerGitHub <noreply@github.com>
Tue, 23 Feb 2021 05:51:39 +0000 (08:51 +0300)
Moves check-grpc-generation to scripts

.github/workflows/build.yml
.travis.yml
grpc/examples/generate.sh
scripts/check-generate-code.sh [moved from .travis/check-generate-code.sh with 100% similarity]
scripts/check-grpc-generated-code.sh [new file with mode: 0644]
tests/docker/build_flatc.run.sh
tests/docker/cpp_test.run.sh
tests/generate_code.sh

index 8a8c9e1..7b01c98 100644 (file)
@@ -98,6 +98,19 @@ jobs:
      working-directory: android
      run: bash ./gradlew clean build
 
+  build-generator:
+    name: Check Generated Code
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        cxx: [g++-9, clang++-9]
+    steps:
+    - uses: actions/checkout@v1
+    - name: cmake
+      run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DFLATBUFFERS_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release . && make -j4
+    - name: Generate
+      run: bash scripts/check-generate-code.sh && bash scripts/check-grpc-generated-code.sh
+
   build-java:
     name: Build Java
     runs-on: ubuntu-latest
index fb174fc..c3c1346 100644 (file)
@@ -114,7 +114,7 @@ matrix:
         -DFLATBUFFERS_CODE_SANITIZE=ON
       - cmake --build . --target all --clean-first -- -j${JOBS}
       - LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/google/grpc/install/lib ctest --extra-verbose --output-on-failure
-      - bash .travis/check-generate-code.sh
+      - bash scripts/check-generate-code.sh
 
     - language: cpp
       os: osx
@@ -134,7 +134,7 @@ matrix:
         -DFLATBUFFERS_CODE_SANITIZE=ON
       - cmake --build . -- -j${JOBS}
       - DYLD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/google/grpc/install/lib ctest --extra-verbose --output-on-failure
-      - bash .travis/check-generate-code.sh
+      - bash scripts/check-generate-code.sh
 
     - <<: *conan-linux-master
       env: CONAN_GCC_VERSIONS=8 CONAN_DOCKER_IMAGE=conanio/gcc8
index 0d2a900..0ac2818 100644 (file)
@@ -1,3 +1,21 @@
+#!/bin/bash
+#
+# Copyright 2021 Google Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -e
+
 current_dir=`pwd`
 
 cd ../..
@@ -6,7 +24,17 @@ main_dir=`pwd`
 
 cd ${current_dir}
 
-alias fbc='${main_dir}/Debug/flatc'
+# Looks for flatc within the root dir & debug
+if [ -e ${main_dir}/flatc ]; then
+  alias fbc='${main_dir}/flatc'
+elif [ -e ${main_dir}/Debug/flatc ]; then
+  alias fbc='${main_dir}/Debug/flatc'
+else
+  echo 'flatc' could not be found. Make sure to build FlatBuffers from the \
+       $rootdir directory.
+  exit 1
+fi
+
 generator="--grpc $current_dir/greeter.fbs"
 
 # Regenerate Go lang code
diff --git a/scripts/check-grpc-generated-code.sh b/scripts/check-grpc-generated-code.sh
new file mode 100644 (file)
index 0000000..4541be1
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/bash
+#
+# Copyright 2021 Google Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+set -e
+
+echo "Checks generated grpc code"
+cd grpc/examples
+sh generate.sh
+cd ..
+
+if ! git diff --quiet; then
+  echo >&2
+  echo "ERROR: ********************************************************" >&2
+  echo "ERROR: The following differences were found after running the" >&2
+  echo "ERROR: grpc/example/generate.sh script. Maybe you forgot to run" >&2
+  echo "ERROR: it after making changes in a generator or schema?" >&2
+  echo "ERROR: ********************************************************" >&2
+  echo >&2
+  git diff --binary --exit-code
+fi
index c8885b1..3473765 100755 (executable)
@@ -11,5 +11,5 @@ cmake . -DCMAKE_BUILD_TYPE=$config \
 cmake --build . --target flatc --clean-first -- -j$JOBS
 
 echo "Check generated code"
-.travis/check-generate-code.sh
+scripts/check-generate-code.sh
 echo "Done"
index fa3b0fb..e05b74d 100755 (executable)
@@ -15,6 +15,6 @@ cmake --build . --target all --clean-first -- -j$JOBS
 ctest --extra-verbose --output-on-failure -j$JOBS
 
 echo "Check generated code"
-.travis/check-generate-code.sh
+scripts/check-generate-code.sh
 
 echo "C++ tests done"
index baa70e7..45c7ccd 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/bash
 #
-# Copyright 2015 Google Inc. All rights reserved.
+# Copyright 2021 Google Inc. All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.