From f4f2b5db01b615ca6c29edb47821ef9349b39ac6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Wed, 15 May 2019 14:10:41 +0200 Subject: [PATCH 1/4] test: Use the same generator in CMake integration tests --- test/integration/cmake_package/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/integration/cmake_package/CMakeLists.txt b/test/integration/cmake_package/CMakeLists.txt index b363330..b4185b5 100644 --- a/test/integration/cmake_package/CMakeLists.txt +++ b/test/integration/cmake_package/CMakeLists.txt @@ -11,7 +11,7 @@ file(MAKE_DIRECTORY ${build_dir} ${use_evmc_build_dir} ${use_instructions_build_ add_test( NAME cmake_package/configure - COMMAND ${CMAKE_COMMAND} ${PROJECT_SOURCE_DIR} -DCMAKE_INSTALL_PREFIX=${install_dir} + COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${PROJECT_SOURCE_DIR} -DCMAKE_INSTALL_PREFIX=${install_dir} WORKING_DIRECTORY ${build_dir} ) @@ -24,7 +24,7 @@ set_tests_properties(cmake_package/install PROPERTIES DEPENDS cmake_package/conf add_test( NAME cmake_package/use_evmc/configure - COMMAND ${CMAKE_COMMAND} ${PROJECT_SOURCE_DIR}/examples/use_evmc_in_cmake -DCMAKE_PREFIX_PATH=${install_dir} + COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${PROJECT_SOURCE_DIR}/examples/use_evmc_in_cmake -DCMAKE_PREFIX_PATH=${install_dir} WORKING_DIRECTORY ${use_evmc_build_dir} ) set_tests_properties(cmake_package/use_evmc/configure PROPERTIES DEPENDS cmake_package/install) @@ -38,7 +38,7 @@ set_tests_properties(cmake_package/use_evmc/build PROPERTIES DEPENDS cmake_packa add_test( NAME cmake_package/use_instructions/configure - COMMAND ${CMAKE_COMMAND} ${PROJECT_SOURCE_DIR}/examples/use_instructions_in_cmake -DCMAKE_PREFIX_PATH=${install_dir} + COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${PROJECT_SOURCE_DIR}/examples/use_instructions_in_cmake -DCMAKE_PREFIX_PATH=${install_dir} WORKING_DIRECTORY ${use_instructions_build_dir} ) set_tests_properties(cmake_package/use_instructions/configure PROPERTIES DEPENDS cmake_package/install) From 3d41dc16d9e97a43fedc90c49d42212a5a88f689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Wed, 15 May 2019 13:44:03 +0200 Subject: [PATCH 2/4] ci: Use Ninja on AppVeyor --- appveyor.yml | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 76e2cbd..68319fa 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,5 @@ version: "{build}" +image: Visual Studio 2017 branches: only: - master @@ -9,28 +10,23 @@ configuration: - Release environment: matrix: - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - GENERATOR: "Visual Studio 15 2017 Win64" - - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - GENERATOR: "Visual Studio 14 2015 Win64" - + - VS: 2015 + - VS: 2017 - GO: true cache: - C:\.hunter\_Base\Cache -> cmake\Hunter\init.cmake before_build: -- ps: >- - if ($env:GENERATOR) { - if (!(test-path build)) { mkdir build } - cd build - cmake -Wno-dev -G "$env:GENERATOR" .. -DTOOLCHAIN=cxx17-pic -DEVMC_TESTING=ON -DCMAKE_INSTALL_PREFIX=C:\install - } + # Add ninja to PATH. This is done for VS2017 by vsdevcmd, but not for VS2015. + - set PATH=%PATH%;%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja + - if "%VS%" == "2017" (call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\Common7\Tools\vsdevcmd" -arch=amd64) + - if "%VS%" == "2015" (call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall" x64) + - if defined VS cmake -S . -B build -G Ninja -Wno-dev -DCMAKE_INSTALL_PREFIX=C:\install -DTOOLCHAIN=cxx17-pic -DEVMC_TESTING=ON build_script: - ps: >- - if ($env:GENERATOR) { - cmake --build . --config $env:CONFIGURATION --target install + if ($env:VS) { + cmake --build build --target install } elseif ($env:GO) { $env:PATH = "C:\msys64\mingw64\bin;$env:PATH" @@ -53,6 +49,7 @@ build_script: after_build: - ps: >- - if ($env:GENERATOR) { + if ($env:VS) { + cd build ctest -C $env:CONFIGURATION -j4 --schedule-random --output-on-failure } From 0fb409ee83bac224c7c2df46042d87d0944df2b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Wed, 15 May 2019 14:41:48 +0200 Subject: [PATCH 3/4] cmake: Cleanup CMake script --- test/vmtester/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/vmtester/CMakeLists.txt b/test/vmtester/CMakeLists.txt index 90f7b35..d22cb61 100644 --- a/test/vmtester/CMakeLists.txt +++ b/test/vmtester/CMakeLists.txt @@ -7,7 +7,7 @@ include(GNUInstallDirs) add_executable(evmc-vmtester vmtester.hpp vmtester.cpp tests.cpp) set_target_properties(evmc-vmtester PROPERTIES RUNTIME_OUTPUT_DIRECTORY ..) target_link_libraries(evmc-vmtester PRIVATE evmc loader evmc-example-host GTest::gtest) -set_source_files_properties(vmtester.cpp PROPERTIES COMPILE_DEFINITIONS PROJECT_VERSION=\"${PROJECT_VERSION}\") +set_source_files_properties(vmtester.cpp PROPERTIES COMPILE_DEFINITIONS PROJECT_VERSION="${PROJECT_VERSION}") install(TARGETS evmc-vmtester RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) From 7b42c81f53b117589c5ea54af4bb9c2ca2d2f80d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Wed, 15 May 2019 14:45:10 +0200 Subject: [PATCH 4/4] cmake: Add evmc/ prefix to ctest names --- test/integration/cmake_package/CMakeLists.txt | 24 +++++++------ test/unittests/CMakeLists.txt | 2 +- test/vmtester/CMakeLists.txt | 34 ++++++++++--------- 3 files changed, 32 insertions(+), 28 deletions(-) diff --git a/test/integration/cmake_package/CMakeLists.txt b/test/integration/cmake_package/CMakeLists.txt index b4185b5..e609375 100644 --- a/test/integration/cmake_package/CMakeLists.txt +++ b/test/integration/cmake_package/CMakeLists.txt @@ -9,42 +9,44 @@ set(use_instructions_build_dir ${CMAKE_CURRENT_BINARY_DIR}/use_instructions) file(MAKE_DIRECTORY ${build_dir} ${use_evmc_build_dir} ${use_instructions_build_dir}) +set(prefix ${PROJECT_NAME}/cmake_packge) + add_test( - NAME cmake_package/configure + NAME ${prefix}/configure COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${PROJECT_SOURCE_DIR} -DCMAKE_INSTALL_PREFIX=${install_dir} WORKING_DIRECTORY ${build_dir} ) add_test( - NAME cmake_package/install + NAME ${prefix}/install COMMAND ${CMAKE_COMMAND} --build ${build_dir} --target install ) -set_tests_properties(cmake_package/install PROPERTIES DEPENDS cmake_package/configure) +set_tests_properties(${prefix}/install PROPERTIES DEPENDS ${prefix}/configure) add_test( - NAME cmake_package/use_evmc/configure + NAME ${prefix}/use_evmc/configure COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${PROJECT_SOURCE_DIR}/examples/use_evmc_in_cmake -DCMAKE_PREFIX_PATH=${install_dir} WORKING_DIRECTORY ${use_evmc_build_dir} ) -set_tests_properties(cmake_package/use_evmc/configure PROPERTIES DEPENDS cmake_package/install) +set_tests_properties(${prefix}/use_evmc/configure PROPERTIES DEPENDS ${prefix}/install) add_test( - NAME cmake_package/use_evmc/build + NAME ${prefix}/use_evmc/build COMMAND ${CMAKE_COMMAND} --build ${use_evmc_build_dir} ) -set_tests_properties(cmake_package/use_evmc/build PROPERTIES DEPENDS cmake_package/use_evmc/configure) +set_tests_properties(${prefix}/use_evmc/build PROPERTIES DEPENDS ${prefix}/use_evmc/configure) add_test( - NAME cmake_package/use_instructions/configure + NAME ${prefix}/use_instructions/configure COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${PROJECT_SOURCE_DIR}/examples/use_instructions_in_cmake -DCMAKE_PREFIX_PATH=${install_dir} WORKING_DIRECTORY ${use_instructions_build_dir} ) -set_tests_properties(cmake_package/use_instructions/configure PROPERTIES DEPENDS cmake_package/install) +set_tests_properties(${prefix}/use_instructions/configure PROPERTIES DEPENDS ${prefix}/install) add_test( - NAME cmake_package/use_instructions/build + NAME ${prefix}/use_instructions/build COMMAND ${CMAKE_COMMAND} --build ${use_instructions_build_dir} ) -set_tests_properties(cmake_package/use_instructions/build PROPERTIES DEPENDS cmake_package/use_instructions/configure) +set_tests_properties(${prefix}/use_instructions/build PROPERTIES DEPENDS ${prefix}/use_instructions/configure) diff --git a/test/unittests/CMakeLists.txt b/test/unittests/CMakeLists.txt index 0275363..957ad0d 100644 --- a/test/unittests/CMakeLists.txt +++ b/test/unittests/CMakeLists.txt @@ -20,4 +20,4 @@ add_executable( target_link_libraries(evmc-unittests PRIVATE loader-mocked evmc-example-vm-static evmc-example-host instructions GTest::gtest GTest::main) set_target_properties(evmc-unittests PROPERTIES RUNTIME_OUTPUT_DIRECTORY ..) -gtest_add_tests(TARGET evmc-unittests TEST_PREFIX unittests/) +gtest_add_tests(TARGET evmc-unittests TEST_PREFIX ${PROJECT_NAME}/unittests/) diff --git a/test/vmtester/CMakeLists.txt b/test/vmtester/CMakeLists.txt index d22cb61..2f33200 100644 --- a/test/vmtester/CMakeLists.txt +++ b/test/vmtester/CMakeLists.txt @@ -12,26 +12,28 @@ set_source_files_properties(vmtester.cpp PROPERTIES COMPILE_DEFINITIONS PROJECT_ install(TARGETS evmc-vmtester RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -add_test(NAME vmtester/examplevm COMMAND evmc-vmtester $) -add_test(NAME vmtester/example_precompiles_vm COMMAND evmc-vmtester $) +set(prefix ${PROJECT_NAME}/vmtester) -add_test(NAME vmtester/help COMMAND evmc-vmtester --version --help) -set_tests_properties(vmtester/help PROPERTIES PASS_REGULAR_EXPRESSION "Usage:") +add_test(NAME ${prefix}/examplevm COMMAND evmc-vmtester $) +add_test(NAME ${prefix}/example_precompiles_vm COMMAND evmc-vmtester $) -add_test(NAME vmtester/nonexistingvm COMMAND evmc-vmtester nonexistingvm) -set_tests_properties(vmtester/nonexistingvm PROPERTIES PASS_REGULAR_EXPRESSION "[Cc]annot open") +add_test(NAME ${prefix}/help COMMAND evmc-vmtester --version --help) +set_tests_properties(${prefix}/help PROPERTIES PASS_REGULAR_EXPRESSION "Usage:") -add_test(NAME vmtester/noarg COMMAND evmc-vmtester) -set_tests_properties(vmtester/noarg PROPERTIES PASS_REGULAR_EXPRESSION "is required") +add_test(NAME ${prefix}/nonexistingvm COMMAND evmc-vmtester nonexistingvm) +set_tests_properties(${prefix}/nonexistingvm PROPERTIES PASS_REGULAR_EXPRESSION "[Cc]annot open") -add_test(NAME vmtester/too-many-args COMMAND evmc-vmtester a b) -set_tests_properties(vmtester/too-many-args PROPERTIES PASS_REGULAR_EXPRESSION "Unexpected") +add_test(NAME ${prefix}/noarg COMMAND evmc-vmtester) +set_tests_properties(${prefix}/noarg PROPERTIES PASS_REGULAR_EXPRESSION "is required") -add_test(NAME vmtester/version COMMAND evmc-vmtester --version) -set_tests_properties(vmtester/version PROPERTIES PASS_REGULAR_EXPRESSION ${PROJECT_VERSION}) +add_test(NAME ${prefix}/too-many-args COMMAND evmc-vmtester a b) +set_tests_properties(${prefix}/too-many-args PROPERTIES PASS_REGULAR_EXPRESSION "Unexpected") -add_test(NAME vmtester/unknown-option COMMAND evmc-vmtester --verbose) -set_tests_properties(vmtester/unknown-option PROPERTIES PASS_REGULAR_EXPRESSION "Unknown") +add_test(NAME ${prefix}/version COMMAND evmc-vmtester --version) +set_tests_properties(${prefix}/version PROPERTIES PASS_REGULAR_EXPRESSION ${PROJECT_VERSION}) -add_test(NAME vmtester/option-long-prefix COMMAND evmc-vmtester ---) -set_tests_properties(vmtester/option-long-prefix PROPERTIES PASS_REGULAR_EXPRESSION "Unknown") +add_test(NAME ${prefix}/unknown-option COMMAND evmc-vmtester --verbose) +set_tests_properties(${prefix}/unknown-option PROPERTIES PASS_REGULAR_EXPRESSION "Unknown") + +add_test(NAME ${prefix}/option-long-prefix COMMAND evmc-vmtester ---) +set_tests_properties(${prefix}/option-long-prefix PROPERTIES PASS_REGULAR_EXPRESSION "Unknown")