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())
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())
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"}
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"}
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()
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()
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"
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())
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()
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()
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()
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()
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()