|
| 1 | +# TODO run when test is enabled |
| 2 | + |
| 3 | +# python3 venv folder |
| 4 | +# NOTE Docker image for CI doesn't use venv |
| 5 | +set(VENV_PATH "${CMAKE_SOURCE_DIR}/infra/overlay/venv") |
| 6 | + |
| 7 | +set(OPTION_O2C_SINGLE) |
| 8 | +string(TOLOWER "${CMAKE_BUILD_TYPE}" BUILD_TYPE_LOWER) |
| 9 | +if(BUILD_TYPE_LOWER STREQUAL "debug") |
| 10 | + set(OPTION_O2C_SINGLE "-o2c-single") |
| 11 | +endif() |
| 12 | + |
| 13 | +# DEPEND FILES |
| 14 | +set(FILE_DEPS_VALCHK ) |
| 15 | + |
| 16 | +macro(COPY_SCRIPT FILENAME) |
| 17 | + set(SCRIPT_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${FILENAME}") |
| 18 | + set(SCRIPT_DST "${CMAKE_CURRENT_BINARY_DIR}/${FILENAME}") |
| 19 | + add_custom_command( |
| 20 | + OUTPUT ${SCRIPT_DST} |
| 21 | + COMMAND ${CMAKE_COMMAND} -E copy "${SCRIPT_SRC}" "${SCRIPT_DST}" |
| 22 | + DEPENDS ${SCRIPT_SRC} |
| 23 | + COMMENT "tools/onnx2circle: prepare ${FILENAME}" |
| 24 | + ) |
| 25 | + list(APPEND FILE_DEPS_VALCHK "${SCRIPT_DST}") |
| 26 | +endmacro(COPY_SCRIPT) |
| 27 | + |
| 28 | +# copy test scripts |
| 29 | +COPY_SCRIPT(run_circle_ops_test.sh) |
| 30 | +COPY_SCRIPT(check_circle_ops.py) |
| 31 | + |
| 32 | +# AddModel used in test.lst |
| 33 | +set(UNIT_TEST_MODELS ) |
| 34 | + |
| 35 | +get_target_property(ONNX_ARTIFACTS_BIN_PATH gen_onnx_target BINARY_DIR) |
| 36 | + |
| 37 | +macro(AddModel MODEL_NAME) |
| 38 | + # copy ONNX to build folder |
| 39 | + set(TEST_ONNX_MODEL_SRC "${ONNX_ARTIFACTS_BIN_PATH}/${MODEL_NAME}.onnx") |
| 40 | + set(TEST_ONNX_MODEL_DST "${CMAKE_CURRENT_BINARY_DIR}/${MODEL_NAME}.onnx") |
| 41 | + add_custom_command( |
| 42 | + OUTPUT ${TEST_ONNX_MODEL_DST} |
| 43 | + COMMAND ${CMAKE_COMMAND} -E copy "${TEST_ONNX_MODEL_SRC}" "${TEST_ONNX_MODEL_DST}" |
| 44 | + DEPENDS ${TEST_ONNX_MODEL_SRC} |
| 45 | + COMMENT "onnx2circle-rewrite-test: prepare ${MODEL_NAME}.onnx" |
| 46 | + ) |
| 47 | + # generate .ops files containing Operators |
| 48 | + set(TEST_CIRCLE_MODEL_DST "${CMAKE_CURRENT_BINARY_DIR}/${MODEL_NAME}.circle") |
| 49 | + add_custom_command( |
| 50 | + OUTPUT ${TEST_CIRCLE_MODEL_DST}.ops |
| 51 | + COMMAND "$<TARGET_FILE:onnx2circle>" --save_ops "${OPTION_O2C_SINGLE}" |
| 52 | + "${TEST_ONNX_MODEL_DST}" "${TEST_CIRCLE_MODEL_DST}" |
| 53 | + DEPENDS ${TEST_ONNX_MODEL_DST} onnx2circle |
| 54 | + COMMENT "onnx2circle-rewrite-test: generate ${MODEL_NAME}.circle.ops" |
| 55 | + ) |
| 56 | + |
| 57 | + list(APPEND UNIT_TEST_MODELS "${MODEL_NAME}") |
| 58 | + list(APPEND FILE_DEPS_VALCHK "${TEST_CIRCLE_MODEL_DST}.ops") |
| 59 | +endmacro(AddModel) |
| 60 | + |
| 61 | +# Read "test.lst" |
| 62 | +include("test.lst") |
| 63 | + |
| 64 | +add_custom_target( |
| 65 | + onnx2circle_rewrite_test_target ALL |
| 66 | + DEPENDS onnx2circle_models_target ${FILE_DEPS_VALCHK} |
| 67 | +) |
| 68 | + |
| 69 | +set(MODELS_ROOT "${CMAKE_SOURCE_DIR}/models/net") |
| 70 | +set(RUN_PATH "${CMAKE_CURRENT_BINARY_DIR}") |
| 71 | + |
| 72 | +foreach(MODEL IN ITEMS ${UNIT_TEST_MODELS}) |
| 73 | + add_test( |
| 74 | + NAME onnx2circle_circle_ops_${MODEL} |
| 75 | + COMMAND bash run_circle_ops_test.sh ${VENV_PATH} ${RUN_PATH} ${MODELS_ROOT} ${MODEL} |
| 76 | + ) |
| 77 | +endforeach() |
0 commit comments