Example #1
0
class InMemoryProgressManagerTest(unittest.TestCase):
    def setUp(self):
        self.file1 = "file1"
        self.file2 = "file2"

        directory_manager = Mock(spec=LocalDirectoryWorkingContext)
        self.undertest = InMemoryProgressManager(directory_manager)

    def test_done(self):
        assert_that(self.undertest.is_done(self.file1), equal_to(False))
        assert_that(self.undertest.is_done(self.file2), equal_to(False))

        self.undertest.lock(self.file2)
        self.undertest.record_done(self.file2)
        self.undertest.unlock(self.file2)

        assert_that(self.undertest.is_done(self.file1), equal_to(False))
        assert_that(self.undertest.is_done(self.file2), equal_to(True))

        self.undertest.lock(self.file1)
        self.undertest.record_done(self.file1)
        self.undertest.unlock(self.file1)

        assert_that(self.undertest.is_done(self.file1), equal_to(True))
        assert_that(self.undertest.is_done(self.file2), equal_to(True))

    def test_processed_indices(self):
        assert_that(self.undertest.get_processed_indices(self.file1),
                    has_length(0))
        self.undertest.lock(self.file1)
        self.undertest.record_index(self.file1, 1)
        assert_that(self.undertest.get_processed_indices(self.file1),
                    contains_inanyorder(1))

        self.undertest.record_index(self.file1, 2)
        assert_that(self.undertest.get_processed_indices(self.file1),
                    contains_inanyorder(1, 2))

        assert_that(self.undertest.get_processed_indices(self.file2),
                    has_length(0))

    def test_locking(self):
        assert_that(self.undertest.owns_lock(self.file1), equal_to(False))
        assert_that(self.undertest.owns_lock(self.file2), equal_to(False))

        self.undertest.lock(self.file1)

        assert_that(self.undertest.owns_lock(self.file1), equal_to(True))
        assert_that(self.undertest.owns_lock(self.file2), equal_to(False))

        self.assertRaises(RequiresLockException, self.undertest.record_done, self.file2)
        self.assertRaises(RequiresLockException, self.undertest.record_index, self.file2, 1)

    def test_external_locks(self):
        self.undertest.add_external_lock(self.file1)

        assert_that(self.undertest.owns_lock(self.file1), equal_to(False))
        self.assertRaises(FileLockedException, self.undertest.lock, self.file1)
        self.assertRaises(FileLockedException, self.undertest.unlock, self.file1)

        self.undertest.lock(self.file2)
        assert_that(self.undertest.owns_lock(self.file2), equal_to(True))
Example #2
0
class InMemoryProgressManagerTest(unittest.TestCase):
    def setUp(self):
        self.file1 = "file1"
        self.file2 = "file2"

        directory_manager = Mock(spec=LocalDirectoryWorkingContext)
        self.undertest = InMemoryProgressManager(directory_manager)

    def test_done(self):
        assert_that(self.undertest.is_done(self.file1), equal_to(False))
        assert_that(self.undertest.is_done(self.file2), equal_to(False))

        self.undertest.lock(self.file2)
        self.undertest.record_done(self.file2)
        self.undertest.unlock(self.file2)

        assert_that(self.undertest.is_done(self.file1), equal_to(False))
        assert_that(self.undertest.is_done(self.file2), equal_to(True))

        self.undertest.lock(self.file1)
        self.undertest.record_done(self.file1)
        self.undertest.unlock(self.file1)

        assert_that(self.undertest.is_done(self.file1), equal_to(True))
        assert_that(self.undertest.is_done(self.file2), equal_to(True))

    def test_processed_indices(self):
        assert_that(self.undertest.get_processed_indices(self.file1),
                    has_length(0))
        self.undertest.lock(self.file1)
        self.undertest.record_index(self.file1, 1)
        assert_that(self.undertest.get_processed_indices(self.file1),
                    contains_inanyorder(1))

        self.undertest.record_index(self.file1, 2)
        assert_that(self.undertest.get_processed_indices(self.file1),
                    contains_inanyorder(1, 2))

        assert_that(self.undertest.get_processed_indices(self.file2),
                    has_length(0))

    def test_locking(self):
        assert_that(self.undertest.owns_lock(self.file1), equal_to(False))
        assert_that(self.undertest.owns_lock(self.file2), equal_to(False))

        self.undertest.lock(self.file1)

        assert_that(self.undertest.owns_lock(self.file1), equal_to(True))
        assert_that(self.undertest.owns_lock(self.file2), equal_to(False))

        self.assertRaises(RequiresLockException, self.undertest.record_done,
                          self.file2)
        self.assertRaises(RequiresLockException, self.undertest.record_index,
                          self.file2, 1)

    def test_external_locks(self):
        self.undertest.add_external_lock(self.file1)

        assert_that(self.undertest.owns_lock(self.file1), equal_to(False))
        self.assertRaises(FileLockedException, self.undertest.lock, self.file1)
        self.assertRaises(FileLockedException, self.undertest.unlock,
                          self.file1)

        self.undertest.lock(self.file2)
        assert_that(self.undertest.owns_lock(self.file2), equal_to(True))