Example #1
0
 def test_build_argparse(self, get_metadata):
     get_metadata.return_value = {'usage': ('foo --bar --baz=bah [asd] '
                                            '[--asdf] [--lol=hehe]'),
                                  'help': 'dummy', 'help_foo': 'foo1',
                                  'help_bar': 'bar2', 'help_baz': 'baz3',
                                  'help_asd': 'asd4', 'help_asdf': 'asdf5',
                                  'help_lol': 'lol6'}
     subparser = mock.Mock()
     obj = BashModule(self.module)
     parser = obj.build_argparse(subparser)
     subparser.add_parser.assert_called_once_with('module', help='dummy')
     self.assertEquals(parser.add_argument.call_args_list,
                       [mock.call('foo', help='foo1', nargs=1),
                        mock.call('--bar', required=True,
                                  action='store_const', const='1',
                                  help='bar2'),
                        mock.call('--baz', metavar='bah', required=True,
                                  help='baz3'),
                        mock.call('asd', help='asd4', nargs='?'),
                        mock.call('--asdf', required=False,
                                  action='store_const', const='1',
                                  help='asdf5'),
                        mock.call('--lol', metavar='hehe', required=False,
                                  help='lol6')])
     parser.set_defaults.called_once_with(_module=obj)
Example #2
0
 def test_build_argparse_with_invalid_arg(self, get_metadata):
     get_metadata.return_value = {'usage': ('foo1'),
                                  'help': 'dummy', 'help_foo1': 'foo1'}
     subparser = mock.Mock()
     obj = BashModule(self.module)
     with self.assertRaises(RuntimeError):
         obj.build_argparse(subparser)
Example #3
0
 def test_run(self, Popen):
     with codecs.open(self.module, 'w', 'utf-8') as fp:
         print >> fp, 'main() { echo 1 }'
     with mock.patch.dict('foo.os.environ',
                          {'PATH': '/', 'LC_ALL': 'en_US.utf8'},
                          clear=True):
         obj = BashModule(self.module)
         obj.run({'foo': 'bar', 'bar': ['baz'], 'lol': None})
     script = Popen.call_args[0][0][2]  # wtf?
     for func in ['log_debug', 'log_info', 'log_warning', 'log_error',
                  'log_critical']:
         self.assertIn('%s() {' % func, script)
     self.assertIn(self.module, script)
     env = Popen.call_args[1]['env']
     self.assertEquals(env['PATH'], '/')
     self.assertEquals(env['LC_ALL'], 'en_US.utf8')
     self.assertEquals(env['FOO_ARG_FOO'], 'bar')
     self.assertEquals(env['FOO_ARG_BAR'], 'baz')
     self.assertEquals(env['FOO_ARG_LOL'], '')
     self.assertEquals(len(env), 5)
Example #4
0
 def test_get_metadata(self):
     with codecs.open(self.module, 'w', 'utf-8') as fp:
         print >> fp, 'FOO_LOL=asdf'
         print >> fp, 'FOO_BAR="asdfa"'
         print >> fp, 'FOO_XD=1234'
         print >> fp, 'FOO_ASDF="1234"'
         print >> fp, 'FOO_HEHE="${FOO_ASDF}"'
         print >> fp, 'FOO_FUU=${FOO_BAR}'
         print >> fp, 'FOO_DFGDS'
         print >> fp, 'ASDF=XD'
         print >> fp
         print >> fp, 'main() { echo 1 }'
     obj = BashModule(self.module)
     meta = obj.get_metadata()
     self.assertEquals(meta['lol'], 'asdf')
     self.assertEquals(meta['bar'], 'asdfa')
     self.assertEquals(meta['xd'], '1234')
     self.assertEquals(meta['asdf'], '1234')
     self.assertEquals(meta['hehe'], '1234')
     self.assertEquals(meta['fuu'], 'asdfa')
     self.assertEquals(len(meta), 6)