This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  77e71facd18fda4ca071d243e470d02eca2cc71f (commit)
       via  ccd29b9af849316a9361ceb8d0addb24e7158382 (commit)
      from  a2cb652451fcceb2eb545c3a2ddca08f55cdec93 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=77e71facd18fda4ca071d243e470d02eca2cc71f
commit 77e71facd18fda4ca071d243e470d02eca2cc71f
Merge: a2cb652 ccd29b9
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Thu Apr 17 09:54:00 2014 -0400
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Thu Apr 17 09:54:00 2014 -0400

    Merge topic 'ExternalData-missing-not-fatal' into next
    
    ccd29b9a ExternalData: Warn on missing file instead of failing


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ccd29b9af849316a9361ceb8d0addb24e7158382
commit ccd29b9af849316a9361ceb8d0addb24e7158382
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Thu Apr 17 09:31:41 2014 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Thu Apr 17 09:45:09 2014 -0400

    ExternalData: Warn on missing file instead of failing
    
    When the primary source tree path named by a DATA{} reference does not
    exist, produce an AUTHOR_WARNING instead of a FATAL_ERROR.  This is
    useful when writing a new DATA{} reference to a test reference output
    that has not been created yet.  This way the developer can run the test,
    manually verify the output, and then copy it into place to provide the
    reference and eliminate the warning.
    
    If the named source tree path is expected to be a file but exists as a
    directory, we still need to produce a FATAL_ERROR.

diff --git a/Modules/ExternalData.cmake b/Modules/ExternalData.cmake
index ee20693..73a4990 100644
--- a/Modules/ExternalData.cmake
+++ b/Modules/ExternalData.cmake
@@ -421,6 +421,7 @@ function(_ExternalData_arg target arg options var_file)
   set(external "") # Entries external to the source tree.
   set(internal "") # Entries internal to the source tree.
   set(have_original ${data_is_directory})
+  set(have_original_as_dir 0)
 
   # Process options.
   set(series_option "")
@@ -470,11 +471,18 @@ function(_ExternalData_arg target arg options var_file)
   endif()
 
   if(NOT have_original)
-    message(FATAL_ERROR "Data file referenced by argument\n"
+    if(have_original_as_dir)
+      set(msg_kind FATAL_ERROR)
+      set(msg "that is directory instead of a file!")
+    else()
+      set(msg_kind AUTHOR_WARNING)
+      set(msg "that does not exist as a file (with or without an extension)!")
+    endif()
+    message(${msg_kind} "Data file referenced by argument\n"
       "  ${arg}\n"
       "corresponds to source tree path\n"
       "  ${reldata}\n"
-      "that does not exist as a file (with or without an extension)!")
+      "${msg}")
   endif()
 
   if(external)
@@ -591,27 +599,33 @@ function(_ExternalData_arg_find_files pattern regex)
       set(alg "")
     endif()
     if("x${relname}" MATCHES "^x${regex}$" # matches
-        AND NOT IS_DIRECTORY "${top_src}/${entry}" # not a directory
         AND NOT "x${relname}" MATCHES "(^x|/)\\.ExternalData_" # not staged obj
         )
-      set(name "${top_src}/${relname}")
-      set(file "${top_bin}/${relname}")
-      if(alg)
-        list(APPEND external "${file}|${name}|${alg}")
-      elseif(ExternalData_LINK_CONTENT)
-        _ExternalData_link_content("${name}" alg)
-        list(APPEND external "${file}|${name}|${alg}")
-      elseif(NOT top_same)
-        list(APPEND internal "${file}|${name}")
-      endif()
-      if("${relname}" STREQUAL "${reldata}")
-        set(have_original 1)
+      if(IS_DIRECTORY "${top_src}/${entry}")
+        if("${relname}" STREQUAL "${reldata}")
+          set(have_original_as_dir 1)
+        endif()
+      else()
+        set(name "${top_src}/${relname}")
+        set(file "${top_bin}/${relname}")
+        if(alg)
+          list(APPEND external "${file}|${name}|${alg}")
+        elseif(ExternalData_LINK_CONTENT)
+          _ExternalData_link_content("${name}" alg)
+          list(APPEND external "${file}|${name}|${alg}")
+        elseif(NOT top_same)
+          list(APPEND internal "${file}|${name}")
+        endif()
+        if("${relname}" STREQUAL "${reldata}")
+          set(have_original 1)
+        endif()
       endif()
     endif()
   endforeach()
   set(external "${external}" PARENT_SCOPE)
   set(internal "${internal}" PARENT_SCOPE)
   set(have_original "${have_original}" PARENT_SCOPE)
