From f408de1f1abcf207e5054ab924f3e2816499bb0a Mon Sep 17 00:00:00 2001
From: Markus Frank <Markus.Frank@cern.ch>
Date: Tue, 25 Jun 2019 19:24:53 +0200
Subject: [PATCH] Update GDML tests to use ROOT GDML converter

---
 DDCore/src/gdml/GdmlPlugins.cpp        | 17 +++++++++++++++++
 examples/CLICSiD/CMakeLists.txt        |  8 +++++++-
 examples/ClientTests/CMakeLists.txt    |  8 +++++++-
 examples/LHeD/CMakeLists.txt           |  8 +++++++-
 examples/SimpleDetector/CMakeLists.txt |  6 +++++-
 5 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/DDCore/src/gdml/GdmlPlugins.cpp b/DDCore/src/gdml/GdmlPlugins.cpp
index 22a3c166f..183d93526 100644
--- a/DDCore/src/gdml/GdmlPlugins.cpp
+++ b/DDCore/src/gdml/GdmlPlugins.cpp
@@ -229,4 +229,21 @@ static long gdml_extract(Detector& description, int argc, char** argv) {
 }
 DECLARE_APPLY(DD4hep_ROOTGDMLExtract,gdml_extract)
 
+/// Factory for backwards compatibility
+static long create_gdml_from_dd4hep(Detector& description, int argc, char** argv) {
+  if ( argc > 0 )    {
+    string output = argv[0];
+    if ( output.substr(0,5) == "file:" ) output = output.substr(6);
+    const char* av[] = {"DD4hepGeometry2GDML", "-output", output.c_str(), "-path", "/world", 0};
+    if ( 1 == gdml_extract(description, 5, (char**)av) )   {
+      printout(INFO,"Geometry2GDML","+++ Successfully extracted GDML to %s",output.c_str());
+      return 1;
+    }
+    except("Geometry2GDML","+++ FAILED to extract GDML file %s.",output.c_str());
+  }
+  except("Geometry2GDML","+++ No output file name given.");
+  return 0;
+}
+DECLARE_APPLY(DD4hepGeometry2GDML, create_gdml_from_dd4hep)
+
 #endif
diff --git a/examples/CLICSiD/CMakeLists.txt b/examples/CLICSiD/CMakeLists.txt
index 9967ff104..d0a8c570b 100644
--- a/examples/CLICSiD/CMakeLists.txt
+++ b/examples/CLICSiD/CMakeLists.txt
@@ -34,7 +34,13 @@ dd4hep_configure_scripts ( CLICSiD DEFAULT_SETUP WITH_TESTS )
 #---Testing-------------------------------------------------------------------------
 #
 #----- Tests for CLICSid: here we simply require that at least 100 volumes have been converted
-foreach ( typ description gdml vis )
+dd4hep_add_test_reg ( "CLICSiD_converter_gdml_LONGTEST" 
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_CLICSiD.sh"
+  EXEC_ARGS  geoConverter -compact2gdml 
+                          -input file:${CLICSiDEx_INSTALL}/compact/compact.xml
+                          -output file:CLICSiD.gdml
+  REGEX_PASS " Successfully extracted GDML to" )
+foreach ( typ description vis )
   dd4hep_add_test_reg ( "CLICSiD_converter_${typ}_LONGTEST" 
     COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_CLICSiD.sh"
     EXEC_ARGS  geoConverter -compact2${typ} 
diff --git a/examples/ClientTests/CMakeLists.txt b/examples/ClientTests/CMakeLists.txt
index a44d06721..20b79de65 100644
--- a/examples/ClientTests/CMakeLists.txt
+++ b/examples/ClientTests/CMakeLists.txt
@@ -205,7 +205,13 @@ foreach (test Assemblies BoxTrafos IronCylinder LheD_tracker MagnetFields Materi
       REGEX_PASS "\\+\\+\\+ Checked [1-9][0-9]* materials in volume placements.   0 are BAD." )
             
   # Test format conversions
-  foreach( type description gdml vis )
+  dd4hep_add_test_reg( ClientTests_converter_gdml_${test}
+    COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_ClientTests.sh"
+    EXEC_ARGS  geoConverter -compact2gdml
+                            -input file:${ClientTestsEx_INSTALL}/compact/${test}.xml
+                            -output file:${test}.gdml
+    REGEX_PASS " Successfully extracted GDML to" )
+  foreach( type description vis )
     dd4hep_add_test_reg( ClientTests_converter_${type}_${test}
       COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_ClientTests.sh"
       EXEC_ARGS  geoConverter -compact2${type}
diff --git a/examples/LHeD/CMakeLists.txt b/examples/LHeD/CMakeLists.txt
index 17a775f42..98813ff25 100644
--- a/examples/LHeD/CMakeLists.txt
+++ b/examples/LHeD/CMakeLists.txt
@@ -38,7 +38,13 @@ dd4hep_configure_scripts(LHeD DEFAULT_SETUP WITH_TESTS)
 #---Testing-------------------------------------------------------------------------
 #
 #----- Tests for LHeD: here we simply require that at least 100 volumes have been converted
-foreach ( typ description gdml vis )
+dd4hep_add_test_reg ( "LHeD_converter_gdml_LONGTEST" 
+  COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_LHeD.sh"
+  EXEC_ARGS  geoConverter -compact2gdml 
+                          -input file:${LHeDEx_INSTALL}/compact/compact.xml
+                          -output file:LHeD.gdml
+  REGEX_PASS " Successfully extracted GDML to" )
+foreach ( typ description vis )
   dd4hep_add_test_reg ( "LHeD_converter_${typ}_LONGTEST" 
     COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_LHeD.sh"
     EXEC_ARGS  geoConverter -compact2${typ} 
diff --git a/examples/SimpleDetector/CMakeLists.txt b/examples/SimpleDetector/CMakeLists.txt
index d1efb9cb3..2e7387a42 100644
--- a/examples/SimpleDetector/CMakeLists.txt
+++ b/examples/SimpleDetector/CMakeLists.txt
@@ -27,7 +27,11 @@ dd4hep_configure_scripts(SimpleDetector DEFAULT_SETUP WITH_TESTS)
 
 #***  Testing  *********************************************************************
 foreach (test Simple_ILD)
-  foreach( type description gdml vis )
+  dd4hep_add_test_reg( SimpleDetector_converter_gdml
+    COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_SimpleDetector.sh"
+    EXEC_ARGS  geoConverter -compact2gdml -input file:${CMAKE_CURRENT_SOURCE_DIR}/compact/${test}.xml -output file:${test}.gdml
+    REGEX_PASS " Successfully extracted GDML to")
+  foreach( type description vis )
     dd4hep_add_test_reg( SimpleDetector_converter_${type}
       COMMAND    "${CMAKE_INSTALL_PREFIX}/bin/run_test_SimpleDetector.sh"
       EXEC_ARGS  geoConverter -compact2${type} -input file:${CMAKE_CURRENT_SOURCE_DIR}/compact/${test}.xml -output file:${test}.${type}
-- 
GitLab