Просмотр исходного кода

Tests: Split Fortran module testing into separate FortranModules test

The main Fortran test is not granular enough.  Split some into another
test.
Brad King 9 лет назад
Родитель
Сommit
eb8cd35684

+ 13 - 1
Tests/CMakeLists.txt

@@ -3097,10 +3097,22 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
       --build-project testf
       --build-two-config
       --build-options ${build_options}
-        -DCMake_TEST_NESTED_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM}
       --test-command testf)
     list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/Fortran")
 
+    if(CMAKE_Fortran_COMPILER_SUPPORTS_F90)
+      add_test(FortranModules ${CMAKE_CTEST_COMMAND}
+        --build-and-test
+        "${CMake_SOURCE_DIR}/Tests/FortranModules"
+        "${CMake_BINARY_DIR}/Tests/FortranModules"
+        ${build_generator_args}
+        --build-project FortranModules
+        --build-options ${build_options}
+          -DCMake_TEST_NESTED_MAKE_PROGRAM:FILEPATH=${CMake_TEST_EXPLICIT_MAKE_PROGRAM}
+        )
+      list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/FortranModules")
+    endif()
+
     # FortranCInterface tests.
     if(UNIX)
       configure_file(${CMAKE_CURRENT_SOURCE_DIR}/FortranC/Flags.cmake.in

+ 0 - 85
Tests/Fortran/CMakeLists.txt

@@ -1,8 +1,5 @@
 cmake_minimum_required (VERSION 3.1)
 project(testf C CXX Fortran)
-if(NOT DEFINED CMake_TEST_NESTED_MAKE_PROGRAM AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
-  set(CMake_TEST_NESTED_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM}")
-endif()
 
 message("CTEST_FULL_OUTPUT ")
 set(CMAKE_VERBOSE_MAKEFILE 1)
@@ -144,85 +141,3 @@ else()
   endif()
 
 endif()
-
-
-
-
-set(TEST_MODULE_DEPENDS 0)
-if(CMAKE_Fortran_COMPILER_SUPPORTS_F90)
-  add_executable(test_module
-    test_module_main.f90
-    test_module_implementation.f90
-    test_module_interface.f90)
-
-  add_executable(test_use_in_comment_fixedform
-    test_use_in_comment_fixedform.f)
-  set_property(SOURCE test_use_in_comment_fixedform.f PROPERTY Fortran_FORMAT FIXED)
-  add_executable(test_use_in_comment_freeform
-    test_use_in_comment_freeform.f90)
-  set_property(SOURCE test_use_in_comment_freeform.f90 PROPERTY Fortran_FORMAT FREE)
-
-  add_executable(test_in_interface
-    in_interface/main.f90
-    in_interface/module.f90)
-
-  add_definitions(-DFOO -DBAR=1)
-  include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
-  add_executable(test_preprocess test_preprocess.F90 test_preprocess_module.F90)
-
-  set(TEST_MODULE_DEPENDS 1)
-endif()
-
-if(TEST_MODULE_DEPENDS)
-  # Build the external project separately using a custom target.
-  # Make sure it uses the same build configuration as this test.
-  if(CMAKE_CONFIGURATION_TYPES)
-    set(External_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}")
-    set(External_BUILD_TYPE)
-  else()
-    set(External_CONFIG_TYPE)
-    set(External_BUILD_TYPE -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE})
-  endif()
-  set(External_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/External")
-  set(External_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/External")
-  if("${CMAKE_CURRENT_BINARY_DIR}" MATCHES " ")
-    # Our build tree has a space, so the build tool supports spaces.
-    # Test using modules from a path with spaces.
-    string(APPEND External_BINARY_DIR " Build")
-  endif()
-  add_custom_command(
-    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ExternalProject
-    COMMAND ${CMAKE_CTEST_COMMAND}
-    ARGS ${External_CONFIG_TYPE}
-         --build-and-test
-         ${External_SOURCE_DIR}
-         ${External_BINARY_DIR}
-         --build-noclean
-         --build-two-config
-         --build-project ExtFort
-         --build-generator ${CMAKE_GENERATOR}
-         --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
-         --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
-         --build-options -DCMAKE_Fortran_COMPILER:STRING=${CMAKE_Fortran_COMPILER}
-                         -DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}
-                         -DCMAKE_Fortran_FLAGS_DEBUG:STRING=${CMAKE_Fortran_FLAGS_DEBUG}
-                         -DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}
-                         -DCMAKE_Fortran_FLAGS_MINSIZEREL:STRING=${CMAKE_Fortran_FLAGS_MINSIZEREL}
-                         -DCMAKE_Fortran_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_Fortran_FLAGS_RELWITHDEBINFO}
-                         -DCMAKE_MAKE_PROGRAM:FILEPATH=${CMake_TEST_NESTED_MAKE_PROGRAM}
-                         ${External_BUILD_TYPE}
-    VERBATIM
-    )
-  add_custom_target(ExternalTarget ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ExternalProject)
-
-  # Test module output directory if available.
-  if(CMAKE_Fortran_MODDIR_FLAG)
-    set(Library_MODDIR "${CMAKE_CURRENT_BINARY_DIR}/Library/modules")
-  else()
-    set(Library_MODDIR "${CMAKE_CURRENT_BINARY_DIR}/Library")
-  endif()
-
-  add_subdirectory(Library)
-  add_subdirectory(Subdir)
-  add_subdirectory(Executable)
-endif()

+ 78 - 0
Tests/FortranModules/CMakeLists.txt

