diff options
-rw-r--r-- | .appveyor/check-generate-code.bat | 41 | ||||
-rw-r--r-- | .github/PULL_REQUEST_TEMPLATE.md | 13 | ||||
-rw-r--r-- | .github/workflows/build.yml | 4 | ||||
-rw-r--r-- | .travis.yml | 2 | ||||
-rw-r--r-- | CMakeLists.txt | 23 | ||||
-rw-r--r-- | appveyor.yml | 15 | ||||
-rw-r--r-- | include/flatbuffers/reflection.h | 2 | ||||
-rw-r--r-- | reflection/generate_code.bat | 18 | ||||
-rwxr-xr-x | reflection/generate_code.sh | 31 | ||||
-rwxr-xr-x | scripts/check-generate-code.sh | 47 | ||||
-rwxr-xr-x | scripts/check_generate_code.py | 63 | ||||
-rwxr-xr-x | scripts/generate_code.py | 47 | ||||
-rwxr-xr-x | tests/docker/build_flatc.run.sh | 4 | ||||
-rwxr-xr-x | tests/docker/cpp_test.run.sh | 4 | ||||
-rw-r--r-- | tests/generate_code.bat | 111 | ||||
-rwxr-xr-x | tests/generate_code.sh | 114 |
16 files changed, 135 insertions, 404 deletions
diff --git a/.appveyor/check-generate-code.bat b/.appveyor/check-generate-code.bat deleted file mode 100644 index 2a18cf99..00000000 --- a/.appveyor/check-generate-code.bat +++ /dev/null @@ -1,41 +0,0 @@ -:: Copyright 2018 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 buildtype=Release -if "%1"=="-b" set buildtype=%2 - -cd tests -call generate_code.bat -b %buildtype% || goto FAIL - -:: TODO: Release and Debug builds produce differences here for some reason. -git checkout HEAD -- monster_test.bfbs -git checkout HEAD -- arrays_test.bfbs - -git -c core.autocrlf=true diff --exit-code --quiet || goto :DIFFFOUND -goto SUCCESS - -:DIFFFOUND -@echo "" >&2 -@echo "ERROR: ********************************************************" >&2 -@echo "ERROR: The following differences were found after building." >&2 -@echo "ERROR: Perhaps there is a difference in the flags for the" >&2 -@echo "ERROR: CMakeLists.txt vs the tests/generate_code.bat script?" >&2 -@echo "ERROR: ********************************************************" >&2 -@echo "" >&2 -@git -c core.autocrlf=true --no-pager diff --binary - -:FAIL -set EXITCODE=1 -:SUCCESS -cd .. -EXIT /B %EXITCODE%
\ No newline at end of file diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index db9f09a2..0f052398 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -2,14 +2,13 @@ Thank you for submitting a PR! Please delete this standard text once you've created your own description. -Make sure you include the names of the affected language(s) in your PR title. -This helps us get the correct maintainers to look at your issue. +If you make changes to any of the code generators (`src/idl_gen*`) be sure to +build your project, as it will generate code based on the changes. If necessary +the code generation script can be directly run (`scripts/generate_code.py`), +requires Python3. This allows us to better see the effect of the PR. -If you make changes to any of the code generators, be sure to run -`cd tests && bash generate_code.sh` (or equivalent .bat) and include the generated -code changes in the PR. This allows us to better see the effect of the PR. - -If your PR includes C++ code, please adhere to the Google C++ Style Guide, +If your PR includes C++ code, please adhere to the +[Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html), and don't forget we try to support older compilers (e.g. VS2010, GCC 4.6.3), so only some C++11 support is available. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5ad15632..85950fde 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -136,7 +136,9 @@ jobs: - 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 + run: scripts/check_generate_code.py + - name: Generate gRPC + run: bash scripts/check-grpc-generated-code.sh build-benchmarks: name: Build Benchmarks (on Linux) diff --git a/.travis.yml b/.travis.yml index 3ca86de8..2e95109d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -115,7 +115,6 @@ 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 scripts/check-generate-code.sh - language: cpp os: osx @@ -140,7 +139,6 @@ 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 scripts/check-generate-code.sh - <<: *conan-linux-master env: CONAN_GCC_VERSIONS=8 CONAN_DOCKER_IMAGE=conanio/gcc8 diff --git a/CMakeLists.txt b/CMakeLists.txt index 544c7afb..df13bb25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,6 +54,9 @@ option(FLATBUFFERS_ENABLE_PCH Only work if CMake supports 'target_precompile_headers'. \" This can speed up compilation time." OFF) +option(FLATBUFFERS_SKIP_MONSTER_EXTRA + "Skip generating monster_extra.fbs that contains non-supported numerical\" + types." OFF) if(NOT FLATBUFFERS_BUILD_FLATC AND FLATBUFFERS_BUILD_TESTS) message(WARNING @@ -466,7 +469,7 @@ function(compile_flatbuffers_schema_to_binary SRC_FBS) message(STATUS "`${SRC_FBS}`: add generation of binary (.bfbs) schema") get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH) string(REGEX REPLACE "\\.fbs$" ".bfbs" GEN_BINARY_SCHEMA ${SRC_FBS}) - # For details about flags see generate_code.bat(sh) + # For details about flags see generate_code.py add_custom_command( OUTPUT ${GEN_BINARY_SCHEMA} COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}" @@ -489,7 +492,7 @@ function(compile_flatbuffers_schema_to_embedded_binary SRC_FBS OPT) message(STATUS "`${SRC_FBS}`: add generation of C++ embedded binary schema code with '${OPT}'") get_filename_component(SRC_FBS_DIR ${SRC_FBS} PATH) string(REGEX REPLACE "\\.fbs$" "_bfbs_generated.h" GEN_BFBS_HEADER ${SRC_FBS}) - # For details about flags see generate_code.bat(sh) + # For details about flags see generate_code.py add_custom_command( OUTPUT ${GEN_BFBS_HEADER} COMMAND "${FLATBUFFERS_FLATC_EXECUTABLE}" @@ -509,22 +512,32 @@ endfunction() # Look if we have python 3 installed so that we can run the generate code python # script after flatc is built. find_package(PythonInterp 3) + if(PYTHONINTERP_FOUND AND # Skip doing this if the MSVC version is below VS 12. # https://cmake.org/cmake/help/latest/variable/MSVC_VERSION.html (NOT MSVC OR MSVC_VERSION GREATER 1800)) if(WIN32) - set(GENERATION_SCRIPT py scripts/generate_code.py) + set(GENERATION_SCRIPT py scripts/generate_code.py) else() set(GENERATION_SCRIPT scripts/generate_code.py) endif() + if(FLATBUFFERS_BUILD_LEGACY) + # Need to set --cpp-std c++-0x options + set(GENERATION_SCRIPT ${GENERATION_SCRIPT} --cpp-0x) + endif() + if(FLATBUFFERS_SKIP_MONSTER_EXTRA) + set(GENERATION_SCRIPT ${GENERATION_SCRIPT} --skip-monster-extra) + endif() add_custom_command( TARGET flatc POST_BUILD - COMMAND ${GENERATION_SCRIPT} "${FLATBUFFERS_FLATC_EXECUTABLE}" + COMMAND ${GENERATION_SCRIPT} --flatc "${FLATBUFFERS_FLATC_EXECUTABLE}" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Running ${GENERATION_SCRIPT}..." VERBATIM) +else() + message("No Python3 interpreter found! Unable to generate files automatically.") endif() if(FLATBUFFERS_BUILD_TESTS) @@ -568,7 +581,7 @@ if(FLATBUFFERS_BUILD_TESTS) if(FLATBUFFERS_BUILD_CPP17) # Don't generate header for flattests_cpp17 target. # This target uses "generated_cpp17/monster_test_generated.h" - # produced by direct call of generate_code.bat(sh) script. + # produced by direct call of generate_code.py script. add_executable(flattests_cpp17 ${FlatBuffers_Tests_CPP17_SRCS}) add_dependencies(flattests_cpp17 generated_code) target_compile_features(flattests_cpp17 PRIVATE cxx_std_17) diff --git a/appveyor.yml b/appveyor.yml index b6e641a2..3876b160 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -11,21 +11,21 @@ environment: CONDA_INSTALL_LOCN: "C:\\Miniconda35-x64" CMAKE_OPTIONS: "" CPP_TEST_OPTIONS: "" + CHECK_GEN_CODE: 1 matrix: - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 CMAKE_VS_VERSION: "10 2010" - CMAKE_OPTIONS: "-DFLATBUFFERS_BUILD_LEGACY=1" - CPP_TEST_OPTIONS: "--std-cpp c++0x" - MONSTER_EXTRA: "skip" + CMAKE_OPTIONS: "-DFLATBUFFERS_BUILD_LEGACY=1 -DFLATBUFFERS_SKIP_MONSTER_EXTRA=ON" + CHECK_GEN_CODE: 0 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 CMAKE_VS_VERSION: "12 2013" - MONSTER_EXTRA: "skip" + CMAKE_OPTIONS: "-DFLATBUFFERS_SKIP_MONSTER_EXTRA=ON" + CPP_TEST_OPTIONS: "--skip-monster-extra" - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 CMAKE_VS_VERSION: "14 2015" - MONSTER_EXTRA: "" platform: - x86 @@ -36,7 +36,6 @@ configuration: - Release before_build: - - set MONSTER_EXTRA=%MONSTER_EXTRA% - cmake . -G"Visual Studio %CMAKE_VS_VERSION%" -DFLATBUFFERS_CODE_SANITIZE=1 %CMAKE_OPTIONS% # This cuts down on a lot of noise generated by xamarin warnings. - if exist "C:\Program Files (x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets" del "C:\Program Files (x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets" @@ -54,10 +53,8 @@ install: - ps: Install-Product node $env:nodejs_version test_script: - - call .appveyor\check-generate-code.bat -b %CONFIGURATION% + - if [%CHECK_GEN_CODE%]==[1] (call py scripts/check_generate_code.py "%CPP_TEST_OPTIONS%") - "cd tests" - - rem "Building all code" - - generate_code.bat -b %CONFIGURATION% %CPP_TEST_OPTIONS% - 7z a GeneratedMyGameCode.zip MyGame\ - rem "---------------- C++ -----------------" - "cd .." diff --git a/include/flatbuffers/reflection.h b/include/flatbuffers/reflection.h index cb3ec9a0..8e700f0b 100644 --- a/include/flatbuffers/reflection.h +++ b/include/flatbuffers/reflection.h @@ -21,7 +21,7 @@ // file) is needed to generate this header in the first place. // Should normally not be a problem since it can be generated by the // previous version of flatc whenever this code needs to change. -// See reflection/generate_code.sh +// See scripts/generate_code.py for generation. #include "flatbuffers/reflection_generated.h" // Helper functionality for reflection. diff --git a/reflection/generate_code.bat b/reflection/generate_code.bat deleted file mode 100644 index 7b0f4d8d..00000000 --- a/reflection/generate_code.bat +++ /dev/null @@ -1,18 +0,0 @@ -:: Copyright 2015 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 buildtype=Release -if "%1"=="-b" set buildtype=%2 - -..\%buildtype%\flatc.exe --cpp --cpp-std c++0x --no-prefix -o ../include/flatbuffers reflection.fbs || exit /b 1 diff --git a/reflection/generate_code.sh b/reflection/generate_code.sh deleted file mode 100755 index 694baa2d..00000000 --- a/reflection/generate_code.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -# -# Copyright 2016 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 - -tempDir="../include/flatbuffers/.tmp" -originalFile="../include/flatbuffers/reflection_generated.h" -newFile="$tempDir/reflection_generated.h" - -../flatc -c --cpp-std c++0x --no-prefix -o $tempDir reflection.fbs - -if [ -f "$newFile" ]; then - if ! cmp -s "$originalFile" "$newFile"; then - mv $newFile $originalFile - else - rm $newFile - fi - rmdir $tempDir -fi diff --git a/scripts/check-generate-code.sh b/scripts/check-generate-code.sh deleted file mode 100755 index 4cf27423..00000000 --- a/scripts/check-generate-code.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# -# Copyright 2018 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 - -if ! git diff --quiet; then - echo >&2 - echo "ERROR: ********************************************************" >&2 - echo "ERROR: The following differences were found after building." >&2 - echo "ERROR: Perhaps there is a difference in the flags for the" >&2 - echo "ERROR: CMakeLists.txt vs the tests/generate_code.sh script?" >&2 - echo "ERROR: ********************************************************" >&2 - echo >&2 - git diff --binary --exit-code -fi - -cd tests -./generate_code.sh -cd .. - -# TODO: Linux and macos builds produce differences here for some reason. -git checkout HEAD -- tests/monster_test.bfbs -git checkout HEAD -- tests/arrays_test.bfbs -git checkout HEAD -- samples/monster.bfbs - -if ! git diff --quiet; then - echo >&2 - echo "ERROR: ********************************************************" >&2 - echo "ERROR: The following differences were found after running the" >&2 - echo "ERROR: tests/generate_code.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 diff --git a/scripts/check_generate_code.py b/scripts/check_generate_code.py new file mode 100755 index 00000000..038dc4e5 --- /dev/null +++ b/scripts/check_generate_code.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +# +# 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. + +import platform +import subprocess +import sys +from pathlib import Path + +# Get the path where this script is located so we can invoke the script from +# any directory and have the paths work correctly. +script_path = Path(__file__).parent.resolve() + +# Get the root path as an absolute path, so all derived paths are absolute. +root_path = script_path.parent.absolute() + +result = subprocess.run(["git", "diff", "--quiet"], cwd=root_path) + +if result.returncode != 0: + print( + "\n" + "ERROR: *********************************************************\n" + "ERROR: * The following differences were found after building. *\n" + "ERROR: * Perhaps there is a difference in the flags for the. *\n" + "ERROR: * CMakeLists.txt vs the script/generate_code.py script? *\n" + "ERROR: *********************************************************\n" + ) + subprocess.run(["git", "diff", "--binary", "--exit-code"], cwd=root_path) + sys.exit(result.returncode) + +# Rung the generate_code.py script, forwarding arguments +gen_cmd = ["scripts/generate_code.py"] + sys.argv[1:] +if platform.system() == "Windows": + gen_cmd = ["py"] + gen_cmd +subprocess.run(gen_cmd, cwd=root_path) + +result = subprocess.run(["git", "diff", "--quiet"], cwd=root_path) + +if result.returncode != 0: + print( + "\n" + "ERROR: ********************************************************\n" + "ERROR: * The following differences were found after running *\n" + "ERROR: * the script/generate_code.py script. Maybe you forgot *\n" + "ERROR: * to run it after making changes in a generator? *\n" + "ERROR: ********************************************************\n" + ) + subprocess.run(["git", "diff", "--binary", "--exit-code"], cwd=root_path) + sys.exit(result.returncode) + +sys.exit(0) diff --git a/scripts/generate_code.py b/scripts/generate_code.py index 13968c5e..df53ba51 100755 --- a/scripts/generate_code.py +++ b/scripts/generate_code.py @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import argparse import filecmp import glob import platform @@ -22,6 +23,19 @@ import subprocess import sys from pathlib import Path +parser = argparse.ArgumentParser() +parser.add_argument( + "--flatc", + help="path of the Flat C compiler relative to the root directory", +) +parser.add_argument("--cpp-0x", action="store_true", help="use --cpp-std c++ox") +parser.add_argument( + "--skip-monster-extra", + action="store_true", + help="skip generating tests involving monster_extra.fbs", +) +args = parser.parse_args() + # Get the path where this script is located so we can invoke the script from # any directory and have the paths work correctly. script_path = Path(__file__).parent.resolve() @@ -33,8 +47,8 @@ root_path = script_path.parent.absolute() # argument or defaulting to default names. flatc_exe = Path( ("flatc" if not platform.system() == "Windows" else "flatc.exe") - if len(sys.argv) <= 1 - else sys.argv[1] + if not args.flatc + else args.flatc ) # Find and assert flatc compiler is present. @@ -79,7 +93,8 @@ CPP_OPTS = [ "--gen-compare", "--cpp-ptr-type", "flatbuffers::unique_ptr", -] +] + (["--cpp-std", "c++0x"] if args.cpp_0x else []) + CPP_17_OPTS = NO_INCL_OPTS + [ "--cpp", "--cpp-std", @@ -230,11 +245,22 @@ flatc( schema="monster_test.fbs", ) -flatc( - CPP_OPTS + CS_OPTS + NO_INCL_OPTS + JAVA_OPTS + KOTLIN_OPTS + PYTHON_OPTS, - schema="monster_extra.fbs", - data="monsterdata_extra.json", -) +if not args.skip_monster_extra: + flatc( + CPP_OPTS + + CS_OPTS + + NO_INCL_OPTS + + JAVA_OPTS + + KOTLIN_OPTS + + PYTHON_OPTS, + schema="monster_extra.fbs", + data="monsterdata_extra.json", + ) + + flatc( + DART_OPTS + ["--gen-object-api"], + schema="monster_extra.fbs", + ) flatc( CPP_OPTS @@ -256,11 +282,6 @@ flatc( schema="arrays_test.fbs", ) -flatc( - DART_OPTS + ["--gen-object-api"], - schema="monster_extra.fbs", -) - # Optional Scalars optional_scalars_schema = "optional_scalars.fbs" diff --git a/tests/docker/build_flatc.run.sh b/tests/docker/build_flatc.run.sh index 3473765b..c00adf68 100755 --- a/tests/docker/build_flatc.run.sh +++ b/tests/docker/build_flatc.run.sh @@ -10,6 +10,6 @@ cmake . -DCMAKE_BUILD_TYPE=$config \ -DFLATBUFFERS_BUILD_TESTS=0 -DFLATBUFFERS_INSTALL=0 cmake --build . --target flatc --clean-first -- -j$JOBS -echo "Check generated code" -scripts/check-generate-code.sh +echo "Checking generated code" +scripts/check_generate_code.py echo "Done" diff --git a/tests/docker/cpp_test.run.sh b/tests/docker/cpp_test.run.sh index e05b74da..370662ab 100755 --- a/tests/docker/cpp_test.run.sh +++ b/tests/docker/cpp_test.run.sh @@ -14,7 +14,7 @@ cmake . -DCMAKE_BUILD_TYPE=$config \ cmake --build . --target all --clean-first -- -j$JOBS ctest --extra-verbose --output-on-failure -j$JOBS -echo "Check generated code" -scripts/check-generate-code.sh +echo "Checking generated code" +scripts/check_generate_code.py echo "C++ tests done" diff --git a/tests/generate_code.bat b/tests/generate_code.bat deleted file mode 100644 index d6f67b34..00000000 --- a/tests/generate_code.bat +++ /dev/null @@ -1,111 +0,0 @@ -:: Copyright 2015 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. - -@SETLOCAL - -set buildtype=Release -if "%1"=="-b" set buildtype=%2 - -set commandline=%* - - -if NOT "%commandline%"=="%commandline:--cpp-std c++0x=%" ( - set TEST_CPP_FLAGS=--cpp-std c++0x -) else ( - @rem --cpp-std is defined by flatc default settings. - set TEST_CPP_FLAGS= -) - -set TEST_CPP_FLAGS=--gen-compare --cpp-ptr-type flatbuffers::unique_ptr %TEST_CPP_FLAGS% -set TEST_CS_FLAGS=--cs-gen-json-serializer -set TEST_TS_FLAGS=--gen-name-strings -set TEST_BASE_FLAGS=--reflect-names --gen-mutable --gen-object-api -set TEST_RUST_FLAGS=%TEST_BASE_FLAGS% --gen-name-strings --gen-all -set TEST_NOINCL_FLAGS=%TEST_BASE_FLAGS% --no-includes - -..\%buildtype%\flatc.exe --binary --cpp --java --kotlin --csharp --dart --go --lobster --lua --ts --php --grpc ^ -%TEST_NOINCL_FLAGS% %TEST_CPP_FLAGS% %TEST_CS_FLAGS% -I include_test monster_test.fbs monsterdata_test.json || goto FAIL -..\%buildtype%\flatc.exe --rust %TEST_RUST_FLAGS% -I include_test -o monster_test monster_test.fbs monsterdata_test.json || goto FAIL - -..\%buildtype%\flatc.exe --python %TEST_BASE_FLAGS% -I include_test monster_test.fbs monsterdata_test.json || goto FAIL - -..\%buildtype%\flatc.exe --binary --cpp --java --csharp --dart --go --lobster --lua --ts --php --python ^ -%TEST_NOINCL_FLAGS% %TEST_CPP_FLAGS% %TEST_CS_FLAGS% %TEST_TS_FLAGS% -o namespace_test namespace_test/namespace_test1.fbs namespace_test/namespace_test2.fbs || goto FAIL - -@rem For Rust we currently generate two independent schemas, with namespace_test2 -@rem duplicating the types in namespace_test1 -..\%buildtype%\flatc.exe --rust %TEST_RUST_FLAGS% -o namespace_test namespace_test/namespace_test1.fbs namespace_test/namespace_test2.fbs || goto FAIL - -..\%buildtype%\flatc.exe --cpp --java --csharp --ts --php %TEST_BASE_FLAGS% %TEST_CPP_FLAGS% %TEST_CS_FLAGS% %TEST_TS_FLAGS% -o union_vector ./union_vector/union_vector.fbs || goto FAIL -..\%buildtype%\flatc.exe --ts --gen-name-strings --gen-mutable %TEST_BASE_FLAGS% %TEST_TS_FLAGS% -I include_test monster_test.fbs -..\%buildtype%\flatc.exe %TEST_BASE_FLAGS% %TEST_TS_FLAGS% -b -I include_test monster_test.fbs unicode_test.json -..\%buildtype%\flatc.exe --ts --gen-name-strings %TEST_BASE_FLAGS% %TEST_TS_FLAGS% -o union_vector union_vector/union_vector.fbs -..\%buildtype%\flatc.exe --rust %TEST_RUST_FLAGS% -I include_test -o include_test1 include_test/include_test1.fbs || goto FAIL -..\%buildtype%\flatc.exe --rust %TEST_RUST_FLAGS% -I include_test -o include_test2 include_test/sub/include_test2.fbs || goto FAIL -..\%buildtype%\flatc.exe -b --schema --bfbs-comments --bfbs-filenames . --bfbs-builtins -I include_test monster_test.fbs || goto FAIL -..\%buildtype%\flatc.exe --cpp --bfbs-comments --bfbs-filenames . --bfbs-builtins --bfbs-gen-embed %TEST_NOINCL_FLAGS% %TEST_CPP_FLAGS% -I include_test monster_test.fbs || goto FAIL -..\%buildtype%\flatc.exe -b --schema --bfbs-comments --bfbs-filenames . --bfbs-builtins -I include_test arrays_test.fbs || goto FAIL -..\%buildtype%\flatc.exe --jsonschema --schema -I include_test monster_test.fbs || goto FAIL -..\%buildtype%\flatc.exe --cpp --java --csharp --jsonschema %TEST_NOINCL_FLAGS% %TEST_CPP_FLAGS% %TEST_CS_FLAGS% --scoped-enums arrays_test.fbs || goto FAIL -..\%buildtype%\flatc.exe --rust %TEST_RUST_FLAGS% -o arrays_test arrays_test.fbs || goto FAIL -..\%buildtype%\flatc.exe --python %TEST_BASE_FLAGS% arrays_test.fbs || goto FAIL -..\%buildtype%\flatc.exe --cpp %TEST_BASE_FLAGS% --cpp-ptr-type flatbuffers::unique_ptr native_type_test.fbs || goto FAIL - -@rem Generate the optional scalar code for tests. -..\%buildtype%\flatc.exe --java --kotlin --lobster --ts optional_scalars.fbs || goto FAIL -..\%buildtype%\flatc.exe --csharp --gen-object-api optional_scalars.fbs || goto FAIL -..\%buildtype%\flatc.exe --rust %TEST_RUST_FLAGS% -o optional_scalars optional_scalars.fbs || goto FAIL -..\%buildtype%\flatc.exe %TEST_NOINCL_FLAGS% %TEST_CPP_FLAGS% --cpp optional_scalars.fbs || goto FAIL - -@rem Generate the schema evolution tests -..\%buildtype%\flatc.exe --cpp --scoped-enums %TEST_CPP_FLAGS% -o evolution_test ./evolution_test/evolution_v1.fbs ./evolution_test/evolution_v2.fbs || goto FAIL - -@rem Generate the keywords tests -..\%buildtype%\flatc.exe --csharp --scoped-enums %TEST_BASE_FLAGS% %TEST_CS_FLAGS% keyword_test.fbs || goto FAIL - -@rem Generate the nested namespace tests -..\%buildtype%\flatc.exe --csharp --cs-global-alias --gen-onefile %TEST_BASE_FLAGS% %TEST_CS_FLAGS% -o nested_namespace_test nested_namespace_test/nested_namespace_test1.fbs nested_namespace_test/nested_namespace_test2.fbs nested_namespace_test/nested_namespace_test3.fbs || goto FAIL - -if NOT "%MONSTER_EXTRA%"=="skip" ( - @echo Generate MosterExtra - ..\%buildtype%\flatc.exe --cpp --java --csharp %TEST_NOINCL_FLAGS% %TEST_CPP_FLAGS% %TEST_CS_FLAGS% monster_extra.fbs monsterdata_extra.json || goto FAIL - ..\%buildtype%\flatc.exe --python %TEST_BASE_FLAGS% monster_extra.fbs monsterdata_extra.json || goto FAIL -) else ( - @echo monster_extra.fbs skipped (the strtod function from MSVC2013 or older doesn't support NaN/Inf arguments) -) - -set TEST_CPP17_FLAGS=--cpp --cpp-std c++17 --cpp-static-reflection -o ./cpp17/generated_cpp17 %TEST_NOINCL_FLAGS% -if NOT "%MONSTER_EXTRA%"=="skip" ( - @rem Flag c++17 requires Clang6, GCC7, MSVC2017 (_MSC_VER >= 1914) or higher. - ..\%buildtype%\flatc.exe %TEST_CPP17_FLAGS% -I include_test monster_test.fbs || goto FAIL - ..\%buildtype%\flatc.exe %TEST_CPP17_FLAGS% optional_scalars.fbs || goto FAIL - @rem..\%buildtype%\flatc.exe %TEST_CPP17_FLAGS% arrays_test.fbs || goto FAIL - @rem..\%buildtype%\flatc.exe %TEST_CPP17_FLAGS% native_type_test.fbs || goto FAIL - @rem..\%buildtype%\flatc.exe %TEST_CPP17_FLAGS% monster_extra.fbs || goto FAIL - ..\%buildtype%\flatc.exe %TEST_CPP17_FLAGS% ./union_vector/union_vector.fbs || goto FAIL -) - -cd ../samples -..\%buildtype%\flatc.exe --cpp --lobster %TEST_BASE_FLAGS% %TEST_CPP_FLAGS% monster.fbs || goto FAIL -..\%buildtype%\flatc.exe -b --schema --bfbs-comments --bfbs-filenames . --bfbs-builtins monster.fbs || goto FAIL -cd ../reflection -call generate_code.bat %1 %2 || goto FAIL - -set EXITCODE=0 -goto SUCCESS -:FAIL -set EXITCODE=1 -:SUCCESS -cd ../tests -EXIT /B %EXITCODE% diff --git a/tests/generate_code.sh b/tests/generate_code.sh deleted file mode 100755 index 6ce999d3..00000000 --- a/tests/generate_code.sh +++ /dev/null @@ -1,114 +0,0 @@ -#!/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 - -commandline="'$*'" - -if [[ $commandline == *"--cpp-std c++0x"* ]]; then - TEST_CPP_FLAGS="--cpp-std c++0x" -else - # --cpp-std is defined by flatc default settings. - TEST_CPP_FLAGS= -fi - -TEST_CPP_FLAGS="--gen-compare --cpp-ptr-type flatbuffers::unique_ptr $TEST_CPP_FLAGS" -TEST_CS_FLAGS="--cs-gen-json-serializer" -TEST_TS_FLAGS="--gen-name-strings" -TEST_BASE_FLAGS="--reflect-names --gen-mutable --gen-object-api" -TEST_RUST_FLAGS="$TEST_BASE_FLAGS --gen-all --gen-name-strings" -TEST_NOINCL_FLAGS="$TEST_BASE_FLAGS --no-includes" - - -../flatc --binary --cpp --java --kotlin --csharp --dart --go --lobster --lua --ts --php --grpc \ -$TEST_NOINCL_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS -I include_test monster_test.fbs monsterdata_test.json -../flatc --rust $TEST_RUST_FLAGS -o monster_test -I include_test monster_test.fbs monsterdata_test.json - -../flatc --python $TEST_BASE_FLAGS -I include_test monster_test.fbs monsterdata_test.json - -../flatc --cpp --java --kotlin --csharp --dart --go --binary --lobster --lua --ts --php --python \ -$TEST_NOINCL_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS $TEST_TS_FLAGS -o namespace_test namespace_test/namespace_test1.fbs namespace_test/namespace_test2.fbs - -# For Rust we currently generate two independent schemas, with namespace_test2 -# duplicating the types in namespace_test1 -../flatc --rust --gen-all $TEST_RUST_FLAGS -o namespace_test namespace_test/namespace_test1.fbs namespace_test/namespace_test2.fbs - -../flatc --cpp --java --kotlin --csharp --ts --php $TEST_BASE_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS $TEST_TS_FLAGS -o union_vector ./union_vector/union_vector.fbs -../flatc --ts --gen-name-strings --gen-mutable $TEST_BASE_FLAGS $TEST_TS_FLAGS -I include_test monster_test.fbs -../flatc $TEST_BASE_FLAGS $TEST_TS_FLAGS -b -I include_test monster_test.fbs unicode_test.json -../flatc --ts --gen-name-strings $TEST_BASE_FLAGS $TEST_TS_FLAGS -o union_vector union_vector/union_vector.fbs -../flatc --rust $TEST_RUST_FLAGS -o include_test1 -I include_test include_test/include_test1.fbs -../flatc --rust $TEST_RUST_FLAGS -o include_test2 -I include_test include_test/sub/include_test2.fbs -../flatc -b --schema --bfbs-comments --bfbs-filenames . --bfbs-builtins -I include_test monster_test.fbs -../flatc --cpp --bfbs-comments --bfbs-filenames . --bfbs-builtins --bfbs-gen-embed $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS -I include_test monster_test.fbs -../flatc -b --schema --bfbs-comments --bfbs-filenames . --bfbs-builtins -I include_test arrays_test.fbs -../flatc --jsonschema --schema -I include_test monster_test.fbs -../flatc --cpp --java --kotlin --csharp --python $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS monster_extra.fbs monsterdata_extra.json -../flatc --cpp --java --csharp --jsonschema $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS --scoped-enums arrays_test.fbs -../flatc --rust $TEST_RUST_FLAGS -o arrays_test arrays_test.fbs -../flatc --python $TEST_BASE_FLAGS arrays_test.fbs -../flatc --dart --gen-object-api monster_extra.fbs - -# Generate optional scalar code for tests. -../flatc --java --kotlin --lobster --ts optional_scalars.fbs -../flatc --csharp --gen-object-api optional_scalars.fbs -../flatc --rust $TEST_RUST_FLAGS -o optional_scalars optional_scalars.fbs -../flatc $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS --cpp optional_scalars.fbs - -# Generate string/vector default code for tests -../flatc --rust $TEST_RUST_FLAGS -o more_defaults more_defaults.fbs - -# Generate the schema evolution tests -../flatc --cpp --scoped-enums $TEST_CPP_FLAGS -o evolution_test ./evolution_test/evolution_v*.fbs - -# Generate the keywords tests -../flatc --csharp $TEST_BASE_FLAGS $TEST_CS_FLAGS ./keyword_test.fbs -../flatc --rust $TEST_RUST_FLAGS -o keyword_test ./keyword_test.fbs - -# Generate the keywords tests -../flatc --csharp --cs-global-alias --gen-onefile $TEST_BASE_FLAGS $TEST_CS_FLAGS -o nested_namespace_test nested_namespace_test/nested_namespace_test1.fbs nested_namespace_test/nested_namespace_test2.fbs nested_namespace_test/nested_namespace_test3.fbs - -working_dir=`pwd` -cd FlatBuffers.Test.Swift/Tests/FlatBuffers.Test.SwiftTests -$working_dir/../flatc --bfbs-filenames $working_dir --swift --gen-json-emit --grpc $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS -I ${working_dir}/include_test ${working_dir}/monster_test.fbs -$working_dir/../flatc --bfbs-filenames $working_dir --swift --gen-json-emit $TEST_BASE_FLAGS $TEST_CPP_FLAGS $TEST_CS_FLAGS ${working_dir}/union_vector/union_vector.fbs -$working_dir/../flatc --bfbs-filenames $working_dir --swift --gen-json-emit ${working_dir}/optional_scalars.fbs -$working_dir/../flatc --bfbs-filenames $working_dir --swift --gen-json-emit --gen-object-api ${working_dir}/more_defaults.fbs -cd $working_dir - -# Tests if the --filename-suffix and --filename-ext works and produces the same -# outputs. -../flatc --cpp --filename-suffix _suffix --filename-ext hpp $TEST_NOINCL_FLAGS $TEST_CPP_FLAGS -I include_test monster_test.fbs -if [ -f "monster_test_suffix.hpp" ]; then - if ! cmp -s "monster_test_suffix.hpp" "monster_test_generated.h"; then - echo "[Error] Filename suffix option did not produce identical results" - fi - rm "monster_test_suffix.hpp" -else - echo "[Error] Filename suffix option did not produce a file" -fi - -# Flag c++17 requires Clang6, GCC7, MSVC2017 (_MSC_VER >= 1914) or higher. -TEST_CPP17_FLAGS="--cpp --cpp-std c++17 --cpp-static-reflection --gen-object-api -o ./cpp17/generated_cpp17 $TEST_NOINCL_FLAGS" -../flatc $TEST_CPP17_FLAGS -I include_test monster_test.fbs -../flatc $TEST_CPP17_FLAGS optional_scalars.fbs -../flatc $TEST_CPP17_FLAGS union_vector/union_vector.fbs - -cd ../samples -../flatc --cpp --lobster $TEST_BASE_FLAGS $TEST_CPP_FLAGS monster.fbs -../flatc --rust $TEST_RUST_FLAGS -o rust_generated monster.fbs -../flatc -b --schema --bfbs-filenames . --bfbs-comments --bfbs-builtins monster.fbs -cd ../reflection -./generate_code.sh --cpp-std c++0x |