def setup_and_execute_app(self, argv, configuration): with self.a_temp_file() as config_location: with self.modified_env(HARPOON_CONFIG=config_location): app = App() args_obj, args_dict, extra_args = app.make_cli_parser().interpret_args(argv, app.cli_categories) collector = mock.Mock(name="collector") collector.configuration = configuration FakeCollector = mock.Mock(name="Collector", return_value=collector) docker_context = mock.Mock(name="docker_context") logging_handler = mock.Mock(name="logging_handler") setup_logging_theme = mock.Mock(name="setup_logging_theme") docker_context_maker = mock.Mock(name="docker_context_maker", return_value=docker_context) with mock.patch("harpoon.executor.Collector", FakeCollector): with mock.patch("harpoon.executor.docker_context", docker_context_maker): with mock.patch.object(app, "setup_logging_theme", setup_logging_theme): yield collector, docker_context_maker, docker_context, app, setup_logging_theme, args_dict app.execute(args_obj, args_dict, extra_args, logging_handler) FakeCollector.assert_called_once()
from input_algorithms.spec_base import NotSpecified from contextlib import contextmanager from tests.helpers import HarpoonCase from six import StringIO import mock import six import sys import os describe HarpoonCase, "App": describe "Cli parsing": it "replaces task and image with positional arguments": with self.a_temp_file() as config_location: argv = ["list_tasks", "blah", "--harpoon-config", config_location] app = App() args_obj, args_dict, extra_args = app.make_cli_parser().interpret_args(argv, app.cli_categories) self.assertEqual(args_obj.harpoon_chosen_task, "list_tasks") self.assertEqual(args_obj.harpoon_chosen_image, "blah") self.assertEqual(args_dict["harpoon"]["chosen_task"], "list_tasks") self.assertEqual(args_dict["harpoon"]["chosen_image"], "blah") it "takes in HARPOON_CONFIG as the configuration file": with self.a_temp_file() as config_location: with self.modified_env(HARPOON_CONFIG=config_location): argv = ["list_tasks", "blah"] app = App() args_obj, args_dict, extra_args = app.make_cli_parser().interpret_args(argv, app.cli_categories) self.assertEqual(args_obj.harpoon_config().name, config_location) self.assertEqual(args_dict["harpoon"]["config"]().name, config_location) it "defaults image to NotSpecified and tasks to list_tasks":