• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/python
2
3import datetime
4import unittest
5
6import common
7from autotest_lib.site_utils.deployment import commandline
8
9
10class 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
56class _NamespaceStub:
57
58    def __init__(self, **kwargs):
59        for key, val in kwargs.iteritems():
60            setattr(self, key, val)
61
62
63class 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
76if __name__ == '__main__':
77    unittest.main()
78