fix(cli): ignore generated folders by default
- Skip .comments, virtualenvs, env files, VCS folders, and OS metadata in sync. - Apply defaults before project .nanoshareignore and repeatable --ignore rules. - Cover default ignores for local uploads and direct pattern matching.
This commit is contained in:
@@ -9,7 +9,7 @@ sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'cli'))
|
||||
from nanoshare_client import cli
|
||||
from nanoshare_client.auth import _CallbackServer
|
||||
from nanoshare_client.completion import script as completion_script
|
||||
from nanoshare_client.ignore import is_ignored
|
||||
from nanoshare_client.ignore import load_ignore_patterns, is_ignored
|
||||
from nanoshare_client.table import format_table
|
||||
|
||||
class FakeClient:
|
||||
@@ -210,6 +210,12 @@ def test_sync_ignores_local_files_from_nanoshareignore(tmp_path, monkeypatch):
|
||||
(tmp_path / 'cache').mkdir()
|
||||
(tmp_path / 'cache' / 'ignored.txt').write_text('ignored')
|
||||
(tmp_path / 'scratch.tmp').write_text('ignored')
|
||||
(tmp_path / '.comments').mkdir()
|
||||
(tmp_path / '.comments' / 'ignored.xml').write_text('<comment />')
|
||||
(tmp_path / '.env').write_text('SECRET=ignored')
|
||||
(tmp_path / '.venv').mkdir()
|
||||
(tmp_path / '.venv' / 'ignored.py').write_text('ignored')
|
||||
(tmp_path / 'Thumbs.db').write_text('ignored')
|
||||
|
||||
code = cli.main([
|
||||
'sync',
|
||||
@@ -250,6 +256,18 @@ def test_ignore_patterns_match_files_and_directories():
|
||||
assert is_ignored('docs/page.draft.md', patterns)
|
||||
assert not is_ignored('docs/page.md', patterns)
|
||||
|
||||
def test_default_ignore_patterns_skip_common_generated_files(tmp_path):
|
||||
patterns = load_ignore_patterns(tmp_path)
|
||||
|
||||
assert is_ignored('.comments/comment.xml', patterns)
|
||||
assert is_ignored('.env', patterns)
|
||||
assert is_ignored('.env.local', patterns)
|
||||
assert is_ignored('.venv/bin/python', patterns)
|
||||
assert is_ignored('venv/bin/python', patterns)
|
||||
assert is_ignored('__pycache__/mod.pyc', patterns)
|
||||
assert is_ignored('nested/Thumbs.db', patterns)
|
||||
assert not is_ignored('docs/note.txt', patterns)
|
||||
|
||||
def test_completion_scripts_include_commands():
|
||||
zsh = completion_script('zsh')
|
||||
bash = completion_script('bash')
|
||||
|
||||
Reference in New Issue
Block a user