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)
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)
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)
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)