Esempio n. 1
0
def test_path_object_and_str_are_valid_types_get_mtime_and_size(
        path, repo_dir):
    dvcignore = DvcIgnoreFilter(repo_dir.root_dir)
    time, size = get_mtime_and_size(path, dvcignore)
    object_time, object_size = get_mtime_and_size(PathInfo(path), dvcignore)
    assert time == object_time
    assert size == object_size
Esempio n. 2
0
 def test_nobranch(self):
     tree = WorkingTree(self._root_dir)
     dvcignore = DvcIgnoreFilter(self._root_dir)
     self.assertWalkEqual(
         tree.walk(".", dvcignore=dvcignore),
         [
             (
                 self._root_dir,
                 ["data_dir"],
                 ["bar", "тест", "code.py", "foo"],
             ),
             (join(self._root_dir, "data_dir"), ["data_sub_dir"], ["data"]),
             (
                 join(self._root_dir, "data_dir", "data_sub_dir"),
                 [],
                 ["data_sub"],
             ),
         ],
     )
     self.assertWalkEqual(
         tree.walk(join("data_dir", "data_sub_dir"), dvcignore=dvcignore),
         [(
             join(self._root_dir, "data_dir", "data_sub_dir"),
             [],
             ["data_sub"],
         )],
     )
Esempio n. 3
0
def dvc_walk(
    top,
    topdown=True,
    onerror=None,
    followlinks=False,
    ignore_file_handler=None,
):
    """
    Proxy for `os.walk` directory tree generator.
    Utilizes DvcIgnoreFilter functionality.
    """
    ignore_filter = None
    if topdown:
        from dvc.ignore import DvcIgnoreFilter

        ignore_filter = DvcIgnoreFilter(
            top, ignore_file_handler=ignore_file_handler)

    for root, dirs, files in os.walk(top,
                                     topdown=topdown,
                                     onerror=onerror,
                                     followlinks=followlinks):

        if ignore_filter:
            dirs[:], files[:] = ignore_filter(root, dirs, files)

        yield root, dirs, files
Esempio n. 4
0
    def _walk(
        self,
        tree,
        topdown=True,
        ignore_file_handler=None,
        dvc_ignore_filter=None,
    ):
        dirs, nondirs = [], []
        for i in tree:
            if i.mode == GIT_MODE_DIR:
                dirs.append(i.name)
            else:
                nondirs.append(i.name)

        if topdown:
            if not dvc_ignore_filter:
                dvc_ignore_filter = DvcIgnoreFilter(
                    tree.abspath, ignore_file_handler=ignore_file_handler)
            dirs, nondirs = dvc_ignore_filter(tree.path, dirs, nondirs)
            yield os.path.normpath(tree.abspath), dirs, nondirs

        for i in dirs:
            for x in self._walk(
                    tree[i],
                    topdown=True,
                    ignore_file_handler=ignore_file_handler,
                    dvc_ignore_filter=dvc_ignore_filter,
            ):
                yield x

        if not topdown:
            yield os.path.normpath(tree.abspath), dirs, nondirs
Esempio n. 5
0
    def dvcignore(self):
        from dvc.ignore import DvcIgnoreFilter, DvcIgnoreFilterNoop

        root = self.dvcignore_root or self.tree_root
        if not self.use_dvcignore:
            return DvcIgnoreFilterNoop(self, root)
        self.use_dvcignore = False
        ret = DvcIgnoreFilter(self, root)
        self.use_dvcignore = True
        return ret
Esempio n. 6
0
 def test_subdir(self):
     dvcignore = DvcIgnoreFilter(self.root_dir)
     tree = WorkingTree(self._root_dir)
     self.assertWalkEqual(
         tree.walk(join("data_dir", "data_sub_dir"), dvcignore=dvcignore),
         [(
             join(self._root_dir, "data_dir", "data_sub_dir"),
             [],
             ["data_sub"],
         )],
     )
Esempio n. 7
0
    def test(self):
        dvcignore = DvcIgnoreFilter(self.root_dir)
        file_time, file_size = get_mtime_and_size(self.DATA, dvcignore)
        dir_time, dir_size = get_mtime_and_size(self.DATA_DIR, dvcignore)

        actual_file_size = os.path.getsize(self.DATA)
        actual_dir_size = os.path.getsize(self.DATA) + os.path.getsize(
            self.DATA_SUB)

        self.assertIs(type(file_time), str)
        self.assertIs(type(file_size), str)
        self.assertEqual(file_size, str(actual_file_size))
        self.assertIs(type(dir_time), str)
        self.assertIs(type(dir_size), str)
        self.assertEqual(dir_size, str(actual_dir_size))
Esempio n. 8
0
def test_ignore_collecting_dvcignores(repo_dir, dname):
    top_ignore_file = os.path.join(
        repo_dir.root_dir, os.path.dirname(dname), DvcIgnore.DVCIGNORE_FILE
    )
    repo_dir.create(top_ignore_file, os.path.basename(dname))

    ignore_file = os.path.join(
        repo_dir.root_dir, dname, DvcIgnore.DVCIGNORE_FILE
    )
    repo_dir.create(ignore_file, repo_dir.FOO)

    assert DvcIgnoreFilter(repo_dir.root_dir).ignores == {
        DvcIgnoreDirs([".git", ".hg", ".dvc"]),
        DvcIgnorePatterns(top_ignore_file),
    }
Esempio n. 9
0
 def test(self):
     dvcignore = DvcIgnoreFilter(self.root_dir)
     tree = WorkingTree(self._root_dir)
     self.assertWalkEqual(
         tree.walk(self._root_dir, dvcignore=dvcignore),
         [
             (
                 self._root_dir,
                 ["data_dir"],
                 ["code.py", "bar", "тест", "foo"],
             ),
             (join(self._root_dir, "data_dir"), ["data_sub_dir"], ["data"]),
             (
                 join(self._root_dir, "data_dir", "data_sub_dir"),
                 [],
                 ["data_sub"],
             ),
         ],
     )
Esempio n. 10
0
def test_ignore_on_branch(git, dvc_repo, repo_dir):
    dvc_repo.add(repo_dir.DATA_DIR)
    dvc_repo.scm.commit("add data dir")

    branch_name = "branch_one"
    dvc_repo.scm.checkout(branch_name, create_new=True)

    repo_dir.create(DvcIgnore.DVCIGNORE_FILE, to_posixpath(repo_dir.DATA_SUB))
    dvc_repo.scm.add([DvcIgnore.DVCIGNORE_FILE])
    git.index.commit("add ignore")

    dvc_repo.scm.checkout("master")

    git_tree = dvc_repo.scm.get_tree(branch_name)
    branch_data_files = set(
        itertools.chain.from_iterable([
            files for _, _, files in dvc_repo.tree.walk(
                repo_dir.DATA_DIR,
                dvcignore=DvcIgnoreFilter(repo_dir.root_dir, git_tree),
            )
        ]))
    assert branch_data_files == {"data"}
Esempio n. 11
0
 def dvcignore(self):
     return DvcIgnoreFilter(self.root_dir)
Esempio n. 12
0
    def dvcignore(self) -> DvcIgnoreFilter:

        return DvcIgnoreFilter(self.fs, self.root_dir)