#!/usr/bin/python import datetime import unittest import common from autotest_lib.site_utils.deployment import commandline class ArgumentPairTestCase(unittest.TestCase): """Tests for parsing and adding argument pairs.""" def test_missing_dest(self): """Test for error when missing dest argument.""" parser = commandline._ArgumentParser() with self.assertRaisesRegexp(ValueError, r'\bdest\b'): parser.add_argument_pair('--yes', '--no', default=True) def test_missing_dest_and_default(self): """Test for error when missing dest and default arguments.""" parser = commandline._ArgumentParser() with self.assertRaises(ValueError) as context: parser.add_argument_pair('--yes', '--no') message = str(context.exception) self.assertIn('dest', message) self.assertIn('default', message) def test_default_value(self): """Test the default value for an option pair.""" parser = commandline._ArgumentParser() parser.add_argument_pair('--yes', '--no', dest='option', default=False) args = parser.parse_args([]) self.assertIs(args.option, False) def test_parsing_flag(self): """Test parsing an option flag of an option pair.""" parser = commandline._ArgumentParser() parser.add_argument_pair('--yes', '--no', dest='option', default=False) args = parser.parse_args(['--yes']) self.assertIs(args.option, True) def test_duplicate_flag_precedence(self): """Test precedence when passing multiple flags.""" parser = commandline._ArgumentParser() parser.add_argument_pair('--yes', '--no', dest='option', default=False) args = parser.parse_args(['--no', '--yes']) self.assertIs(args.option, True) args = parser.parse_args(['--yes', '--no']) self.assertIs(args.option, False) class _NamespaceStub: def __init__(self, **kwargs): for key, val in kwargs.iteritems(): setattr(self, key, val) class DefaultLogdirNameTestCase(unittest.TestCase): """Test getting default logdir name.""" def test_happy_path(self): """Test everything working correctly.""" arguments = _NamespaceStub( start_time=datetime.datetime(2016, 5, 4, 3), board='shana') got = commandline.get_default_logdir_name(arguments) self.assertEqual(got, '2016-05-04T03:00:00-shana') if __name__ == '__main__': unittest.main()