clm5.0/manage_externals/test/test_unit_externals_status.py
2025-01-12 20:48:10 +08:00

300 lines
9.3 KiB
Python

#!/usr/bin/env python
"""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()