diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ef0ec0ed..da2e1dab5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -467,6 +467,8 @@ if(BUILD_TESTS) find_package(Qt${QT_VERSION_MAJOR} ${minReqQtVersion} REQUIRED COMPONENTS Test) add_subdirectory(tests) + + configure_file(CTestCustom.cmake.in CTestCustom.cmake @ONLY) endif() # Build examples diff --git a/CTestCustom.cmake.in b/CTestCustom.cmake.in new file mode 100644 index 000000000..421bd4b60 --- /dev/null +++ b/CTestCustom.cmake.in @@ -0,0 +1,14 @@ +if(DEFINED ENV{DB_AUTOMIGRATE}) + if(DEFINED ENV{DB_MYSQL_DATABASE}) + execute_process(COMMAND @CMAKE_COMMAND@ --build . --target tom_testdata_migrate_mysql COMMAND_ECHO STDOUT) + endif() + if(DEFINED ENV{DB_POSTGRES_DATABASE}) + execute_process(COMMAND @CMAKE_COMMAND@ --build . --target tom_testdata_migrate_postgres COMMAND_ECHO STDOUT) + endif() + if(DEFINED ENV{DB_SQLITE_DATABASE}) + execute_process(COMMAND @CMAKE_COMMAND@ --build . --target tom_testdata_migrate_sqlite COMMAND_ECHO STDOUT) + endif() +else() + message("DB_AUTOMIGRATE not set, skipping automigration") +endif() + diff --git a/tests/testdata_tom/CMakeLists.txt b/tests/testdata_tom/CMakeLists.txt index f8c68aafe..d9945aaad 100644 --- a/tests/testdata_tom/CMakeLists.txt +++ b/tests/testdata_tom/CMakeLists.txt @@ -91,3 +91,12 @@ if(NOT STRICT_MODE) endif() target_link_libraries(${TomTestData_target} PRIVATE ${TinyOrm_ns}::${TinyOrm_target}) + + +# All unit tests are functional only if the test databases are migrated prior to test execution. +# +# These targets are provided in order to simplify test setup +# --- +add_custom_target(tom_testdata_migrate_mysql COMMAND tom_testdata migrate:fresh --database=tinyorm_testdata_tom_mysql --seed --no-ansi DEPENDS ${TomTestData_target}) +add_custom_target(tom_testdata_migrate_postgres COMMAND tom_testdata migrate:fresh --database=tinyorm_testdata_tom_postgres --seed --no-ansi DEPENDS ${TomTestData_target}) +add_custom_target(tom_testdata_migrate_sqlite COMMAND tom_testdata migrate:fresh --database=tinyorm_testdata_tom_sqlite --seed --no-ansi DEPENDS ${TomTestData_target})