diff options
| author | Alex Merry <alex.merry@kde.org> | 2015-05-11 13:56:28 +0100 | 
|---|---|---|
| committer | Alex Merry <alex.merry@kde.org> | 2015-05-13 19:22:15 +0100 | 
| commit | 1b636b43d2bf4dca0332a2e2b36affa67fbe1e0b (patch) | |
| tree | 6a82d1acbdd48c76ab94b1aa4921696aef3bf4e1 | |
| parent | 09822e2631644875d3b22fef54b9bfa30a295169 (diff) | |
| download | extra-cmake-modules-1b636b43d2bf4dca0332a2e2b36affa67fbe1e0b.tar.gz extra-cmake-modules-1b636b43d2bf4dca0332a2e2b36affa67fbe1e0b.tar.bz2 | |
Add unit tests for ECMAddTests module.
REVIEW: 123722
24 files changed, 476 insertions, 2 deletions
| diff --git a/modules/ECMAddTests.cmake b/modules/ECMAddTests.cmake index de06315d..bdb60691 100644 --- a/modules/ECMAddTests.cmake +++ b/modules/ECMAddTests.cmake @@ -23,9 +23,13 @@  # give an indication of where to look for a failing test.  #  # If the flag GUI is passed the test binary will be a GUI executable, otherwise -# the resulting binary will be a console application.  The test will be linked +# the resulting binary will be a console application (regardless of the value +# of CMAKE_WIN32_EXECUTABLE or CMAKE_MACOSX_BUNDLE).  The test will be linked  # against the libraries and/or targets passed to LINK_LIBRARIES.  # +# The generated target executable will have the effects of ecm_mark_as_test() +# (from the :module:`ECMMarkAsTest` module) applied to it. +#  #  # ::  # @@ -52,6 +56,7 @@  # (To distribute this file outside of extra-cmake-modules, substitute the full  #  License text for the above reference.) +include(CMakeParseArguments)  include(ECMMarkAsTest)  include(ECMMarkNonGuiExecutable) @@ -73,7 +78,11 @@ function(ecm_add_test)    endif()    set(_testname "${ECM_ADD_TEST_NAME_PREFIX}${_targetname}") -  add_executable(${_targetname} ${_sources}) +  set(gui_args) +  if(ECM_ADD_TEST_GUI) +      set(gui_args WIN32 MACOSX_BUNDLE) +  endif() +  add_executable(${_targetname} ${gui_args} ${_sources})    if(NOT ECM_ADD_TEST_GUI)      ecm_mark_nongui_executable(${_targetname})    endif() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index bc3e5ce8..7960154a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -4,6 +4,7 @@  # with other files (as ECM itself is architecture-independent).  project(ECMTests C) +add_subdirectory(ECMAddTests)  add_subdirectory(ECMGenerateHeadersTest)  add_subdirectory(ECMSetupVersionTest)  add_subdirectory(ECMGeneratePkgConfigFile) diff --git a/tests/ECMAddTests/CMakeLists.txt b/tests/ECMAddTests/CMakeLists.txt new file mode 100644 index 00000000..e77b33f9 --- /dev/null +++ b/tests/ECMAddTests/CMakeLists.txt @@ -0,0 +1,49 @@ +macro(add_check NAME) +    string(REPLACE "." "/" dir "${NAME}") +    string(REGEX REPLACE "[^.]*\\." "" proj "${NAME}") +    add_test( +        NAME ecm_add_tests-${NAME} +        COMMAND +            ${CMAKE_CTEST_COMMAND} +            --build-and-test +            "${CMAKE_CURRENT_SOURCE_DIR}/${dir}" +            "${CMAKE_CURRENT_BINARY_DIR}/${dir}" +            --build-two-config +            --build-generator ${CMAKE_GENERATOR} +            --build-makeprogram ${CMAKE_MAKE_PROGRAM} +            --build-project ${proj} +            --build-options -DBUILD_TESTING:BOOL=ON +            ${${NAME}_EXTRA_OPTIONS} +            --test-command "${CMAKE_CTEST_COMMAND}" +        ) +    add_test( +        NAME ecm_add_tests_did_run-${NAME} +        COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_SOURCE_DIR}/check_files.cmake" ${ARGN} +        WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${dir}" +        ) +    set_property(TEST ecm_add_tests_did_run-${NAME} +        APPEND +        PROPERTY DEPENDS "ecm_add_tests-${NAME}" +        ) +endmacro() + +add_check(single_tests +    test1.txt +    test2.txt +    test3.txt +    test4.txt +    test5.txt +    test6.txt +    ) +add_check(multi_tests +    test1.txt +    test2.txt +    test3.txt +    test4.txt +    test5.txt +    test6.txt +    test7.txt +    test8.txt +    test9.txt +    ) + diff --git a/tests/ECMAddTests/check_files.cmake b/tests/ECMAddTests/check_files.cmake new file mode 100644 index 00000000..fc6003c6 --- /dev/null +++ b/tests/ECMAddTests/check_files.cmake @@ -0,0 +1,15 @@ +set(i 0) +set(in_file_args FALSE) +while (i LESS CMAKE_ARGC) +    if (in_file_args) +        if (NOT EXISTS "${CMAKE_ARGV${i}}") +            message(FATAL_ERROR "${CMAKE_ARGV${i}} does not exist") +        endif() +    elseif (CMAKE_ARGV${i} STREQUAL "-P") +        # skip script name +        math(EXPR i "${i} + 1") +        set(in_file_args TRUE) +    endif() +    math(EXPR i "${i} + 1") +endwhile() + diff --git a/tests/ECMAddTests/multi_tests/CMakeLists.txt b/tests/ECMAddTests/multi_tests/CMakeLists.txt new file mode 100644 index 00000000..ca434773 --- /dev/null +++ b/tests/ECMAddTests/multi_tests/CMakeLists.txt @@ -0,0 +1,142 @@ +project(ECMAddTests) +cmake_minimum_required(VERSION 2.8.12) + +set(ECM_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules) +set(CMAKE_MODULE_PATH "${ECM_MODULE_DIR}") + +add_library(testhelper STATIC ../testhelper.cpp) +target_include_directories(testhelper PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/..") + +enable_testing() + +include(ECMAddTests) + +# clean up to avoid false-positives from check_files.cmake +file(REMOVE +    "${CMAKE_CURRENT_BINARY_DIR}/test1.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test2.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test3.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test4.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test5.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test6.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test7.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test8.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test9.txt" +    ) + +ecm_add_tests( +    test1.cpp +    test2.cpp +    test3.cpp +    LINK_LIBRARIES testhelper +    ) +# check targets exist +get_property(_dummy TARGET test1 PROPERTY TYPE) +get_property(_dummy TARGET test2 PROPERTY TYPE) +get_property(_dummy TARGET test3 PROPERTY TYPE) +# check tests exists +get_property(_dummy TEST test1 PROPERTY TIMEOUT) +get_property(_dummy TEST test2 PROPERTY TIMEOUT) +get_property(_dummy TEST test3 PROPERTY TIMEOUT) +get_property(_is_win32 TARGET test1 PROPERTY WIN32_EXECUTABLE) +if (_is_win32) +    message(FATAL_ERROR "test1 is a WIN32 executable when it should not be") +endif() +get_property(_is_bundle TARGET test1 PROPERTY MACOSX_BUNDLE) +if (_is_bundle) +    message(FATAL_ERROR "test1 is an OS/X bundle when it should not be") +endif() +get_property(_is_win32 TARGET test2 PROPERTY WIN32_EXECUTABLE) +if (_is_win32) +    message(FATAL_ERROR "test2 is a WIN32 executable when it should not be") +endif() +get_property(_is_bundle TARGET test2 PROPERTY MACOSX_BUNDLE) +if (_is_bundle) +    message(FATAL_ERROR "test2 is an OS/X bundle when it should not be") +endif() + + +ecm_add_tests( +    test4.cpp +    test5.cpp +    LINK_LIBRARIES testhelper +    NAME_PREFIX pref_ +    ) +get_property(_dummy TARGET test4 PROPERTY TYPE) +get_property(_dummy TARGET test5 PROPERTY TYPE) +get_property(_dummy TEST pref_test4 PROPERTY TIMEOUT) +get_property(_dummy TEST pref_test5 PROPERTY TIMEOUT) +get_property(_is_win32 TARGET test4 PROPERTY WIN32_EXECUTABLE) +if (_is_win32) +    message(FATAL_ERROR "test4 is a WIN32 executable when it should not be") +endif() +get_property(_is_bundle TARGET test4 PROPERTY MACOSX_BUNDLE) +if (_is_bundle) +    message(FATAL_ERROR "test4 is an OS/X bundle when it should not be") +endif() +get_property(_is_win32 TARGET test5 PROPERTY WIN32_EXECUTABLE) +if (_is_win32) +    message(FATAL_ERROR "test5 is a WIN32 executable when it should not be") +endif() +get_property(_is_bundle TARGET test5 PROPERTY MACOSX_BUNDLE) +if (_is_bundle) +    message(FATAL_ERROR "test5 is an OS/X bundle when it should not be") +endif() + + +ecm_add_tests( +    test6.cpp +    test7.cpp +    LINK_LIBRARIES testhelper +    GUI +    ) +get_property(_dummy TARGET test6 PROPERTY TYPE) +get_property(_dummy TARGET test7 PROPERTY TYPE) +get_property(_dummy TEST test6 PROPERTY TIMEOUT) +get_property(_dummy TEST test7 PROPERTY TIMEOUT) +get_property(_is_win32 TARGET test6 PROPERTY WIN32_EXECUTABLE) +if (NOT _is_win32) +    message(FATAL_ERROR "test6 is not a WIN32 executable when it should be") +endif() +get_property(_is_bundle TARGET test6 PROPERTY MACOSX_BUNDLE) +if (NOT _is_bundle) +    message(FATAL_ERROR "test6 is not an OS/X bundle when it should be") +endif() +get_property(_is_win32 TARGET test7 PROPERTY WIN32_EXECUTABLE) +if (NOT _is_win32) +    message(FATAL_ERROR "test7 is not a WIN32 executable when it should be") +endif() +get_property(_is_bundle TARGET test7 PROPERTY MACOSX_BUNDLE) +if (NOT _is_bundle) +    message(FATAL_ERROR "test7 is not an OS/X bundle when it should be") +endif() + + +ecm_add_tests( +    test8.cpp +    test9.cpp +    LINK_LIBRARIES testhelper +    NAME_PREFIX p_ +    GUI +    ) +get_property(_dummy TARGET test8 PROPERTY TYPE) +get_property(_dummy TARGET test9 PROPERTY TYPE) +get_property(_dummy TEST p_test8 PROPERTY TIMEOUT) +get_property(_dummy TEST p_test9 PROPERTY TIMEOUT) +get_property(_is_win32 TARGET test8 PROPERTY WIN32_EXECUTABLE) +if (NOT _is_win32) +    message(FATAL_ERROR "test8 is not a WIN32 executable when it should be") +endif() +get_property(_is_bundle TARGET test8 PROPERTY MACOSX_BUNDLE) +if (NOT _is_bundle) +    message(FATAL_ERROR "test8 is not an OS/X bundle when it should be") +endif() +get_property(_is_win32 TARGET test9 PROPERTY WIN32_EXECUTABLE) +if (NOT _is_win32) +    message(FATAL_ERROR "test9 is not a WIN32 executable when it should be") +endif() +get_property(_is_bundle TARGET test9 PROPERTY MACOSX_BUNDLE) +if (NOT _is_bundle) +    message(FATAL_ERROR "test9 is not an OS/X bundle when it should be") +endif() + diff --git a/tests/ECMAddTests/multi_tests/test1.cpp b/tests/ECMAddTests/multi_tests/test1.cpp new file mode 100644 index 00000000..e5482865 --- /dev/null +++ b/tests/ECMAddTests/multi_tests/test1.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test1.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/multi_tests/test2.cpp b/tests/ECMAddTests/multi_tests/test2.cpp new file mode 100644 index 00000000..7f45bb56 --- /dev/null +++ b/tests/ECMAddTests/multi_tests/test2.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test2.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/multi_tests/test3.cpp b/tests/ECMAddTests/multi_tests/test3.cpp new file mode 100644 index 00000000..142b2765 --- /dev/null +++ b/tests/ECMAddTests/multi_tests/test3.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test3.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/multi_tests/test4.cpp b/tests/ECMAddTests/multi_tests/test4.cpp new file mode 100644 index 00000000..1ba9b148 --- /dev/null +++ b/tests/ECMAddTests/multi_tests/test4.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test4.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/multi_tests/test5.cpp b/tests/ECMAddTests/multi_tests/test5.cpp new file mode 100644 index 00000000..987af36b --- /dev/null +++ b/tests/ECMAddTests/multi_tests/test5.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test5.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/multi_tests/test6.cpp b/tests/ECMAddTests/multi_tests/test6.cpp new file mode 100644 index 00000000..6bda9f0d --- /dev/null +++ b/tests/ECMAddTests/multi_tests/test6.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test6.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/multi_tests/test7.cpp b/tests/ECMAddTests/multi_tests/test7.cpp new file mode 100644 index 00000000..069859e7 --- /dev/null +++ b/tests/ECMAddTests/multi_tests/test7.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test7.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/multi_tests/test8.cpp b/tests/ECMAddTests/multi_tests/test8.cpp new file mode 100644 index 00000000..ce762c8d --- /dev/null +++ b/tests/ECMAddTests/multi_tests/test8.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test8.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/multi_tests/test9.cpp b/tests/ECMAddTests/multi_tests/test9.cpp new file mode 100644 index 00000000..e432aeba --- /dev/null +++ b/tests/ECMAddTests/multi_tests/test9.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test9.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/single_tests/CMakeLists.txt b/tests/ECMAddTests/single_tests/CMakeLists.txt new file mode 100644 index 00000000..6af3857b --- /dev/null +++ b/tests/ECMAddTests/single_tests/CMakeLists.txt @@ -0,0 +1,122 @@ +project(ECMAddTests) +cmake_minimum_required(VERSION 2.8.12) + +set(ECM_MODULE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../modules) +set(CMAKE_MODULE_PATH "${ECM_MODULE_DIR}") + +add_library(testhelper STATIC ../testhelper.cpp) +target_include_directories(testhelper PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/..") + +enable_testing() + +include(ECMAddTests) + +# clean up to avoid false-positives from check_files.cmake +file(REMOVE +    "${CMAKE_CURRENT_BINARY_DIR}/test1.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test2.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test3.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test4.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test5.txt" +    "${CMAKE_CURRENT_BINARY_DIR}/test6.txt" +    ) + +ecm_add_test(test1.cpp +    LINK_LIBRARIES testhelper +    ) +# check target exists +get_property(_dummy TARGET test1 PROPERTY TYPE) +# check test exists +get_property(_dummy TEST test1 PROPERTY TIMEOUT) +get_property(_is_win32 TARGET test1 PROPERTY WIN32_EXECUTABLE) +if (_is_win32) +    message(FATAL_ERROR "test1 is a WIN32 executable when it should not be") +endif() +get_property(_is_bundle TARGET test1 PROPERTY MACOSX_BUNDLE) +if (_is_bundle) +    message(FATAL_ERROR "test1 is an OS/X bundle when it should not be") +endif() + + +ecm_add_test(test2.cpp +    LINK_LIBRARIES testhelper +    TEST_NAME named_test +    ) +get_property(_dummy TARGET named_test PROPERTY TYPE) +get_property(_dummy TEST named_test PROPERTY TIMEOUT) +get_property(_is_win32 TARGET named_test PROPERTY WIN32_EXECUTABLE) +if (_is_win32) +    message(FATAL_ERROR "named_test is a WIN32 executable when it should not be") +endif() +get_property(_is_bundle TARGET named_test PROPERTY MACOSX_BUNDLE) +if (_is_bundle) +    message(FATAL_ERROR "named_test is an OS/X bundle when it should not be") +endif() + + +ecm_add_test(test3.cpp +    LINK_LIBRARIES testhelper +    NAME_PREFIX prefix_ +    ) +get_property(_dummy TARGET test3 PROPERTY TYPE) +get_property(_dummy TEST prefix_test3 PROPERTY TIMEOUT) +get_property(_is_win32 TARGET test3 PROPERTY WIN32_EXECUTABLE) +if (_is_win32) +    message(FATAL_ERROR "test3 is a WIN32 executable when it should not be") +endif() +get_property(_is_bundle TARGET test3 PROPERTY MACOSX_BUNDLE) +if (_is_bundle) +    message(FATAL_ERROR "test3 is an OS/X bundle when it should not be") +endif() + + +ecm_add_test(test4.cpp +    LINK_LIBRARIES testhelper +    GUI +    ) +get_property(_dummy TARGET test4 PROPERTY TYPE) +get_property(_dummy TEST test4 PROPERTY TIMEOUT) +get_property(_is_win32 TARGET test4 PROPERTY WIN32_EXECUTABLE) +if (NOT _is_win32) +    message(FATAL_ERROR "test4 is not a WIN32 executable when it should be") +endif() +get_property(_is_bundle TARGET test4 PROPERTY MACOSX_BUNDLE) +if (NOT _is_bundle) +    message(FATAL_ERROR "test4 is not an OS/X bundle when it should be") +endif() + + +ecm_add_test(test5.cpp +    LINK_LIBRARIES testhelper +    TEST_NAME combined_test +    NAME_PREFIX another_prefix_ +    GUI +    ) +get_property(_dummy TARGET combined_test PROPERTY TYPE) +get_property(_dummy TEST another_prefix_combined_test PROPERTY TIMEOUT) +get_property(_is_win32 TARGET combined_test PROPERTY WIN32_EXECUTABLE) +if (NOT _is_win32) +    message(FATAL_ERROR "combined_test is not a WIN32 executable when it should be") +endif() +get_property(_is_bundle TARGET combined_test PROPERTY MACOSX_BUNDLE) +if (NOT _is_bundle) +    message(FATAL_ERROR "combined_test is not an OS/X bundle when it should be") +endif() + + +ecm_add_test(test6.cpp test6body.cpp +    LINK_LIBRARIES testhelper +    TEST_NAME multifile_test +    ) +get_property(_dummy TARGET multifile_test PROPERTY TYPE) +get_property(_dummy TEST multifile_test PROPERTY TIMEOUT) +get_property(_is_win32 TARGET multifile_test PROPERTY WIN32_EXECUTABLE) +if (_is_win32) +    message(FATAL_ERROR "multifile_test is a WIN32 executable when it should not be") +endif() +get_property(_is_bundle TARGET multifile_test PROPERTY MACOSX_BUNDLE) +if (_is_bundle) +    message(FATAL_ERROR "multifile_test is an OS/X bundle when it should not be") +endif() + + diff --git a/tests/ECMAddTests/single_tests/test1.cpp b/tests/ECMAddTests/single_tests/test1.cpp new file mode 100644 index 00000000..e5482865 --- /dev/null +++ b/tests/ECMAddTests/single_tests/test1.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test1.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/single_tests/test2.cpp b/tests/ECMAddTests/single_tests/test2.cpp new file mode 100644 index 00000000..7f45bb56 --- /dev/null +++ b/tests/ECMAddTests/single_tests/test2.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test2.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/single_tests/test3.cpp b/tests/ECMAddTests/single_tests/test3.cpp new file mode 100644 index 00000000..142b2765 --- /dev/null +++ b/tests/ECMAddTests/single_tests/test3.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test3.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/single_tests/test4.cpp b/tests/ECMAddTests/single_tests/test4.cpp new file mode 100644 index 00000000..1ba9b148 --- /dev/null +++ b/tests/ECMAddTests/single_tests/test4.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test4.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/single_tests/test5.cpp b/tests/ECMAddTests/single_tests/test5.cpp new file mode 100644 index 00000000..987af36b --- /dev/null +++ b/tests/ECMAddTests/single_tests/test5.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" + +int main() +{ +    make_test_file("test5.txt"); +    return 0; +} + diff --git a/tests/ECMAddTests/single_tests/test6.cpp b/tests/ECMAddTests/single_tests/test6.cpp new file mode 100644 index 00000000..33cd0421 --- /dev/null +++ b/tests/ECMAddTests/single_tests/test6.cpp @@ -0,0 +1,8 @@ +void test_body(); + +int main() +{ +    test_body(); +    return 0; +} + diff --git a/tests/ECMAddTests/single_tests/test6body.cpp b/tests/ECMAddTests/single_tests/test6body.cpp new file mode 100644 index 00000000..c3332738 --- /dev/null +++ b/tests/ECMAddTests/single_tests/test6body.cpp @@ -0,0 +1,7 @@ +#include "testhelper.h" + +void test_body() +{ +    make_test_file("test6.txt"); +} + diff --git a/tests/ECMAddTests/testhelper.cpp b/tests/ECMAddTests/testhelper.cpp new file mode 100644 index 00000000..00d0ceed --- /dev/null +++ b/tests/ECMAddTests/testhelper.cpp @@ -0,0 +1,8 @@ +#include "testhelper.h" +#include <fstream> +#include <string> + +void make_test_file(const char *filename) +{ +    std::ofstream(filename) << "test" << std::endl; +} diff --git a/tests/ECMAddTests/testhelper.h b/tests/ECMAddTests/testhelper.h new file mode 100644 index 00000000..9810ee41 --- /dev/null +++ b/tests/ECMAddTests/testhelper.h @@ -0,0 +1 @@ +void make_test_file(const char *filename); | 
