Salome HOME
Windows compatibility
[tools/medcoupling.git] / src / INTERP_KERNELTest / TestInterpKernelUtils.cxx
index d82a4c273dd761f36cc7789c72df68519562e9ab..5adeb43fc15ee2b67c8588b9550ef92fff8b29f0 100644 (file)
 //
 
 #include "TestInterpKernelUtils.hxx"
+#include "InterpKernelException.hxx"
 
 #include <cstdlib>
+#ifdef WIN32
+#include<direct.h>
+#define getcwd _getcwd
+#else
+#include <unistd.h>
+#endif
+#include <sstream>
+#include <fstream>
 
 namespace INTERP_TEST
 {
   std::string getResourceFile( const std::string& filename )
   {
     std::string resourceFile = "";
-    
-    if ( getenv("top_srcdir") ) {
-      // we are in 'make test' step
-      resourceFile = getenv("top_srcdir");
-      resourceFile += "/resources/";
-    }
-    else if ( getenv("MED_ROOT_DIR") ) {
-      // use MED_ROOT_DIR env.var
-      resourceFile = getenv("MED_ROOT_DIR");
-      resourceFile += "/share/salome/resources/med/";
+    bool good = false;
+
+    if ( getenv("MEDCOUPLING_ROOT_DIR") ) {
+      // use MEDCOUPLING_ROOT_DIR env.var
+      resourceFile = getenv("MEDCOUPLING_ROOT_DIR");
+      resourceFile += "/share/resources/med/";
+      resourceFile += filename;
+      std::ifstream my_file(resourceFile);
+      if (my_file.good())
+        good = true;
     }
-    resourceFile += filename;
+    if (!good)
+      {
+        resourceFile = getcwd(NULL, 0);
+        resourceFile += "/../../resources/";
+        std::ifstream my_file(resourceFile);
+        if (!my_file.good())
+          {
+            std::stringstream ss;
+            ss << "INTERP_TEST::getResourceFile(): could not open resource test file: " << filename << "\n";
+            throw INTERP_KERNEL::Exception(ss.str().c_str());
+          }
+      }
+
     return resourceFile;
   }