def test_do_images(self, mock_msg, mock_utools, mock_localrepo): """Test udocker images command""" udocker.Msg = mock_msg udocker.conf = udocker.Config() mock_localrepo.return_value.cd_imagerepo.return_value = \ "/home/user/.udocker/repos/X/latest" mock_localrepo.return_value.get_imagerepos.return_value = [ ('iscampos/openqcd', 'latest'), ('busybox', 'latest')] t_argv = ['./udocker.py', "images"] with mock.patch.object(sys, 'argv', t_argv): # Unprotected mock_localrepo.return_value.isprotected_imagerepo\ .return_value = False main = udocker.Main() main.execute() msg_out = ("busybox:latest" " .") find_str(self, msg_out, mock_msg.return_value.out.call_args) # Protected mock_localrepo.return_value.isprotected_imagerepo\ .return_value = True main.execute() msg_out = ("busybox:latest" " P") find_str(self, msg_out, mock_msg.return_value.out.call_args) t_argv = ['./udocker.py', "images", "-l"] with mock.patch.object(sys, 'argv', t_argv): main = udocker.Main() main.execute() msg_out = " /home/user/.udocker/repos/X/latest" find_str(self, msg_out, mock_msg.return_value.out.call_args) # mock_localrepo.return_value.get_imagerepos.return_value = [ ('busybox', 'latest')] mock_localrepo.return_value.get_layers.return_value = [ ('/home/jorge/.udocker/repos/busybox/latest/' + 'sha256:385e281300cc6d88bdd155e0931fbdfbb1801c2b' + '0265340a40481ee2b733ae66', 675992), ('/home/jorge/.udocker/repos/busybox/latest/' + '56ed16bd6310cca65920c653a9bb22de6b235990dcaa174' + '2ff839867aed730e5.layer', 675992), ('/home/jorge/.udocker/repos/busybox/latest/' + '56ed16bd6310cca65920c653a9bb22de6b235990dcaa174' + '2ff839867aed730e5.json', 1034), ('/home/jorge/.udocker/repos/busybox/latest/' + 'bc744c4ab376115cc45c610d53f529dd2d4249ae6b35e5d' + '6e7a96e58863545aa.json', 1155), ('/home/jorge/.udocker/repos/busybox/latest/' + 'bc744c4ab376115cc45c610d53f529dd2d4249ae6b35e5d' + '6e7a96e58863545aa.layer', 32), ('/home/jorge/.udocker/repos/busybox/latest/' + 'sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633c' + 'b16422d00e8a7c22955b46d4', 32)] main.execute() msg_out = ' /home/jorge/.udocker/repos/busybox/latest/' +\ 'sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16' +\ '422d00e8a7c22955b46d4 (' find_str(self, msg_out, mock_msg.return_value.out.call_args)
def test_do_search(self, mock_msg, mock_utools, mock_dockioapi): """Test udocker search command""" udocker.Msg = mock_msg udocker.conf = udocker.Config() t_argv = ['./udocker.py', "search", "-a", "iscampos"] with mock.patch.object(sys, 'argv', t_argv): mock_dockioapi.return_value.is_v2.return_value = False mock_dockioapi.return_value.set_v2_login_token.return_value = None mock_dockioapi.return_value.search_get_page.side_effect = [ {u'num_results': 2, u'results': [ {u'is_automated': False, u'name': u'iscampos/openqcd', u'star_count': 0, u'is_trusted': False, u'is_official': False, u'description': u'Containers for openQCD v1.4'}, {u'is_automated': False, u'name': u'iscampos/codemaster', u'star_count': 0, u'is_trusted': False, u'is_official': False, u'description': u''}], u'page_size': 25, u'query': u'iscampos', u'num_pages': '1', u'page': u'0'}, {u'num_results': 2, u'results': [ {u'is_automated': False, u'name': u'iscampos/openqcd', u'star_count': 0, u'is_trusted': False, u'is_official': False, u'description': u'Containers for openQCD v1.4'}, {u'is_automated': False, u'name': u'iscampos/codemaster', u'star_count': 0, u'is_trusted': False, u'is_official': False, u'description': u''}], u'page_size': 25, u'query': u'iscampos', u'num_pages': '1', u'page': u'1'}, {}] main = udocker.Main() main.execute() find_str(self, "iscampos/codemaster", mock_msg.return_value.out.call_args)
def test_execute_help(self, mock_msg, mock_utools): """Test udocker help command""" udocker.msg = mock_msg udocker.conf = udocker.Config() t_argv = ['./udocker.py', "--help"] with mock.patch.object(sys, 'argv', t_argv): main = udocker.Main() main.execute() find_str(self, "Examples", mock_msg.return_value.out.call_args)
def do_action(t_argv): """Execute an action not part of a test i.e. setup and cleanup""" with mock.patch('udocker.Msg') as mock_msg: set_msglevels(mock_msg) udocker.Msg = mock_msg udocker.Config() with mock.patch.object(sys, 'argv', t_argv): main = udocker.Main() udocker.Msg.level = 3 udocker.Config.verbose_level = 3 return main.start()
def test_init(self, mock_msg, mock_images, mock_user_init, mock_utools, mock_localrepo): """Test udocker global command line options""" set_msglevels(mock_msg) udocker.Msg = mock_msg t_argv = ['./udocker.py', "images"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main().start() self.assertTrue(mock_images.called) t_argv = ['./udocker.py', "--config=/myconf"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main().start() self.assertTrue(mock_user_init.called_with("/myconf")) t_argv = ['./udocker.py', "--cofig=/myconf"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main().start() self.assertTrue(mock_user_init.called_with(False)) udocker.Config().verbose_level = 0 t_argv = ['./udocker.py', "-D", "images"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main().start() self.assertEqual(udocker.Config().verbose_level, mock_msg.DBG) udocker.Config().verbose_level = 0 t_argv = ['./udocker.py', "--debug"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main().start() self.assertEqual(udocker.Config().verbose_level, mock_msg.DBG) udocker.Config().verbose_level = 0 t_argv = ['./udocker.py', "-q"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main().start() self.assertEqual(udocker.Config().verbose_level, mock_msg.MSG) udocker.Config().verbose_level = 0 t_argv = ['./udocker.py', "--quiet"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main().start() self.assertEqual(udocker.Config().verbose_level, mock_msg.MSG) t_argv = ['./udocker.py', "--insecure"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main().start() self.assertEqual(udocker.Config().http_insecure, True) t_argv = ['./udocker.py', "--repo=/tmp"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main().start() self.assertEqual(udocker.Config().topdir, "/tmp")
def test_init(self, mock_msg, mock_import_modules, mock_user_init, mock_utools, mock_localrepo): """Test udocker global command line options""" udocker.msg = mock_msg udocker.conf = udocker.Config() t_argv = ['./udocker.py'] with mock.patch.object(sys, 'argv', t_argv): udocker.Main() self.assertTrue(mock_import_modules.called) t_argv = ['./udocker.py', "images"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main() self.assertTrue(mock_import_modules.called) t_argv = ['./udocker.py', "--config=/myconf"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main() self.assertTrue(mock_import_modules.called) self.assertTrue(mock_user_init.called_with("/myconf")) t_argv = ['./udocker.py', "--cofig=/myconf"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main() self.assertTrue(mock_import_modules.called) self.assertTrue(mock_user_init.called_with(False)) udocker.conf.verbose_level = 0 t_argv = ['./udocker.py', "-D"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main() self.assertTrue(mock_import_modules.called) self.assertEqual(udocker.conf.verbose_level, 3) udocker.conf.verbose_level = 0 t_argv = ['./udocker.py', "--debug"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main() self.assertTrue(mock_import_modules.called) self.assertEqual(udocker.conf.verbose_level, 3) t_argv = ['./udocker.py', "--insecure"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main() self.assertTrue(mock_import_modules.called) self.assertEqual(udocker.conf.http_insecure, True) t_argv = ['./udocker.py', "--repo=/home/user/.udocker"] with mock.patch.object(sys, 'argv', t_argv): udocker.Main() self.assertTrue(mock_import_modules.called) self.assertEqual(udocker.conf.def_topdir, "/home/user/.udocker")
def do_cmd(self, mock_msg, t_argv, expect_msg=None, outfile=None): """Execute a udocker command as called in the command line""" set_msglevels(mock_msg) udocker.Msg = mock_msg udocker.Config() with mock.patch.object(sys, 'argv', t_argv): main = udocker.Main() udocker.Msg.chlderr = DEVNULL udocker.Msg.chldout = DEVNULL udocker.Msg.chldnul = DEVNULL udocker.Msg.level = 3 udocker.Config.verbose_level = 3 if outfile: (orig_stdout_fd, orig_stderr_fd) = open_outfile(outfile) status = main.start() # start if outfile: close_outfile(orig_stdout_fd, orig_stderr_fd) if expect_msg is None and outfile is None: # print "out:" + str(mock_msg.return_value.out.call_args_list) # print "err:" + str(mock_msg.return_value.err.call_args_list) self.assertFalse(status, str(t_argv)) return False elif expect_msg: find = choose_find(expect_msg[:1]) if (find(expect_msg[1:], mock_msg.return_value.out.call_args_list) or find(expect_msg[1:], mock_msg.return_value.err.call_args_list)): self.assertTrue(True, str(t_argv)) return True else: # print "out:" + str(mock_msg.return_value.out.call_args_list) # print "err:" + str(mock_msg.return_value.err.call_args_list) self.assertTrue(False, str(t_argv)) return False else: self.assertTrue(True, str(t_argv)) return True