]> Creatis software - clitk.git/blobdiff - tests/tools/toolTestRunner.cxx
tests for clitkGet*
[clitk.git] / tests / tools / toolTestRunner.cxx
index 4e13ec09ee31fd67304cd869ea326b3dfdb82ec1..0eb1f902a418171f53774694c3f7f979f99bc906 100644 (file)
@@ -32,18 +32,14 @@ int getOutputOptionIndex(int argc, char** argv){
   }
   return NO_OUTPUT_OPTION;
 }
-char* getTmpFileName(){
+inline char* getTmpFileName(){
   char buffer [L_tmpnam];
-  char * pointer;
-
   char* back = tmpnam (buffer);
   if(back==NULL){
-    std::cout<<"fail to get temporary file name"<<std::endl;
     exit(1);
   }
-  return pointer;
+  return back;
 }
-//todo, check if files exist
 /**
  * argv
  * [1] executable
@@ -55,25 +51,39 @@ char* getTmpFileName(){
  * [2.x] and [2.x+1] are optional
  */
 int main(int argc, char** argv){
+  //reference file must exist or we fail
+  char* refFile = argv[argc-1];
+  if(!(itksys::SystemTools::FileExists(refFile, true))){
+    std::cout<<"refFile "<<refFile<<" doesn't exist"<<std::endl; 
+    return 1;
+  } 
+  
   std::ostringstream cmd_line;
-  for(int i=1; i<argc; i++){
+  cmd_line<<CLITK_TEST_TOOLS_PATH;
+  for(int i=1; i<argc-1; i++){
+  //we should ensure the file exists, find an -i index or a long file name maybe?
       cmd_line<<argv[i]<<" ";
   }
+
+  //look for the need of generating an output file
   int outputOptionIndex = getOutputOptionIndex(argc, argv);
   char* outFile;
   if(NO_OUTPUT_OPTION==outputOptionIndex){
     outFile = getTmpFileName();
-    cmd_line<<" "<<outFile;
+    cmd_line<<" "<<outFile;
   }else{
-    outFile = argv[outputOptionIndex];
+    //todo test this else branch
+    std::string s = std::string(CLITK_TEST_DATA_PATH);
+    s+=argv[outputOptionIndex];
+    //DO NOT MODIFY outFile
+    outFile = (char*)s.c_str();
   }
   
-  std::cout<<"running "<<cmd_line.str()<<std::endl;
+  //run the command line
   system(cmd_line.str().c_str());
+  
   //files should be equal, so if this is the case return success=0
-  char* refFile = argv[argc-1];
-  std::cout<<"comapring "<<outFile<<" to "<<refFile<<std::endl;
-  bool fail = (itksys::SystemTools::FilesDiffer(outFile, refFile))?0:1;
+  int fail = (itksys::SystemTools::FilesDiffer(outFile, refFile))?1:0;
   remove(outFile);
   return fail;
 }