summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoofar <toofar@spalge.com>2023-11-27 08:07:40 +1300
committertoofar <toofar@spalge.com>2023-11-27 08:07:40 +1300
commit0144ae3576aaecde295d40e22d636f04240d6761 (patch)
treede5424d8164e7bdb02c94306822602e94d41f2d0
parent6c937f6150ec49dbebacf379393b8e6b62ae9eca (diff)
downloadqutebrowser-0144ae3576aaecde295d40e22d636f04240d6761.tar.gz
qutebrowser-0144ae3576aaecde295d40e22d636f04240d6761.zip
fix pdf.js detection in :version
Now that pdf.js could be shipped with either js or mjs file extensions we shouldn't hardcode the filename. Call the function for detecting the filename instead. And make it public.
-rw-r--r--qutebrowser/browser/pdfjs.py4
-rw-r--r--qutebrowser/utils/version.py4
-rw-r--r--tests/unit/utils/test_version.py11
3 files changed, 13 insertions, 6 deletions
diff --git a/qutebrowser/browser/pdfjs.py b/qutebrowser/browser/pdfjs.py
index e4ea3519b..427ef4537 100644
--- a/qutebrowser/browser/pdfjs.py
+++ b/qutebrowser/browser/pdfjs.py
@@ -50,7 +50,7 @@ def generate_pdfjs_page(filename, url):
filename: The filename of the PDF to open.
url: The URL being opened.
"""
- pdfjs_name = _get_pdfjs_basename()
+ pdfjs_name = get_pdfjs_basename()
if pdfjs_name is None or not is_available():
pdfjs_dir = os.path.join(standarddir.data(), 'pdfjs')
return jinja.render('no_pdfjs.html',
@@ -204,7 +204,7 @@ def _read_from_system(system_path, names):
return (None, None)
-def _get_pdfjs_basename():
+def get_pdfjs_basename():
"""Checks for pdf.js main module availability and returns the basename if available."""
exts = ['pdf.js', 'pdf.mjs']
for ext in exts:
diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py
index 75df73ffa..ac0c8220f 100644
--- a/qutebrowser/utils/version.py
+++ b/qutebrowser/utils/version.py
@@ -480,7 +480,9 @@ def _pdfjs_version() -> str:
A string with the version number.
"""
try:
- pdfjs_file, file_path = pdfjs.get_pdfjs_res_and_path('build/pdf.js')
+ pdfjs_file, file_path = pdfjs.get_pdfjs_res_and_path(
+ str(pathlib.Path("build") / pdfjs.get_pdfjs_basename())
+ )
except pdfjs.PDFJSNotFound:
return 'no'
else:
diff --git a/tests/unit/utils/test_version.py b/tests/unit/utils/test_version.py
index d902f8c53..dcb625b1e 100644
--- a/tests/unit/utils/test_version.py
+++ b/tests/unit/utils/test_version.py
@@ -849,11 +849,13 @@ class TestPDFJSVersion:
"""Tests for _pdfjs_version."""
def test_not_found(self, mocker):
+ mocker.patch('qutebrowser.utils.version.pdfjs.get_pdfjs_basename')
mocker.patch('qutebrowser.utils.version.pdfjs.get_pdfjs_res_and_path',
side_effect=pdfjs.PDFJSNotFound('/build/pdf.js'))
assert version._pdfjs_version() == 'no'
- def test_unknown(self, monkeypatch):
+ def test_unknown(self, monkeypatch, mocker):
+ mocker.patch('qutebrowser.utils.version.pdfjs.get_pdfjs_basename')
monkeypatch.setattr(
'qutebrowser.utils.version.pdfjs.get_pdfjs_res_and_path',
lambda path: (b'foobar', None))
@@ -864,7 +866,7 @@ class TestPDFJSVersion:
'var pdfjsVersion', # v2.0.943
'const pdfjsVersion', # v2.5.207
])
- def test_known(self, monkeypatch, varname):
+ def test_known(self, monkeypatch, mocker, varname):
pdfjs_code = textwrap.dedent("""
// Initializing PDFJS global object (if still undefined)
if (typeof PDFJS === 'undefined') {
@@ -878,6 +880,7 @@ class TestPDFJSVersion:
// Use strict in our context only - users might not want it
'use strict';
""".replace('VARNAME', varname)).strip().encode('utf-8')
+ mocker.patch('qutebrowser.utils.version.pdfjs.get_pdfjs_basename')
monkeypatch.setattr(
'qutebrowser.utils.version.pdfjs.get_pdfjs_res_and_path',
lambda path: (pdfjs_code, '/foo/bar/pdf.js'))
@@ -886,7 +889,9 @@ class TestPDFJSVersion:
def test_real_file(self, data_tmpdir):
"""Test against the real file if pdfjs was found."""
try:
- pdfjs.get_pdfjs_res_and_path('build/pdf.js')
+ pdfjs_file, file_path = pdfjs.get_pdfjs_res_and_path(
+ str(pathlib.Path("build") / pdfjs.get_pdfjs_basename())
+ )
except pdfjs.PDFJSNotFound:
pytest.skip("No pdfjs found")
ver = version._pdfjs_version()