diff --git a/test/test_configuration.py b/test/test_configuration.py index a4573c6..7afe8c8 100644 --- a/test/test_configuration.py +++ b/test/test_configuration.py @@ -7,7 +7,6 @@ import pytest from topen import TConf, build_config - class TestTConf: def test_paths_are_expanded(self): cfg = TConf.from_dict( @@ -63,17 +62,6 @@ class TestBuildConfigPrecedence: cfg = build_config() assert cfg.notes_ext == "from-env" - def test_circular_env_vars(self, isolate_env, monkeypatch, fake_id): - """Test environment variables with circular references.""" - for k, v in { - "TOPEN_NOTES_DIR": "$TOPEN_NOTES_DIR/subdir", - "EDITOR": "${EDITOR}_backup", - }.items(): - monkeypatch.setenv(k, v) - cfg = build_config() - assert cfg.notes_dir == Path("$TOPEN_NOTES_DIR/subdir/subdir") - assert cfg.notes_editor == "nano" - def test_cli_overrides_env(self, fake_rc, monkeypatch, isolate_env): fake_rc.write_text("notes.ext=from-rc\n") monkeypatch.setenv("TOPEN_NOTES_EXT", "from-env") diff --git a/test/test_problems_edge_cases.py b/test/test_problems_edge_cases.py deleted file mode 100644 index 1d787af..0000000 --- a/test/test_problems_edge_cases.py +++ /dev/null @@ -1,64 +0,0 @@ -import configparser -import os -import tempfile -from pathlib import Path -from unittest.mock import patch - -import pytest - -from topen import _ensure_parent_dir, get_notes_file, get_task, parse_env, parse_rc - - -class TestFSEdgeCases: - """Test edge cases for TaskWarrior integration and file system operations.""" - - def test_nonexistent_task_id(self, tmp_path): - """Test raised error for non-existent task IDs.""" - with patch("tasklib.TaskWarrior") as mock_tw: - mock_tw.return_value.tasks.get.side_effect = [ - Exception("Task not found"), - ] - - with pytest.raises( - Exception, - match="Task matching query does not exist. Lookup parameters were {'uuid': '999999'}", - ): - get_task("999999", tmp_path) - - def test_read_only_notes_directory(self, tmp_path): - """Test raised error when notes directory is read-only.""" - notes_dir = tmp_path / "read_only_notes" - notes_dir.mkdir() - - # Make directory read-only - os.chmod(notes_dir, 0o444) - - fpath = notes_dir / "subdir_cant_be_written" / "uuid.md" - with pytest.raises(PermissionError): - _ensure_parent_dir(fpath) - - def test_symlink_notes_directory(self, tmp_path): - """Test behavior with symlinked notes directory, - reading the linked dir instead of the real dir. """ - real_dir = tmp_path / "real_notes" - real_dir.mkdir() - link_dir = tmp_path / "linked_notes" - link_dir.symlink_to(real_dir) - - fpath = get_notes_file("test-uuid", link_dir, "md") - assert fpath.parent == link_dir - - def test_empty_taskrc_file(self, tmp_path): - """Test functional handling of empty taskrc file.""" - fake_rc: Path = tmp_path / "empty.taskrc" - fake_rc.touch() - assert parse_rc(fake_rc) == {} - - def test_taskrc_with_invalid_syntax(self, tmp_path): - """Test functional handling of taskrc with invalid syntax.""" - invalid_rc: Path = tmp_path / "invalid.taskrc" - invalid_rc.write_text( - "invalid line == [MMMM] with too many = = equals sign\ndata.location = valid_value\n" - ) - - assert parse_rc(invalid_rc) diff --git a/topen.py b/topen.py index ae56f93..b5374e1 100755 --- a/topen.py +++ b/topen.py @@ -51,24 +51,19 @@ def main(cfg: "TConf | None" = None, io: "_IO | None" = None) -> int: io = _IO(quiet=cfg.notes_quiet) if not cfg.task_id: - io.err("Please provide task ID as argument.\n") + _ = io.err("Please provide task ID as argument.\n") return 1 try: task = get_task(id=cfg.task_id, data_location=cfg.task_data) uuid = cast(str, task["uuid"]) except Task.DoesNotExist: - io.err(f"Could not find task for ID: {cfg.task_id}.\n") + _ = io.err(f"Could not find task for ID: {cfg.task_id}.\n") return 1 fpath = get_notes_file(uuid, notes_dir=cfg.notes_dir, notes_ext=cfg.notes_ext) - try: - _ensure_parent_dir(fpath) - except PermissionError: - io.err(f"Could not write required directories for path: {fpath}.\n") - return 1 - + _ensure_parent_dir(fpath) io.out(f"Editing note: {fpath}") open_editor(fpath, editor=cfg.notes_editor, io=io)