Corrections to test files
authorAnthony Stone <ajs1@cam.ac.uk>
Mon, 29 Oct 2018 15:06:31 +0000 (15:06 +0000)
committerAnthony Stone <ajs1@cam.ac.uk>
Mon, 29 Oct 2018 16:04:15 +0000 (16:04 +0000)
tests/H2CO..HF/check/freq
tests/basinhop/chk_out.py
tests/cmp_freq.py
tests/functions.pyc
tests/orient_tests.py
tests/run.test [deleted file]

index 4a15077..dd8194c 100644 (file)
         0.0000012272i
         0.0000724319i
        62.1649400342i
-      544.5655051429 
-      400.7486943789 
-      197.2800684636 
-      153.7164487584 
-       56.6088831696 
-        0.0032975431 
-        0.0000006795 
-        0.0000003746i
-        0.0000008948i
-        0.0026200905i
-        0.0035293553i
-      544.5655051338 
-      400.7486943791 
-      197.2800684632 
-      153.7164487595 
-       56.6088831698 
-        0.0032969428 
-        0.0000010326 
-        0.0000002250i
-        0.0000002741i
-        0.0026200918i
-        0.0035297685i
index 0336af5..688452e 100755 (executable)
@@ -4,7 +4,7 @@
 """Check output file for energy minima.
 """
 
-from functions import *
+from functions import ofile
 import argparse
 import re
 # import os.path
@@ -50,11 +50,14 @@ while True:
     break
   m= re.match("Step \d+: +new minimum \d+, energy = +(-?\d+\.\d+)", new.lines[new.p])
   if m:
-    E = m.group(1)
-    if E in minima.keys():
-      minima[E] += 1
-    else:
-      print "New minimum {}".format(E)
+    F = m.group(1)
+    old = False
+    for E in minima.keys():
+      if abs(float(F)-float(E)) < 1e-4:
+        minima[E] += 1
+        old = True
+    if not old:
+      print "New minimum {}".format(F)
       ok = False
   new.p += 1
 
index 578ab57..160cf9d 100755 (executable)
@@ -36,7 +36,7 @@ else:
 f2 = ofile(file2)
 print "\nChecking {} against {}".format(file1,file2)
 
-eps = 1.0e-6
+eps = 1.0e-5
 p = 0
 ok = True
 while p < len(f1.lines) and p < len(f2.lines):
index 521cd20..9933f7c 100644 (file)
Binary files a/tests/functions.pyc and b/tests/functions.pyc differ
index a575bc7..588bc33 100755 (executable)
@@ -11,6 +11,7 @@ import os
 import subprocess
 import datetime
 
+#  Get the absolute path to this file
 this = os.path.abspath(__file__)
 # print this
 
