From c8badb39ff4af651e5ab0d2f33e85db0a41c6835 Mon Sep 17 00:00:00 2001 From: "Oleg E. Peil" Date: Fri, 16 Oct 2015 11:16:48 +0200 Subject: [PATCH] Fixed 'inpconf' tests Originally, the tests worked only when run from their respective directory. If one tries to run them from another directory (which happens when test discovery is used) the tests were not able to find the input files. Now, a dummy module 'rpath' is added to all tests whose sole role is to obtain the current path. --- python/vasp/test/_inpconf/rpath.py | 2 ++ python/vasp/test/_inpconf/runtest.sh | 2 +- python/vasp/test/_inpconf/test_general.py | 6 +++++- python/vasp/test/_inpconf/test_groups.py | 8 ++++++-- python/vasp/test/_inpconf/test_input.py | 16 ++++++++++------ python/vasp/test/_inpconf/test_parameter_set.py | 6 +++++- python/vasp/test/_inpconf/test_shells.py | 12 ++++++++---- .../vasp/test/_inpconf/test_special_parsers.py | 10 +++++++--- python/vasp/test/run_all.sh | 2 +- 9 files changed, 45 insertions(+), 19 deletions(-) create mode 100644 python/vasp/test/_inpconf/rpath.py diff --git a/python/vasp/test/_inpconf/rpath.py b/python/vasp/test/_inpconf/rpath.py new file mode 100644 index 00000000..d289e092 --- /dev/null +++ b/python/vasp/test/_inpconf/rpath.py @@ -0,0 +1,2 @@ + +pass diff --git a/python/vasp/test/_inpconf/runtest.sh b/python/vasp/test/_inpconf/runtest.sh index 9b7bd8ca..4537817b 100755 --- a/python/vasp/test/_inpconf/runtest.sh +++ b/python/vasp/test/_inpconf/runtest.sh @@ -1 +1 @@ -PYTHONPATH=../../python:../../c:$PYTHONPATH python $1 +PYTHONPATH=../..:../../../../c:$PYTHONPATH python $1 diff --git a/python/vasp/test/_inpconf/test_general.py b/python/vasp/test/_inpconf/test_general.py index 64e7518e..f52495cf 100644 --- a/python/vasp/test/_inpconf/test_general.py +++ b/python/vasp/test/_inpconf/test_general.py @@ -1,6 +1,10 @@ r""" Tests of 'parse_general()' defined in ConfigParameters class """ +import os +import rpath +_rpath = os.path.dirname(rpath.__file__) + '/' + import arraytest import numpy as np from inpconf import ConfigParameters @@ -22,7 +26,7 @@ class TestParseGeneral(arraytest.ArrayTestCase): """ # Scenario 1 def test_example(self): - conf_pars = ConfigParameters('example.cfg') + conf_pars = ConfigParameters(_rpath + 'example.cfg') conf_pars.parse_general() res = conf_pars.general expected = {'basename': 'test_base', 'efermi': 0.1} diff --git a/python/vasp/test/_inpconf/test_groups.py b/python/vasp/test/_inpconf/test_groups.py index ed3f209d..3ebc3670 100644 --- a/python/vasp/test/_inpconf/test_groups.py +++ b/python/vasp/test/_inpconf/test_groups.py @@ -1,6 +1,10 @@ r""" Tests of 'parse_groups()' defined in ConfigParameters class """ +import os +import rpath +_rpath = os.path.dirname(rpath.__file__) + '/' + import arraytest import numpy as np from inpconf import ConfigParameters @@ -24,14 +28,14 @@ class TestParseGroups(arraytest.ArrayTestCase): """ # Scenario 1 def test_gr_required(self): - conf_pars = ConfigParameters('parse_groups_1.cfg') + conf_pars = ConfigParameters(_rpath + 'parse_groups_1.cfg') err_mess = "Required parameter" with self.assertRaisesRegexp(Exception, err_mess): conf_pars.parse_groups() # Scenario 2 def test_example(self): - conf_pars = ConfigParameters('example.cfg') + conf_pars = ConfigParameters(_rpath + 'example.cfg') conf_pars.parse_groups() res = conf_pars.groups expected = [{'index': 1, 'shells': [1, 2], 'emin': -7.6, 'emax': 3.0, diff --git a/python/vasp/test/_inpconf/test_input.py b/python/vasp/test/_inpconf/test_input.py index 365b96f2..eca74ea8 100644 --- a/python/vasp/test/_inpconf/test_input.py +++ b/python/vasp/test/_inpconf/test_input.py @@ -1,6 +1,10 @@ r""" Tests of 'parse_input()' defined in ConfigParameters class """ +import os +import rpath +_rpath = os.path.dirname(rpath.__file__) + '/' + import arraytest import numpy as np from inpconf import ConfigParameters @@ -32,35 +36,35 @@ class TestParseInput(arraytest.ArrayTestCase): """ # Scenario 1 def test_no_group(self): - conf_pars = ConfigParameters('input_test_1.cfg') + conf_pars = ConfigParameters(_rpath + 'input_test_1.cfg') err_mess = "At least one group" with self.assertRaisesRegexp(AssertionError, err_mess): conf_pars.parse_input() # Scenario 2 def test_gr_required(self): - conf_pars = ConfigParameters('input_test_2.cfg') + conf_pars = ConfigParameters(_rpath + 'input_test_2.cfg') err_mess = "One \[Shell\] section is" with self.assertRaisesRegexp(KeyError, err_mess): conf_pars.parse_input() # Scenario 3 def test_no_shell(self): - conf_pars = ConfigParameters('input_test_3.cfg') + conf_pars = ConfigParameters(_rpath + 'input_test_3.cfg') err_mess = "Shell 3 referenced in" with self.assertRaisesRegexp(Exception, err_mess): conf_pars.parse_input() # Scenario 4 def test_shell_outside_groups(self): - conf_pars = ConfigParameters('input_test_4.cfg') + conf_pars = ConfigParameters(_rpath + 'input_test_4.cfg') err_mess = "Some shells are not inside" with self.assertRaisesRegexp(AssertionError, err_mess): conf_pars.parse_input() # Scenario 5 def test_example(self): - conf_pars = ConfigParameters('example.cfg') + conf_pars = ConfigParameters(_rpath + 'example.cfg') conf_pars.parse_input() # with open('parse_input.output.test', 'wt') as f: # f.write("Shells:\n") @@ -84,7 +88,7 @@ Groups: # Scenario 6 def test_example_no_groups(self): - conf_pars = ConfigParameters('example_nogroup.cfg') + conf_pars = ConfigParameters(_rpath + 'example_nogroup.cfg') conf_pars.parse_input() # with open('parse_input.output.test', 'wt') as f: # f.write("Shells:\n") diff --git a/python/vasp/test/_inpconf/test_parameter_set.py b/python/vasp/test/_inpconf/test_parameter_set.py index fb5bc988..f8d7f427 100644 --- a/python/vasp/test/_inpconf/test_parameter_set.py +++ b/python/vasp/test/_inpconf/test_parameter_set.py @@ -1,6 +1,10 @@ r""" Tests of 'parse_parameter_set()' defined in ConfigParameters class """ +import os +import rpath +_rpath = os.path.dirname(rpath.__file__) + '/' + import arraytest import numpy as np from inpconf import ConfigParameters @@ -29,7 +33,7 @@ class TestParseParameterSet(arraytest.ArrayTestCase): """ """ # Dummy ConfigParameters object - self.cpars = ConfigParameters('test1.cfg') + self.cpars = ConfigParameters(_rpath + 'test1.cfg') # Scenario 1 def test_sh_required(self): diff --git a/python/vasp/test/_inpconf/test_shells.py b/python/vasp/test/_inpconf/test_shells.py index 24f73981..062fb28d 100644 --- a/python/vasp/test/_inpconf/test_shells.py +++ b/python/vasp/test/_inpconf/test_shells.py @@ -1,6 +1,10 @@ r""" Tests of 'parse_shells()' defined in ConfigParameters class """ +import os +import rpath +_rpath = os.path.dirname(rpath.__file__) + '/' + import arraytest import numpy as np from inpconf import ConfigParameters @@ -29,28 +33,28 @@ class TestParseShells(arraytest.ArrayTestCase): """ # Scenario 1 def test_no_shell(self): - conf_pars = ConfigParameters('parse_shells_1.cfg') + conf_pars = ConfigParameters(_rpath + 'parse_shells_1.cfg') err_mess = "No projected shells" with self.assertRaisesRegexp(AssertionError, err_mess): conf_pars.parse_shells() # Scenario 2 def test_bad_indices(self): - conf_pars = ConfigParameters('parse_shells_2.cfg') + conf_pars = ConfigParameters(_rpath + 'parse_shells_2.cfg') err_mess = "Failed to extract shell indices" with self.assertRaisesRegexp(ValueError, err_mess): conf_pars.parse_shells() # Scenario 3 def test_sh_required(self): - conf_pars = ConfigParameters('parse_shells_3.cfg') + conf_pars = ConfigParameters(_rpath + 'parse_shells_3.cfg') err_mess = "Required parameter" with self.assertRaisesRegexp(Exception, err_mess): conf_pars.parse_shells() # Scenario 4 def test_two_shells(self): - conf_pars = ConfigParameters('parse_shells_4.cfg') + conf_pars = ConfigParameters(_rpath + 'parse_shells_4.cfg') conf_pars.parse_shells() res = conf_pars.shells expected = [{'user_index': 1, 'lshell': 2, 'ion_list': np.array([4, 5, 6, 7])}, diff --git a/python/vasp/test/_inpconf/test_special_parsers.py b/python/vasp/test/_inpconf/test_special_parsers.py index 233c44a0..61fbbcb6 100644 --- a/python/vasp/test/_inpconf/test_special_parsers.py +++ b/python/vasp/test/_inpconf/test_special_parsers.py @@ -1,6 +1,10 @@ r""" Tests of special parseres defined in ConfigParameters class """ +import os +import rpath +_rpath = os.path.dirname(rpath.__file__) + '/' + import arraytest import numpy as np from inpconf import ConfigParameters @@ -26,7 +30,7 @@ class TestParseStringLogical(arraytest.ArrayTestCase): """ """ # Dummy ConfigParameters object - self.cpars = ConfigParameters('test1.cfg') + self.cpars = ConfigParameters(_rpath + 'test1.cfg') # Scenario 1 def test_true(self): @@ -66,7 +70,7 @@ class TestParseStringIonList(arraytest.ArrayTestCase): """ """ # Dummy ConfigParameters object - self.cpars = ConfigParameters('test1.cfg') + self.cpars = ConfigParameters(_rpath + 'test1.cfg') # Scenario 1 def test_simple_list(self): @@ -123,7 +127,7 @@ class TestParseStringTmatrix(arraytest.ArrayTestCase): """ """ # Dummy ConfigParameters object - self.cpars = ConfigParameters('test1.cfg') + self.cpars = ConfigParameters(_rpath + 'test1.cfg') # Scenario 1 def test_number_of_columns(self): diff --git a/python/vasp/test/run_all.sh b/python/vasp/test/run_all.sh index 5d4368ea..97e004bd 100755 --- a/python/vasp/test/run_all.sh +++ b/python/vasp/test/run_all.sh @@ -1 +1 @@ -PYTHONPATH=$HOME/Codes/vasp/vasp5.3/plo_vasp/plovasp/python:$HOME/Codes/vasp/vasp5.3/plo_vasp/plovasp/c:$PYTHONPATH python test_all.py +PYTHONPATH=../:../../../c:$PYTHONPATH python test_all.py