diff --git a/python/pythontest/.cache/v/cache/lastfailed b/python/pythontest/.cache/v/cache/lastfailed index 068d2ba10d0378b359dc283e618f2c1bcb82e0eb..92dcb0fc8218b1476f12837f3d77b12be11ee338 100644 --- a/python/pythontest/.cache/v/cache/lastfailed +++ b/python/pythontest/.cache/v/cache/lastfailed @@ -1,5 +1,6 @@ { "TestTools.py": true, + "TestTools.py::TestTools::()::test_failany_silent_remove": true, "TestTools.py::TestTools::test_init128": true, "TestTools.py::TestTools::test_to_param_id": true } \ No newline at end of file diff --git a/python/pythontest/TestTools.py b/python/pythontest/TestTools.py index 5803036226ea05437e84021a942e55c9e6dded6b..df41b0e1a9dfd6eccce59f47cf7cd5c3ad2d0b0e 100644 --- a/python/pythontest/TestTools.py +++ b/python/pythontest/TestTools.py @@ -6,12 +6,14 @@ import sys import subprocess import pipes import pytest +from unittest.mock import patch sys.path.append('../') import _config -from tools import (init128, to_param_id, my_error, read_ecenv, - get_cmdline_arguments, submit_job_to_ecserver, - put_file_to_ecserver) +from tools import (get_cmdline_arguments, read_ecenv, clean_up, my_error, + normal_exit, product, silent_remove, init128, to_param_id, + get_list_as_string, make_dir, put_file_to_ecserver, + submit_job_to_ecserver) class TestTools(): @@ -107,14 +109,51 @@ class TestTools(): def test_product(self): assert True - def test_silent_remove(self): - assert True + def test_success_silent_remove(self, capfd): + testfile = 'testfile.test' + open(testfile, 'w').close() + silent_remove(testfile) + out, err = capfd.readouterr() + assert os.path.isfile(testfile) == False + assert out == '' + + def test_failnotexist_silent_remove(self, capfd): + testfile = 'testfile.test' + silent_remove(testfile) + out, err = capfd.readouterr() + assert os.path.isfile(testfile) == False + assert out == '' + + @patch(silent_remove) + def test_failany_silent_remove(self, mock_silent_remove): + testfile = 'testfileany.test' + mock_silent_remove.side_effect = OSError + with pytest.raises(OSError) as pytest_wrapped_e: + silent_remove(testfile) + #out, err = capfd.readouterr() + #assert os.path.isfile(testfile) == False + #assert out == '' def test_get_list_as_string(self): assert True - def test_make_dir(self): - assert True + def test_warningexist_make_dir(self, capfd): + testdir = 'TestData' + make_dir(testdir) + out, err = capfd.readouterr() + assert out.strip() == 'WARNING: Directory {0} already exists!'.format(testdir) + + def test_failany_make_dir(self): + testdir = '/test' # force a permission denied error + with pytest.raises(OSError) as pytest_wrapped_e: + make_dir(testdir) + assert pytest_wrapped_e.type == OSError + + def test_success_make_dir(self): + testdir = 'testing_mkdir' + make_dir(testdir) + assert os.path.exists(testdir) == True + os.rmdir(testdir) def test_fail_put_file_to_ecserver(self): ecuid=os.environ['ECUID'] diff --git a/python/tools.py b/python/tools.py index 3c700639314b9aa6c12db9772022634f0c502a6d..a432e64d2ec487286a52be76bf69f3aaa3c723d0 100644 --- a/python/tools.py +++ b/python/tools.py @@ -315,7 +315,7 @@ def product(*args, **kwds): def silent_remove(filename): ''' @Description: - If "filename" exists , it is removed. + Remove file if it exists. The function does not fail if the file does not exist. @Input: @@ -328,7 +328,6 @@ def silent_remove(filename): try: os.remove(filename) except OSError as e: - # this would be "except OSError, e:" before Python 2.6 if e.errno != errno.ENOENT: # errno.ENOENT = no such file or directory raise # re-raise exception if a different error occured @@ -426,7 +425,7 @@ def make_dir(directory): @Input: directory: string - The directory path which should be created. + The directory name including the path which should be created. @Return: <nothing>