Beispiel #1
0
def prepare_dependencies_dir(logger, project, target_directory, excludes=None):
    """Get all dependencies from project and install them to given dir"""
    excludes = excludes or []
    dependencies = ast.literal_eval(build_install_dependencies_string(project))

    index_url = project.get_property("install_dependencies_index_url")
    if index_url:
        index_url = "--index-url {0}".format(index_url)
    else:
        index_url = ""

    pip_cmd = "pip install --target {0} {1} {2}"
    for dependency in dependencies:
        if dependency in excludes:
            logger.debug("Not installing dependency {0}.".format(dependency))
            continue

        cmd = pip_cmd.format(target_directory, index_url, dependency)
        logger.debug("Installing dependency {0}: {1}".format(dependency, cmd))

        process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
        process.communicate()
        if process.returncode != 0:
            msg = "Command {0} failed to install dependency: {1}".format(
                cmd, process.returncode)
            raise Exception(msg)
    def test_should_not_insert_url_dependency_into_install_requires(self):
        self.project.depends_on("spam")
        self.project.depends_on(
            "pyassert", url="https://github.com/downloads/halimath/pyassert/pyassert-0.2.2.tar.gz")

        self.assertEqual(
            "['spam']", build_install_dependencies_string(self.project))
    def test_should_not_insert_url_dependency_into_install_requires(self):
        self.project.depends_on("spam")
        self.project.depends_on(
            "pyassert", url="https://github.com/downloads/halimath/pyassert/pyassert-0.2.2.tar.gz")

        self.assertEqual(
            "['spam']", build_install_dependencies_string(self.project))
def prepare_dependencies_dir(logger, project, target_directory, excludes=None):
    """Get all dependencies from project and install them to given dir"""
    excludes = excludes or []
    dependencies = ast.literal_eval(build_install_dependencies_string(project))

    index_url = project.get_property('install_dependencies_index_url')
    if index_url:
        index_url = "--index-url {0}".format(index_url)
    else:
        index_url = ""

    pip_cmd = 'pip install --target {0} {1} {2}'
    for dependency in dependencies:
        if dependency in excludes:
            logger.debug("Not installing dependency {0}.".format(dependency))
            continue

        cmd = pip_cmd.format(target_directory, index_url, dependency)
        logger.debug("Installing dependency {0}: '{1}'".format(dependency, cmd))

        process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
        process.communicate()
        if process.returncode != 0:
            msg = "Command '{0}' failed to install dependency: {1}".format(
                    cmd, process.returncode)
            raise Exception(msg)
