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:
@ -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")
|
||||
|
Reference in New Issue
Block a user