summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormkonig <koenig@v-i-t.de>2022-05-23 09:50:37 +0200
committerGitHub <noreply@github.com>2022-05-23 09:50:37 +0200
commitcfbbd59ce4f34e3baa82c2162c36fd8a3fa8dfbd (patch)
tree1dbfd1c8e4f82dc934e7da39f91204d10720e2fc
parentb6c3c73998d415fc67e6fe046107bb40e4865de5 (diff)
parent14bcdc86a29b0931f00e977705835e296b8d792e (diff)
downloadqutebrowser-cfbbd59ce4f34e3baa82c2162c36fd8a3fa8dfbd.tar.gz
qutebrowser-cfbbd59ce4f34e3baa82c2162c36fd8a3fa8dfbd.zip
Merge branch 'qutebrowser:master' into master
-rw-r--r--.github/workflows/ci.yml4
-rw-r--r--doc/changelog.asciidoc4
-rw-r--r--misc/qutebrowser.spec6
-rw-r--r--misc/requirements/requirements-check-manifest.txt4
-rw-r--r--misc/requirements/requirements-dev.txt12
-rw-r--r--misc/requirements/requirements-flake8.txt4
-rw-r--r--misc/requirements/requirements-mypy.txt2
-rw-r--r--misc/requirements/requirements-pyinstaller.txt4
-rw-r--r--misc/requirements/requirements-pylint.txt12
-rw-r--r--misc/requirements/requirements-pyroma.txt6
-rw-r--r--misc/requirements/requirements-sphinx.txt6
-rw-r--r--misc/requirements/requirements-tests-bleeding.txt2
-rw-r--r--misc/requirements/requirements-tests.txt14
-rw-r--r--misc/requirements/requirements-tox.txt8
-rw-r--r--misc/requirements/requirements-vulture.txt2
-rw-r--r--qutebrowser/config/configtypes.py8
-rw-r--r--qutebrowser/html/settings.html5
-rw-r--r--qutebrowser/misc/elf.py2
-rw-r--r--requirements.txt2
-rw-r--r--tests/unit/misc/test_elf.py17
-rw-r--r--tests/unit/utils/test_utils.py17
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):