示例#1
0
 def test_raise_not_implimented(self):
     """Test NotImplimentedError is raised when no requirements file."""
     with TempDirectory() as tmp_dir:
         with pytest.raises(NotImplementedError):
             handle_requirements(package_root=tmp_dir.path,
                                 dest_path=tmp_dir.path,
                                 requirements={
                                     'requirements.txt': False,
                                     'Pipfile': False,
                                     'Pipfile.lock': False
                                 })
示例#2
0
 def test_raise_not_implimented(self) -> None:
     """Test NotImplimentedError is raised when no requirements file."""
     with TempDirectory() as tmp_dir:
         with pytest.raises(NotImplementedError):
             handle_requirements(
                 package_root=cast(str, tmp_dir.path),
                 dest_path=cast(str, tmp_dir.path),
                 requirements={
                     "requirements.txt": False,
                     "Pipfile": False,
                     "Pipfile.lock": False,
                 },
             )
示例#3
0
    def test_implicit_pipenv(self) -> None:
        """Test implicit use of pipenv."""
        with TempDirectory() as tmp_dir:
            tmp_dir.write("Pipfile", self.PIPFILE.encode("utf-8"))
            req_path = handle_requirements(
                package_root=cast(str, tmp_dir.path),
                dest_path=cast(str, tmp_dir.path),
                requirements=cast(Dict[str, bool],
                                  find_requirements(cast(str, tmp_dir.path))),
            )

            assert req_path == os.path.join(cast(str, tmp_dir.path),
                                            "requirements.txt")
            assert tmp_dir.read("Pipfile.lock")
            req_txt = tmp_dir.read("requirements.txt")
            if isinstance(req_txt, bytes):
                req_txt = req_txt.decode()
            if req_txt.startswith(
                    "#\n# These requirements were autogenerated by pipenv\n"):
                assert req_txt == (
                    "#\n# These requirements were autogenerated by pipenv\n"
                    "# To regenerate from the project's Pipfile, run:\n#\n"
                    "#    pipenv lock --requirements\n#\n\n"
                    "-i https://pypi.org/simple\n\n")
            else:  # older version of pipenv is being used
                assert req_txt == "-i https://pypi.org/simple\n\n"
示例#4
0
    def test_frozen_pipenv(self, caplog, monkeypatch, tmp_path):
        """Test use pipenv from Pyinstaller build."""
        caplog.set_level(logging.ERROR,
                         logger='runway.cfngin.hooks.aws_lambda')
        monkeypatch.setattr('runway.cfngin.hooks.aws_lambda.sys.frozen',
                            True,
                            raising=False)

        with pytest.raises(SystemExit) as excinfo:
            handle_requirements(package_root=str(tmp_path),
                                dest_path=str(tmp_path),
                                requirements={
                                    'requirements.txt': False,
                                    'Pipfile': True,
                                    'Pipfile.lock': False
                                })
        assert excinfo.value.code == 1
        assert ['pipenv can only be used with python installed from PyPi'
                ] == caplog.messages
示例#5
0
    def test_implicit_pipenv(self):
        """Test implicit use of pipenv."""
        with TempDirectory() as tmp_dir:
            tmp_dir.write('Pipfile', self.PIPFILE.encode('utf-8'))
            req_path = handle_requirements(package_root=tmp_dir.path,
                                           dest_path=tmp_dir.path,
                                           requirements=find_requirements(
                                               tmp_dir.path))

            assert req_path == os.path.join(tmp_dir.path, 'requirements.txt')
            assert tmp_dir.read('Pipfile.lock')
            assert tmp_dir.read('requirements.txt') == \
                b'-i https://pypi.org/simple\n\n'
