Feature keep file 1135 (#1139)
* Added gitignorefile * Fixed gitignorefile for os.PathLike paths * --keep now follows .gitignore rules * Fixed ruff QA error * Added support for .osxphotos_keep file * Added reference to .osxphotos_keep * Added tests for .osxphotos_keep * Updated help text for --cleanup, --keep
This commit is contained in:
83
tests/test_gitignorefile_ignore.py
Normal file
83
tests/test_gitignorefile_ignore.py
Normal file
@@ -0,0 +1,83 @@
|
||||
import os
|
||||
import shutil
|
||||
import tempfile
|
||||
import unittest
|
||||
import unittest.mock
|
||||
|
||||
import osxphotos.gitignorefile
|
||||
|
||||
|
||||
class TestIgnore(unittest.TestCase):
|
||||
def test_robert_shutil_ignore_function(self):
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
for directory in [
|
||||
"test__pycache__/excluded/excluded",
|
||||
".test_venv",
|
||||
"not_excluded/test__pycache__",
|
||||
"not_excluded/excluded_not",
|
||||
"not_excluded/excluded",
|
||||
"not_excluded/not_excluded2",
|
||||
]:
|
||||
os.makedirs(f"{d}/example/{directory}")
|
||||
|
||||
for name in [
|
||||
"test__pycache__/.test_gitignore",
|
||||
"test__pycache__/excluded/excluded/excluded.txt",
|
||||
"test__pycache__/excluded/excluded/test_inverse",
|
||||
"test__pycache__/some_file.txt",
|
||||
"test__pycache__/test",
|
||||
".test_gitignore",
|
||||
".test_venv/some_file.txt",
|
||||
"not_excluded.txt",
|
||||
"not_excluded/.test_gitignore",
|
||||
"not_excluded/excluded_not/sub_excluded.txt",
|
||||
"not_excluded/excluded/excluded.txt",
|
||||
"not_excluded/not_excluded2.txt",
|
||||
"not_excluded/not_excluded2/sub_excluded.txt",
|
||||
"not_excluded/excluded_not.txt",
|
||||
".test_gitignore_empty",
|
||||
]:
|
||||
with open(f"{d}/example/{name}", "w"):
|
||||
pass
|
||||
|
||||
with open(f"{d}/example/.gitignore", "w") as f:
|
||||
print("test__pycache__", file=f)
|
||||
print("*.py[cod]", file=f)
|
||||
print(".test_venv/", file=f)
|
||||
print(".test_venv/**", file=f)
|
||||
print(".test_venv/*", file=f)
|
||||
print("!test_inverse", file=f)
|
||||
|
||||
result = []
|
||||
shutil.copytree(
|
||||
f"{d}/example", f"{d}/target", ignore=osxphotos.gitignorefile.ignore()
|
||||
)
|
||||
for root, directories, files in os.walk(f"{d}/target"):
|
||||
for directory in directories:
|
||||
result.append(os.path.join(root, directory))
|
||||
for name in files:
|
||||
result.append(os.path.join(root, name))
|
||||
|
||||
result = sorted(
|
||||
(os.path.relpath(x, f"{d}/target").replace(os.sep, "/") for x in result)
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
result,
|
||||
[
|
||||
".gitignore",
|
||||
".test_gitignore",
|
||||
".test_gitignore_empty",
|
||||
"not_excluded",
|
||||
"not_excluded.txt",
|
||||
"not_excluded/.test_gitignore",
|
||||
"not_excluded/excluded",
|
||||
"not_excluded/excluded/excluded.txt",
|
||||
"not_excluded/excluded_not",
|
||||
"not_excluded/excluded_not.txt",
|
||||
"not_excluded/excluded_not/sub_excluded.txt",
|
||||
"not_excluded/not_excluded2",
|
||||
"not_excluded/not_excluded2.txt",
|
||||
"not_excluded/not_excluded2/sub_excluded.txt",
|
||||
],
|
||||
)
|
||||
Reference in New Issue
Block a user