@@ -53,57 +54,61 @@ which.add_argument("--compiler", default="",
 which.add_argument("--exe", help="Executable Orient file", default="")
 parser.add_argument("--debug", help="Use debug version",
                     action="store_true")
-parser.add_argument("--clear", help="Mark all tests as not done",
+parser.add_argument("--clear", help="Mark all or specified tests as not done",
                     action="store_true")
 parser.add_argument("--clean", action="store_true",
-                    help="Delete test output files, and mark all tests as not done")
+                    help="Delete output files for all or specified tests, and mark them as not done")
 parser.add_argument("--all", help="Run all tests", action="store_true")
 parser.add_argument("--force", help="Force tests to be run",
                     action="store_true")
 
 args = parser.parse_args()
 
-if "ORIENT" in os.environ:
-  base = os.environ["ORIENT"]
-else:
-  base = os.path.dirname(os.path.dirname(this))
+if "ORIENT" in os.environ:
+  base = os.environ["ORIENT"]
+else:
+base = os.path.dirname(os.path.dirname(this))
 os.chdir(os.path.join(base,"tests"))
 here = os.getcwd()
-print here
+print "Working in directory {}".format(here)
 
 test_list = ["H2CO..HF", "formamide", "water_hexamer", "HF..HF",
            "H2O..H2O", "virialcoeff", "fit_CH4", "NaCl..w2",
                "MD", "basinhop", "dielectric"]
 #  ,"urea_nanocrystal"]
 
+def clean(test):
+  #  Remove test output files
+  os.chdir(test)
+  if os.path.exists("clean"):
+    try:
+      s = subprocess.check_output("clean", shell=True)
+    except subprocess.CalledProcessError:
+      print s
+    # print "{} test output files cleared".format(test)
+  os.chdir("..")
+  #  Remove "test done" flag file
+  if os.path.exists(test+".done"):
+    os.remove(test+".done")
+
+if args.all or len(args.tests) == 0:
+  tests = test_list
+else:
+  tests = args.tests
+
 if args.clear:
-  for test in test_list:
+  for test in tests:
     if os.path.exists(test+".done"):
       if args.force:
         os.remove(test+".done")
   exit(0)
 
 if args.clean:
-  for test in test_list:
-    #  Remove test output files
-    os.chdir(test)
-    if os.path.exists("clean"):
-      try:
-        s = subprocess.check_output("clean", shell=True)
-      except subprocess.CalledProcessError:
-        print s
-      print "{} test output files cleared".format(test)
-    os.chdir("..")
-    #  Remove "test done" flag file
-    if os.path.exists(test+".done"):
-      os.remove(test+".done")
+  for test in tests:
+    #  Remove test output files and exit
+    clean(test)
   exit(0)
 
-if args.all or len(args.tests) == 0:
-  tests = test_list
-else:
-  tests = args.tests
-
 if args.exe:
   program = args.exe
 elif args.compiler:
@@ -113,7 +118,6 @@ elif args.compiler:
     program = os.path.join(base,arch,compiler,"exe","orient")
 else:
   program = os.path.join(base,"bin","orient")
-print program
 
 def put(string):
   #  Note: explicit newline needed at end of string
@@ -143,6 +147,7 @@ with open("test.log","w") as LOG:
         continue
     print "-----------------------------------------------"
     print("Test {}... ".format(test))
+    clean(test)
     os.chdir(test)
     if os.path.exists("prologue"):
       with open("prologue") as PRLG:
diff --git a/tests/run.test b/tests/run.test
deleted file mode 100755 (executable)
index 3425b6b..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/bin/csh
-#
-#  Usage: run.test [option] dir dir ...
-#     or  run.test [option] *
-#
-#  where each `dir' is a directory containing a data file and a subdirectory
-#  called "check" containing all the output files from a previous run of
-#  the program.
-#  The second form runs all tests, ignoring ordinary files in the argument
-#  list.
-#  Options:
-#  -p program-file
-#  Use the specified executable file. The default is ${base}/bin/orient.
-#
-set here = $cwd
-cd ..
-set base = $cwd
-if ( $#argv == 0 ) then
-  cat <<EOF
-Usage: run.test [option] dir dir ...
-   or  run.test [option] *
-
-where each "dir" is a directory containing a data file and a subdirectory
-called "check" containing all the output files from a previous run of
-the program.
-The second form runs all tests, ignoring ordinary files in the argument
-list.
-Options:
--p program-file
-Use the specified executable file. The default is ${base}/bin/orient.
-
-EOF
-  exit
-endif
-
-set program = ${base}/bin/orient
-
-cd $here
-set log = $cwd/test.log
-# echo "Program version $program" >> $log
-
-while ( $#argv > 0 )
-  switch ($1)
-  case -exe:
-    set program = ${base}/${COMPILER}/exe/orient
-    # echo "Program version $program" >> $log
-    breaksw
-  case -g:
-  case -debug:
-    set program = ${base}/${COMPILER}/debug/orient
-    # echo "Program version $program" >> $log
-    breaksw
-  case -n:
-    set program = /opt/local/bin/orient
-    # echo "Program version $program" >> $log
-    breaksw
-  case -p:
-    shift
-    set program = $1
-    # echo "Program version $program" >> $log
-    breaksw
-  case -v:
-    shift
-    set v = $1
-    breaksw
-  case -noperl:
-    set noperl
-    breaksw
-  case -t:
-    set touch
-    breaksw
-  default:
-    # echo $1
-    if ( -d $1 ) then
-      # echo "--------------------------------------------" | tee -a $log
-      echo "$1 ..." | tee -a $log
-      # echo "Program version $program" | tee -a $log
-      unset diffs
-      unset nocheck
-      cd $1
-      ./clean
-      if ( -e ./prologue ) cat ./prologue
-      if ( -e data2 ) then
-        ../run2 -p $program -l log
-        if ( $status == 0 ) then
-         if ( $?touch ) then
-            touch ../$1.done
-          endif
-          echo "Test successful" | tee -a $log
-        else
-          echo "Test failed" | tee -a $log
-        endif
-      else
-        $program < data > out  || (echo Program error; goto error)
-       if ( -e orient_error ) cat orient_error
-        if (-e check.sh && ! $?noperl ) then
-          ./check.sh
-         # echo $status
-         if ( $status == 0 ) then
-           if ( $?touch ) then
-              touch ../$1.done
-            endif
-            echo "Test successful" | tee -a $log
-          else
-            echo "Test failed" | tee -a $log
-          endif
-        else
-          ../check.sh -l $log
-        endif
-        unset touch
-      endif
-      cd ..
-    else
-      echo "${1}: not a directory"
-    endif
-  endsw
-  shift
-end
-
-exit 0
-
-error:
-exit 1