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 } diff --git a/test/integration/cmake_package/CMakeLists.txt b/test/integration/cmake_package/CMakeLists.txt index b363330..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 - COMMAND ${CMAKE_COMMAND} ${PROJECT_SOURCE_DIR} -DCMAKE_INSTALL_PREFIX=${install_dir} + 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 - COMMAND ${CMAKE_COMMAND} ${PROJECT_SOURCE_DIR}/examples/use_evmc_in_cmake -DCMAKE_PREFIX_PATH=${install_dir} + 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 - COMMAND ${CMAKE_COMMAND} ${PROJECT_SOURCE_DIR}/examples/use_instructions_in_cmake -DCMAKE_PREFIX_PATH=${install_dir} + 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 90f7b35..2f33200 100644 --- a/test/vmtester/CMakeLists.txt +++ b/test/vmtester/CMakeLists.txt @@ -7,31 +7,33 @@ 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}) -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")