300 lines
9.3 KiB
Python
300 lines
9.3 KiB
Python
#!/usr/bin/env python3
|
|
|
|
"""Unit test driver for the manic external status reporting module.
|
|
|
|
Note: this script assumes the path to the manic package is already in
|
|
the python path.
|
|
|
|
"""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import unicode_literals
|
|
from __future__ import print_function
|
|
|
|
import unittest
|
|
|
|
from manic.externals_status import ExternalStatus
|
|
|
|
|
|
class TestStatusObject(unittest.TestCase):
|
|
"""Verify that the Status object behaives as expected.
|
|
"""
|
|
|
|
def test_exists_empty_all(self):
|
|
"""If the repository sync-state is empty (doesn't exist), and there is no
|
|
clean state, then it is considered not to exist.
|
|
|
|
"""
|
|
stat = ExternalStatus()
|
|
stat.sync_state = ExternalStatus.EMPTY
|
|
stat.clean_state = ExternalStatus.DEFAULT
|
|
exists = stat.exists()
|
|
self.assertFalse(exists)
|
|
|
|
stat.clean_state = ExternalStatus.EMPTY
|
|
exists = stat.exists()
|
|
self.assertFalse(exists)
|
|
|
|
stat.clean_state = ExternalStatus.UNKNOWN
|
|
exists = stat.exists()
|
|
self.assertFalse(exists)
|
|
|
|
# this state represtens an internal logic error in how the
|
|
# repo status was determined.
|
|
stat.clean_state = ExternalStatus.STATUS_OK
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
# this state represtens an internal logic error in how the
|
|
# repo status was determined.
|
|
stat.clean_state = ExternalStatus.DIRTY
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
def test_exists_default_all(self):
|
|
"""If the repository sync-state is default, then it is considered to exist
|
|
regardless of clean state.
|
|
|
|
"""
|
|
stat = ExternalStatus()
|
|
stat.sync_state = ExternalStatus.DEFAULT
|
|
stat.clean_state = ExternalStatus.DEFAULT
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.EMPTY
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.UNKNOWN
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.STATUS_OK
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.DIRTY
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
def test_exists_unknown_all(self):
|
|
"""If the repository sync-state is unknown, then it is considered to exist
|
|
regardless of clean state.
|
|
|
|
"""
|
|
stat = ExternalStatus()
|
|
stat.sync_state = ExternalStatus.UNKNOWN
|
|
stat.clean_state = ExternalStatus.DEFAULT
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.EMPTY
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.UNKNOWN
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.STATUS_OK
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.DIRTY
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
def test_exists_modified_all(self):
|
|
"""If the repository sync-state is modified, then it is considered to exist
|
|
regardless of clean state.
|
|
|
|
"""
|
|
stat = ExternalStatus()
|
|
stat.sync_state = ExternalStatus.MODEL_MODIFIED
|
|
stat.clean_state = ExternalStatus.DEFAULT
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.EMPTY
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.UNKNOWN
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.STATUS_OK
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.DIRTY
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
def test_exists_ok_all(self):
|
|
"""If the repository sync-state is ok, then it is considered to exist
|
|
regardless of clean state.
|
|
|
|
"""
|
|
stat = ExternalStatus()
|
|
stat.sync_state = ExternalStatus.STATUS_OK
|
|
stat.clean_state = ExternalStatus.DEFAULT
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.EMPTY
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.UNKNOWN
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.STATUS_OK
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
stat.clean_state = ExternalStatus.DIRTY
|
|
exists = stat.exists()
|
|
self.assertTrue(exists)
|
|
|
|
def test_update_ok_all(self):
|
|
"""If the repository in-sync is ok, then it is safe to
|
|
update only if clean state is ok
|
|
|
|
"""
|
|
stat = ExternalStatus()
|
|
stat.sync_state = ExternalStatus.STATUS_OK
|
|
stat.clean_state = ExternalStatus.DEFAULT
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.EMPTY
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.UNKNOWN
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.STATUS_OK
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertTrue(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.DIRTY
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
def test_update_modified_all(self):
|
|
"""If the repository in-sync is modified, then it is safe to
|
|
update only if clean state is ok
|
|
|
|
"""
|
|
stat = ExternalStatus()
|
|
stat.sync_state = ExternalStatus.MODEL_MODIFIED
|
|
stat.clean_state = ExternalStatus.DEFAULT
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.EMPTY
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.UNKNOWN
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.STATUS_OK
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertTrue(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.DIRTY
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
def test_update_unknown_all(self):
|
|
"""If the repository in-sync is unknown, then it is not safe to
|
|
update, regardless of the clean state.
|
|
|
|
"""
|
|
stat = ExternalStatus()
|
|
stat.sync_state = ExternalStatus.UNKNOWN
|
|
stat.clean_state = ExternalStatus.DEFAULT
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.EMPTY
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.UNKNOWN
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.STATUS_OK
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.DIRTY
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
def test_update_default_all(self):
|
|
"""If the repository in-sync is default, then it is not safe to
|
|
update, regardless of the clean state.
|
|
|
|
"""
|
|
stat = ExternalStatus()
|
|
stat.sync_state = ExternalStatus.UNKNOWN
|
|
stat.clean_state = ExternalStatus.DEFAULT
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.EMPTY
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.UNKNOWN
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.STATUS_OK
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.DIRTY
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
def test_update_empty_all(self):
|
|
"""If the repository in-sync is empty, then it is not safe to
|
|
update, regardless of the clean state.
|
|
|
|
"""
|
|
stat = ExternalStatus()
|
|
stat.sync_state = ExternalStatus.UNKNOWN
|
|
stat.clean_state = ExternalStatus.DEFAULT
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.EMPTY
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.UNKNOWN
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.STATUS_OK
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
stat.clean_state = ExternalStatus.DIRTY
|
|
safe_to_update = stat.safe_to_update()
|
|
self.assertFalse(safe_to_update)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|