@@ -0,0 +1,78 @@
+cmake_minimum_required (VERSION 3.1)
+project(FortranModules Fortran)
+
+if(NOT DEFINED CMake_TEST_NESTED_MAKE_PROGRAM AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
+  set(CMake_TEST_NESTED_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM}")
+endif()
+
+add_executable(test_module
+  test_module_main.f90
+  test_module_implementation.f90
+  test_module_interface.f90)
+
+add_executable(test_use_in_comment_fixedform
+  test_use_in_comment_fixedform.f)
+set_property(SOURCE test_use_in_comment_fixedform.f PROPERTY Fortran_FORMAT FIXED)
+add_executable(test_use_in_comment_freeform
+  test_use_in_comment_freeform.f90)
+set_property(SOURCE test_use_in_comment_freeform.f90 PROPERTY Fortran_FORMAT FREE)
+
+add_executable(test_in_interface
+  in_interface/main.f90
+  in_interface/module.f90)
+
+add_definitions(-DFOO -DBAR=1)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
+add_executable(test_preprocess test_preprocess.F90 test_preprocess_module.F90)
+
+# Build the external project separately using a custom target.
+# Make sure it uses the same build configuration as this test.
+if(CMAKE_CONFIGURATION_TYPES)
+  set(External_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}")
+  set(External_BUILD_TYPE)
+else()
+  set(External_CONFIG_TYPE)
+  set(External_BUILD_TYPE -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE})
+endif()
+set(External_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/External")
+set(External_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/External")
+if("${CMAKE_CURRENT_BINARY_DIR}" MATCHES " ")
+  # Our build tree has a space, so the build tool supports spaces.
+  # Test using modules from a path with spaces.
+  string(APPEND External_BINARY_DIR " Build")
+endif()
+add_custom_command(
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ExternalProject
+  COMMAND ${CMAKE_CTEST_COMMAND}
+  ARGS ${External_CONFIG_TYPE}
+       --build-and-test
+       ${External_SOURCE_DIR}
+       ${External_BINARY_DIR}
+       --build-noclean
+       --build-two-config
+       --build-project ExtFort
+       --build-generator ${CMAKE_GENERATOR}
+       --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
+       --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
+       --build-options -DCMAKE_Fortran_COMPILER:STRING=${CMAKE_Fortran_COMPILER}
+                       -DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}
+                       -DCMAKE_Fortran_FLAGS_DEBUG:STRING=${CMAKE_Fortran_FLAGS_DEBUG}
+                       -DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}
+                       -DCMAKE_Fortran_FLAGS_MINSIZEREL:STRING=${CMAKE_Fortran_FLAGS_MINSIZEREL}
+                       -DCMAKE_Fortran_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_Fortran_FLAGS_RELWITHDEBINFO}
+                       -DCMAKE_MAKE_PROGRAM:FILEPATH=${CMake_TEST_NESTED_MAKE_PROGRAM}
+                       ${External_BUILD_TYPE}
+  VERBATIM
+  )
+add_custom_target(ExternalTarget ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ExternalProject)
+
+# Test module output directory if available.
+if(CMAKE_Fortran_MODDIR_FLAG)
+  set(Library_MODDIR "${CMAKE_CURRENT_BINARY_DIR}/Library/modules")
+else()
+  set(Library_MODDIR "${CMAKE_CURRENT_BINARY_DIR}/Library")
+endif()
+
+add_subdirectory(Library)
+add_subdirectory(Subdir)
+add_subdirectory(Executable)

+ 0 - 0
Tests/Fortran/Executable/CMakeLists.txt → Tests/FortranModules/Executable/CMakeLists.txt


+ 0 - 0
Tests/Fortran/Executable/main.f90 → Tests/FortranModules/Executable/main.f90


+ 0 - 0
Tests/Fortran/External/CMakeLists.txt → Tests/FortranModules/External/CMakeLists.txt


+ 0 - 0
Tests/Fortran/External/a.f90 → Tests/FortranModules/External/a.f90


+ 0 - 0
Tests/Fortran/Library/CMakeLists.txt → Tests/FortranModules/Library/CMakeLists.txt


+ 0 - 0
Tests/Fortran/Library/a.f90 → Tests/FortranModules/Library/a.f90


+ 0 - 0
Tests/Fortran/Library/b.f90 → Tests/FortranModules/Library/b.f90


+ 0 - 0
Tests/Fortran/Library/main.f90 → Tests/FortranModules/Library/main.f90


+ 0 - 0
Tests/Fortran/Subdir/CMakeLists.txt → Tests/FortranModules/Subdir/CMakeLists.txt


+ 0 - 0
Tests/Fortran/Subdir/subdir.f90 → Tests/FortranModules/Subdir/subdir.f90


+ 0 - 0
Tests/Fortran/in_interface/main.f90 → Tests/FortranModules/in_interface/main.f90


+ 0 - 0
Tests/Fortran/in_interface/module.f90 → Tests/FortranModules/in_interface/module.f90


+ 0 - 0
Tests/Fortran/include/test_preprocess.h → Tests/FortranModules/include/test_preprocess.h


+ 0 - 0
Tests/Fortran/test_module_implementation.f90 → Tests/FortranModules/test_module_implementation.f90


+ 0 - 0
Tests/Fortran/test_module_interface.f90 → Tests/FortranModules/test_module_interface.f90


+ 0 - 0
Tests/Fortran/test_module_main.f90 → Tests/FortranModules/test_module_main.f90


+ 0 - 0
Tests/Fortran/test_preprocess.F90 → Tests/FortranModules/test_preprocess.F90


+ 0 - 0
Tests/Fortran/test_preprocess_module.F90 → Tests/FortranModules/test_preprocess_module.F90


+ 0 - 0
Tests/Fortran/test_use_in_comment_fixedform.f → Tests/FortranModules/test_use_in_comment_fixedform.f


+ 0 - 0
Tests/Fortran/test_use_in_comment_freeform.f90 → Tests/FortranModules/test_use_in_comment_freeform.f90