diff options
author | mkonig <koenig@v-i-t.de> | 2022-05-23 09:50:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-23 09:50:37 +0200 |
commit | cfbbd59ce4f34e3baa82c2162c36fd8a3fa8dfbd (patch) | |
tree | 1dbfd1c8e4f82dc934e7da39f91204d10720e2fc | |
parent | b6c3c73998d415fc67e6fe046107bb40e4865de5 (diff) | |
parent | 14bcdc86a29b0931f00e977705835e296b8d792e (diff) | |
download | qutebrowser-cfbbd59ce4f34e3baa82c2162c36fd8a3fa8dfbd.tar.gz qutebrowser-cfbbd59ce4f34e3baa82c2162c36fd8a3fa8dfbd.zip |
Merge branch 'qutebrowser:master' into master
-rw-r--r-- | .github/workflows/ci.yml | 4 | ||||
-rw-r--r-- | doc/changelog.asciidoc | 4 | ||||
-rw-r--r-- | misc/qutebrowser.spec | 6 | ||||
-rw-r--r-- | misc/requirements/requirements-check-manifest.txt | 4 | ||||
-rw-r--r-- | misc/requirements/requirements-dev.txt | 12 | ||||
-rw-r--r-- | misc/requirements/requirements-flake8.txt | 4 | ||||
-rw-r--r-- | misc/requirements/requirements-mypy.txt | 2 | ||||
-rw-r--r-- | misc/requirements/requirements-pyinstaller.txt | 4 | ||||
-rw-r--r-- | misc/requirements/requirements-pylint.txt | 12 | ||||
-rw-r--r-- | misc/requirements/requirements-pyroma.txt | 6 | ||||
-rw-r--r-- | misc/requirements/requirements-sphinx.txt | 6 | ||||
-rw-r--r-- | misc/requirements/requirements-tests-bleeding.txt | 2 | ||||
-rw-r--r-- | misc/requirements/requirements-tests.txt | 14 | ||||
-rw-r--r-- | misc/requirements/requirements-tox.txt | 8 | ||||
-rw-r--r-- | misc/requirements/requirements-vulture.txt | 2 | ||||
-rw-r--r-- | qutebrowser/config/configtypes.py | 8 | ||||
-rw-r--r-- | qutebrowser/html/settings.html | 5 | ||||
-rw-r--r-- | qutebrowser/misc/elf.py | 2 | ||||
-rw-r--r-- | requirements.txt | 2 | ||||
-rw-r--r-- | tests/unit/misc/test_elf.py | 17 | ||||
-rw-r--r-- | tests/unit/utils/test_utils.py | 17 |
21 files changed, 91 insertions, 50 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 28f1d0971..288efbc02 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -198,12 +198,12 @@ jobs: with: persist-credentials: false - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: javascript, python queries: +security-extended - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 irc: timeout-minutes: 2 diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc index 233a86865..c64de266a 100644 --- a/doc/changelog.asciidoc +++ b/doc/changelog.asciidoc @@ -66,6 +66,10 @@ Fixed - PDF.js now works properly again with the macOS and Windows releases. - The MathML workaround for darkmode (e.g. black on black Wikipedia formula) now also works for display (rather than inline) math. +- The `content.proxy` setting can now correctly be set to arbitrary values via + the `qute://settings` page again. +- Fixed issues with Chromium version detection on Archlinux with + qt5-webengine 5.15.9-3. - Fixes for various notification-related crashes: * With the `tiramisu` notification server (due to invalid behavior of the server, now a non-fatal error) * With the `budgie` notification server when closing a notification (due to invalid behavior of the server, now worked around) diff --git a/misc/qutebrowser.spec b/misc/qutebrowser.spec index 3c75d1b90..60729266e 100644 --- a/misc/qutebrowser.spec +++ b/misc/qutebrowser.spec @@ -2,7 +2,6 @@ import sys import os -import pathlib sys.path.insert(0, os.getcwd()) from scripts import setupcommon @@ -42,10 +41,7 @@ setupcommon.write_git_file() if os.name == 'nt': - # WORKAROUND for PyInstaller 5.0 bug: - # https://github.com/pyinstaller/pyinstaller/issues/6759 - icons_path = pathlib.Path.cwd() / 'qutebrowser' / 'icons' - icon = str(icons_path / 'qutebrowser.ico') + icon = '../qutebrowser/icons/qutebrowser.ico' elif sys.platform == 'darwin': icon = '../qutebrowser/icons/qutebrowser.icns' else: diff --git a/misc/requirements/requirements-check-manifest.txt b/misc/requirements/requirements-check-manifest.txt index 012a3dc05..c51ef3d0e 100644 --- a/misc/requirements/requirements-check-manifest.txt +++ b/misc/requirements/requirements-check-manifest.txt @@ -1,8 +1,8 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py -build==0.7.0 +build==0.8.0 check-manifest==0.48 packaging==21.3 pep517==0.12.0 -pyparsing==3.0.8 +pyparsing==3.0.9 tomli==2.0.1 diff --git a/misc/requirements/requirements-dev.txt b/misc/requirements/requirements-dev.txt index 9a4bb1a39..a4d144e66 100644 --- a/misc/requirements/requirements-dev.txt +++ b/misc/requirements/requirements-dev.txt @@ -1,9 +1,9 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py bleach==5.0.0 -build==0.7.0 +build==0.8.0 bump2version==1.0.1 -certifi==2021.10.8 +certifi==2022.5.18.1 cffi==1.15.0 charset-normalizer==2.0.12 commonmark==0.9.1 @@ -12,9 +12,9 @@ docutils==0.18.1 github3.py==3.2.0 hunter==3.4.3 idna==3.3 -importlib-metadata==4.11.3 +importlib-metadata==4.11.4 jeepney==0.8.0 -keyring==23.5.0 +keyring==23.5.1 manhole==1.8.0 packaging==21.3 pep517==0.12.0 @@ -22,9 +22,9 @@ pkginfo==1.8.2 ply==3.11 pycparser==2.21 Pygments==2.12.0 -PyJWT==2.3.0 +PyJWT==2.4.0 Pympler==1.0.1 -pyparsing==3.0.8 +pyparsing==3.0.9 PyQt-builder==1.12.2 python-dateutil==2.8.2 readme-renderer==35.0 diff --git a/misc/requirements/requirements-flake8.txt b/misc/requirements/requirements-flake8.txt index 0efee2d73..db9dad8e2 100644 --- a/misc/requirements/requirements-flake8.txt +++ b/misc/requirements/requirements-flake8.txt @@ -4,7 +4,7 @@ attrs==21.4.0 flake8==4.0.1 flake8-bugbear==22.4.25 flake8-builtins==1.5.3 -flake8-comprehensions==3.8.0 +flake8-comprehensions==3.10.0 flake8-copyright==0.2.2 flake8-debugger==4.1.2 flake8-deprecated==1.3 @@ -15,7 +15,7 @@ flake8-plugin-utils==1.3.2 flake8-polyfill==1.0.2 flake8-pytest-style==1.6.0 flake8-string-format==0.3.0 -flake8-tidy-imports==4.7.0 +flake8-tidy-imports==4.8.0 flake8-tuple==0.4.1 mccabe==0.6.1 pep8-naming==0.12.1 diff --git a/misc/requirements/requirements-mypy.txt b/misc/requirements/requirements-mypy.txt index 2f62bf818..000c136d9 100644 --- a/misc/requirements/requirements-mypy.txt +++ b/misc/requirements/requirements-mypy.txt @@ -2,7 +2,7 @@ chardet==4.0.0 diff-cover==6.5.0 -importlib-metadata==4.11.3 +importlib-metadata==4.11.4 importlib-resources==5.7.1 Jinja2==3.1.2 lxml==4.8.0 diff --git a/misc/requirements/requirements-pyinstaller.txt b/misc/requirements/requirements-pyinstaller.txt index 8700478e5..e290bad7a 100644 --- a/misc/requirements/requirements-pyinstaller.txt +++ b/misc/requirements/requirements-pyinstaller.txt @@ -1,5 +1,5 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py altgraph==0.17.2 -pyinstaller==5.0.1 -pyinstaller-hooks-contrib==2022.4 +pyinstaller==5.1 +pyinstaller-hooks-contrib==2022.5 diff --git a/misc/requirements/requirements-pylint.txt b/misc/requirements/requirements-pylint.txt index 4bcc7ca53..e891a2032 100644 --- a/misc/requirements/requirements-pylint.txt +++ b/misc/requirements/requirements-pylint.txt @@ -1,11 +1,11 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py -astroid==2.11.4 -certifi==2021.10.8 +astroid==2.11.5 +certifi==2022.5.18.1 cffi==1.15.0 charset-normalizer==2.0.12 cryptography==37.0.2 -dill==0.3.4 +dill==0.3.5.1 future==0.18.2 github3.py==3.2.0 idna==3.3 @@ -15,14 +15,14 @@ mccabe==0.7.0 pefile==2021.9.3 platformdirs==2.5.2 pycparser==2.21 -PyJWT==2.3.0 -pylint==2.13.8 +PyJWT==2.4.0 +pylint==2.13.9 python-dateutil==2.8.2 ./scripts/dev/pylint_checkers requests==2.27.1 six==1.16.0 tomli==2.0.1 -typed-ast==1.5.3 ; python_version<"3.8" +typed-ast==1.5.4 ; python_version<"3.8" typing_extensions==4.2.0 uritemplate==4.1.1 # urllib3==1.26.9 diff --git a/misc/requirements/requirements-pyroma.txt b/misc/requirements/requirements-pyroma.txt index d17b46593..28ec97c25 100644 --- a/misc/requirements/requirements-pyroma.txt +++ b/misc/requirements/requirements-pyroma.txt @@ -1,14 +1,14 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py -build==0.7.0 -certifi==2021.10.8 +build==0.8.0 +certifi==2022.5.18.1 charset-normalizer==2.0.12 docutils==0.18.1 idna==3.3 packaging==21.3 pep517==0.12.0 Pygments==2.12.0 -pyparsing==3.0.8 +pyparsing==3.0.9 pyroma==4.0 requests==2.27.1 tomli==2.0.1 diff --git a/misc/requirements/requirements-sphinx.txt b/misc/requirements/requirements-sphinx.txt index abf2a2720..bfd9483aa 100644 --- a/misc/requirements/requirements-sphinx.txt +++ b/misc/requirements/requirements-sphinx.txt @@ -2,17 +2,17 @@ alabaster==0.7.12 Babel==2.10.1 -certifi==2021.10.8 +certifi==2022.5.18.1 charset-normalizer==2.0.12 docutils==0.17.1 idna==3.3 imagesize==1.3.0 -importlib-metadata==4.11.3 +importlib-metadata==4.11.4 Jinja2==3.1.2 MarkupSafe==2.1.1 packaging==21.3 Pygments==2.12.0 -pyparsing==3.0.8 +pyparsing==3.0.9 pytz==2022.1 requests==2.27.1 snowballstemmer==2.2.0 diff --git a/misc/requirements/requirements-tests-bleeding.txt b/misc/requirements/requirements-tests-bleeding.txt index 72d6ad083..fca7328f8 100644 --- a/misc/requirements/requirements-tests-bleeding.txt +++ b/misc/requirements/requirements-tests-bleeding.txt @@ -24,8 +24,6 @@ git+https://github.com/pytest-dev/pytest-cov.git git+https://github.com/The-Compiler/pytest-xvfb.git git+https://github.com/pytest-dev/pytest-xdist.git git+https://github.com/john-kurkowski/tldextract -# https://github.com/hjwp/pytest-icdiff/pull/20 -# git+https://github.com/hjwp/pytest-icdiff.git # Problematic: needs rust (and some time to build) # git+https://github.com/ArniDagur/python-adblock.git diff --git a/misc/requirements/requirements-tests.txt b/misc/requirements/requirements-tests.txt index e3b0dcd4b..05cf4ea34 100644 --- a/misc/requirements/requirements-tests.txt +++ b/misc/requirements/requirements-tests.txt @@ -2,18 +2,19 @@ attrs==21.4.0 beautifulsoup4==4.11.1 -certifi==2021.10.8 +certifi==2022.5.18.1 charset-normalizer==2.0.12 cheroot==8.6.0 click==8.1.3 -coverage==6.3.2 +coverage==6.4 execnet==1.9.0 -filelock==3.6.0 +filelock==3.7.0 Flask==2.1.2 glob2==0.7 hunter==3.4.3 -hypothesis==6.46.2 +hypothesis==6.46.7 idna==3.3 +importlib-metadata==4.11.4 iniconfig==1.1.1 itsdangerous==2.1.2 jaraco.functools==3.5.0 @@ -29,7 +30,7 @@ pluggy==1.0.0 py==1.11.0 py-cpuinfo==8.0.0 Pygments==2.12.0 -pyparsing==3.0.8 +pyparsing==3.0.9 pytest==7.1.2 pytest-bdd==4.1.0 pytest-benchmark==3.4.1 @@ -52,5 +53,6 @@ tldextract==3.3.0 toml==0.10.2 tomli==2.0.1 urllib3==1.26.9 -vulture==2.3 +vulture==2.4 Werkzeug==2.1.2 +zipp==3.8.0 diff --git a/misc/requirements/requirements-tox.txt b/misc/requirements/requirements-tox.txt index f6c14de9f..ab576ae98 100644 --- a/misc/requirements/requirements-tox.txt +++ b/misc/requirements/requirements-tox.txt @@ -1,14 +1,14 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py distlib==0.3.4 -filelock==3.6.0 +filelock==3.7.0 packaging==21.3 -pip==22.0.4 +pip==22.1.1 platformdirs==2.5.2 pluggy==1.0.0 py==1.11.0 -pyparsing==3.0.8 -setuptools==62.1.0 +pyparsing==3.0.9 +setuptools==62.3.2 six==1.16.0 toml==0.10.2 tox==3.25.0 diff --git a/misc/requirements/requirements-vulture.txt b/misc/requirements/requirements-vulture.txt index 433500bf0..ac5016c99 100644 --- a/misc/requirements/requirements-vulture.txt +++ b/misc/requirements/requirements-vulture.txt @@ -1,4 +1,4 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py toml==0.10.2 -vulture==2.3 +vulture==2.4 diff --git a/qutebrowser/config/configtypes.py b/qutebrowser/config/configtypes.py index d3d5e3fb8..97011b7cf 100644 --- a/qutebrowser/config/configtypes.py +++ b/qutebrowser/config/configtypes.py @@ -109,6 +109,8 @@ class ValidValues: values: A list with the allowed untransformed values. descriptions: A dict with value/desc mappings. generate_docs: Whether to show the values in the docs. + others_permitted: Whether arbitrary values are permitted. + Used to show buttons in qute://settings. """ def __init__( @@ -119,12 +121,14 @@ class ValidValues: Tuple[str, Optional[str]], ], generate_docs: bool = True, + others_permitted: bool = False ) -> None: if not values: raise ValueError("ValidValues with no values makes no sense!") self.descriptions: DictType[str, str] = {} self.values: ListType[str] = [] self.generate_docs = generate_docs + self.others_permitted = others_permitted for value in values: if isinstance(value, str): # Value without description @@ -1638,7 +1642,9 @@ class Proxy(BaseType): super().__init__(none_ok=none_ok, completions=completions) self.valid_values = ValidValues( ('system', "Use the system wide proxy."), - ('none', "Don't use any proxy")) + ('none', "Don't use any proxy"), + others_permitted=True, + ) def to_py( self, diff --git a/qutebrowser/html/settings.html b/qutebrowser/html/settings.html index b06917fd5..f89aaa610 100644 --- a/qutebrowser/html/settings.html +++ b/qutebrowser/html/settings.html @@ -179,9 +179,10 @@ summary::selection { </div> {% endif %} </td> - {% if option.typ.valid_values is not none %} + {% set valid_values = option.typ.valid_values %} + {% if valid_values is not none and not valid_values.others_permitted %} <td class="valid-value"> - {% for value in option.typ.valid_values.values %} + {% for value in valid_values.values %} <div class="radio-button"> <input type="radio" id="input-{{ option.name }}-{{ loop.index0 }}" name="{{ option.name }}" value="{{ value }}" diff --git a/qutebrowser/misc/elf.py b/qutebrowser/misc/elf.py index bf824880a..8fadbcffd 100644 --- a/qutebrowser/misc/elf.py +++ b/qutebrowser/misc/elf.py @@ -270,7 +270,7 @@ def _find_versions(data: bytes) -> Versions: correctly: https://github.com/python/typeshed/issues/1467 """ match = re.search( - br'QtWebEngine/([0-9.]+) Chrome/([0-9.]+)', + br'\x00QtWebEngine/([0-9.]+) Chrome/([0-9.]+)\x00', data, ) if match is None: diff --git a/requirements.txt b/requirements.txt index 228d637a1..129fe402a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ adblock==0.5.2 colorama==0.4.4 -importlib-metadata==4.11.3 ; python_version=="3.7.*" +importlib-metadata==4.11.4 ; python_version=="3.7.*" importlib-resources==5.7.1 ; python_version=="3.7.*" or python_version=="3.8.*" Jinja2==3.1.2 MarkupSafe==2.1.1 diff --git a/tests/unit/misc/test_elf.py b/tests/unit/misc/test_elf.py index 86060bbde..7d3248da2 100644 --- a/tests/unit/misc/test_elf.py +++ b/tests/unit/misc/test_elf.py @@ -75,6 +75,23 @@ def test_result(qapp, caplog): assert ua.upstream_browser_version == versions.chromium +@pytest.mark.parametrize("data, expected", [ + # Simple match + ( + b"\x00QtWebEngine/5.15.9 Chrome/87.0.4280.144\x00", + elf.Versions("5.15.9", "87.0.4280.144"), + ), + # Ignoring garbage string-like data + ( + b"\x00QtWebEngine/5.15.9 Chrome/87.0.4xternalclearkey\x00\x00" + b"QtWebEngine/5.15.9 Chrome/87.0.4280.144\x00", + elf.Versions("5.15.9", "87.0.4280.144"), + ), +]) +def test_find_versions(data, expected): + assert elf._find_versions(data) == expected + + @hypothesis.given(data=hst.builds( lambda *a: b''.join(a), hst.sampled_from([b'', b'\x7fELF', b'\x7fELF\x02\x01\x01']), diff --git a/tests/unit/utils/test_utils.py b/tests/unit/utils/test_utils.py index 4620c2198..595aa6426 100644 --- a/tests/unit/utils/test_utils.py +++ b/tests/unit/utils/test_utils.py @@ -603,6 +603,15 @@ class TestSanitizeFilename: LONG_EXTENSION = (LONG_FILENAME.replace("filename", ".extension") .replace(".txt", "")) + # first four-byte unicode char + U10K = "\U00010000" + + LONG_4BYTE = U10K * 64 + LONG_4BYTE_SHORTENED = U10K * 60 + + LONG_4BYTE_EXT = f"{U10K * 8}.{U10K * 64}" + LONG_4BYTE_EXT_SHORTENED = f"{U10K}.{U10K * 59}" + @pytest.mark.parametrize('inp, expected', [ pytest.param('normal.txt', 'normal.txt', marks=pytest.mark.fake_os('windows')), @@ -629,6 +638,14 @@ class TestSanitizeFilename: LONG_EXTENSION.replace("this is a very long .extension", "this .extension"), ), + ( + LONG_4BYTE, + LONG_4BYTE_SHORTENED, + ), + ( + LONG_4BYTE_EXT, + LONG_4BYTE_EXT_SHORTENED, + ) ]) @pytest.mark.linux def test_shorten(self, inp, expected): |