Add pdf.js version to qute:version.

This commit is contained in:
Florian Bruhin 2016-01-05 18:41:53 +01:00
parent 06f1d00083
commit 88d28e690e
2 changed files with 58 additions and 0 deletions

View File

@ -19,6 +19,7 @@
"""Utilities to show various version informations."""
import re
import sys
import glob
import os.path
@ -34,6 +35,7 @@ from PyQt5.QtWidgets import QApplication
import qutebrowser
from qutebrowser.utils import log, utils
from qutebrowser.browser import pdfjs
GPL_BOILERPLATE = """
@ -183,6 +185,25 @@ def _os_info():
return lines
def _pdfjs_version():
"""Get the pdf.js version.
Return:
A string with the version number.
"""
try:
pdfjs_file = pdfjs.get_pdfjs_res('build/pdf.js').decode('utf-8')
except pdfjs.PDFJSNotFound:
return 'no'
else:
version_re = re.compile(r"^PDFJS\.version = '([^']+)';$", re.MULTILINE)
match = version_re.search(pdfjs_file)
if not match:
return 'unknown'
else:
return match.group(1)
def version(short=False):
"""Return a string with various version informations.
@ -211,6 +232,7 @@ def version(short=False):
lines += _module_versions()
lines += [
'pdf.js: {}'.format(_pdfjs_version()),
'Webkit: {}'.format(qWebKitVersion()),
'Harfbuzz: {}'.format(os.environ.get('QT_HARFBUZZ', 'system')),
'SSL: {}'.format(QSslSocket.sslLibraryVersionString()),

View File

@ -34,6 +34,7 @@ import pytest
import qutebrowser
from qutebrowser.utils import version
from qutebrowser.browser import pdfjs
class GitStrSubprocessFake:
@ -529,6 +530,39 @@ class TestOsInfo:
version._os_info()
class TestPDFJSVersion:
"""Tests for _pdfjs_version."""
def test_not_found(self, mocker):
mocker.patch('qutebrowser.utils.version.pdfjs.get_pdfjs_res',
side_effect=pdfjs.PDFJSNotFound)
assert version._pdfjs_version() == 'no'
def test_unknown(self, monkeypatch):
monkeypatch.setattr('qutebrowser.utils.version.pdfjs.get_pdfjs_res',
lambda path: b'foobar')
assert version._pdfjs_version() == 'unknown'
def test_known(self, monkeypatch):
pdfjs_code = textwrap.dedent("""
// Initializing PDFJS global object (if still undefined)
if (typeof PDFJS === 'undefined') {
(typeof window !== 'undefined' ? window : this).PDFJS = {};
}
PDFJS.version = '1.2.109';
PDFJS.build = '875588d';
(function pdfjsWrapper() {
// Use strict in our context only - users might not want it
'use strict';
""").strip().encode('utf-8')
monkeypatch.setattr('qutebrowser.utils.version.pdfjs.get_pdfjs_res',
lambda path: pdfjs_code)
assert version._pdfjs_version() == '1.2.109'
class FakeQSslSocket:
"""Fake for the QSslSocket Qt class.
@ -571,6 +605,7 @@ def test_version_output(git_commit, harfbuzz, frozen, short, stubs,
'qVersion': lambda: 'QT RUNTIME VERSION',
'PYQT_VERSION_STR': 'PYQT VERSION',
'_module_versions': lambda: ['MODULE VERSION 1', 'MODULE VERSION 2'],
'_pdfjs_version': lambda: 'PDFJS VERSION',
'qWebKitVersion': lambda: 'WEBKIT VERSION',
'QSslSocket': FakeQSslSocket('SSL VERSION'),
'platform.platform': lambda: 'PLATFORM',
@ -613,6 +648,7 @@ def test_version_output(git_commit, harfbuzz, frozen, short, stubs,
Desktop: DESKTOP
MODULE VERSION 1
MODULE VERSION 2
pdf.js: PDFJS VERSION
Webkit: WEBKIT VERSION
Harfbuzz: {harfbuzz}
SSL: SSL VERSION