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)