diff --git a/tests/test_file.py b/tests/test_file.py index cb9d79ebedbd3f1f782cadd127c9e28fccf2cdb4..d1abecf41788343edace45d379b44d9bc37bd2ab 100644 --- a/tests/test_file.py +++ b/tests/test_file.py @@ -33,6 +33,7 @@ from random import randint from sys import maxsize as maxint from lxml import etree +from pytest import raises from nose.tools import (assert_equal, assert_false, # @UnresolvedImport assert_is_not_none, assert_raises, assert_true, nottest, with_setup) @@ -231,8 +232,8 @@ def test_file6(): file="test.dat") file_.insert() - assert_is_not_none(file_.id) - assert_true(file_.is_valid()) + assert file_.id is not None + assert file_.is_valid() # pickup_folder # and try to store it to testfiles2/ @@ -256,9 +257,12 @@ def test_file6(): name="PickupTestfolder", description="Pickup test folder desc", path="testfiles2/", - pickup="path") + pickup=path) - assert_raises(EntityError, folder_.insert) + with raises(EntityError) as cm: + folder_.insert() + errors = cm.value.entity.get_errors() + assert errors[0].description == 'This target path does already exist.' finally: try: folder_.delete() @@ -345,39 +349,35 @@ def test_consistency_file_was_modified(): file="test.dat") file_.insert() - assert_is_not_none(file_.id) - assert_true(file_.is_valid()) + assert file_.id is not None + assert file_.is_valid() # run consistency check (no consistency warning) c = runCheck(None, None) - assert_is_not_none(c.messages["Info", 0]) - assert_equal(c.messages["Info", 0][0], "File system is consistent.") + assert c.messages["Info", 0] is not None + assert c.messages["Info", 0][0] == "File system is consistent." - # run consistency check with modified warning) - # TODO fix - # This smells badly. The argument is meant to transport the location - # that is checked. Understanding of the code is difficult. + # when in debug mode, the server offers a special option # - # TODO reactivate if meaningful - # Why is it expeced that the file was modified? - #c = runCheck(None, "-c FILE_WAS_MODIFIED") - # print(c.messages) - #assert_is_not_none(c.messages["Error", 0]) - # assert_equal( - #c.messages["Error", 0][0], - # 'debug/test_file_storage_consistency: File was modified.') + # '-c FILE_WAS_MODIFIED' + # + # which simulates a modified file. + c = runCheck(None, "-c FILE_WAS_MODIFIED") + + assert c.messages["Error", 0] is not None + assert c.messages["Error", 0][0] == 'debug/test_file_storage_consistency: File was modified.' # download file again and check if it is still the same (just to be # sure that the server only simulated the consistency breach d = open(file_.download(target="test.dat.tmp"), "r") r = d.read() - assert_equal(r, "hello world\n") + assert r == "hello world\n" # run a passing check again c = runCheck(None, None) - assert_is_not_none(c.messages["Info", 0]) - assert_equal(c.messages["Info", 0][0], "File system is consistent.") + assert c.messages["Info", 0] is not None + assert c.messages["Info", 0][0] == "File system is consistent." finally: # clean up file record @@ -411,34 +411,29 @@ def test_consistency_file_does_not_exist(): file="test.dat") file_.insert() - assert_is_not_none(file_.id) - assert_true(file_.is_valid()) + assert file_.id is not None + assert file_.is_valid() c = runCheck(None, "/debug/") - assert_is_not_none(c.messages["Info", 0]) - assert_equal(c.messages["Info", 0][0], - "File system below debug/ is consistent.") + assert c.messages["Info", 0] is not None + assert c.messages["Info", 0][0] == "File system below debug/ is consistent." - # TODO fix - # This smells badly. The argument is meant to transport the location - # that is checked. Understanding of the code is difficult. + # when in debug mode, the server offers a special option + # + # '-c FILE_DOES_NOT_EXIST' # - # TODO reactivate if meaningful - # Furthermore, I have no clue, why the file that was just successfully - # inserted should lead to a FILE_DOES_NOT_EXIST error. - #c = runCheck(None, "-c FILE_DOES_NOT_EXIST") - #assert_is_not_none(c.messages["Error", 0]) - # assert_equal( - # c.messages["Error", 0][0], - # 'debug/test_file_storage_consistency: File does not exist.') + # which simulates a accidentially removed file. + c = runCheck(None, "-c FILE_DOES_NOT_EXIST") + assert c.messages["Error", 0] is not None + assert c.messages["Error", 0][0] == 'debug/test_file_storage_consistency: File does not exist.' with open(file_.download(target="test.dat.tmp"), "r") as d: r = d.read() - assert_equal(r, "hello world\n") + assert r == "hello world\n" c = runCheck(None, None) - assert_is_not_none(c.messages["Info", 0]) - assert_equal(c.messages["Info", 0][0], "File system is consistent.") + assert c.messages["Info", 0] is not None + assert c.messages["Info", 0][0] == "File system is consistent." finally: try: @@ -462,23 +457,21 @@ def test_consistency_file_does_not_exist(): @with_setup(setup, teardown) def test_consistency_unknown_file(): c = runCheck(None, None) - assert_is_not_none(c.messages["Info", 0]) - assert_equal(c.messages["Info", 0][0], "File system is consistent.") + assert c.messages["Info", 0] is not None + assert c.messages["Info", 0][0] == "File system is consistent." - # TODO fix - # This smells badly. The argument is meant to transport the location - # that is checked. Understanding of the code is difficult. + # when in debug mode, the server offers a special option + # + # '-c UNKNOWN_FILE' # - # TODO reactivate if meaningful - # It is unclear what this is supposed to test. How should a file be created - # under debug. Does not look meaningful. - #c = runCheck(None, "-c UNKNOWN_FILE") - #assert_is_not_none(c.messages["Warning", 0]) - #assert_equal(c.messages["Warning", 0][0], 'debug/: Unknown file.') + # which simulates an unknown file. + c = runCheck(None, "-c UNKNOWN_FILE") + assert c.messages["Warning", 0] is not None + assert c.messages["Warning", 0][0] == 'debug/: Unknown file.' - #c = runCheck(None, None) - #assert_is_not_none(c.messages["Info", 0]) - #assert_equal(c.messages["Info", 0][0], "File system is consistent.") + c = runCheck(None, None) + assert c.messages["Info", 0] is not None + assert c.messages["Info", 0][0] == "File system is consistent." @with_setup(setup, teardown) @@ -693,48 +686,48 @@ def test_insert_files_in_dir(): except BaseException: pass -# TODO reactivate -# No files are insered currently eventhough the other InserFilesInDir tests -# work. What is the current behaviour of the regexp? -# @with_setup(setup, teardown) -# def test_insert_files_in_dir_regex(): -# # TODO -# path = get_config().get("IntegrationTests", -# "test_files.test_insert_files_in_dir.local") + "testfolder/" -# path_on_server = get_config().get("IntegrationTests", -# "test_files.test_insert_files_in_dir.server") + "testfolder/" -# try: -# os.makedirs(path) -# os.makedirs(path + "subfolder/") -# test_file1 = open(path + "subfolder/test.dat", "w") -# test_file1.write("hello world\n") -# test_file1.close() -# -# test_file2 = open(path + "subfolder/test2.dat", "w") -# test_file2.write("hello world2\n") -# test_file2.close() -# -# c = models.Container() -# c.retrieve( -# unique=False, -# raise_exception_on_error=False, -# flags={ -# "InsertFilesInDir": "-e test " + -# path_on_server}) -# assert c.messages["Warning", 2] is not None -# assert c.messages["Warning", 2][0] == "Explicitly excluded directory or file: {}".format( -# path_on_server[:-1]) -# assert len(c) == 0 -# -# finally: -# try: -# c.delete() -# except BaseException: -# pass -# try: -# shutil.rmtree(path) -# except BaseException: -# pass + +@with_setup(setup, teardown) +def test_insert_files_in_dir_regex(): + path = get_config().get("IntegrationTests", + "test_files.test_insert_files_in_dir.local") + "testfolder/" + path_on_server = get_config().get("IntegrationTests", + "test_files.test_insert_files_in_dir.server") + "testfolder/" + try: + os.makedirs(path) + os.makedirs(path + "subfolder/") + test_file1 = open(path + "subfolder/test_dont_insert.dat", "w") + test_file1.write("hello world\n") + test_file1.close() + + test_file2 = open(path + "subfolder/test_insert.dat", "w") + test_file2.write("hello world2\n") + test_file2.close() + + c = models.Container() + c.retrieve( + unique=False, + raise_exception_on_error=False, + flags={ + "InsertFilesInDir": "-e dont_insert " + + path_on_server}) + assert c.messages["Warning", 2] is not None + assert c.messages["Warning", 2][0] == "Explicitly excluded file: {}".format( + path_on_server + "subfolder/test_dont_insert.dat") + + # the other has been inserted + assert len(c) == 1 + assert c[0].name == "test_insert.dat" + + finally: + try: + c.delete() + except BaseException: + pass + try: + shutil.rmtree(path) + except BaseException: + pass @with_setup(setup, teardown) @@ -752,8 +745,5 @@ def test_thumbnails(): reconnect=True).read() print(body) xml = etree.fromstring(body) - assert xml.xpath('/Response') - assert xml.xpath('/Response/dir/file') - # TODO find a better way to check this - assert_equal(xml[1][0].get("thumbnail")[-41:], - "/Thumbnails/testfiles/thumbnails_test.dat") + assert xml.xpath('/Response/dir/file')[0].get( + "thumbnail")[-41:] == "/Thumbnails/testfiles/thumbnails_test.dat" diff --git a/tests/test_misc.py b/tests/test_misc.py index d759cfc6e0805ef8edbb29784f65cb489a38a342..1e107a6db48a8f5c82df613930871d0514b37852 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -61,7 +61,7 @@ def test_file_system_returns_ids(): body = resp.read() print(body) print(type(body)) - search = "<file id=\"" + str(file_.id) + "\" name=\"test.dat\"" + search = "id=\"" + str(file_.id) + "\"" print(search) assert_true(search in str(body)) diff --git a/tox.ini b/tox.ini index 83edefd9bf2376ec6431856cdaed981940435649..65f02ae630e977817d6f677b818fd1729f8e7d44 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist= py37 +envlist=py36 py37 py38 skip_missing_interpreters = true [testenv] setenv = PASSWORD_STORE_DIR = {env:HOME}/.password-store