1 #!/usr/bin/python 2 3 import datetime 4 import unittest 5 6 import common 7 from autotest_lib.site_utils.deployment import commandline 8 9 10 class ArgumentPairTestCase(unittest.TestCase): 11 12 """Tests for parsing and adding argument pairs.""" 13 14 def test_missing_dest(self): 15 """Test for error when missing dest argument.""" 16 parser = commandline._ArgumentParser() 17 with self.assertRaisesRegexp(ValueError, r'\bdest\b'): 18 parser.add_argument_pair('--yes', '--no', default=True) 19 20 def test_missing_dest_and_default(self): 21 """Test for error when missing dest and default arguments.""" 22 parser = commandline._ArgumentParser() 23 with self.assertRaises(ValueError) as context: 24 parser.add_argument_pair('--yes', '--no') 25 message = str(context.exception) 26 self.assertIn('dest', message) 27 self.assertIn('default', message) 28 29 def test_default_value(self): 30 """Test the default value for an option pair.""" 31 parser = commandline._ArgumentParser() 32 parser.add_argument_pair('--yes', '--no', dest='option', 33 default=False) 34 args = parser.parse_args([]) 35 self.assertIs(args.option, False) 36 37 def test_parsing_flag(self): 38 """Test parsing an option flag of an option pair.""" 39 parser = commandline._ArgumentParser() 40 parser.add_argument_pair('--yes', '--no', dest='option', 41 default=False) 42 args = parser.parse_args(['--yes']) 43 self.assertIs(args.option, True) 44 45 def test_duplicate_flag_precedence(self): 46 """Test precedence when passing multiple flags.""" 47 parser = commandline._ArgumentParser() 48 parser.add_argument_pair('--yes', '--no', dest='option', 49 default=False) 50 args = parser.parse_args(['--no', '--yes']) 51 self.assertIs(args.option, True) 52 args = parser.parse_args(['--yes', '--no']) 53 self.assertIs(args.option, False) 54 55 56 class _NamespaceStub: 57 58 def __init__(self, **kwargs): 59 for key, val in kwargs.iteritems(): 60 setattr(self, key, val) 61 62 63 class DefaultLogdirNameTestCase(unittest.TestCase): 64 65 """Test getting default logdir name.""" 66 67 def test_happy_path(self): 68 """Test everything working correctly.""" 69 arguments = _NamespaceStub( 70 start_time=datetime.datetime(2016, 5, 4, 3), 71 board='shana') 72 got = commandline.get_default_logdir_name(arguments) 73 self.assertEqual(got, '2016-05-04T03:00:00-shana') 74 75 76 if __name__ == '__main__': 77 unittest.main() 78