コード例 #1
0
def test_all_files_ignore_git(empty_directory):
    """When the git directory is present, ignore it."""
    (empty_directory / ".git").mkdir()
    (empty_directory / ".git/config").touch()

    project = Project(empty_directory)
    assert not list(project.all_files())
コード例 #2
0
def test_all_files_ignore_shl_license(empty_directory):
    """SHL-2.1 contains an SPDX tag referencing itself. It should be skipped."""
    (empty_directory / "SHL-2.1").write_text("foo")
    (empty_directory / "SHL-2.1.txt").write_text("foo")

    project = Project(empty_directory)
    assert not list(project.all_files())
コード例 #3
0
def test_all_files_ignore_dot_license(empty_directory):
    """When file and file.license are present, only yield file."""
    (empty_directory / "foo").touch()
    (empty_directory / "foo.license").touch()

    project = Project(empty_directory)
    assert {file_.name for file_ in project.all_files()} == {"foo"}
コード例 #4
0
def test_all_files(empty_directory):
    """Given a directory with some files, yield all files."""
    (empty_directory / "foo").touch()
    (empty_directory / "bar").touch()

    project = Project(empty_directory)
    assert {file_.name for file_ in project.all_files()} == {"foo", "bar"}
コード例 #5
0
def test_all_files_git_ignored_different_cwd(git_repository):
    """Given a Git repository where some files are ignored, do not yield those
    files.

    Be in a different CWD during the above.
    """
    os.chdir(git_repository / "LICENSES")
    project = Project(git_repository)
    assert Path("build/hello.py").absolute() not in project.all_files()
コード例 #6
0
def test_all_files_submodule_is_ignored(submodule_repository):
    """If a submodule is ignored, all_files should not raise an Exception."""
    (submodule_repository / "submodule/foo.py").write_text("foo")
    gitignore = submodule_repository / ".gitignore"
    contents = gitignore.read_text()
    contents += "\nsubmodule/\n"
    gitignore.write_text(contents)
    project = Project(submodule_repository)
    assert Path("submodule/foo.py").absolute() not in project.all_files()
コード例 #7
0
def test_all_files_on_single_file(empty_directory):
    """When a file is given as parameter instead of a directory, just yield the
    file.
    """
    (empty_directory / "foo").touch()

    project = Project(empty_directory)
    result = list(project.all_files(empty_directory / "foo"))

    assert len(result) == 1
    assert result[0].name == "foo"
コード例 #8
0
def test_all_files_ignore_cal_license(empty_directory):
    """CAL licenses contain SPDX tags referencing themselves. They should be
    skipped.
    """
    (empty_directory / "CAL-1.0").write_text("foo")
    (empty_directory / "CAL-1.0.txt").write_text("foo")
    (empty_directory / "CAL-1.0-Combined-Work-Exception").write_text("foo")
    (empty_directory / "CAL-1.0-Combined-Work-Exception.txt").write_text("foo")

    project = Project(empty_directory)
    assert not list(project.all_files())
コード例 #9
0
def test_all_files_symlinks(empty_directory):
    """All symlinks must be ignored."""
    (empty_directory / "blob").write_text("foo")
    (empty_directory / "blob.license").write_text(
        cleandoc("""
            spdx-FileCopyrightText: Jane Doe

            spdx-License-Identifier: GPL-3.0-or-later
            """).replace("spdx", "SPDX"))
    (empty_directory / "symlink").symlink_to("blob")
    project = Project(empty_directory)
    assert Path("symlink").absolute() not in project.all_files()
コード例 #10
0
def test_all_files_git_ignored_contains_space(git_repository):
    """Files that contain spaces are also ignored."""
    (git_repository / "I contain spaces.pyc").touch()
    project = Project(git_repository)
    assert Path("I contain spaces.pyc").absolute() not in project.all_files()
コード例 #11
0
def test_all_files_git_ignored(git_repository):
    """Given a Git repository where some files are ignored, do not yield those
    files.
    """
    project = Project(git_repository)
    assert Path("build/hello.py").absolute() not in project.all_files()
コード例 #12
0
def test_all_files_git_ignored_contains_newline(git_repository):
    """Files that contain newlines are also ignored."""
    (git_repository / "hello\nworld.pyc").touch()
    project = Project(git_repository)
    assert Path("hello\nworld.pyc").absolute() not in project.all_files()
コード例 #13
0
def test_all_files_ignore_zero_sized(empty_directory):
    """Empty files should be skipped."""
    (empty_directory / "foo").touch()

    project = Project(empty_directory)
    assert Path("foo").absolute() not in project.all_files()