예제 #1
0
def test_constraints_without_requirement_will_not_show_up_in_generated_requirement_file(
        tmpdir, project_dir, current_platform, requirement_parser,
        logger: Logger):
    requirements_txt = tmpdir.join("requirements.txt")
    constraints_txt = tmpdir.join("constraints.txt")

    with open(requirements_txt, "w") as f:
        print("test-requirement", file=f)
        print("-c " + str(constraints_txt), file=f)
    with open(constraints_txt, "w") as f:
        print("test-constraint == 1.0", file=f)

    original_requirements_file = RequirementsFile(str(requirements_txt),
                                                  project_dir,
                                                  requirement_parser, logger)
    original_requirements_file.process()

    requirement_set = RequirementSet.from_file(original_requirements_file,
                                               current_platform,
                                               requirement_parser, logger)

    new_requirements_file = requirement_set.to_file(project_dir,
                                                    current_platform,
                                                    requirement_parser, logger)

    assert "test-constraint" not in new_requirements_file.read()
예제 #2
0
def test_requirement_set_respects_constraints_when_reading_from_requirement_file(
        tmpdir, project_dir, current_platform, requirement_parser,
        logger: Logger):
    requirements_txt = tmpdir.join("requirements.txt")
    constraints_txt = tmpdir.join("constraints.txt")
    with open(requirements_txt, "w") as f:
        print("test-requirement", file=f)
        print("-c " + str(constraints_txt), file=f)
    with open(constraints_txt, "w") as f:
        print("test-requirement <= 1.0", file=f)

    original_requirements_file = RequirementsFile(str(requirements_txt),
                                                  project_dir,
                                                  requirement_parser, logger)
    original_requirements_file.process()

    requirement_set = RequirementSet.from_file(original_requirements_file,
                                               current_platform,
                                               requirement_parser, logger)

    new_requirements_file = requirement_set.to_file(project_dir,
                                                    current_platform,
                                                    requirement_parser, logger)

    assert "test-requirement <= 1.0" in new_requirements_file.read()
예제 #3
0
 def add_file(self, file_path: str) -> None:
     with tempfile.TemporaryDirectory() as project_directory:
         requirements_file = RequirementsFile(file_path, project_directory)
         requirements_file.process()
         added_requirements = RequirementSet.from_file(
             requirements_file, self.platform
         )
     self.requirement_set += added_requirements
예제 #4
0
def test_from_file_handles_comment_lines(project_dir, current_platform,
                                         requirement_parser, logger: Logger):
    requirements_file = RequirementsFile.from_lines(["pypi2nix", "# comment"],
                                                    project_dir,
                                                    requirement_parser, logger)
    requirements_set = RequirementSet.from_file(requirements_file,
                                                current_platform,
                                                requirement_parser, logger)
    assert len(requirements_set) == 1
 def add_file(self, file_path: str) -> None:
     requirements_file = RequirementsFile(file_path,
                                          self._project_directory,
                                          self.requirement_parser,
                                          self.logger)
     requirements_file.process()
     self._sources.update(requirements_file.sources())
     added_requirements = RequirementSet.from_file(requirements_file,
                                                   self.platform,
                                                   self.requirement_parser,
                                                   self.logger)
     self.requirement_set += added_requirements
예제 #6
0
def test_include_lines_are_respected_when_generating_from_file(
        tmpdir, project_dir, current_platform):
    requirements_txt = tmpdir.join("requirements.txt")
    included_requirements_txt = tmpdir.join("included_requirements.txt")

    with open(requirements_txt, "w") as f:
        print("-r " + str(included_requirements_txt), file=f)
    with open(included_requirements_txt, "w") as f:
        print("test-requirement", file=f)
    requirements_file = RequirementsFile(str(requirements_txt), project_dir)
    requirements_file.process()
    requirement_set = RequirementSet.from_file(requirements_file,
                                               current_platform)

    assert "test-requirement" in requirement_set
예제 #7
0
def test_that_extras_are_preserved_when_converting_to_and_from_a_file(
    requirement_parser: RequirementParser,
    requirement_set: RequirementSet,
    current_platform: TargetPlatform,
    project_dir: str,
    logger: Logger,
):
    requirement_set.add(requirement_parser.parse("req[extra1]"))
    requirements_file = requirement_set.to_file(project_dir, current_platform,
                                                requirement_parser, logger)
    new_requirements_set = RequirementSet.from_file(requirements_file,
                                                    current_platform,
                                                    requirement_parser, logger)
    requirement = new_requirements_set["req"]
    assert requirement.extras() == {"extra1"}
예제 #8
0
 def add_file(self, file_path: str) -> None:
     requirements_file = RequirementsFile(file_path,
                                          self._project_directory,
                                          self.requirement_parser,
                                          self.logger)
     requirements_file.process()
     self._sources.update(requirements_file.sources())
     added_requirements = RequirementSet.from_file(requirements_file,
                                                   self.platform,
                                                   self.requirement_parser,
                                                   self.logger)
     transitive_requirements = set()
     for requirement in added_requirements:
         transitive_requirements.update(
             self._base_dependency_graph.get_all_build_dependency_names(
                 requirement))
     for line in transitive_requirements:
         self._add_line_without_dependency_check(line)
     self.requirement_set += added_requirements
예제 #9
0
def test_from_file_handles_empty_lines(project_dir, current_platform):
    requirements_file = RequirementsFile.from_lines(["pypi2nix", ""],
                                                    project_dir)
    requirements_set = RequirementSet.from_file(requirements_file,
                                                current_platform)
    assert len(requirements_set) == 1