示例#6
0
    def test_frozen_pipenv(self, caplog: LogCaptureFixture,
                           monkeypatch: MonkeyPatch, tmp_path: Path) -> None:
        """Test use pipenv from Pyinstaller build."""
        caplog.set_level(logging.ERROR,
                         logger="runway.cfngin.hooks.aws_lambda")
        monkeypatch.setattr("runway.cfngin.hooks.aws_lambda.sys.frozen",
                            True,
                            raising=False)

        with pytest.raises(SystemExit) as excinfo:
            handle_requirements(
                package_root=str(tmp_path),
                dest_path=str(tmp_path),
                requirements={
                    "requirements.txt": False,
                    "Pipfile": True,
                    "Pipfile.lock": False,
                },
            )
        assert excinfo.value.code == 1
        assert ["pipenv can only be used with python installed from PyPi"
                ] == caplog.messages
示例#7
0
    def test_implicit_pipenv(self):
        """Test implicit use of pipenv."""
        with TempDirectory() as tmp_dir:
            tmp_dir.write("Pipfile", self.PIPFILE.encode("utf-8"))
            req_path = handle_requirements(
                package_root=tmp_dir.path,
                dest_path=tmp_dir.path,
                requirements=find_requirements(tmp_dir.path),
            )

            assert req_path == os.path.join(tmp_dir.path, "requirements.txt")
            assert tmp_dir.read("Pipfile.lock")
            assert tmp_dir.read("requirements.txt") == b"-i https://pypi.org/simple\n\n"
示例#8
0
    def test_explicit_pipenv(self):
        """Test with 'use_pipenv=True'."""
        with TempDirectory() as tmp_dir:
            tmp_dir.write('Pipfile', self.PIPFILE.encode('utf-8'))
            tmp_dir.write('requirements.txt', b'This is not correct!')
            req_path = handle_requirements(package_root=tmp_dir.path,
                                           dest_path=tmp_dir.path,
                                           requirements=find_requirements(
                                               tmp_dir.path),
                                           use_pipenv=True)

            assert req_path == os.path.join(tmp_dir.path, 'requirements.txt')
            assert tmp_dir.read('Pipfile.lock')
            assert tmp_dir.read('requirements.txt') == \
                b'-i https://pypi.org/simple\n\n'
示例#9
0
    def test_default(self):
        """Test default action."""
        expected = b'This is correct.'
        with TempDirectory() as tmp_dir:
            tmp_dir.write('Pipfile', self.PIPFILE.encode('utf-8'))
            tmp_dir.write('requirements.txt', expected)
            req_path = handle_requirements(package_root=tmp_dir.path,
                                           dest_path=tmp_dir.path,
                                           requirements=find_requirements(
                                               tmp_dir.path))

            assert req_path == os.path.join(tmp_dir.path, 'requirements.txt')
            assert not os.path.isfile(
                os.path.join(tmp_dir.path, 'Pipfile.lock'))
            assert tmp_dir.read('requirements.txt') == expected
示例#10
0
    def test_default(self):
        """Test default action."""
        with TempDirectory() as tmp_dir:
            tmp_dir.write("Pipfile", self.PIPFILE.encode("utf-8"))
            expected = b"This is correct."
            tmp_dir.write("requirements.txt", expected)
            req_path = handle_requirements(
                package_root=tmp_dir.path,
                dest_path=tmp_dir.path,
                requirements=find_requirements(tmp_dir.path),
            )

            assert req_path == os.path.join(tmp_dir.path, "requirements.txt")
            assert not os.path.isfile(os.path.join(tmp_dir.path, "Pipfile.lock"))
            assert tmp_dir.read("requirements.txt") == expected
示例#11
0
    def test_explicit_pipenv(self) -> None:
        """Test with 'use_pipenv=True'."""
        with TempDirectory() as tmp_dir:
            tmp_dir.write("Pipfile", self.PIPFILE.encode("utf-8"))
            tmp_dir.write("requirements.txt", b"This is not correct!")
            req_path = handle_requirements(
                package_root=cast(str, tmp_dir.path),
                dest_path=cast(str, tmp_dir.path),
                requirements=cast(Dict[str, bool],
                                  find_requirements(cast(str, tmp_dir.path))),
                use_pipenv=True,
            )

            assert req_path == os.path.join(cast(str, tmp_dir.path),
                                            "requirements.txt")
            assert tmp_dir.read("Pipfile.lock")
            assert tmp_dir.read(
                "requirements.txt") == b"-i https://pypi.org/simple\n\n"