update public distribution

based on internal repository c9a2ac8 2019-01-03 16:04:57 +0100
tagged rev-master-2.0.0
This commit is contained in:
2019-01-31 15:45:02 +01:00
parent bbd16d0f94
commit acea809e4e
92 changed files with 165828 additions and 143181 deletions

View File

@ -10,24 +10,34 @@ to run the tests, change to the directory which contains the tests directory, an
@author Matthias Muntwiler, matthias.muntwiler@psi.ch
@copyright (c) 2015 by Paul Scherrer Institut @n
@copyright (c) 2015-18 by Paul Scherrer Institut @n
Licensed under the Apache License, Version 2.0 (the "License"); @n
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
"""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import unittest
import mock
import os
import pmsco.files as files
class TestFileTracker(unittest.TestCase):
"""
unit tests of pmsco.files.FileTracker
for a description of the mock and patch mechanism, cf.
- http://blog.thedigitalcatonline.com/blog/2016/03/06/python-mocks-a-gentle-introduction-part-1
- http://blog.thedigitalcatonline.com/blog/2016/09/27/python-mocks-a-gentle-introduction-part-2
"""
def setUp(self):
# before each test method
self.files = files.FileTracker()
self.files.keep_rfac = 1
self.files._os_delete_file = mock.Mock(return_value=None)
self.files.add_file("model 1 file 1 cluster K", 1, 'cluster')
self.files.add_file("model 1 file 2 output D", 1, 'output')
@ -66,39 +76,76 @@ class TestFileTracker(unittest.TestCase):
pass
def test_add_file(self):
pass
self.assertEqual(self.files.get_file_count(), 10, "file count after setup")
# add a new file of an existing model
self.files.add_file("model 2 file 1 input K", 2, 'input')
self.assertEqual(self.files.get_file_count(), 11, "file count after add")
# change the category of an existing file
self.files.add_file("model 2 file 2 output D", 2, 'report')
self.assertEqual(self.files.get_file_count(), 11, "file count after change")
def test_rename_file(self):
pass
self.files.rename_file("model 2 file 2 output D", "renamed file")
self.assertEqual(self.files.get_file_count(), 10, "file count after rename")
self.files.rename_file("inexistant file", "renamed file")
self.assertEqual(self.files.get_file_count(), 10, "file count after rename")
def test_remove_file(self):
pass
@mock.patch('os.remove')
def test_remove_file(self, os_remove_mock):
self.files.remove_file("model 3 file 1 cluster K")
self.assertEqual(self.files.get_file_count(), 9, "file count after remove")
self.assertFalse(os_remove_mock.called, "file deleted")
def test_update_model_rfac(self):
pass
def test_delete_files(self):
def test_set_model_complete(self):
self.assertEqual(self.files.get_complete_models_count(), 3, "complete model count after setup")
self.files.set_model_complete(3, True)
self.assertEqual(self.files.get_complete_models_count(), 4, "complete model count after add")
self.files.set_model_complete(2, False)
self.assertEqual(self.files.get_complete_models_count(), 3, "complete model count after remove")
self.files.set_model_complete(5, True)
self.assertEqual(self.files.get_complete_models_count(), 3, "complete model count after no change")
@mock.patch('os.remove')
def test_delete_files(self, os_remove_mock):
self.files.keep_rfac = 10
self.files.delete_files()
self.files._os_delete_file.assert_any_call("model 1 file 2 output D")
self.files._os_delete_file.assert_any_call("model 2 file 2 output D")
self.files._os_delete_file.assert_any_call("model 5 file 2 output D")
self.assertEqual(len(self.files._id_by_path), 5+2)
self.assertEqual(len(self.files._path_by_id), 5+2)
self.assertEqual(len(self.files._model_by_id), 5+2)
self.assertEqual(len(self.files._category_by_id), 5+2)
os_remove_mock.assert_any_call(os.path.abspath("model 1 file 2 output D"))
os_remove_mock.assert_any_call(os.path.abspath("model 2 file 2 output D"))
os_remove_mock.assert_any_call(os.path.abspath("model 5 file 2 output D"))
self.assertEqual(self.files.get_file_count(), 5+2)
def test_delete_file(self):
pass
@mock.patch('os.remove')
def test_delete_file(self, os_remove_mock):
self.files.delete_file("model 3 file 1 cluster K")
self.assertEqual(self.files.get_file_count(), 9, "file count after remove")
self.assertTrue(os_remove_mock.called, "file not deleted")
def test_delete_bad_rfac(self):
@mock.patch('os.remove')
def test_delete_bad_rfac(self, os_remove_mock):
self.files.delete_bad_rfac(keep=2, force_delete=True)
self.files._os_delete_file.assert_any_call("model 1 file 1 cluster K")
self.files._os_delete_file.assert_any_call("model 5 file 1 cluster K")
self.assertEqual(len(self.files._id_by_path), 6)
self.assertEqual(len(self.files._path_by_id), 6)
self.assertEqual(len(self.files._model_by_id), 6)
self.assertEqual(len(self.files._category_by_id), 6)
self.assertEqual(self.files.get_file_count(), 6)
os_remove_mock.assert_any_call(os.path.abspath("model 1 file 1 cluster K"))
os_remove_mock.assert_any_call(os.path.abspath("model 5 file 1 cluster K"))
def test_delete_category(self):
pass
@mock.patch('os.remove')
def test_delete_category(self, os_remove_mock):
self.files.delete_category('cluster')
self.assertEqual(self.files.get_file_count(), 7)
os_remove_mock.assert_any_call(os.path.abspath("model 1 file 1 cluster K"))
os_remove_mock.assert_any_call(os.path.abspath("model 2 file 1 cluster K"))
os_remove_mock.assert_any_call(os.path.abspath("model 5 file 1 cluster K"))
@mock.patch('os.remove')
def test_delete_models(self, os_remove_mock):
n = self.files.delete_models()
self.assertEqual(n, 0)
n = self.files.delete_models(keep={2, 5})
self.assertEqual(n, 1)
self.assertEqual(self.files.get_file_count(), 8, "file count after remove")
self.assertTrue(os_remove_mock.called, "file not deleted")
n = self.files.delete_models(delete={2, 3})
self.assertEqual(n, 1)
self.assertEqual(self.files.get_file_count(), 6, "file count after remove")