Beispiel #5
0
    def test_should_quote_requirements(self, mock_open):
        mock_open.return_value = MagicMock(spec=TYPE_FILE)
        handle = mock_open.return_value.__enter__.return_value
        handle.readlines.return_value = ["foo", "bar"]
        self.project.depends_on_requirements("requirements.txt")

        self.assertEqual('install_requires = [ "foo", "bar" ],',
                         build_install_dependencies_string(self.project))
    def test_should_ignore_empty_requirement_lines(self, mock_open):
        mock_open.return_value = MagicMock(spec=TYPE_FILE)
        handle = mock_open.return_value.__enter__.return_value
        handle.readlines.return_value = ["", "foo", "bar"]
        self.project.depends_on_requirements("requirements.txt")

        self.assertEqual("[\n            'foo',\n            'bar'\n        ]",
                         build_install_dependencies_string(self.project))
    def test_should_ignore_empty_requirement_lines(self, mock_open):
        mock_open.return_value = MagicMock(spec=TYPE_FILE)
        handle = mock_open.return_value.__enter__.return_value
        handle.readlines.return_value = ["", "foo", "bar"]
        self.project.depends_on_requirements("requirements.txt")

        self.assertEqual(
            "[\n            'foo',\n            'bar'\n        ]", build_install_dependencies_string(self.project))
    def test_should_ignore_comments_with_leading_space_from_requirements(self, mock_open):
        mock_open.return_value = MagicMock(spec=TYPE_FILE)
        handle = mock_open.return_value.__enter__.return_value
        handle.readlines.return_value = [" # comment", "bar"]
        self.project.depends_on_requirements("requirements.txt")

        self.assertEqual(
            "['bar']", build_install_dependencies_string(self.project))
    def test_should_quote_requirements(self, mock_open):
        mock_open.return_value = MagicMock(spec=TYPE_FILE)
        handle = mock_open.return_value.__enter__.return_value
        handle.readlines.return_value = ["foo", "bar"]
        self.project.depends_on_requirements("requirements.txt")

        self.assertEqual(
            'install_requires = [ "foo", "bar" ],', build_install_dependencies_string(self.project))
    def test_should_ignore_expanded_editable_urls_from_requirements(self, mock_open):
        mock_open.return_value = MagicMock(spec=TYPE_FILE)
        handle = mock_open.return_value.__enter__.return_value
        handle.readlines.return_value = ["foo", "--editable git+https://github.com/someuser/someproject.git#egg=some_package"]
        self.project.depends_on_requirements("requirements.txt")

        self.assertEqual(
            'install_requires = [ "foo" ],', build_install_dependencies_string(self.project))
    def test_should_ignore_comments_from_requirements(self, mock_open):
        mock_open.return_value = MagicMock(spec=TYPE_FILE)
        handle = mock_open.return_value.__enter__.return_value
        handle.readlines.return_value = ["#comment", "bar"]
        self.project.depends_on_requirements("requirements.txt")

        self.assertEqual("['bar']",
                         build_install_dependencies_string(self.project))
    def test_should_ignore_expanded_editable_urls_from_requirements(self, mock_open):
        mock_open.return_value = MagicMock(spec=TYPE_FILE)
        handle = mock_open.return_value.__enter__.return_value
        handle.readlines.return_value = [
            "foo", "--editable git+https://github.com/someuser/someproject.git#egg=some_package"]
        self.project.depends_on_requirements("requirements.txt")

        self.assertEqual(
            "['foo']", build_install_dependencies_string(self.project))
    def test_should_render_runtime_dependencies_when_requirements_file_used(self, mock_open):
        mock_open.return_value = MagicMock(spec=TYPE_FILE)
        handle = mock_open.return_value.__enter__.return_value
        handle.readlines.return_value = ["", "foo", "bar"]
        self.project.depends_on_requirements("requirements.txt")

        actual_setup_script = build_install_dependencies_string(self.project)
        self.assertEquals("[\n"
                          "            'sometool',\n"
                          "            'foo',\n"
                          "            'bar'\n"
                          "        ]", actual_setup_script)
    def test_should_render_runtime_dependencies_when_requirements_file_used(self, mock_open):
        mock_open.return_value = MagicMock(spec=TYPE_FILE)
        handle = mock_open.return_value.__enter__.return_value
        handle.readlines.return_value = ["", "foo", "bar"]
        self.project.depends_on_requirements("requirements.txt")

        actual_setup_script = build_install_dependencies_string(self.project)
        self.assertEqual("[\n"
                         "            'sometool',\n"
                         "            'foo',\n"
                         "            'bar'\n"
                         "        ]", actual_setup_script)
 def test_should_return_empty_string_when_no_dependency_is_given(self):
     self.assertEqual("[]", build_install_dependencies_string(self.project))
 def test_should_return_single_dependency_string(self):
     self.project.depends_on("spam")
     self.assertEqual(
         'install_requires = [ "spam" ],', build_install_dependencies_string(self.project))
 def test_should_return_multiple_dependencies_string_with_versions(self):
     self.project.depends_on("spam", "0.7")
     self.project.depends_on("eggs")
     self.assertEqual(
         'install_requires = [ "eggs", "spam>=0.7" ],', build_install_dependencies_string(self.project))
 def test_should_not_insert_default_version_operator_when_project_contains_operator_in_version(self):
     self.project.depends_on("spam", "==0.7")
     self.assertEqual(
         "['spam==0.7']", build_install_dependencies_string(self.project))
 def test_should_return_multiple_dependencies_string_with_versions(self):
     self.project.depends_on("spam", "0.7")
     self.project.depends_on("eggs")
     self.assertEqual(
         "[\n            'eggs',\n            'spam>=0.7'\n        ]",
         build_install_dependencies_string(self.project))
 def test_should_return_single_dependency_string_with_version(self):
     self.project.depends_on("spam", "0.7")
     self.assertEqual("['spam>=0.7']",
                      build_install_dependencies_string(self.project))
 def test_should_return_multiple_dependencies_string_with_versions(self):
     self.project.depends_on("spam", "0.7")
     self.project.depends_on("eggs")
     self.assertEqual('install_requires = [ "eggs", "spam>=0.7" ],',
                      build_install_dependencies_string(self.project))
 def test_should_return_single_dependency_string_with_version(self):
     self.project.depends_on("spam", "0.7")
     self.assertEqual(
         "['spam>=0.7']", build_install_dependencies_string(self.project))
 def test_should_return_empty_string_when_no_dependency_is_given(self):
     self.assertEqual("[]", build_install_dependencies_string(self.project))
 def test_should_not_insert_default_version_operator_when_project_contains_operator_in_version(
         self):
     self.project.depends_on("spam", "==0.7")
     self.assertEqual("['spam==0.7']",
                      build_install_dependencies_string(self.project))
 def test_should_return_single_dependency_string(self):
     self.project.depends_on("spam")
     self.assertEqual(
         "['spam']", build_install_dependencies_string(self.project))
 def test_should_return_single_dependency_string(self):
     self.project.depends_on("spam")
     self.assertEqual("['spam']",
                      build_install_dependencies_string(self.project))
 def test_should_return_multiple_dependencies_string_with_versions(self):
     self.project.depends_on("spam", "0.7")
     self.project.depends_on("eggs")
     self.assertEqual(
         "[\n            'eggs',\n            'spam>=0.7'\n        ]",
         build_install_dependencies_string(self.project))
 def test_should_return_single_dependency_string(self):
     self.project.depends_on("spam")
     self.assertEqual('install_requires = [ "spam" ],',
                      build_install_dependencies_string(self.project))