diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 0afc0fc..8935de1 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -10,7 +10,6 @@ on: jobs: build: - runs-on: ubuntu-latest strategy: fail-fast: false @@ -18,8 +17,6 @@ jobs: python-version: ["3.9", "3.10", "3.11"] steps: - - uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v3 @@ -37,5 +34,7 @@ jobs: # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest + env: + DEEPL_AUTH_KEY: ${{ secrets.DEEPL_AUTH_KEY }} run: | pytest diff --git a/tests/conftest.py b/tests/conftest.py index c5ae388..dda2ae3 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -177,6 +177,8 @@ def _make_deepl_client(server, auth_key=None, proxy=None): def translator(server): """Returns a deepl.Translator to use in all tests taking a parameter 'translator'.""" + if not server.is_mock_server and not server.auth_key: + pytest.skip("this test requires DEEPL_AUTH_KEY for real server usage") return _make_translator(server) @@ -186,6 +188,8 @@ def translator(server): def deepl_client(server): """Returns a deepl.DeepLClient to use in all tests taking a parameter 'deepl_client'.""" + if not server.is_mock_server and not server.auth_key: + pytest.skip("this test requires DEEPL_AUTH_KEY for real server usage") return _make_deepl_client(server) diff --git a/tests/test_cli.py b/tests/test_cli.py index ad19975..704fb2a 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -19,6 +19,8 @@ @pytest.fixture def runner(server): + if not server.is_mock_server and not server.auth_key: + pytest.skip("this test requires DEEPL_AUTH_KEY for real server usage") env = { "DEEPL_SERVER_URL": server.server_url, "DEEPL_AUTH_KEY": server.auth_key, diff --git a/tests/test_general.py b/tests/test_general.py index cf1afce..d8a057c 100644 --- a/tests/test_general.py +++ b/tests/test_general.py @@ -15,6 +15,8 @@ import pytest import os +TEST_AUTH_KEY = os.getenv("DEEPL_AUTH_KEY") or "test_auth_key" + def test_version(): assert "1.30.0" == deepl.__version__ @@ -141,7 +143,7 @@ def test_server_url_selected_based_on_auth_key(server): @patch("requests.adapters.HTTPAdapter.send") def test_user_agent(mock_send): mock_send.return_value = _build_test_response() - translator = deepl.Translator(os.environ["DEEPL_AUTH_KEY"]) + translator = deepl.Translator(TEST_AUTH_KEY) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert "requests/" in ua_header @@ -152,9 +154,7 @@ def test_user_agent(mock_send): @patch("requests.adapters.HTTPAdapter.send") def test_user_agent_opt_out(mock_send): mock_send.return_value = _build_test_response() - translator = deepl.Translator( - os.environ["DEEPL_AUTH_KEY"], send_platform_info=False - ) + translator = deepl.Translator(TEST_AUTH_KEY, send_platform_info=False) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert "requests/" not in ua_header @@ -167,7 +167,7 @@ def test_custom_user_agent(mock_send): mock_send.return_value = _build_test_response() old_user_agent = deepl.http_client.user_agent deepl.http_client.user_agent = "my custom user agent" - translator = deepl.Translator(os.environ["DEEPL_AUTH_KEY"]) + translator = deepl.Translator(TEST_AUTH_KEY) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert ua_header == "my custom user agent" @@ -177,9 +177,9 @@ def test_custom_user_agent(mock_send): @patch("requests.adapters.HTTPAdapter.send") def test_user_agent_with_app_info(mock_send): mock_send.return_value = _build_test_response() - translator = deepl.Translator( - os.environ["DEEPL_AUTH_KEY"], - ).set_app_info("sample_python_plugin", "1.0.2") + translator = deepl.Translator(TEST_AUTH_KEY).set_app_info( + "sample_python_plugin", "1.0.2" + ) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert "requests/" in ua_header @@ -192,7 +192,7 @@ def test_user_agent_with_app_info(mock_send): def test_user_agent_opt_out_with_app_info(mock_send): mock_send.return_value = _build_test_response() translator = deepl.Translator( - os.environ["DEEPL_AUTH_KEY"], + TEST_AUTH_KEY, send_platform_info=False, ).set_app_info("sample_python_plugin", "1.0.2") translator.translate_text(example_text["EN"], target_lang="DA") @@ -208,7 +208,7 @@ def test_custom_user_agent_with_app_info(mock_send): mock_send.return_value = _build_test_response() old_user_agent = deepl.http_client.user_agent deepl.http_client.user_agent = "my custom user agent" - translator = deepl.Translator(os.environ["DEEPL_AUTH_KEY"]).set_app_info( + translator = deepl.Translator(TEST_AUTH_KEY).set_app_info( "sample_python_plugin", "1.0.2" ) translator.translate_text(example_text["EN"], target_lang="DA") @@ -222,7 +222,7 @@ def test_custom_user_agent_with_app_info(mock_send): def test_user_agent_exception(platform_mock, mock_send): mock_send.return_value = _build_test_response() platform_mock.side_effect = OSError("mocked test exception") - translator = deepl.Translator(os.environ["DEEPL_AUTH_KEY"]) + translator = deepl.Translator(TEST_AUTH_KEY) translator.translate_text(example_text["EN"], target_lang="DA") ua_header = mock_send.call_args[0][0].headers["User-agent"] assert "deepl-python" in ua_header diff --git a/tests/test_translate_text.py b/tests/test_translate_text.py index 658e7a5..93d4c0d 100644 --- a/tests/test_translate_text.py +++ b/tests/test_translate_text.py @@ -124,6 +124,8 @@ def test_invalid_language(translator): def test_skip_language_check(server): + if not server.is_mock_server and not server.auth_key: + pytest.skip("this test requires DEEPL_AUTH_KEY for real server usage") translator = deepl.Translator( server.auth_key, server_url=server.server_url, skip_language_check=True )