def test_from_pyqt(self): expected = version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='83.0.4103.122', source='PyQt', ) assert version.WebEngineVersions.from_pyqt('5.15.2') == expected
def gentoo_version_patch(monkeypatch): versions = version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='87.0.4280.144', source='faked', ) monkeypatch.setattr(version, 'qtwebengine_versions', lambda avoid_init: versions)
def test_from_pyqt(self, qt_version, chromium_version): expected = version.WebEngineVersions( webengine=utils.parse_version(qt_version), chromium=chromium_version, source='PyQt', ) assert version.WebEngineVersions.from_pyqt(qt_version) == expected
def test_from_elf(self): elf_version = elf.Versions(webengine='5.15.2', chromium='83.0.4103.122') expected = version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='83.0.4103.122', source='ELF', ) assert version.WebEngineVersions.from_elf(elf_version) == expected
def test_from_pyqt(self, freezer, pyqt_version, chromium_version): if freezer and pyqt_version in ['5.15.3', '5.15.4', '5.15.5']: chromium_version = '83.0.4103.122' expected_pyqt_version = '5.15.2' else: expected_pyqt_version = pyqt_version expected = version.WebEngineVersions( webengine=utils.VersionNumber.parse(expected_pyqt_version), chromium=chromium_version, source='PyQt', ) assert version.WebEngineVersions.from_pyqt(pyqt_version) == expected
def test_from_ua(self): ua = websettings.UserAgent( os_info='X11; Linux x86_64', webkit_version='537.36', upstream_browser_key='Chrome', upstream_browser_version='83.0.4103.122', qt_key='QtWebEngine', qt_version='5.15.2', ) expected = version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='83.0.4103.122', source='UA', ) assert version.WebEngineVersions.from_ua(ua) == expected
class TestWebEngineVersions: @pytest.mark.parametrize('version, expected', [ ( version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium=None, source='UA'), "QtWebEngine 5.15.2", ), ( version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='87.0.4280.144', source='UA'), "QtWebEngine 5.15.2, Chromium 87.0.4280.144", ), ( version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='87.0.4280.144', source='faked'), "QtWebEngine 5.15.2, Chromium 87.0.4280.144 (from faked)", ), ]) def test_str(self, version, expected): assert str(version) == expected @pytest.mark.parametrize('version, expected', [ ( version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium=None, source='test'), None, ), ( version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='87.0.4280.144', source='test'), 87, ), ]) def test_chromium_major(self, version, expected): assert version.chromium_major == expected def test_from_ua(self): ua = websettings.UserAgent( os_info='X11; Linux x86_64', webkit_version='537.36', upstream_browser_key='Chrome', upstream_browser_version='83.0.4103.122', qt_key='QtWebEngine', qt_version='5.15.2', ) expected = version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='83.0.4103.122', source='UA', ) assert version.WebEngineVersions.from_ua(ua) == expected def test_from_elf(self): elf_version = elf.Versions(webengine='5.15.2', chromium='83.0.4103.122') expected = version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='83.0.4103.122', source='ELF', ) assert version.WebEngineVersions.from_elf(elf_version) == expected @pytest.mark.parametrize('pyqt_version, chromium_version', [ ('5.12.10', '69.0.3497.128'), ('5.14.2', '77.0.3865.129'), ('5.15.1', '80.0.3987.163'), ('5.15.2', '83.0.4103.122'), ('5.15.3', '87.0.4280.144'), ('5.15.4', '87.0.4280.144'), ('5.15.5', '87.0.4280.144'), ]) def test_from_pyqt(self, freezer, pyqt_version, chromium_version): if freezer and pyqt_version in ['5.15.3', '5.15.4', '5.15.5']: chromium_version = '83.0.4103.122' expected_pyqt_version = '5.15.2' else: expected_pyqt_version = pyqt_version expected = version.WebEngineVersions( webengine=utils.VersionNumber.parse(expected_pyqt_version), chromium=chromium_version, source='PyQt', ) assert version.WebEngineVersions.from_pyqt(pyqt_version) == expected def test_real_chromium_version(self, qapp): """Compare the inferred Chromium version with the real one.""" if '.dev' in PYQT_VERSION_STR: pytest.skip("dev version of PyQt5") try: from PyQt5.QtWebEngine import PYQT_WEBENGINE_VERSION_STR except ImportError as e: # QtWebKit or QtWebEngine < 5.1'../3 pytest.skip(str(e)) pyqt_webengine_version = version._get_pyqt_webengine_qt_version() if pyqt_webengine_version is None: pyqt_webengine_version = PYQT_WEBENGINE_VERSION_STR versions = version.WebEngineVersions.from_pyqt(pyqt_webengine_version) webenginesettings.init_user_agent() expected = webenginesettings.parsed_user_agent.upstream_browser_version assert versions.chromium == expected
def test_version_info(params, stubs, monkeypatch, config_stub): """Test version.version_info().""" config.instance.config_py_loaded = params.config_py_loaded import_path = pathlib.Path('/IMPORTPATH').resolve() patches = { 'qutebrowser.__file__': str(import_path / '__init__.py'), 'qutebrowser.__version__': 'VERSION', '_git_str': lambda: ('GIT COMMIT' if params.git_commit else None), 'platform.python_implementation': lambda: 'PYTHON IMPLEMENTATION', 'platform.python_version': lambda: 'PYTHON VERSION', 'sys.executable': 'EXECUTABLE PATH', 'PYQT_VERSION_STR': 'PYQT VERSION', 'earlyinit.qt_version': lambda: 'QT VERSION', '_module_versions': lambda: ['MODULE VERSION 1', 'MODULE VERSION 2'], '_pdfjs_version': lambda: 'PDFJS VERSION', 'QSslSocket': FakeQSslSocket('SSL VERSION', params.ssl_support), 'platform.platform': lambda: 'PLATFORM', 'platform.architecture': lambda: ('ARCHITECTURE', ''), '_os_info': lambda: ['OS INFO 1', 'OS INFO 2'], '_path_info': lambda: {'PATH DESC': 'PATH NAME'}, 'objects.qapp': (stubs.FakeQApplication(style='STYLE', platform_name='PLATFORM') if params.qapp else None), 'QLibraryInfo.location': (lambda _loc: 'QT PATH'), 'sql.version': lambda: 'SQLITE VERSION', '_uptime': lambda: datetime.timedelta(hours=1, minutes=23, seconds=45), 'config.instance.yaml_loaded': params.autoconfig_loaded, } version.opengl_info.cache_clear() monkeypatch.setenv('QUTE_FAKE_OPENGL', 'VENDOR, 1.0 VERSION') substitutions = { 'git_commit': '\nGit commit: GIT COMMIT' if params.git_commit else '', 'style': '\nStyle: STYLE' if params.qapp else '', 'platform_plugin': ('\nPlatform plugin: PLATFORM' if params.qapp else ''), 'opengl': '\nOpenGL: VENDOR, 1.0 VERSION' if params.qapp else '', 'qt': 'QT VERSION', 'frozen': str(params.frozen), 'import_path': import_path, 'python_path': 'EXECUTABLE PATH', 'uptime': "1:23:45", 'autoconfig_loaded': "yes" if params.autoconfig_loaded else "no", } patches['qtwebengine_versions'] = ( lambda avoid_init: version.WebEngineVersions( webengine=utils.VersionNumber(1, 2, 3), chromium=None, source='faked', ) ) if params.config_py_loaded: substitutions["config_py_loaded"] = "{} has been loaded".format( standarddir.config_py()) else: substitutions["config_py_loaded"] = "no config.py was loaded" if params.with_webkit: patches['qWebKitVersion'] = lambda: 'WEBKIT VERSION' patches['objects.backend'] = usertypes.Backend.QtWebKit substitutions['backend'] = 'new QtWebKit (WebKit WEBKIT VERSION)' else: monkeypatch.delattr(version, 'qtutils.qWebKitVersion', raising=False) patches['objects.backend'] = usertypes.Backend.QtWebEngine substitutions['backend'] = 'QtWebEngine 1.2.3 (from faked)' if params.known_distribution: patches['distribution'] = lambda: version.DistributionInfo( parsed=version.Distribution.arch, version=None, pretty='LINUX DISTRIBUTION', id='arch') substitutions['linuxdist'] = ('\nLinux distribution: ' 'LINUX DISTRIBUTION (arch)') substitutions['osinfo'] = '' else: patches['distribution'] = lambda: None substitutions['linuxdist'] = '' substitutions['osinfo'] = 'OS INFO 1\nOS INFO 2\n' substitutions['ssl'] = 'SSL VERSION' if params.ssl_support else 'no' for name, val in patches.items(): monkeypatch.setattr(f'qutebrowser.utils.version.{name}', val) if params.frozen: monkeypatch.setattr(sys, 'frozen', True, raising=False) else: monkeypatch.delattr(sys, 'frozen', raising=False) template = version._LOGO.lstrip('\n') + textwrap.dedent(""" qutebrowser vVERSION{git_commit} Backend: {backend} Qt: {qt} PYTHON IMPLEMENTATION: PYTHON VERSION PyQt: PYQT VERSION MODULE VERSION 1 MODULE VERSION 2 pdf.js: PDFJS VERSION sqlite: SQLITE VERSION QtNetwork SSL: {ssl} {style}{platform_plugin}{opengl} Platform: PLATFORM, ARCHITECTURE{linuxdist} Frozen: {frozen} Imported from {import_path} Using Python from {python_path} Qt library executable path: QT PATH, data path: QT PATH {osinfo} Paths: PATH DESC: PATH NAME Autoconfig loaded: {autoconfig_loaded} Config.py: {config_py_loaded} Uptime: {uptime} """.lstrip('\n')) expected = template.rstrip('\n').format(**substitutions) assert version.version_info() == expected
class TestWebEngineVersions: @pytest.mark.parametrize('version, expected', [ ( version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium=None, source='UA'), "QtWebEngine 5.15.2", ), ( version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='87.0.4280.144', source='UA'), "QtWebEngine 5.15.2, Chromium 87.0.4280.144", ), ( version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='87.0.4280.144', source='faked'), "QtWebEngine 5.15.2, Chromium 87.0.4280.144 (from faked)", ), ]) def test_str(self, version, expected): assert str(version) == expected def test_from_ua(self): ua = websettings.UserAgent( os_info='X11; Linux x86_64', webkit_version='537.36', upstream_browser_key='Chrome', upstream_browser_version='83.0.4103.122', qt_key='QtWebEngine', qt_version='5.15.2', ) expected = version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='83.0.4103.122', source='UA', ) assert version.WebEngineVersions.from_ua(ua) == expected def test_from_elf(self): elf_version = elf.Versions(webengine='5.15.2', chromium='83.0.4103.122') expected = version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='83.0.4103.122', source='ELF', ) assert version.WebEngineVersions.from_elf(elf_version) == expected def test_from_pyqt(self): expected = version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='83.0.4103.122', source='PyQt', ) assert version.WebEngineVersions.from_pyqt('5.15.2') == expected def test_real_chromium_version(self, qapp): """Compare the inferred Chromium version with the real one.""" try: from PyQt5.QtWebEngine import PYQT_WEBENGINE_VERSION_STR except ImportError as e: # QtWebKit or QtWebEngine < 5.13 pytest.skip(str(e)) from qutebrowser.browser.webengine import webenginesettings webenginesettings.init_user_agent() expected = webenginesettings.parsed_user_agent.upstream_browser_version versions = version.WebEngineVersions.from_pyqt(PYQT_WEBENGINE_VERSION_STR) assert versions.chromium == expected
def gentoo_versions(): return version.WebEngineVersions( webengine=utils.VersionNumber(5, 15, 2), chromium='87.0.4280.144', source='faked', )