@@ -833,7 +833,79 @@ def test_exporter_can_export_requirements_txt_with_directory_packages(
833833 expected = """\
834834 foo @ {}/tests/fixtures/sample_project
835835""" .format (
836- working_directory .as_posix ()
836+ working_directory .as_uri ()
837+ )
838+
839+ assert expected == content
840+
841+
842+ def test_exporter_can_export_requirements_txt_with_nested_directory_packages (
843+ tmp_dir , poetry , working_directory
844+ ):
845+ poetry .locker .mock_lock_data (
846+ {
847+ "package" : [
848+ {
849+ "name" : "foo" ,
850+ "version" : "1.2.3" ,
851+ "category" : "main" ,
852+ "optional" : False ,
853+ "python-versions" : "*" ,
854+ "source" : {
855+ "type" : "directory" ,
856+ "url" : "tests/fixtures/sample_project" ,
857+ "reference" : "" ,
858+ },
859+ },
860+ {
861+ "name" : "bar" ,
862+ "version" : "4.5.6" ,
863+ "category" : "main" ,
864+ "optional" : False ,
865+ "python-versions" : "*" ,
866+ "source" : {
867+ "type" : "directory" ,
868+ "url" : "tests/fixtures/sample_project/../project_with_nested_local/bar" ,
869+ "reference" : "" ,
870+ },
871+ },
872+ {
873+ "name" : "baz" ,
874+ "version" : "7.8.9" ,
875+ "category" : "main" ,
876+ "optional" : False ,
877+ "python-versions" : "*" ,
878+ "source" : {
879+ "type" : "directory" ,
880+ "url" : "tests/fixtures/sample_project/../project_with_nested_local/bar/.." ,
881+ "reference" : "" ,
882+ },
883+ },
884+ ],
885+ "metadata" : {
886+ "python-versions" : "*" ,
887+ "content-hash" : "123456789" ,
888+ "hashes" : {"foo" : [], "bar" : [], "baz" : []},
889+ },
890+ }
891+ )
892+ set_package_requires (poetry )
893+
894+ exporter = Exporter (poetry )
895+
896+ exporter .export ("requirements.txt" , Path (tmp_dir ), "requirements.txt" )
897+
898+ with (Path (tmp_dir ) / "requirements.txt" ).open (encoding = "utf-8" ) as f :
899+ content = f .read ()
900+
901+ expected = """\
902+ bar @ {}/tests/fixtures/project_with_nested_local/bar
903+ baz @ {}/tests/fixtures/project_with_nested_local
904+ foo @ {}/tests/fixtures/sample_project
905+ """ .format (
906+ working_directory .as_uri (),
907+ working_directory .as_uri (),
908+ working_directory .as_uri (),
837909 )
838910
839911 assert expected == content
@@ -878,7 +950,7 @@ def test_exporter_can_export_requirements_txt_with_directory_packages_and_marker
878950 expected = """\
879951 foo @ {}/tests/fixtures/sample_project; python_version < "3.7"
880952""" .format (
881- working_directory .as_posix ()
953+ working_directory .as_uri ()
882954 )
883955
884956 assert expected == content
0 commit comments