+  set(have_original_as_dir "${have_original_as_dir}" PARENT_SCOPE)
 endfunction()
 
 #-----------------------------------------------------------------------------
diff --git a/Tests/Module/ExternalData/CMakeLists.txt 
b/Tests/Module/ExternalData/CMakeLists.txt
index 5a6f3d5..ebca48e 100644
--- a/Tests/Module/ExternalData/CMakeLists.txt
+++ b/Tests/Module/ExternalData/CMakeLists.txt
@@ -23,6 +23,8 @@ ExternalData_Add_Test(Data1
   COMMAND ${CMAKE_COMMAND}
     -D Data=DATA{Data.dat}
     ${Data1CheckSpaces}
+    -D DataMissing=DATA{DataMissing.dat}
+    -D DataMissingWithAssociated=DATA{DataMissing.dat,Data.dat}
     -D SeriesA=DATA{SeriesA.dat,:}
     -D SeriesB=DATA{SeriesB.dat,:}
     -D SeriesC=DATA{SeriesC.dat,:}
diff --git a/Tests/Module/ExternalData/Data1Check.cmake 
b/Tests/Module/ExternalData/Data1Check.cmake
index 5770245..485b5c6 100644
--- a/Tests/Module/ExternalData/Data1Check.cmake
+++ b/Tests/Module/ExternalData/Data1Check.cmake
@@ -8,6 +8,28 @@ if(DEFINED DataSpace)
     message(SEND_ERROR "Input file:\n  ${DataSpace}\ndoes not have expected 
content, but [[${lines}]]")
   endif()
 endif()
+if(DataMissing)
+  if(EXISTS "${DataMissing}")
+    message(SEND_ERROR
+      "Input file:\n"
+      "  ${DataMissing}\n"
+      "exists but should not."
+      )
+  endif()
+else()
+  message(SEND_ERROR "DataMissing is not set!")
+endif()
+if(DataMissingWithAssociated)
+  if(EXISTS "${DataMissingWithAssociated}")
+    message(SEND_ERROR
+      "Input file:\n"
+      "  ${DataMissingWithAssociated}\n"
+      "exists but should not."
+      )
+  endif()
+else()
+  message(SEND_ERROR "DataMissingWithAssociated is not set!")
+endif()
 set(SeriesAn1 "1\\.dat")
 set(SeriesBn1 "_1\\.dat")
 set(SeriesCn1 "\\.1\\.dat")
diff --git a/Tests/RunCMake/ExternalData/Directory1-stderr.txt 
b/Tests/RunCMake/ExternalData/Directory1-stderr.txt
index 85c250f..2bc3c60 100644
--- a/Tests/RunCMake/ExternalData/Directory1-stderr.txt
+++ b/Tests/RunCMake/ExternalData/Directory1-stderr.txt
@@ -7,7 +7,7 @@ CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
 
     Directory1
 
-  that does not exist as a file \(with or without an extension\)!
+  that is directory instead of a file!
 Call Stack \(most recent call first\):
   .*
   Directory1.cmake:3 \(ExternalData_Add_Test\)
diff --git a/Tests/RunCMake/ExternalData/Directory3-result.txt 
b/Tests/RunCMake/ExternalData/Directory3-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/ExternalData/Directory3-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/ExternalData/Directory3-stderr.txt 
b/Tests/RunCMake/ExternalData/Directory3-stderr.txt
index 56a341e..ceed2a0 100644
--- a/Tests/RunCMake/ExternalData/Directory3-stderr.txt
+++ b/Tests/RunCMake/ExternalData/Directory3-stderr.txt
@@ -1,4 +1,4 @@
-CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+CMake Warning \(dev\) at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
   Data file referenced by argument
 
     DATA{Directory3/\*}
@@ -12,3 +12,4 @@ Call Stack \(most recent call first\):
   .*
   Directory3.cmake:3 \(ExternalData_Add_Test\)
   CMakeLists.txt:3 \(include\)
+This warning is for project developers.  Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/ExternalData/MissingData-result.txt 
b/Tests/RunCMake/ExternalData/MissingData-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/ExternalData/MissingData-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/ExternalData/MissingData-stderr.txt 
b/Tests/RunCMake/ExternalData/MissingData-stderr.txt
index e794f95..39ed2f1 100644
--- a/Tests/RunCMake/ExternalData/MissingData-stderr.txt
+++ b/Tests/RunCMake/ExternalData/MissingData-stderr.txt
@@ -1,4 +1,4 @@
-CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+CMake Warning \(dev\) at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
   Data file referenced by argument
 
     DATA{MissingData.txt}
@@ -10,5 +10,6 @@ CMake Error at .*/Modules/ExternalData.cmake:[0-9]+ 
\(message\):
   that does not exist as a file \(with or without an extension\)!
 Call Stack \(most recent call first\):
   .*
-  MissingData.cmake:2 \(ExternalData_Add_Test\)
+  MissingData.cmake:4 \(ExternalData_Expand_Arguments\)
   CMakeLists.txt:3 \(include\)
+This warning is for project developers.  Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/ExternalData/MissingData-stdout.txt 
b/Tests/RunCMake/ExternalData/MissingData-stdout.txt
new file mode 100644
index 0000000..addd40e
--- /dev/null
+++ b/Tests/RunCMake/ExternalData/MissingData-stdout.txt
@@ -0,0 +1 @@
+-- Missing data reference correctly transformed!
diff --git a/Tests/RunCMake/ExternalData/MissingData.cmake 
b/Tests/RunCMake/ExternalData/MissingData.cmake
index b3c8a5c..f5fefd5 100644
--- a/Tests/RunCMake/ExternalData/MissingData.cmake
+++ b/Tests/RunCMake/ExternalData/MissingData.cmake
@@ -1,5 +1,10 @@
 include(ExternalData)
-ExternalData_Add_Test(Data
-  NAME Test
-  COMMAND ${CMAKE_COMMAND} -E echo DATA{MissingData.txt}
-  )
+
+set(output "${CMAKE_SOURCE_DIR}/MissingData.txt")
+ExternalData_Expand_Arguments(Data args DATA{MissingData.txt})
+if("x${args}" STREQUAL "x${output}")
+  message(STATUS "Missing data reference correctly transformed!")
+else()
+  message(FATAL_ERROR "Missing data reference transformed to:\n  ${args}\n"
+    "but we expected:\n  ${output}")
+endif()
diff --git a/Tests/RunCMake/ExternalData/MissingDataWithAssociated-stderr.txt 
b/Tests/RunCMake/ExternalData/MissingDataWithAssociated-stderr.txt
new file mode 100644
index 0000000..315af5e
--- /dev/null
+++ b/Tests/RunCMake/ExternalData/MissingDataWithAssociated-stderr.txt
@@ -0,0 +1,15 @@
+CMake Warning \(dev\) at .*/Modules/ExternalData.cmake:[0-9]+ \(message\):
+  Data file referenced by argument
+
+    DATA{MissingData.txt,Data.txt}
+
+  corresponds to source tree path
+
+    MissingData.txt
+
+  that does not exist as a file \(with or without an extension\)!
+Call Stack \(most recent call first\):
+  .*
+  MissingDataWithAssociated.cmake:4 \(ExternalData_Expand_Arguments\)
+  CMakeLists.txt:3 \(include\)
+This warning is for project developers.  Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/ExternalData/MissingDataWithAssociated-stdout.txt 
b/Tests/RunCMake/ExternalData/MissingDataWithAssociated-stdout.txt
new file mode 100644
index 0000000..addd40e
--- /dev/null
+++ b/Tests/RunCMake/ExternalData/MissingDataWithAssociated-stdout.txt
@@ -0,0 +1 @@
+-- Missing data reference correctly transformed!
diff --git a/Tests/RunCMake/ExternalData/MissingDataWithAssociated.cmake 
b/Tests/RunCMake/ExternalData/MissingDataWithAssociated.cmake
new file mode 100644
index 0000000..a4c4638
--- /dev/null
+++ b/Tests/RunCMake/ExternalData/MissingDataWithAssociated.cmake
@@ -0,0 +1,10 @@
+include(ExternalData)
+
+set(output "${CMAKE_BINARY_DIR}/MissingData.txt")
+ExternalData_Expand_Arguments(Data args DATA{MissingData.txt,Data.txt})
+if("x${args}" STREQUAL "x${output}")
+  message(STATUS "Missing data reference correctly transformed!")
+else()
+  message(FATAL_ERROR "Missing data reference transformed to:\n  ${args}\n"
+    "but we expected:\n  ${output}")
+endif()
diff --git a/Tests/RunCMake/ExternalData/RunCMakeTest.cmake 
b/Tests/RunCMake/ExternalData/RunCMakeTest.cmake
index 93ff08f..04e3d59 100644
--- a/Tests/RunCMake/ExternalData/RunCMakeTest.cmake
+++ b/Tests/RunCMake/ExternalData/RunCMakeTest.cmake
@@ -15,6 +15,7 @@ run_cmake(LinkContentMD5)
 run_cmake(LinkContentSHA1)
 run_cmake(LinkDirectory1)
 run_cmake(MissingData)
+run_cmake(MissingDataWithAssociated)
 run_cmake(NoLinkInSource)
 run_cmake(NoURLTemplates)
 run_cmake(NormalData1)

-----------------------------------------------------------------------

Summary of changes:
 Modules/ExternalData.cmake                         |   44 +++++++++++++-------
 Tests/Module/ExternalData/CMakeLists.txt           |    2 +
 Tests/Module/ExternalData/Data1Check.cmake         |   22 ++++++++++
 Tests/RunCMake/ExternalData/Directory1-stderr.txt  |    2 +-
 Tests/RunCMake/ExternalData/Directory3-result.txt  |    1 -
 Tests/RunCMake/ExternalData/Directory3-stderr.txt  |    3 +-
 Tests/RunCMake/ExternalData/MissingData-result.txt |    1 -
 Tests/RunCMake/ExternalData/MissingData-stderr.txt |    5 ++-
 Tests/RunCMake/ExternalData/MissingData-stdout.txt |    1 +
 Tests/RunCMake/ExternalData/MissingData.cmake      |   13 ++++--
 .../MissingDataWithAssociated-stderr.txt           |   15 +++++++
 .../MissingDataWithAssociated-stdout.txt           |    1 +
 .../ExternalData/MissingDataWithAssociated.cmake   |   10 +++++
 Tests/RunCMake/ExternalData/RunCMakeTest.cmake     |    1 +
 14 files changed, 96 insertions(+), 25 deletions(-)
 delete mode 100644 Tests/RunCMake/ExternalData/Directory3-result.txt
 delete mode 100644 Tests/RunCMake/ExternalData/MissingData-result.txt
 create mode 100644 Tests/RunCMake/ExternalData/MissingData-stdout.txt
 create mode 100644 
Tests/RunCMake/ExternalData/MissingDataWithAssociated-stderr.txt
 create mode 100644 
Tests/RunCMake/ExternalData/MissingDataWithAssociated-stdout.txt
 create mode 100644 Tests/RunCMake/ExternalData/MissingDataWithAssociated.cmake


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits

Reply via email to