blob: 0d9c1bde7c5cbe65b8f344197dc9bb3cee126923 [file] [log] [blame]
#!/usr/bin/python
#
# Copyright (c) 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import unittest
import common
from autotest_lib.server.cros import provision
class LabelFromStrTestCase(unittest.TestCase):
"""label_from_str() test case."""
def test_fallback_label_unchanged(self):
"""Test that Label doesn't change str value."""
label_str = 'dummy_label'
got = provision.label_from_str(label_str)
self.assertEqual(got, label_str)
def test_fallback_label_type(self):
"""Test that label_from_str() falls back to Label."""
label_str = 'dummy_label'
got = provision.label_from_str(label_str)
self.assertIsInstance(got, provision.Label)
def test_fallback_namespace_unchanged(self):
"""Test that NamespaceLabel doesn't change str value."""
label_str = 'dummy-namespace:value'
got = provision.label_from_str(label_str)
self.assertEqual(got, label_str)
def test_fallback_namespace_label_type(self):
"""Test that label_from_str() falls back to NamespaceLabel."""
label_str = 'dummy-namespace:value'
got = provision.label_from_str(label_str)
self.assertIsInstance(got, provision.NamespaceLabel)
def test_cros_version_unchanged(self):
"""Test that CrosVersionLabel doesn't change str value."""
label_str = 'cros-version:value'
got = provision.label_from_str(label_str)
self.assertEqual(got, label_str)
def test_cros_version_label_type(self):
"""Test that label_from_str() detects cros-version."""
label_str = 'cros-version:value'
got = provision.label_from_str(label_str)
self.assertIsInstance(got, provision.CrosVersionLabel)
def test_fwrw_version_label_type(self):
"""Test that label_from_str() detects fwrw-version."""
label_str = 'fwrw-version:value'
got = provision.label_from_str(label_str)
self.assertIsInstance(got, provision.FWRWVersionLabel)
def test_fwro_version_label_type(self):
"""Test that label_from_str() detects fwro-version."""
label_str = 'fwro-version:value'
got = provision.label_from_str(label_str)
self.assertIsInstance(got, provision.FWROVersionLabel)
class LabelTestCase(unittest.TestCase):
"""Label test case."""
def test_label_repr(self):
"""Test that Label repr works."""
label = provision.Label('dummy_label')
self.assertEqual(repr(label), "Label('dummy_label')")
def test_label_eq_str(self):
"""Test that Label equals its string value."""
label = provision.Label('dummy_label')
self.assertEqual(label, 'dummy_label')
def test_get_action(self):
"""Test Label action property."""
action = provision.Label('dummy_label').action
self.assertEqual(action, provision.Action('dummy_label', ''))
class NamespaceLabelTestCase(unittest.TestCase):
"""NamespaceLabel test case."""
def test_get_namespace(self):
"""Test NamespaceLabel namespace property."""
label = provision.NamespaceLabel('ns', 'value')
self.assertEqual(label.namespace, 'ns')
def test_get_value(self):
"""Test NamespaceLabel value property."""
label = provision.NamespaceLabel('ns', 'value')
self.assertEqual(label.value, 'value')
def test_from_str_identity(self):
"""Test NamespaceLabel.from_str() result equals argument."""
label = provision.NamespaceLabel.from_str('ns:value')
self.assertEqual(label, 'ns:value')
def test_namespace_with_multiple_colons(self):
"""Test NamespaceLabel.from_str() on argument with multiple colons."""
label = provision.NamespaceLabel.from_str('ns:value:value2')
self.assertEqual(label.namespace, 'ns')
self.assertEqual(label.value, 'value:value2')
def test_get_action(self):
"""Test Label action property."""
action = provision.NamespaceLabel('cros-version', 'foo').action
self.assertEqual(action, provision.Action('cros-version', 'foo'))
class CrosVersionLabelTestCase(unittest.TestCase):
"""CrosVersionLabel test case."""
def test_value_is_cros_image(self):
"""Test that value is CrosVersion type."""
label = provision.CrosVersionLabel('lumpy-release/R27-3773.0.0')
self.assertIsInstance(label.value, provision.CrosVersion)
class CrosVersionTestCase(unittest.TestCase):
"""CrosVersion test case."""
def test_cros_image_identity(self):
"""Test that CrosVersion doesn't change string value."""
cros_image = provision.CrosVersion('lumpy-release/R27-3773.0.0')
self.assertEqual(cros_image, 'lumpy-release/R27-3773.0.0')
def test_cros_image_group(self):
"""Test CrosVersion group property."""
cros_image = provision.CrosVersion('lumpy-release/R27-3773.0.0')
self.assertEqual(cros_image.group, 'lumpy-release')
def test_cros_image_group_na(self):
"""Test invalid CrosVersion group property."""
cros_image = provision.CrosVersion('foo')
self.assertEqual(cros_image.group, cros_image.INVALID_STR)
def test_cros_image_milestone(self):
"""Test CrosVersion milestone property."""
cros_image = provision.CrosVersion('lumpy-release/R27-3773.0.0')
self.assertEqual(cros_image.milestone, 'R27')
def test_cros_image_milestone_na(self):
"""Test invalid CrosVersion milestone property."""
cros_image = provision.CrosVersion('foo')
self.assertEqual(cros_image.milestone, cros_image.INVALID_STR)
def test_cros_image_milestone_latest(self):
"""Test that LATEST milestone isn't recognized."""
cros_image = provision.CrosVersion('lumpy-release/LATEST-3773.0.0')
self.assertEqual(cros_image.milestone, cros_image.INVALID_STR)
def test_cros_image_version(self):
"""Test CrosVersion image property."""
cros_image = provision.CrosVersion('lumpy-release/R27-3773.0.0')
self.assertEqual(cros_image.version, '3773.0.0')
def test_cros_image_version_na(self):
"""Test invalid CrosVersion version property."""
cros_image = provision.CrosVersion('foo')
self.assertEqual(cros_image.version, cros_image.INVALID_STR)
def test_cros_image_rc(self):
"""Test CrosVersion rc property."""
cros_image = provision.CrosVersion('lumpy-release/R27-3773.0.0-rc2')
self.assertEqual(cros_image.rc, 'rc2')
def test_cros_image_rc_na(self):
"""Test invalid CrosVersion rc property."""
cros_image = provision.CrosVersion('foo')
self.assertEqual(cros_image.rc, cros_image.INVALID_STR)
def test_cros_image_repr(self):
"""Test CrosVersion.__repr__ works."""
cros_image = provision.CrosVersion('lumpy-release/R27-3773.0.0-rc2')
self.assertEqual(repr(cros_image),
"CrosVersion('lumpy-release/R27-3773.0.0-rc2')")
if __name__ == '__main__':
unittest.main()