Home | History | Annotate | Download | only in deployment
      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