chore: code review cleanup + bump v0.8.4
- Remove _get_client_for_output() compat shim (replaced by direct _get_client calls) - Remove unused inspect import - Fix redundant branch in constants.get_accept_language() - Add TWITTER_BROWSER docs to README (en + zh) - Update all test monkeypatch signatures - Bump version to 0.8.4
This commit is contained in:
@@ -19,22 +19,12 @@ def test_cli_user_command_works_with_client_factory(monkeypatch) -> None:
|
||||
def fetch_user(self, screen_name: str) -> UserProfile:
|
||||
return UserProfile(id="1", name="Alice", screen_name=screen_name)
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli, ["user", "alice"])
|
||||
assert result.exit_code == 0
|
||||
|
||||
|
||||
def test_get_client_for_output_does_not_swallow_real_type_error(monkeypatch) -> None:
|
||||
def _broken_get_client(config=None, quiet=False):
|
||||
raise TypeError("real bug")
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", _broken_get_client)
|
||||
|
||||
with pytest.raises(TypeError, match="real bug"):
|
||||
from twitter_cli.cli import _get_client_for_output
|
||||
|
||||
_get_client_for_output({})
|
||||
|
||||
|
||||
def test_cli_feed_json_input_path(tmp_path, tweet_factory) -> None:
|
||||
@@ -102,7 +92,7 @@ def test_print_tweet_table_full_text_shows_untruncated_text(tweet_factory) -> No
|
||||
def test_cli_commands_wrap_client_creation_errors(monkeypatch, args) -> None:
|
||||
monkeypatch.setattr(
|
||||
"twitter_cli.cli._get_client",
|
||||
lambda config=None: (_ for _ in ()).throw(RuntimeError("boom")),
|
||||
lambda config=None, quiet=False: (_ for _ in ()).throw(RuntimeError("boom")),
|
||||
)
|
||||
runner = CliRunner()
|
||||
|
||||
@@ -117,7 +107,7 @@ def test_cli_user_error_yaml(monkeypatch) -> None:
|
||||
monkeypatch.setenv("OUTPUT", "auto")
|
||||
monkeypatch.setattr(
|
||||
"twitter_cli.cli._get_client",
|
||||
lambda config=None: (_ for _ in ()).throw(RuntimeError("User not found")),
|
||||
lambda config=None, quiet=False: (_ for _ in ()).throw(RuntimeError("User not found")),
|
||||
)
|
||||
runner = CliRunner()
|
||||
|
||||
@@ -136,7 +126,7 @@ def test_cli_tweet_accepts_shared_url_with_query(monkeypatch) -> None:
|
||||
assert max_count == 50
|
||||
return []
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
monkeypatch.setattr(
|
||||
"twitter_cli.cli.load_config",
|
||||
lambda: {"fetch": {"count": 50}, "filter": {}, "rateLimit": {}},
|
||||
@@ -162,7 +152,7 @@ def test_cli_article_accepts_article_url_and_json(monkeypatch) -> None:
|
||||
article_text="Hello\n\n## Section",
|
||||
)
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
monkeypatch.setattr(
|
||||
"twitter_cli.cli.load_config",
|
||||
lambda: {"fetch": {"count": 50}, "filter": {}, "rateLimit": {}},
|
||||
@@ -195,7 +185,7 @@ def test_cli_article_markdown_output_and_save(monkeypatch, tmp_path) -> None:
|
||||
assert tweet_id == "12345"
|
||||
return article
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli.load_config", lambda: {})
|
||||
output_path = tmp_path / "article.md"
|
||||
runner = CliRunner()
|
||||
@@ -227,7 +217,7 @@ def test_cli_article_markdown_overrides_auto_structured_output(monkeypatch) -> N
|
||||
return article
|
||||
|
||||
monkeypatch.setenv("OUTPUT", "auto")
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli.load_config", lambda: {})
|
||||
runner = CliRunner()
|
||||
|
||||
@@ -254,7 +244,7 @@ def test_cli_bookmark_alias_works(monkeypatch) -> None:
|
||||
calls.append(tweet_id)
|
||||
return True
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["bookmark", "123"])
|
||||
@@ -270,7 +260,7 @@ def test_cli_whoami_command(monkeypatch) -> None:
|
||||
def fetch_me(self) -> UserProfile:
|
||||
return UserProfile(id="42", name="Test User", screen_name="testuser")
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["whoami"])
|
||||
@@ -289,7 +279,7 @@ def test_cli_whoami_auto_yaml(monkeypatch) -> None:
|
||||
return UserProfile(id="42", name="Test User", screen_name="testuser")
|
||||
|
||||
monkeypatch.setenv("OUTPUT", "auto")
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["whoami"])
|
||||
@@ -307,7 +297,7 @@ def test_cli_status_auto_yaml(monkeypatch) -> None:
|
||||
return UserProfile(id="42", name="Test User", screen_name="testuser")
|
||||
|
||||
monkeypatch.setenv("OUTPUT", "auto")
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["status"])
|
||||
@@ -328,7 +318,7 @@ def test_cli_reply_command(monkeypatch) -> None:
|
||||
calls.append({"text": text, "reply_to_id": reply_to_id})
|
||||
return "999"
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["reply", "12345", "Nice tweet!"])
|
||||
@@ -345,7 +335,7 @@ def test_cli_quote_command(monkeypatch) -> None:
|
||||
calls.append({"tweet_id": tweet_id, "text": text})
|
||||
return "888"
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["quote", "12345", "Interesting!"])
|
||||
@@ -361,7 +351,7 @@ def test_cli_post_json_output(monkeypatch) -> None:
|
||||
assert reply_to_id is None
|
||||
return "999"
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["post", "hello", "--json"])
|
||||
@@ -378,7 +368,7 @@ def test_cli_like_yaml_output(monkeypatch) -> None:
|
||||
assert tweet_id == "123"
|
||||
return True
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["like", "123", "--yaml"])
|
||||
@@ -399,7 +389,7 @@ def test_cli_follow_json_output(monkeypatch) -> None:
|
||||
assert user_id == "42"
|
||||
return True
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["follow", "alice", "--json"])
|
||||
@@ -421,7 +411,7 @@ def test_cli_follow_command(monkeypatch) -> None:
|
||||
actions.append(("follow", user_id))
|
||||
return True
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["follow", "alice"])
|
||||
@@ -440,7 +430,7 @@ def test_cli_unfollow_command(monkeypatch) -> None:
|
||||
actions.append(("unfollow", user_id))
|
||||
return True
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["unfollow", "alice"])
|
||||
@@ -457,7 +447,7 @@ def test_cli_search_advanced_options(monkeypatch) -> None:
|
||||
captured["product"] = product
|
||||
return []
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
monkeypatch.setattr(
|
||||
"twitter_cli.cli.load_config",
|
||||
lambda: {"fetch": {"count": 50}, "filter": {}, "rateLimit": {}},
|
||||
@@ -492,7 +482,7 @@ def test_cli_search_operators_only_no_query(monkeypatch) -> None:
|
||||
captured["query"] = query
|
||||
return []
|
||||
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: FakeClient())
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: FakeClient())
|
||||
monkeypatch.setattr(
|
||||
"twitter_cli.cli.load_config",
|
||||
lambda: {"fetch": {"count": 50}, "filter": {}, "rateLimit": {}},
|
||||
@@ -513,7 +503,7 @@ def test_cli_search_empty_query_no_options() -> None:
|
||||
|
||||
|
||||
def test_cli_search_invalid_date_rejected(monkeypatch) -> None:
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: None)
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: None)
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["search", "python", "--since", "not-a-date"])
|
||||
@@ -522,7 +512,7 @@ def test_cli_search_invalid_date_rejected(monkeypatch) -> None:
|
||||
|
||||
|
||||
def test_cli_search_rejects_reversed_date_range(monkeypatch) -> None:
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None: None)
|
||||
monkeypatch.setattr("twitter_cli.cli._get_client", lambda config=None, quiet=False: None)
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ["search", "python", "--since", "2026-03-02", "--until", "2026-03-01"])
|
||||
|
||||
Reference in New Issue
Block a user