Как использовать CTest с командой Node js, для тестирования JS-файла, скомпилированного из C ++ с использованием emscripten, и использовать Catch2? - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь использовать библиотеку Catch2 для тестирования, скомпилировать ее с emscripten и запустить тест. Структура каталогов моего проекта выглядит следующим образом

|- CMakeLists.txt
|- build
|   |- ...
|   |- try-test.js
|   |- try-test.wasm
|   |- try-test.wast
|- test
|   |- main.cpp
|- third_party
    |- Catch2
        |- ...

когда я перехожу в каталог build и запускаю node try-test.js, это успешно. но когда я бегу ctest, это терпит неудачу. Ниже выводится сообщение.

Test project /Users/janucaria/Projects/junk/em-cpp-unit-test/build
Start 1: trytest
Could not find executable node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/try-test.js
Looked in the following places:
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/Release/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/Release/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/Debug/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/Debug/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/MinSizeRel/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/MinSizeRel/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/RelWithDebInfo/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/RelWithDebInfo/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/Deployment/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/Deployment/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/Development/try-test.js
node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/Development/try-test.js
Unable to find executable: node /Users/janucaria/Projects/junk/em-cpp-unit-test/build/try-test.js
1/1 Test #1: trytest ..........................***Not Run   0.00 sec

0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.01 sec

The following tests FAILED:
          1 - trytest (Not Run)
Errors while running CTest

Я что-то здесь упускаю?

вот мой test/main.cpp

#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>

TEST_CASE("Try test")
{
  int foo = 1;
  REQUIRE(foo == 1);
}

и здесь CMakeLists.txt

cmake_minimum_required(VERSION 3.11)
project(trytest)

enable_testing()

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

add_executable(try-test "test/main.cpp")

target_include_directories(try-test
PRIVATE
  "${PROJECT_SOURCE_DIR}/third_party/Catch2/single_include"
)

target_compile_options(try-test PRIVATE "-Wall" "-Wpedantic" "-stdlib=libc++")

add_test(
  NAME trytest
  COMMAND "node ${CMAKE_CURRENT_BINARY_DIR}/try-test.js")

Буду признателен за любую помощь, которую вы сможете оказать.

1 Ответ

0 голосов
/ 09 сентября 2018

Я понял это. Я использую add_test неправильно. Должно быть

add_test(
  NAME trytest
  COMMAND node "${CMAKE_CURRENT_BINARY_DIR}/try-test.js")

, поэтому ctest будет запускать команду node с аргументами ${CMAKE_CURRENT_BINARY_DIR}/try-test.js

...