示例#1
0
 def test_dupes(self):
     """
     Test for two duplicate paths.
     """
     paths = ["a/b", "PULP_MANIFEST", "PULP_MANIFEST"]
     with self.assertRaisesRegex(ValueError,
                                 "Path is duplicated: PULP_MANIFEST"):
         validate_file_paths(paths)
示例#2
0
    def test_valid_paths(self):
        """
        Test for valid paths.
        """
        paths = ["a/b", "a/c/b", "PULP_MANIFEST", "b"]
        validate_file_paths(paths)

        paths = ["a/b/c", "a/b/d"]
        validate_file_paths(paths)
示例#3
0
    def test_valid_paths(self):
        """
        Test for valid paths.
        """
        paths = ['a/b', 'a/c/b', 'PULP_MANIFEST', 'b']
        validate_file_paths(paths)

        paths = ['a/b/c', 'a/b/d']
        validate_file_paths(paths)
示例#4
0
def validate_version_paths(version):
    """
    Validate artifact relative paths for dupes or overlap (e.g. a/b and a/b/c).

    Raises:
        ValueError: If two artifact relative paths overlap
    """
    paths = ContentArtifact.objects.filter(content__pk__in=version.content).values_list(
        "relative_path", flat=True
    )
    try:
        validate_file_paths(paths)
    except ValueError as e:
        raise ValueError(_("Repository version errors : {err}").format(err=e))
示例#5
0
def validate_publication_paths(publication):
    """
    Validate artifact relative paths for dupes or overlap (e.g. a/b and a/b/c).

    Raises:
        ValueError: If two artifact relative paths are dupes or overlap
    """
    paths = list(
        publication.published_artifact.values_list("relative_path", flat=True))

    if publication.pass_through:
        paths += ContentArtifact.objects.filter(
            content__pk__in=publication.repository_version.content
        ).values_list("relative_path", flat=True)

    try:
        validate_file_paths(paths)
    except ValueError as e:
        raise ValueError(_("Cannot create publication. {err}.").format(err=e))
示例#6
0
    def test_overlaps(self):
        """
        Test for overlapping paths.
        """
        paths = ["a/b", "a/b/c"]
        with self.assertRaises(ValueError):
            validate_file_paths(paths)

        paths = ["a/b/c", "a/b"]
        with self.assertRaises(ValueError):
            validate_file_paths(paths)

        paths = ["b/c", "a/b", "b"]
        with self.assertRaises(ValueError):
            validate_file_paths(paths)

        paths = ["a/b/c/d", "a/b"]
        with self.assertRaises(ValueError):
            validate_file_paths(paths)

        paths = ["a/b", "a/b/c/d"]
        with self.assertRaises(ValueError):
            validate_file_paths(paths)
示例#7
0
    def test_overlaps(self):
        """
        Test for overlapping paths.
        """
        paths = ['a/b', 'a/b/c']
        with self.assertRaises(ValueError):
            validate_file_paths(paths)

        paths = ['a/b/c', 'a/b']
        with self.assertRaises(ValueError):
            validate_file_paths(paths)

        paths = ['b/c', 'a/b', 'b']
        with self.assertRaises(ValueError):
            validate_file_paths(paths)

        paths = ['a/b/c/d', 'a/b']
        with self.assertRaises(ValueError):
            validate_file_paths(paths)

        paths = ['a/b', 'a/b/c/d']
        with self.assertRaises(ValueError):
            validate_file_paths(paths)