def test_running_plugin_cram_from_target(self, execute_mock, read_file_mock, os_mock, report_mock, find_files_mock, command_mock ): project = Project('.') project.set_property('cram_run_test_from_target', True) project.set_property('dir_dist', 'python') project.set_property('dir_dist_scripts', 'scripts') project.set_property('verbose', False) logger = Mock() command_mock.return_value = ['cram'] find_files_mock.return_value = ['test1.cram', 'test2.cram'] report_mock.return_value = 'report_file' os_mock.copy.return_value = {} read_file_mock.return_value = ['test failes for file', '# results'] execute_mock.return_value = 0 run_cram_tests(project, logger) execute_mock.assert_called_once_with( ['cram', 'test1.cram', 'test2.cram'], 'report_file', error_file_name='report_file', env={'PYTHONPATH': './python:', 'PATH': './python/scripts:'} ) expected_info_calls = [call('Running Cram command line tests'), call('Cram tests were fine'), call('results'), ] self.assertEquals(expected_info_calls, logger.info.call_args_list)
def setUp(self): self.project = Project('/base/dir') self.reactor = Mock() pyb_env = Mock() self.reactor.python_env_registry = {"pybuilder": pyb_env} self.command = ExternalCommandBuilder('command-name', self.project, self.reactor)
def test_running_plugin_failure_no_tests(self, read_file_mock, report_mock, find_files_mock, command_mock): project = Project('.') project.set_property('verbose', True) project.set_property('dir_source_main_python', 'python') project.set_property('dir_source_main_scripts', 'scripts') project.set_property("cram_fail_if_no_tests", True) project._plugin_env = {} logger = Mock() reactor = Mock() reactor.python_env_registry = {} reactor.python_env_registry["pybuilder"] = pyb_env = Mock() pyb_env.environ = {} execute_mock = pyb_env.execute_command = Mock() command_mock.return_value = ['cram'] find_files_mock.return_value = [] report_mock.return_value = 'report_file' read_file_mock.return_value = ['test failes for file', '# results'] execute_mock.return_value = 1 self.assertRaises(BuildFailedException, run_cram_tests, project, logger, reactor) execute_mock.assert_not_called() expected_info_calls = [ call('Running Cram command line tests'), ] self.assertEqual(expected_info_calls, logger.info.call_args_list)
def create_project(): project = Project("/") project.build_depends_on("testingframework") project.depends_on("sometool") project.depends_on( "pyassert", url= "https://github.com/downloads/halimath/pyassert/pyassert-0.2.2.tar.gz") project.name = "Spam and Eggs" project.version = "1.2.3" project.summary = "This is a simple integration-test for distutils plugin." project.description = "As you might have guessed we have nothing to say here." project.authors = [ Author("Udo Juettner", "*****@*****.**"), Author("Michael Gruber", "*****@*****.**") ] project.license = "WTFPL" project.url = "http://github.com/pybuilder/pybuilder" project.explicit_namespaces = ["foo.bar", "quick.brown.fox"] def return_dummy_list(): return ["spam", "eggs"] project.list_scripts = return_dummy_list project.list_packages = return_dummy_list project.list_modules = return_dummy_list project.set_property( "distutils_classifiers", ["Development Status :: 5 - Beta", "Environment :: Console"]) project.install_file("dir", "file1") project.install_file("dir", "file2") project.include_file("spam", "eggs") return project
def setUp(self): self.logger = Mock() self.project = Project(".") self.project.set_property("dir_target", "dir_target_value") self.project.set_property("dir_source_main_python", "dir_source_main_python_value") self.project.set_property("dir_reports", "dir_reports_value")
def setUp(self): self.project = Project("unittest", ".") self.project.set_property("dir_install_logs", "any_directory") self.logger = mock(Logger) when(pybuilder.plugins.python.install_dependencies_plugin ).execute_command(any_value(), any_value(), shell=True).thenReturn(0)
def test_should_run_pylint_with_default_options(self, execute_tool): project = Project(".") init_pylint(project) execute_pylint(project, Mock(Logger)) execute_tool.assert_called_with(project, "pylint", ["pylint"] + DEFAULT_PYLINT_OPTIONS, True)
def setUp(self): self.tempdir = tempfile.mkdtemp(prefix="palp-") self.project = Project(basedir=self.tempdir, name="palp", version="123") self.project.set_property("dir_target", "target") self.bucket_name = "palp-lambda-zips" self.project.set_property(emr_tasks.PROPERTY_S3_FILE_ACCESS_CONTROL, "bucket-owner-full-control") self.project.set_property(emr_tasks.PROPERTY_S3_BUCKET_NAME, self.bucket_name) self.project.set_property(emr_tasks.PROPERTY_S3_BUCKET_PREFIX, "") self.project.set_property(emr_tasks.PROPERTY_S3_RELEASE_PREFIX, "release") self.dir_target = os.path.join( self.tempdir, "target", emr_tasks._EMR_PACKAGE_DIR + "-" + self.project.version) os.makedirs(self.dir_target) for file in ["palp.zip", "bash-script.sh", "python-script.py"]: self.filepath = os.path.join(self.dir_target, file) self.test_data = b"testdata" with open(self.filepath, "wb") as fp: fp.write(self.test_data) self.my_mock_s3 = mock_s3() self.my_mock_s3.start() self.s3 = boto3.resource("s3") self.s3.create_bucket(Bucket=self.bucket_name)
def prepare_build(self, property_overrides=None, project_directory=".", project_descriptor="build.py", exclude_optional_tasks=None, exclude_tasks=None, exclude_all_optional=False): if not property_overrides: property_overrides = {} Reactor._current_instance = self project_directory, project_descriptor = self.verify_project_directory( project_directory, project_descriptor) self.logger.debug("Loading project module from %s", project_descriptor) self.project = Project(basedir=project_directory) self.project_module = self.load_project_module(project_descriptor) self.apply_project_attributes() self.override_properties(property_overrides) self.logger.debug("Have loaded plugins %s", ", ".join(self._plugins)) self.collect_tasks_and_actions_and_initializers(self.project_module) self.execution_manager.resolve_dependencies(exclude_optional_tasks, exclude_tasks, exclude_all_optional)
def test_prepare_tasks(self): self.reactor.project = Project("spam") self.reactor.project.default_task = ["a", "b"] self.assertEqual(self.reactor._prepare_tasks(["c"]), ["c"]) self.assertEqual(self.reactor._prepare_tasks(["+c"]), ["a", "b", "c"]) self.assertEqual(self.reactor._prepare_tasks(["+c", '^c']), ["a", "b"]) self.assertEqual(self.reactor._prepare_tasks(["^b"]), ["a"]) self.assertEqual(self.reactor._prepare_tasks(["^a"]), ["b"]) self.assertEqual(self.reactor._prepare_tasks(["^d"]), ["a", "b"]) self.assertEqual(self.reactor._prepare_tasks(["+c", "d"]), ["d", "c"]) self.assertEqual(self.reactor._prepare_tasks(["+c", "d", "^b"]), ["d", "c"]) self.assertEqual(self.reactor._prepare_tasks(["+c", "+", "^"]), ["+", "^", "c"]) self.assertEqual(self.reactor._prepare_tasks([]), ["a", "b"]) self.reactor.project.default_task = [] self.assertEqual(self.reactor._prepare_tasks(["c"]), ["c"]) self.assertEqual(self.reactor._prepare_tasks(["+c"]), ["c"]) self.assertEqual(self.reactor._prepare_tasks(["+c", "^d"]), ["c"]) self.assertEqual(self.reactor._prepare_tasks(["+c", "d", "^d"]), ["c"]) self.assertEqual(self.reactor._prepare_tasks(["^c", "c"]), []) self.assertEqual(self.reactor._prepare_tasks(["+c", "^c"]), []) self.assertEqual(self.reactor._prepare_tasks(["+c", "d"]), ["d", "c"]) self.assertEqual(self.reactor._prepare_tasks(["+c", "+"]), ["+", "c"]) self.assertRaises(PyBuilderException, self.reactor._prepare_tasks, [])
def test_should_not_break_build_when_warnings_and_not_set( self, execute_tool, warnings): project = Project(".") init_pylint(project) project.set_property("pylint_break_build", False) execute_pylint(project, Mock(Logger))
def test_should_write_pycharm_file(self, os, mock_open): project = Project('basedir', name='pybuilder') project.set_property('dir_source_main_python', 'src/main/python') mock_open.return_value = MagicMock(spec=TYPE_FILE) os.path.join.side_effect = lambda first, second: first + '/' + second pycharm_generate(project, Mock()) mock_open.assert_called_with('basedir/.idea/pybuilder.iml', 'w') metadata_file = mock_open.return_value.__enter__.return_value metadata_file.write.assert_called_with( """<?xml version="1.0" encoding="UTF-8"?> <!-- This file has been generated by the PyBuilder PyCharm Plugin --> <module type="PYTHON_MODULE" version="4"> <component name="NewModuleRootManager"> <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$/src/main/python" isTestSource="false" /> <excludeFolder url="file://$MODULE_DIR$/target" /> </content> <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> </component> <component name="PyDocumentationSettings"> <option name="myDocStringFormat" value="Plain" /> </component> <component name="TestRunnerService"> <option name="projectConfiguration" value="Unittests" /> <option name="PROJECT_TEST_RUNNER" value="Unittests" /> </component> </module> """)
def test_running_plugin_failure_no_tests(self, execute_mock, read_file_mock, os_mock, report_mock, find_files_mock, command_mock ): project = Project('.') project.set_property('verbose', True) project.set_property('dir_source_main_python', 'python') project.set_property('dir_source_main_scripts', 'scripts') project.set_property("cram_fail_if_no_tests", True) logger = Mock() command_mock.return_value = ['cram'] find_files_mock.return_value = [] report_mock.return_value = 'report_file' os_mock.copy.return_value = {} read_file_mock.return_value = ['test failes for file', '# results'] execute_mock.return_value = 1 self.assertRaises( BuildFailedException, run_cram_tests, project, logger) execute_mock.assert_not_called() expected_info_calls = [call('Running Cram command line tests'), ] self.assertEquals(expected_info_calls, logger.info.call_args_list)
def setUp(self): self.project = Project("basedir") self.logger = Mock(Logger) self.reactor = Mock() self.pyb_env = pyb_env = Mock() self.reactor.python_env_registry = {"pybuilder": pyb_env} self.reactor.pybuilder_venv = pyb_env
def test_should_generate_command_abiding_to_configuration(self): project = Project('egg') project.set_property("dir_manpages", "docs/man") project.set_property("manpage_source", "README.md") project.set_property("manpage_section", 1) self.assertEqual(build_generate_manpages_command(project), 'ronn -r --pipe README.md | gzip -9 > docs/man/egg.1.gz')
def setUp(self) -> None: self.tmpDir = tempfile.mkdtemp() self.project = Project(basedir=self.tmpDir) self.project.set_property(ENVIRONMENT,"unit-test") core_plugin.init(self.project) init_plugin(self.project) init_python_directories(self.project)
def test_running_plugin_fails(self, execute_mock, read_file_mock, os_mock, report_mock, find_files_mock, command_mock): project = Project('.') project.set_property('verbose', False) project.set_property('dir_source_main_python', 'python') project.set_property('dir_source_main_scripts', 'scripts') logger = Mock() command_mock.return_value = ['cram'] find_files_mock.return_value = ['test1.cram', 'test2.cram'] report_mock.return_value = 'report_file' os_mock.copy.return_value = {} read_file_mock.return_value = ['test failes for file', '# results'] execute_mock.return_value = 1 self.assertRaises(BuildFailedException, run_cram_tests, project, logger) execute_mock.assert_called_once_with( ['cram', 'test1.cram', 'test2.cram'], 'report_file', error_file_name='report_file', env={ 'PYTHONPATH': './python:', 'PATH': './scripts:' }) expected_info_calls = [ call('Running Cram command line tests'), ] expected_error_calls = [ call('Cram tests failed!'), call('results'), call("See: 'report_file' for details"), ] self.assertEquals(expected_info_calls, logger.info.call_args_list) self.assertEquals(expected_error_calls, logger.error.call_args_list)
def test_should_run_pylint_with_custom_options(self, execute_tool): project = Project(".") init_pylint(project) project.set_property("pylint_options", ["--test", "-f", "--x=y"]) execute_pylint(project, Mock(Logger)) execute_tool.assert_called_with(project, "pylint", ["pylint", "--test", "-f", "--x=y"], True)
def setUp(self): self.project = Project("basedir") self.reactor = Mock() self.reactor.python_env_registry = {} self.reactor.python_env_registry["pybuilder"] = pyb_env = Mock() pyb_env.environ = {} self.reactor.pybuilder_venv = pyb_env
def test_should_delegate_to_project_get_property_when_attribute_is_not_defined(self): project_mock = Project(".") project_mock.has_property = Mock(return_value=True) project_mock.get_property = Mock(return_value="eggs") self.assertEqual("eggs", ProjectDictWrapper(project_mock, Mock())["spam"]) project_mock.get_property.assert_called_with("spam")
def test_should_delegate_to_project_get_property_when_attribute_is_not_defined( self): project_mock = Project(".") when(project_mock).get_property("spam", "spam").thenReturn("eggs") self.assertEquals("eggs", ProjectDictWrapper(project_mock)["spam"]) verify(project_mock).get_property("spam", "spam")
def test_should_break_build_when_warnings_and_set(self, execute_tool, warnings): project = Project(".") init_pylint(project) project.set_property("pylint_break_build", True) with self.assertRaises(BuildFailedException): execute_pylint(project, Mock(Logger))
def setUp(self): self.project = Project("any-project") self.project.version = "0.0.1" self.project.set_property("sonarqube_project_key", "project_key") self.project.set_property("sonarqube_project_name", "project_name") self.project.set_property("dir_source_main_python", "src/main/python") self.project.set_property("dir_target", "target") self.project.set_property("dir_reports", "target/reports")
def setUp(self): self.patch_popen = mock.patch( "pybuilder_emr_plugin.emr_tasks.subprocess.Popen") self.mock_popen = self.patch_popen.start() self.mock_process = mock.Mock() self.mock_process.returncode = 0 self.mock_popen.return_value = self.mock_process self.input_project = Project(".") self.mock_logger = mock.Mock()
def test_find_files(self, discover_mock): project = Project('.') project.set_property('dir_source_cmdlinetest', '/any/dir') project.set_property('cram_test_file_glob', '*.t') expected = ['/any/dir/test.cram'] discover_mock.return_value = expected received = _find_files(project) self.assertEquals(expected, received) discover_mock.assert_called_once_with('/any/dir', '*.t')
def test_should_merge_additional_environment_into_current_one(self): project = Project('any-directory') project.set_property('integrationtest_additional_environment', {'foo': 'bar'}) environment = {'bar': 'baz'} add_additional_environment_keys(environment, project) self.assertEqual(environment, {'foo': 'bar', 'bar': 'baz'})
def setUp(self): self.project = Project('/base/dir') self.reactor = Mock() pyb_env = Mock() self.reactor.python_env_registry = {"pybuilder": pyb_env} self.reactor.pybuilder_venv = pyb_env self.command = ExternalCommandBuilder('command-name', self.project, self.reactor) self.command.use_argument('--foo').use_argument('--bar')
def test_non_pypi_server_passed(mocker): # pylint: disable=invalid-name """ Check init_pypi_server_plugin function""" project = Project("basedir") logger_mock = mocker.Mock() init_pypi_server_plugin(project, logger_mock) assert not logger_mock.info.called reinitialize_pypi_server_plugin(project, logger_mock) logger_mock.warn.assert_called_once_with( "No pypi server passed. " "Consider removing pypi_server plugin.")
def test_should_override_current_environment_keys_with_additional_environment( self): project = Project('any-directory') project.set_property('integrationtest_additional_environment', {'foo': 'mooh'}) environment = {'foo': 'bar'} add_additional_environment_keys(environment, project) self.assertEqual(environment, {'foo': 'mooh'})
def setUp(self): self.project = Project("basedir") self.project.set_property("dir_source_main_python", "source") self.project.set_property("dir_reports", "reports") self.reactor = Mock() self.reactor.python_env_registry = {} self.reactor.python_env_registry["pybuilder"] = pyb_env = Mock() pyb_env.environ = {} self.reactor.pybuilder_venv = pyb_env