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 })
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, }, )
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"
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
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'
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
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"
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'
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
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
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"