summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2022-06-18 15:27:59 +0200
committerFlorian Bruhin <me@the-compiler.org>2022-06-18 15:27:59 +0200
commite5d091bbab6619ebba082c65cded2ff26718e42d (patch)
treecc0739618772e0fe73a09346d3c9600e44000da1
parent1e8d2789027fbd5056c9c33e6d2d4a1530d81f33 (diff)
downloadqutebrowser-e5d091bbab6619ebba082c65cded2ff26718e42d.tar.gz
qutebrowser-e5d091bbab6619ebba082c65cded2ff26718e42d.zip
greasemonkey: Add some more tests
-rw-r--r--tests/unit/javascript/test_greasemonkey.py90
1 files changed, 80 insertions, 10 deletions
diff --git a/tests/unit/javascript/test_greasemonkey.py b/tests/unit/javascript/test_greasemonkey.py
index a523a1787..679fc9409 100644
--- a/tests/unit/javascript/test_greasemonkey.py
+++ b/tests/unit/javascript/test_greasemonkey.py
@@ -20,9 +20,9 @@
import logging
import textwrap
+import pathlib
import pytest
-import py.path # pylint: disable=no-name-in-module
from PyQt5.QtCore import QUrl
from qutebrowser.utils import usertypes, version
@@ -48,24 +48,53 @@ pytestmark = [
@pytest.fixture
-def gm_manager():
+def gm_manager() -> greasemonkey.GreasemonkeyManager:
return greasemonkey.GreasemonkeyManager()
-def _save_script(script_text, filename):
- # pylint: disable=no-member
- file_path = py.path.local(greasemonkey._scripts_dirs()[0]) / filename
- # pylint: enable=no-member
- file_path.write_text(script_text, encoding='utf-8', ensure=True)
+def _scripts_dir() -> pathlib.Path:
+ p = pathlib.Path(greasemonkey._scripts_dirs()[0])
+ p.mkdir(exist_ok=True)
+ return p
+
+
+def _save_script(script_text: str, filename: str) -> None:
+ file_path = _scripts_dir() / filename
+ file_path.write_text(script_text, encoding='utf-8')
def test_all(gm_manager):
"""Test that a script gets read from file, parsed and returned."""
+ name = "qutebrowser test userscript"
_save_script(test_gm_script, 'test.user.js')
- gm_manager.load_scripts()
- assert (gm_manager.all_scripts()[0].name ==
- "qutebrowser test userscript")
+ result = gm_manager.load_scripts()
+ assert len(result.successful) == 1
+ assert result.successful[0].name == name
+ assert not result.errors
+
+ all_scripts = gm_manager.all_scripts()
+ assert len(all_scripts) == 1
+ assert all_scripts[0].name == name
+
+
+def test_load_error(gm_manager):
+ """Test behavior when a script fails loading."""
+ name = "qutebrowser test userscript"
+ wrong_path = _scripts_dir() / "test1.user.js"
+ wrong_path.mkdir()
+ _save_script(test_gm_script, "test2.user.js")
+
+ result = gm_manager.load_scripts()
+ assert len(result.successful) == 1
+ assert result.successful[0].name == name
+
+ assert len(result.errors) == 1
+ assert result.errors[0][0] == "test1.user.js"
+
+ all_scripts = gm_manager.all_scripts()
+ assert len(all_scripts) == 1
+ assert all_scripts[0].name == name
@pytest.mark.parametrize("url, expected_matches", [
@@ -331,3 +360,44 @@ def test_shared_window_proxy(js_tester):
js_tester.run(test_script_a)
js_tester.run(test_script_b, expected=["test", "test"])
+
+
+@pytest.mark.parametrize("scripts, expected", [
+ ([], "No Greasemonkey scripts loaded"),
+ (
+ [greasemonkey.GreasemonkeyScript(properties={}, code="", filename="test")],
+ "Loaded Greasemonkey scripts:\n\ntest",
+ ),
+ (
+ [
+ greasemonkey.GreasemonkeyScript(properties={}, code="", filename="test1"),
+ greasemonkey.GreasemonkeyScript(properties={}, code="", filename="test2"),
+ ],
+ "Loaded Greasemonkey scripts:\n\ntest1\ntest2",
+ ),
+])
+def test_load_results_successful(scripts, expected):
+ results = greasemonkey.LoadResults()
+ results.successful = scripts
+ assert results.successful_str() == expected
+
+
+@pytest.mark.parametrize("errors, expected", [
+ ([], None),
+ (
+ [("test", "could not frobnicate")],
+ "Greasemonkey scripts failed to load:\n\ntest: could not frobnicate",
+ ),
+ (
+ [("test1", "could not frobnicate"), ("test2", "frobnicator borked")],
+ (
+ "Greasemonkey scripts failed to load:\n\n"
+ "test1: could not frobnicate\n"
+ "test2: frobnicator borked"
+ )
+ ),
+])
+def test_load_results_errors(errors, expected):
+ results = greasemonkey.LoadResults()
+ results.errors = errors
+ assert results.error_str() == expected