Merge branch 'is-os'
This commit is contained in:
commit
106edc953a
@ -5,6 +5,7 @@ import os
|
||||
|
||||
sys.path.insert(0, os.getcwd())
|
||||
from scripts import setupcommon
|
||||
from qutebrowser import utils
|
||||
|
||||
block_cipher = None
|
||||
|
||||
@ -30,9 +31,9 @@ def get_data_files():
|
||||
setupcommon.write_git_file()
|
||||
|
||||
|
||||
if os.name == 'nt':
|
||||
if utils.is_windows:
|
||||
icon = 'icons/qutebrowser.ico'
|
||||
elif sys.platform == 'darwin':
|
||||
elif utils.is_mac:
|
||||
icon = 'icons/qutebrowser.icns'
|
||||
else:
|
||||
icon = None
|
||||
|
@ -25,6 +25,7 @@ markers =
|
||||
this: Used to mark tests during development
|
||||
no_invalid_lines: Don't fail on unparseable lines in end2end tests
|
||||
issue2478: Tests which are broken on Windows with QtWebEngine, https://github.com/qutebrowser/qutebrowser/issues/2478
|
||||
fake_os: Fake utils.is_* to a fake operating system
|
||||
qt_log_level_fail = WARNING
|
||||
qt_log_ignore =
|
||||
^SpellCheck: .*
|
||||
|
@ -20,7 +20,6 @@
|
||||
"""Command dispatcher for TabbedBrowser."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import os.path
|
||||
import shlex
|
||||
import functools
|
||||
@ -430,7 +429,7 @@ class CommandDispatcher:
|
||||
tab.printing.to_printer(diag.printer(), print_callback)
|
||||
|
||||
diag = QPrintDialog(tab)
|
||||
if sys.platform == 'darwin':
|
||||
if utils.is_mac:
|
||||
# For some reason we get a segfault when using open() on macOS
|
||||
ret = diag.exec_()
|
||||
if ret == QDialog.Accepted:
|
||||
|
@ -174,7 +174,7 @@ def transform_path(path):
|
||||
|
||||
Returns None if the path is invalid on the current platform.
|
||||
"""
|
||||
if sys.platform != "win32":
|
||||
if not utils.is_windows:
|
||||
return path
|
||||
path = utils.expand_windows_drive(path)
|
||||
# Drive dependent working directories are not supported, e.g.
|
||||
|
@ -28,7 +28,6 @@ Module attributes:
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import ctypes
|
||||
import ctypes.util
|
||||
|
||||
@ -207,7 +206,7 @@ def init(args):
|
||||
|
||||
# WORKAROUND for
|
||||
# https://bugs.launchpad.net/ubuntu/+source/python-qt4/+bug/941826
|
||||
if sys.platform == 'linux':
|
||||
if utils.is_linux:
|
||||
ctypes.CDLL(ctypes.util.find_library("GL"), mode=ctypes.RTLD_GLOBAL)
|
||||
|
||||
_init_profiles()
|
||||
|
@ -58,7 +58,7 @@ def _is_secure_cipher(cipher):
|
||||
# https://codereview.qt-project.org/#/c/75943/
|
||||
return False
|
||||
# OpenSSL should already protect against this in a better way
|
||||
elif cipher.keyExchangeMethod() == 'DH' and os.name == 'nt':
|
||||
elif cipher.keyExchangeMethod() == 'DH' and utils.is_windows:
|
||||
# https://weakdh.org/
|
||||
return False
|
||||
elif cipher.encryptionMethod().upper().startswith('RC4'):
|
||||
|
@ -19,7 +19,6 @@
|
||||
|
||||
"""Wrapper over our (QtWebKit) WebView."""
|
||||
|
||||
import sys
|
||||
import functools
|
||||
import xml.etree.ElementTree
|
||||
|
||||
@ -223,11 +222,11 @@ class WebKitCaret(browsertab.AbstractCaret):
|
||||
def move_to_end_of_word(self, count=1):
|
||||
if not self.selection_enabled:
|
||||
act = [QWebPage.MoveToNextWord]
|
||||
if sys.platform == 'win32': # pragma: no cover
|
||||
if utils.is_windows: # pragma: no cover
|
||||
act.append(QWebPage.MoveToPreviousChar)
|
||||
else:
|
||||
act = [QWebPage.SelectNextWord]
|
||||
if sys.platform == 'win32': # pragma: no cover
|
||||
if utils.is_windows: # pragma: no cover
|
||||
act.append(QWebPage.SelectPreviousChar)
|
||||
for _ in range(count):
|
||||
for a in act:
|
||||
@ -236,11 +235,11 @@ class WebKitCaret(browsertab.AbstractCaret):
|
||||
def move_to_next_word(self, count=1):
|
||||
if not self.selection_enabled:
|
||||
act = [QWebPage.MoveToNextWord]
|
||||
if sys.platform != 'win32': # pragma: no branch
|
||||
if not utils.is_windows: # pragma: no branch
|
||||
act.append(QWebPage.MoveToNextChar)
|
||||
else:
|
||||
act = [QWebPage.SelectNextWord]
|
||||
if sys.platform != 'win32': # pragma: no branch
|
||||
if not utils.is_windows: # pragma: no branch
|
||||
act.append(QWebPage.SelectNextChar)
|
||||
for _ in range(count):
|
||||
for a in act:
|
||||
|
@ -19,8 +19,6 @@
|
||||
|
||||
"""The main browser widgets."""
|
||||
|
||||
import sys
|
||||
|
||||
from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl
|
||||
from PyQt5.QtGui import QPalette
|
||||
from PyQt5.QtWidgets import QStyleFactory
|
||||
@ -57,7 +55,7 @@ class WebView(QWebView):
|
||||
|
||||
def __init__(self, *, win_id, tab_id, tab, private, parent=None):
|
||||
super().__init__(parent)
|
||||
if sys.platform == 'darwin':
|
||||
if utils.is_mac:
|
||||
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-42948
|
||||
# See https://github.com/qutebrowser/qutebrowser/issues/462
|
||||
self.setStyle(QStyleFactory.create('Fusion'))
|
||||
|
@ -25,7 +25,7 @@ import tempfile
|
||||
|
||||
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QSocketNotifier
|
||||
|
||||
from qutebrowser.utils import message, log, objreg, standarddir
|
||||
from qutebrowser.utils import message, log, objreg, standarddir, utils
|
||||
from qutebrowser.commands import runners
|
||||
from qutebrowser.config import config
|
||||
from qutebrowser.misc import guiprocess
|
||||
@ -406,9 +406,9 @@ def run_async(tab, cmd, *args, win_id, env, verbose=False):
|
||||
window=win_id)
|
||||
commandrunner = runners.CommandRunner(win_id, parent=tabbed_browser)
|
||||
|
||||
if os.name == 'posix':
|
||||
if utils.is_posix:
|
||||
runner = _POSIXUserscriptRunner(tabbed_browser)
|
||||
elif os.name == 'nt': # pragma: no cover
|
||||
elif utils.is_windows: # pragma: no cover
|
||||
runner = _WindowsUserscriptRunner(tabbed_browser)
|
||||
else: # pragma: no cover
|
||||
raise UnsupportedError
|
||||
|
@ -40,7 +40,7 @@ from PyQt5.QtWidgets import QApplication, QDialog
|
||||
|
||||
from qutebrowser.commands import cmdutils
|
||||
from qutebrowser.misc import earlyinit, crashdialog
|
||||
from qutebrowser.utils import usertypes, standarddir, log, objreg, debug
|
||||
from qutebrowser.utils import usertypes, standarddir, log, objreg, debug, utils
|
||||
|
||||
|
||||
@attr.s
|
||||
@ -312,7 +312,7 @@ class SignalHandler(QObject):
|
||||
self._orig_handlers[signal.SIGTERM] = signal.signal(
|
||||
signal.SIGTERM, self.interrupt)
|
||||
|
||||
if os.name == 'posix' and hasattr(signal, 'set_wakeup_fd'):
|
||||
if utils.is_posix and hasattr(signal, 'set_wakeup_fd'):
|
||||
# pylint: disable=import-error,no-member,useless-suppression
|
||||
import fcntl
|
||||
read_fd, write_fd = os.pipe()
|
||||
|
@ -30,7 +30,7 @@ from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, Qt
|
||||
from PyQt5.QtNetwork import QLocalSocket, QLocalServer, QAbstractSocket
|
||||
|
||||
import qutebrowser
|
||||
from qutebrowser.utils import log, usertypes, error, objreg, standarddir
|
||||
from qutebrowser.utils import log, usertypes, error, objreg, standarddir, utils
|
||||
|
||||
|
||||
CONNECT_TIMEOUT = 100 # timeout for connecting/disconnecting
|
||||
@ -51,7 +51,7 @@ def _get_socketname_windows(basedir):
|
||||
|
||||
def _get_socketname(basedir):
|
||||
"""Get a socketname to use."""
|
||||
if os.name == 'nt': # pragma: no cover
|
||||
if utils.is_windows: # pragma: no cover
|
||||
return _get_socketname_windows(basedir)
|
||||
|
||||
parts_to_hash = [getpass.getuser()]
|
||||
@ -139,8 +139,6 @@ class IPCServer(QObject):
|
||||
_server: A QLocalServer to accept new connections.
|
||||
_socket: The QLocalSocket we're currently connected to.
|
||||
_socketname: The socketname to use.
|
||||
_socketopts_ok: Set if using setSocketOptions is working with this
|
||||
OS/Qt version.
|
||||
_atime_timer: Timer to update the atime of the socket regularly.
|
||||
|
||||
Signals:
|
||||
@ -169,7 +167,7 @@ class IPCServer(QObject):
|
||||
self._timer.setInterval(READ_TIMEOUT)
|
||||
self._timer.timeout.connect(self.on_timeout)
|
||||
|
||||
if os.name == 'nt': # pragma: no cover
|
||||
if utils.is_windows: # pragma: no cover
|
||||
self._atime_timer = None
|
||||
else:
|
||||
self._atime_timer = usertypes.Timer(self, 'ipc-atime')
|
||||
@ -182,8 +180,7 @@ class IPCServer(QObject):
|
||||
|
||||
self._socket = None
|
||||
self._old_socket = None
|
||||
self._socketopts_ok = os.name == 'nt'
|
||||
if self._socketopts_ok: # pragma: no cover
|
||||
if utils.is_windows: # pragma: no cover
|
||||
# If we use setSocketOptions on Unix with Qt < 5.4, we get a
|
||||
# NameError while listening...
|
||||
log.ipc.debug("Calling setSocketOptions")
|
||||
@ -210,7 +207,7 @@ class IPCServer(QObject):
|
||||
raise AddressInUseError(self._server)
|
||||
else:
|
||||
raise ListenError(self._server)
|
||||
if not self._socketopts_ok: # pragma: no cover
|
||||
if not utils.is_windows: # pragma: no cover
|
||||
# If we use setSocketOptions on Unix with Qt < 5.4, we get a
|
||||
# NameError while listening.
|
||||
# (see b135569d5c6e68c735ea83f42e4baf51f7972281)
|
||||
|
@ -409,6 +409,8 @@ def qt_message_handler(msg_type, context, msg):
|
||||
# https://codereview.qt-project.org/176831
|
||||
"QObject::disconnect: Unexpected null parameter",
|
||||
]
|
||||
# not using utils.is_mac here, because we can't be sure we can successfully
|
||||
# import the utils module here.
|
||||
if sys.platform == 'darwin':
|
||||
suppressed_msgs += [
|
||||
'libpng warning: iCCP: known incorrect sRGB profile',
|
||||
|
@ -20,7 +20,6 @@
|
||||
"""Utilities to get and initialize data/config paths."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import shutil
|
||||
import os.path
|
||||
import contextlib
|
||||
@ -28,7 +27,7 @@ import contextlib
|
||||
from PyQt5.QtCore import QStandardPaths
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
|
||||
from qutebrowser.utils import log, debug, usertypes, message
|
||||
from qutebrowser.utils import log, debug, usertypes, message, utils
|
||||
|
||||
# The cached locations
|
||||
_locations = {}
|
||||
@ -69,7 +68,7 @@ def _init_config(args):
|
||||
typ = QStandardPaths.ConfigLocation
|
||||
overridden, path = _from_args(typ, args)
|
||||
if not overridden:
|
||||
if os.name == 'nt':
|
||||
if utils.is_windows:
|
||||
app_data_path = _writable_location(
|
||||
QStandardPaths.AppDataLocation)
|
||||
path = os.path.join(app_data_path, 'config')
|
||||
@ -80,7 +79,7 @@ def _init_config(args):
|
||||
_locations[Location.auto_config] = path
|
||||
|
||||
# Override the normal (non-auto) config on macOS
|
||||
if sys.platform == 'darwin':
|
||||
if utils.is_mac:
|
||||
overridden, path = _from_args(typ, args)
|
||||
if not overridden: # pragma: no branch
|
||||
path = os.path.expanduser('~/.' + APPNAME)
|
||||
@ -104,7 +103,7 @@ def _init_data(args):
|
||||
typ = QStandardPaths.DataLocation
|
||||
overridden, path = _from_args(typ, args)
|
||||
if not overridden:
|
||||
if os.name == 'nt':
|
||||
if utils.is_windows:
|
||||
app_data_path = _writable_location(QStandardPaths.AppDataLocation)
|
||||
path = os.path.join(app_data_path, 'data')
|
||||
else:
|
||||
@ -114,7 +113,7 @@ def _init_data(args):
|
||||
|
||||
# system_data
|
||||
_locations.pop(Location.system_data, None) # Remove old state
|
||||
if sys.platform.startswith('linux'):
|
||||
if utils.is_linux:
|
||||
path = '/usr/share/' + APPNAME
|
||||
if os.path.exists(path):
|
||||
_locations[Location.system_data] = path
|
||||
@ -139,7 +138,7 @@ def _init_cache(args):
|
||||
typ = QStandardPaths.CacheLocation
|
||||
overridden, path = _from_args(typ, args)
|
||||
if not overridden:
|
||||
if os.name == 'nt':
|
||||
if utils.is_windows:
|
||||
# Local, not Roaming!
|
||||
data_path = _writable_location(QStandardPaths.DataLocation)
|
||||
path = os.path.join(data_path, 'cache')
|
||||
@ -172,7 +171,7 @@ def download():
|
||||
|
||||
def _init_runtime(args):
|
||||
"""Initialize location for runtime data."""
|
||||
if sys.platform.startswith('linux'):
|
||||
if utils.is_linux:
|
||||
typ = QStandardPaths.RuntimeLocation
|
||||
else:
|
||||
# RuntimeLocation is a weird path on macOS and Windows.
|
||||
@ -312,9 +311,9 @@ def init(args):
|
||||
_init_dirs(args)
|
||||
_init_cachedir_tag()
|
||||
if args is not None and getattr(args, 'basedir', None) is None:
|
||||
if sys.platform == 'darwin': # pragma: no cover
|
||||
if utils.is_mac: # pragma: no cover
|
||||
_move_macos()
|
||||
elif os.name == 'nt': # pragma: no cover
|
||||
elif utils.is_windows: # pragma: no cover
|
||||
_move_windows()
|
||||
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
"""Other utilities which don't fit anywhere else."""
|
||||
|
||||
import os
|
||||
import io
|
||||
import re
|
||||
import sys
|
||||
@ -49,6 +50,11 @@ from qutebrowser.utils import qtutils, log, debug
|
||||
fake_clipboard = None
|
||||
log_clipboard = False
|
||||
|
||||
is_mac = sys.platform.startswith('darwin')
|
||||
is_linux = sys.platform.startswith('linux')
|
||||
is_windows = sys.platform.startswith('win')
|
||||
is_posix = os.name == 'posix'
|
||||
|
||||
|
||||
class ClipboardError(Exception):
|
||||
|
||||
@ -377,7 +383,7 @@ def keyevent_to_string(e):
|
||||
A name of the key (combination) as a string or
|
||||
None if only modifiers are pressed..
|
||||
"""
|
||||
if sys.platform == 'darwin':
|
||||
if is_mac:
|
||||
# Qt swaps Ctrl/Meta on macOS, so we switch it back here so the user
|
||||
# can use it in the config as expected. See:
|
||||
# https://github.com/qutebrowser/qutebrowser/issues/110
|
||||
|
@ -248,12 +248,12 @@ def _os_info():
|
||||
"""
|
||||
lines = []
|
||||
releaseinfo = None
|
||||
if sys.platform == 'linux':
|
||||
if utils.is_linux:
|
||||
osver = ''
|
||||
releaseinfo = _release_info()
|
||||
elif sys.platform == 'win32':
|
||||
elif utils.is_windows:
|
||||
osver = ', '.join(platform.win32_ver())
|
||||
elif sys.platform == 'darwin':
|
||||
elif utils.is_mac:
|
||||
release, versioninfo, machine = platform.mac_ver()
|
||||
if all(not e for e in versioninfo):
|
||||
versioninfo = ''
|
||||
|
@ -36,7 +36,8 @@ sys.path.insert(0, os.path.join(os.path.dirname(__file__), os.pardir,
|
||||
os.pardir))
|
||||
|
||||
import qutebrowser
|
||||
from scripts import utils
|
||||
from qutebrowser.utils import utils
|
||||
from scripts import utils as scriptutils
|
||||
# from scripts.dev import update_3rdparty
|
||||
|
||||
|
||||
@ -70,7 +71,7 @@ def call_tox(toxenv, *args, python=sys.executable):
|
||||
|
||||
def run_asciidoc2html(args):
|
||||
"""Common buildsteps used for all OS'."""
|
||||
utils.print_title("Running asciidoc2html.py")
|
||||
scriptutils.print_title("Running asciidoc2html.py")
|
||||
if args.asciidoc is not None:
|
||||
a2h_args = ['--asciidoc'] + args.asciidoc
|
||||
else:
|
||||
@ -127,7 +128,7 @@ def patch_mac_app():
|
||||
|
||||
def build_mac():
|
||||
"""Build macOS .dmg/.app."""
|
||||
utils.print_title("Cleaning up...")
|
||||
scriptutils.print_title("Cleaning up...")
|
||||
for f in ['wc.dmg', 'template.dmg']:
|
||||
try:
|
||||
os.remove(f)
|
||||
@ -135,20 +136,20 @@ def build_mac():
|
||||
pass
|
||||
for d in ['dist', 'build']:
|
||||
shutil.rmtree(d, ignore_errors=True)
|
||||
utils.print_title("Updating 3rdparty content")
|
||||
scriptutils.print_title("Updating 3rdparty content")
|
||||
# Currently disabled because QtWebEngine has no pdfjs support
|
||||
# update_3rdparty.run(ace=False, pdfjs=True, fancy_dmg=False)
|
||||
utils.print_title("Building .app via pyinstaller")
|
||||
scriptutils.print_title("Building .app via pyinstaller")
|
||||
call_tox('pyinstaller', '-r')
|
||||
utils.print_title("Patching .app")
|
||||
scriptutils.print_title("Patching .app")
|
||||
patch_mac_app()
|
||||
utils.print_title("Building .dmg")
|
||||
scriptutils.print_title("Building .dmg")
|
||||
subprocess.check_call(['make', '-f', 'scripts/dev/Makefile-dmg'])
|
||||
|
||||
dmg_name = 'qutebrowser-{}.dmg'.format(qutebrowser.__version__)
|
||||
os.rename('qutebrowser.dmg', dmg_name)
|
||||
|
||||
utils.print_title("Running smoke test")
|
||||
scriptutils.print_title("Running smoke test")
|
||||
|
||||
try:
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
@ -177,11 +178,11 @@ def patch_windows(out_dir):
|
||||
|
||||
def build_windows():
|
||||
"""Build windows executables/setups."""
|
||||
utils.print_title("Updating 3rdparty content")
|
||||
scriptutils.print_title("Updating 3rdparty content")
|
||||
# Currently disabled because QtWebEngine has no pdfjs support
|
||||
# update_3rdparty.run(ace=False, pdfjs=True, fancy_dmg=False)
|
||||
|
||||
utils.print_title("Building Windows binaries")
|
||||
scriptutils.print_title("Building Windows binaries")
|
||||
parts = str(sys.version_info.major), str(sys.version_info.minor)
|
||||
ver = ''.join(parts)
|
||||
python_x86 = r'C:\Python{}-32\python.exe'.format(ver)
|
||||
@ -194,19 +195,19 @@ def build_windows():
|
||||
|
||||
artifacts = []
|
||||
|
||||
utils.print_title("Running pyinstaller 32bit")
|
||||
scriptutils.print_title("Running pyinstaller 32bit")
|
||||
_maybe_remove(out_32)
|
||||
call_tox('pyinstaller', '-r', python=python_x86)
|
||||
shutil.move(out_pyinstaller, out_32)
|
||||
patch_windows(out_32)
|
||||
|
||||
utils.print_title("Running pyinstaller 64bit")
|
||||
scriptutils.print_title("Running pyinstaller 64bit")
|
||||
_maybe_remove(out_64)
|
||||
call_tox('pyinstaller', '-r', python=python_x64)
|
||||
shutil.move(out_pyinstaller, out_64)
|
||||
patch_windows(out_64)
|
||||
|
||||
utils.print_title("Building installers")
|
||||
scriptutils.print_title("Building installers")
|
||||
subprocess.check_call(['makensis.exe',
|
||||
'/DVERSION={}'.format(qutebrowser.__version__),
|
||||
'misc/qutebrowser.nsi'])
|
||||
@ -227,12 +228,12 @@ def build_windows():
|
||||
'Windows 64bit installer'),
|
||||
]
|
||||
|
||||
utils.print_title("Running 32bit smoke test")
|
||||
scriptutils.print_title("Running 32bit smoke test")
|
||||
smoke_test(os.path.join(out_32, 'qutebrowser.exe'))
|
||||
utils.print_title("Running 64bit smoke test")
|
||||
scriptutils.print_title("Running 64bit smoke test")
|
||||
smoke_test(os.path.join(out_64, 'qutebrowser.exe'))
|
||||
|
||||
utils.print_title("Zipping 32bit standalone...")
|
||||
scriptutils.print_title("Zipping 32bit standalone...")
|
||||
name = 'qutebrowser-{}-windows-standalone-win32'.format(
|
||||
qutebrowser.__version__)
|
||||
shutil.make_archive(name, 'zip', 'dist', os.path.basename(out_32))
|
||||
@ -240,7 +241,7 @@ def build_windows():
|
||||
'application/zip',
|
||||
'Windows 32bit standalone'))
|
||||
|
||||
utils.print_title("Zipping 64bit standalone...")
|
||||
scriptutils.print_title("Zipping 64bit standalone...")
|
||||
name = 'qutebrowser-{}-windows-standalone-amd64'.format(
|
||||
qutebrowser.__version__)
|
||||
shutil.make_archive(name, 'zip', 'dist', os.path.basename(out_64))
|
||||
@ -253,7 +254,7 @@ def build_windows():
|
||||
|
||||
def build_sdist():
|
||||
"""Build an sdist and list the contents."""
|
||||
utils.print_title("Building sdist")
|
||||
scriptutils.print_title("Building sdist")
|
||||
|
||||
_maybe_remove('dist')
|
||||
|
||||
@ -276,10 +277,10 @@ def build_sdist():
|
||||
|
||||
assert '.pyc' not in by_ext
|
||||
|
||||
utils.print_title("sdist contents")
|
||||
scriptutils.print_title("sdist contents")
|
||||
|
||||
for ext, files in sorted(by_ext.items()):
|
||||
utils.print_subtitle(ext)
|
||||
scriptutils.print_subtitle(ext)
|
||||
print('\n'.join(files))
|
||||
|
||||
filename = 'qutebrowser-{}.tar.gz'.format(qutebrowser.__version__)
|
||||
@ -308,7 +309,7 @@ def github_upload(artifacts, tag):
|
||||
tag: The name of the release tag
|
||||
"""
|
||||
import github3
|
||||
utils.print_title("Uploading to github...")
|
||||
scriptutils.print_title("Uploading to github...")
|
||||
|
||||
token = read_github_token()
|
||||
gh = github3.login(token=token)
|
||||
@ -343,7 +344,7 @@ def main():
|
||||
parser.add_argument('--upload', help="Tag to upload the release for",
|
||||
nargs=1, required=False, metavar='TAG')
|
||||
args = parser.parse_args()
|
||||
utils.change_cwd()
|
||||
scriptutils.change_cwd()
|
||||
|
||||
upload_to_pypi = False
|
||||
|
||||
@ -353,7 +354,7 @@ def main():
|
||||
import github3 # pylint: disable=unused-variable
|
||||
read_github_token()
|
||||
|
||||
if os.name == 'nt':
|
||||
if utils.is_windows:
|
||||
if sys.maxsize > 2**32:
|
||||
# WORKAROUND
|
||||
print("Due to a python/Windows bug, this script needs to be run ")
|
||||
@ -364,7 +365,7 @@ def main():
|
||||
sys.exit(1)
|
||||
run_asciidoc2html(args)
|
||||
artifacts = build_windows()
|
||||
elif sys.platform == 'darwin':
|
||||
elif utils.is_mac:
|
||||
run_asciidoc2html(args)
|
||||
artifacts = build_mac()
|
||||
else:
|
||||
@ -372,7 +373,7 @@ def main():
|
||||
upload_to_pypi = True
|
||||
|
||||
if args.upload is not None:
|
||||
utils.print_title("Press enter to release...")
|
||||
scriptutils.print_title("Press enter to release...")
|
||||
input()
|
||||
github_upload(artifacts, args.upload[0])
|
||||
if upload_to_pypi:
|
||||
|
@ -32,7 +32,8 @@ import attr
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), os.pardir,
|
||||
os.pardir))
|
||||
|
||||
from scripts import utils
|
||||
from scripts import utils as scriptutils
|
||||
from qutebrowser.utils import utils
|
||||
|
||||
|
||||
@attr.s
|
||||
@ -207,7 +208,7 @@ def _get_filename(filename):
|
||||
|
||||
def check(fileobj, perfect_files):
|
||||
"""Main entry point which parses/checks coverage.xml if applicable."""
|
||||
if sys.platform != 'linux':
|
||||
if not utils.is_linux:
|
||||
raise Skipped("on non-Linux system.")
|
||||
elif '-k' in sys.argv[1:]:
|
||||
raise Skipped("because -k is given.")
|
||||
@ -272,7 +273,7 @@ def main_check():
|
||||
if messages:
|
||||
print()
|
||||
print()
|
||||
utils.print_title("Coverage check failed")
|
||||
scriptutils.print_title("Coverage check failed")
|
||||
for msg in messages:
|
||||
print(msg.text)
|
||||
print()
|
||||
@ -323,7 +324,7 @@ def main_check_all():
|
||||
|
||||
|
||||
def main():
|
||||
utils.change_cwd()
|
||||
scriptutils.change_cwd()
|
||||
if '--check-all' in sys.argv:
|
||||
return main_check_all()
|
||||
else:
|
||||
|
@ -35,7 +35,7 @@ from helpers import logfail
|
||||
from helpers.logfail import fail_on_logging
|
||||
from helpers.messagemock import message_mock
|
||||
from helpers.fixtures import *
|
||||
from qutebrowser.utils import qtutils, standarddir, usertypes
|
||||
from qutebrowser.utils import qtutils, standarddir, usertypes, utils
|
||||
from qutebrowser.misc import objects
|
||||
|
||||
import qutebrowser.app # To register commands
|
||||
@ -50,18 +50,18 @@ hypothesis.settings.load_profile('default')
|
||||
def _apply_platform_markers(config, item):
|
||||
"""Apply a skip marker to a given item."""
|
||||
markers = [
|
||||
('posix', os.name != 'posix', "Requires a POSIX os"),
|
||||
('windows', os.name != 'nt', "Requires Windows"),
|
||||
('linux', not sys.platform.startswith('linux'), "Requires Linux"),
|
||||
('mac', sys.platform != 'darwin', "Requires macOS"),
|
||||
('not_mac', sys.platform == 'darwin', "Skipped on macOS"),
|
||||
('posix', not utils.is_posix, "Requires a POSIX os"),
|
||||
('windows', not utils.is_windows, "Requires Windows"),
|
||||
('linux', not utils.is_linux, "Requires Linux"),
|
||||
('mac', not utils.is_mac, "Requires macOS"),
|
||||
('not_mac', utils.is_mac, "Skipped on macOS"),
|
||||
('not_frozen', getattr(sys, 'frozen', False),
|
||||
"Can't be run when frozen"),
|
||||
('frozen', not getattr(sys, 'frozen', False),
|
||||
"Can only run when frozen"),
|
||||
('ci', 'CI' not in os.environ, "Only runs on CI."),
|
||||
('no_ci', 'CI' in os.environ, "Skipped on CI."),
|
||||
('issue2478', os.name == 'nt' and config.webengine,
|
||||
('issue2478', utils.is_windows and config.webengine,
|
||||
"Broken with QtWebEngine on Windows"),
|
||||
]
|
||||
|
||||
@ -181,7 +181,7 @@ def check_display(request):
|
||||
request.config.xvfb is not None):
|
||||
raise Exception("Xvfb is running on buildbot!")
|
||||
|
||||
if sys.platform == 'linux' and not os.environ.get('DISPLAY', ''):
|
||||
if utils.is_linux and not os.environ.get('DISPLAY', ''):
|
||||
raise Exception("No display and no Xvfb available!")
|
||||
|
||||
|
||||
@ -193,6 +193,37 @@ def set_backend(monkeypatch, request):
|
||||
monkeypatch.setattr(objects, 'backend', backend)
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def apply_fake_os(monkeypatch, request):
|
||||
fake_os = request.node.get_marker('fake_os')
|
||||
if not fake_os:
|
||||
return
|
||||
|
||||
name = fake_os.args[0]
|
||||
mac = False
|
||||
windows = False
|
||||
linux = False
|
||||
posix = False
|
||||
|
||||
if name == 'unknown':
|
||||
pass
|
||||
elif name == 'mac':
|
||||
mac = True
|
||||
posix = True
|
||||
elif name == 'windows':
|
||||
windows = True
|
||||
elif name == 'linux':
|
||||
linux = True
|
||||
posix = True
|
||||
else:
|
||||
raise ValueError("Invalid fake_os {}".format(name))
|
||||
|
||||
monkeypatch.setattr('qutebrowser.utils.utils.is_mac', mac)
|
||||
monkeypatch.setattr('qutebrowser.utils.utils.is_linux', linux)
|
||||
monkeypatch.setattr('qutebrowser.utils.utils.is_windows', windows)
|
||||
monkeypatch.setattr('qutebrowser.utils.utils.is_posix', posix)
|
||||
|
||||
|
||||
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
|
||||
def pytest_runtest_makereport(item, call):
|
||||
"""Make test information available in fixtures.
|
||||
|
@ -38,7 +38,7 @@ from end2end.fixtures.webserver import server, server_after_test, ssl_server
|
||||
from end2end.fixtures.quteprocess import (quteproc_process, quteproc,
|
||||
quteproc_new)
|
||||
from end2end.fixtures.testprocess import pytest_runtest_makereport
|
||||
from qutebrowser.utils import qtutils
|
||||
from qutebrowser.utils import qtutils, utils
|
||||
|
||||
|
||||
def pytest_configure(config):
|
||||
@ -144,7 +144,7 @@ def pytest_collection_modifyitems(config, items):
|
||||
('qtwebengine_flaky', 'Flaky with QtWebEngine', pytest.mark.skipif,
|
||||
config.webengine),
|
||||
('qtwebengine_mac_xfail', 'Fails on macOS with QtWebEngine',
|
||||
pytest.mark.xfail, config.webengine and sys.platform == 'darwin'),
|
||||
pytest.mark.xfail, config.webengine and utils.is_mac),
|
||||
]
|
||||
|
||||
for item in items:
|
||||
|
@ -31,9 +31,9 @@ import textwrap
|
||||
import pytest
|
||||
import pytest_bdd as bdd
|
||||
|
||||
from qutebrowser.utils import log
|
||||
from qutebrowser.utils import log, utils
|
||||
from qutebrowser.browser import pdfjs
|
||||
from helpers import utils
|
||||
from helpers import utils as testutils
|
||||
|
||||
|
||||
def _get_echo_exe_path():
|
||||
@ -42,8 +42,9 @@ def _get_echo_exe_path():
|
||||
Return:
|
||||
Path to the "echo"-utility.
|
||||
"""
|
||||
if sys.platform == "win32":
|
||||
return os.path.join(utils.abs_datapath(), 'userscripts', 'echo.bat')
|
||||
if utils.is_windows:
|
||||
return os.path.join(testutils.abs_datapath(), 'userscripts',
|
||||
'echo.bat')
|
||||
else:
|
||||
return 'echo'
|
||||
|
||||
@ -255,7 +256,7 @@ def run_command(quteproc, server, tmpdir, command):
|
||||
invalid = False
|
||||
|
||||
command = command.replace('(port)', str(server.port))
|
||||
command = command.replace('(testdata)', utils.abs_datapath())
|
||||
command = command.replace('(testdata)', testutils.abs_datapath())
|
||||
command = command.replace('(tmpdir)', str(tmpdir))
|
||||
command = command.replace('(dirsep)', os.sep)
|
||||
command = command.replace('(echo-exe)', _get_echo_exe_path())
|
||||
@ -349,7 +350,7 @@ def hint(quteproc, args):
|
||||
|
||||
@bdd.when(bdd.parsers.parse('I hint with args "{args}" and follow {letter}'))
|
||||
def hint_and_follow(quteproc, args, letter):
|
||||
args = args.replace('(testdata)', utils.abs_datapath())
|
||||
args = args.replace('(testdata)', testutils.abs_datapath())
|
||||
quteproc.send_cmd(':hint {}'.format(args))
|
||||
quteproc.wait_for(message='hints: *')
|
||||
quteproc.send_cmd(':follow-hint {}'.format(letter))
|
||||
@ -502,7 +503,7 @@ def check_header(quteproc, header, value):
|
||||
assert header not in data['headers']
|
||||
else:
|
||||
actual = data['headers'][header]
|
||||
assert utils.pattern_match(pattern=value, value=actual)
|
||||
assert testutils.pattern_match(pattern=value, value=actual)
|
||||
|
||||
|
||||
@bdd.then(bdd.parsers.parse('the page should contain the html "{text}"'))
|
||||
|
@ -279,7 +279,7 @@ def session_manager_stub(stubs):
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def tabbed_browser_stubs(stubs, win_registry):
|
||||
def tabbed_browser_stubs(qapp, stubs, win_registry):
|
||||
"""Fixture providing a fake tabbed-browser object on win_id 0 and 1."""
|
||||
win_registry.add_window(1)
|
||||
stubs = [stubs.TabbedBrowserStub(), stubs.TabbedBrowserStub()]
|
||||
|
@ -26,7 +26,7 @@ from PyQt5.QtCore import QUrl
|
||||
from PyQt5.QtNetwork import QNetworkRequest
|
||||
|
||||
from qutebrowser.browser.webkit.network import filescheme
|
||||
from qutebrowser.utils import urlutils
|
||||
from qutebrowser.utils import urlutils, utils
|
||||
|
||||
|
||||
@pytest.mark.parametrize('create_file, create_dir, filterfunc, expected', [
|
||||
@ -228,10 +228,7 @@ class TestDirbrowserHtml:
|
||||
assert parsed.folders == [bar_item]
|
||||
|
||||
def test_root_dir(self, tmpdir, parser):
|
||||
if os.name == 'nt':
|
||||
root_dir = 'C:\\'
|
||||
else:
|
||||
root_dir = '/'
|
||||
root_dir = 'C:\\' if utils.is_windows else '/'
|
||||
parsed = parser(root_dir)
|
||||
assert not parsed.parent
|
||||
|
||||
|
@ -27,6 +27,7 @@ import pytest
|
||||
from PyQt5.QtCore import QFileSystemWatcher
|
||||
|
||||
from qutebrowser.commands import userscripts
|
||||
from qutebrowser.utils import utils
|
||||
|
||||
|
||||
@pytest.mark.posix
|
||||
@ -60,7 +61,7 @@ class TestQtFIFOReader:
|
||||
userscripts._WindowsUserscriptRunner,
|
||||
])
|
||||
def runner(request, runtime_tmpdir):
|
||||
if (os.name != 'posix' and
|
||||
if (not utils.is_posix and
|
||||
request.param is userscripts._POSIXUserscriptRunner):
|
||||
pytest.skip("Requires a POSIX os")
|
||||
else:
|
||||
@ -245,8 +246,8 @@ def test_unicode_error(caplog, qtbot, py_proc, runner):
|
||||
assert caplog.records[0].message == expected
|
||||
|
||||
|
||||
def test_unsupported(monkeypatch, tabbed_browser_stubs):
|
||||
monkeypatch.setattr(userscripts.os, 'name', 'toaster')
|
||||
@pytest.mark.fake_os('unknown')
|
||||
def test_unsupported(tabbed_browser_stubs):
|
||||
with pytest.raises(userscripts.UnsupportedError, match="Userscripts are "
|
||||
"not supported on this platform!"):
|
||||
userscripts.run_async(tab=None, cmd=None, win_id=0, env=None)
|
||||
|
@ -19,11 +19,11 @@
|
||||
"""Tests for qutebrowser.config.configfiles."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
from qutebrowser.config import config, configfiles, configexc
|
||||
from qutebrowser.utils import utils
|
||||
|
||||
from PyQt5.QtCore import QSettings
|
||||
|
||||
@ -343,7 +343,7 @@ def test_init(init_patch, config_tmpdir):
|
||||
configfiles.init()
|
||||
|
||||
# Make sure qsettings land in a subdir
|
||||
if sys.platform == 'linux':
|
||||
if utils.is_linux:
|
||||
settings = QSettings()
|
||||
settings.setValue("hello", "world")
|
||||
settings.sync()
|
||||
|
@ -19,7 +19,6 @@
|
||||
|
||||
"""Tests for BaseKeyParser."""
|
||||
|
||||
import sys
|
||||
import logging
|
||||
from unittest import mock
|
||||
|
||||
@ -166,7 +165,7 @@ class TestSpecialKeys:
|
||||
keyparser._read_config('prompt')
|
||||
|
||||
def test_valid_key(self, fake_keyevent_factory, keyparser):
|
||||
if sys.platform == 'darwin':
|
||||
if utils.is_mac:
|
||||
modifier = Qt.MetaModifier
|
||||
else:
|
||||
modifier = Qt.ControlModifier
|
||||
@ -176,7 +175,7 @@ class TestSpecialKeys:
|
||||
'message-info ctrla', keyparser.Type.special, None)
|
||||
|
||||
def test_valid_key_count(self, fake_keyevent_factory, keyparser):
|
||||
if sys.platform == 'darwin':
|
||||
if utils.is_mac:
|
||||
modifier = Qt.MetaModifier
|
||||
else:
|
||||
modifier = Qt.ControlModifier
|
||||
@ -210,7 +209,7 @@ class TestKeyChain:
|
||||
keyparser._read_config('prompt')
|
||||
|
||||
def test_valid_special_key(self, fake_keyevent_factory, keyparser):
|
||||
if sys.platform == 'darwin':
|
||||
if utils.is_mac:
|
||||
modifier = Qt.MetaModifier
|
||||
else:
|
||||
modifier = Qt.ControlModifier
|
||||
|
@ -19,7 +19,6 @@
|
||||
|
||||
"""Tests for qutebrowser.misc.ipc."""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import getpass
|
||||
import logging
|
||||
@ -35,7 +34,7 @@ from PyQt5.QtTest import QSignalSpy
|
||||
|
||||
import qutebrowser
|
||||
from qutebrowser.misc import ipc
|
||||
from qutebrowser.utils import objreg, standarddir
|
||||
from qutebrowser.utils import objreg, standarddir, utils
|
||||
from helpers import stubs
|
||||
|
||||
|
||||
@ -228,11 +227,11 @@ class TestSocketName:
|
||||
We probably would adjust the code first to make it work on that
|
||||
platform.
|
||||
"""
|
||||
if os.name == 'nt':
|
||||
if utils.is_windows:
|
||||
pass
|
||||
elif sys.platform == 'darwin':
|
||||
elif utils.is_mac:
|
||||
pass
|
||||
elif sys.platform.startswith('linux'):
|
||||
elif utils.is_linux:
|
||||
pass
|
||||
else:
|
||||
raise Exception("Unexpected platform!")
|
||||
@ -431,7 +430,7 @@ class TestHandleConnection:
|
||||
|
||||
@pytest.fixture
|
||||
def connected_socket(qtbot, qlocalsocket, ipc_server):
|
||||
if sys.platform == 'darwin':
|
||||
if utils.is_mac:
|
||||
pytest.skip("Skipping connected_socket test - "
|
||||
"https://github.com/qutebrowser/qutebrowser/issues/1045")
|
||||
ipc_server.listen()
|
||||
|
@ -18,11 +18,10 @@
|
||||
|
||||
"""Tests for qutebrowser.misc.msgbox."""
|
||||
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
from qutebrowser.misc import msgbox
|
||||
from qutebrowser.utils import utils
|
||||
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtWidgets import QMessageBox, QWidget
|
||||
@ -40,7 +39,7 @@ def test_attributes(qtbot):
|
||||
box = msgbox.msgbox(parent=parent, title=title, text=text, icon=icon,
|
||||
buttons=buttons)
|
||||
qtbot.add_widget(box)
|
||||
if sys.platform != 'darwin':
|
||||
if not utils.is_mac:
|
||||
assert box.windowTitle() == title
|
||||
assert box.icon() == icon
|
||||
assert box.standardButtons() == buttons
|
||||
@ -82,7 +81,7 @@ def test_finished_signal(qtbot):
|
||||
def test_information(qtbot):
|
||||
box = msgbox.information(parent=None, title='foo', text='bar')
|
||||
qtbot.add_widget(box)
|
||||
if sys.platform != 'darwin':
|
||||
if not utils.is_mac:
|
||||
assert box.windowTitle() == 'foo'
|
||||
assert box.text() == 'bar'
|
||||
assert box.icon() == QMessageBox.Information
|
||||
|
@ -21,7 +21,6 @@
|
||||
|
||||
import contextlib
|
||||
import logging
|
||||
import os
|
||||
import signal
|
||||
import time
|
||||
|
||||
@ -29,6 +28,7 @@ import pytest
|
||||
|
||||
from qutebrowser.misc import utilcmds
|
||||
from qutebrowser.commands import cmdexc
|
||||
from qutebrowser.utils import utils
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
@ -45,7 +45,7 @@ def test_debug_crash_exception():
|
||||
utilcmds.debug_crash(typ='exception')
|
||||
|
||||
|
||||
@pytest.mark.skipif(os.name == 'nt',
|
||||
@pytest.mark.skipif(utils.is_windows,
|
||||
reason="current CPython/win can't recover from SIGSEGV")
|
||||
def test_debug_crash_segfault():
|
||||
"""Verify that debug_crash crashes as intended."""
|
||||
|
@ -207,8 +207,8 @@ def test_skipped_args(covtest, args, reason):
|
||||
covtest.check_skipped(args, reason)
|
||||
|
||||
|
||||
def test_skipped_windows(covtest, monkeypatch):
|
||||
monkeypatch.setattr(check_coverage.sys, 'platform', 'toaster')
|
||||
@pytest.mark.fake_os('windows')
|
||||
def test_skipped_non_linux(covtest):
|
||||
covtest.check_skipped([], "on non-Linux system.")
|
||||
|
||||
|
||||
|
@ -18,12 +18,11 @@
|
||||
|
||||
"""Tests for qutebrowser.utils.error."""
|
||||
|
||||
import sys
|
||||
import logging
|
||||
|
||||
import pytest
|
||||
|
||||
from qutebrowser.utils import error
|
||||
from qutebrowser.utils import error, utils
|
||||
from qutebrowser.misc import ipc
|
||||
|
||||
from PyQt5.QtCore import QTimer
|
||||
@ -84,7 +83,7 @@ def test_err_windows(qtbot, qapp, fake_args, pre_text, post_text, expected):
|
||||
w = qapp.activeModalWidget()
|
||||
try:
|
||||
qtbot.add_widget(w)
|
||||
if sys.platform != 'darwin':
|
||||
if not utils.is_mac:
|
||||
assert w.windowTitle() == 'title'
|
||||
assert w.icon() == QMessageBox.Critical
|
||||
assert w.standardButtons() == QMessageBox.Ok
|
||||
|
@ -89,7 +89,7 @@ def test_resource_url():
|
||||
|
||||
path = url.path()
|
||||
|
||||
if os.name == "nt":
|
||||
if utils.is_windows:
|
||||
path = path.lstrip('/')
|
||||
path = path.replace('/', os.sep)
|
||||
|
||||
|
@ -21,7 +21,6 @@
|
||||
|
||||
import io
|
||||
import os
|
||||
import sys
|
||||
import os.path
|
||||
import unittest
|
||||
import unittest.mock
|
||||
@ -36,7 +35,7 @@ import pytest
|
||||
from PyQt5.QtCore import (QDataStream, QPoint, QUrl, QByteArray, QIODevice,
|
||||
QTimer, QBuffer, QFile, QProcess, QFileDevice)
|
||||
|
||||
from qutebrowser.utils import qtutils
|
||||
from qutebrowser.utils import qtutils, utils
|
||||
import overflow_test_cases
|
||||
|
||||
|
||||
@ -458,13 +457,13 @@ class TestSavefileOpen:
|
||||
with qtutils.savefile_open(str(filename)) as f:
|
||||
f.write('foo\nbar\nbaz')
|
||||
data = filename.read_binary()
|
||||
if os.name == 'nt':
|
||||
if utils.is_windows:
|
||||
assert data == b'foo\r\nbar\r\nbaz'
|
||||
else:
|
||||
assert data == b'foo\nbar\nbaz'
|
||||
|
||||
|
||||
if test_file is not None and sys.platform != 'darwin':
|
||||
if test_file is not None and not utils.is_mac:
|
||||
# If we were able to import Python's test_file module, we run some code
|
||||
# here which defines unittest TestCases to run the python tests over
|
||||
# PyQIODevice.
|
||||
|
@ -32,7 +32,7 @@ import attr
|
||||
from PyQt5.QtCore import QStandardPaths
|
||||
import pytest
|
||||
|
||||
from qutebrowser.utils import standarddir
|
||||
from qutebrowser.utils import standarddir, utils
|
||||
|
||||
|
||||
# Use a different application name for tests to make sure we don't change real
|
||||
@ -78,9 +78,9 @@ def test_unset_organization_no_qapp(monkeypatch):
|
||||
pass
|
||||
|
||||
|
||||
@pytest.mark.fake_os('mac')
|
||||
def test_fake_mac_config(tmpdir, monkeypatch):
|
||||
"""Test standardir.config on a fake Mac."""
|
||||
monkeypatch.setattr(sys, 'platform', 'darwin')
|
||||
monkeypatch.setenv('HOME', str(tmpdir))
|
||||
expected = str(tmpdir) + '/.qute_test' # always with /
|
||||
standarddir._init_config(args=None)
|
||||
@ -89,9 +89,9 @@ def test_fake_mac_config(tmpdir, monkeypatch):
|
||||
|
||||
@pytest.mark.parametrize('what', ['data', 'config', 'cache'])
|
||||
@pytest.mark.not_mac
|
||||
@pytest.mark.fake_os('windows')
|
||||
def test_fake_windows(tmpdir, monkeypatch, what):
|
||||
"""Make sure the config/data/cache dirs are correct on a fake Windows."""
|
||||
monkeypatch.setattr(os, 'name', 'nt')
|
||||
monkeypatch.setattr(standarddir.QStandardPaths, 'writableLocation',
|
||||
lambda typ: str(tmpdir / APPNAME))
|
||||
|
||||
@ -173,9 +173,9 @@ class TestStandardDir:
|
||||
standarddir._init_dirs()
|
||||
assert standarddir.runtime() == str(tmpdir / 'temp' / APPNAME)
|
||||
|
||||
@pytest.mark.fake_os('windows')
|
||||
def test_runtimedir_empty_tempdir(self, monkeypatch, tmpdir):
|
||||
"""With an empty tempdir on non-Linux, we should raise."""
|
||||
monkeypatch.setattr(standarddir.sys, 'platform', 'nt')
|
||||
monkeypatch.setattr(standarddir.QStandardPaths, 'writableLocation',
|
||||
lambda typ: '')
|
||||
with pytest.raises(standarddir.EmptyValueError):
|
||||
@ -294,7 +294,7 @@ class TestCreatingDir:
|
||||
|
||||
assert basedir.exists()
|
||||
|
||||
if os.name == 'posix':
|
||||
if utils.is_posix:
|
||||
assert basedir.stat().mode & 0o777 == 0o700
|
||||
|
||||
@pytest.mark.parametrize('typ', DIR_TYPES)
|
||||
@ -324,9 +324,9 @@ class TestSystemData:
|
||||
|
||||
"""Test system data path."""
|
||||
|
||||
@pytest.mark.linux
|
||||
def test_system_datadir_exist_linux(self, monkeypatch):
|
||||
"""Test that /usr/share/qute_test is used if path exists."""
|
||||
monkeypatch.setattr('sys.platform', "linux")
|
||||
monkeypatch.setattr(os.path, 'exists', lambda path: True)
|
||||
standarddir._init_dirs()
|
||||
assert standarddir.data(system=True) == "/usr/share/qute_test"
|
||||
@ -493,10 +493,10 @@ def test_init(mocker, tmpdir, args_kind):
|
||||
|
||||
assert standarddir._locations != {}
|
||||
if args_kind == 'normal':
|
||||
if sys.platform == 'darwin':
|
||||
if utils.is_mac:
|
||||
assert not m_windows.called
|
||||
assert m_mac.called
|
||||
elif os.name == 'nt':
|
||||
elif utils.is_windows:
|
||||
assert m_windows.called
|
||||
assert not m_mac.called
|
||||
else:
|
||||
|
@ -355,7 +355,7 @@ class TestKeyEventToString:
|
||||
def test_key_and_modifier(self, fake_keyevent_factory):
|
||||
"""Test with key and modifier pressed."""
|
||||
evt = fake_keyevent_factory(key=Qt.Key_A, modifiers=Qt.ControlModifier)
|
||||
expected = 'meta+a' if sys.platform == 'darwin' else 'ctrl+a'
|
||||
expected = 'meta+a' if utils.is_mac else 'ctrl+a'
|
||||
assert utils.keyevent_to_string(evt) == expected
|
||||
|
||||
def test_key_and_modifiers(self, fake_keyevent_factory):
|
||||
@ -365,9 +365,9 @@ class TestKeyEventToString:
|
||||
Qt.MetaModifier | Qt.ShiftModifier))
|
||||
assert utils.keyevent_to_string(evt) == 'ctrl+alt+meta+shift+a'
|
||||
|
||||
def test_mac(self, monkeypatch, fake_keyevent_factory):
|
||||
@pytest.mark.fake_os('mac')
|
||||
def test_mac(self, fake_keyevent_factory):
|
||||
"""Test with a simulated mac."""
|
||||
monkeypatch.setattr(sys, 'platform', 'darwin')
|
||||
evt = fake_keyevent_factory(key=Qt.Key_A, modifiers=Qt.ControlModifier)
|
||||
assert utils.keyevent_to_string(evt) == 'meta+a'
|
||||
|
||||
|
@ -36,7 +36,7 @@ import attr
|
||||
import pytest
|
||||
|
||||
import qutebrowser
|
||||
from qutebrowser.utils import version, usertypes
|
||||
from qutebrowser.utils import version, usertypes, utils
|
||||
from qutebrowser.browser import pdfjs
|
||||
|
||||
|
||||
@ -333,7 +333,7 @@ class TestGitStrSubprocess:
|
||||
'GIT_COMMITTER_EMAIL': 'mail@qutebrowser.org',
|
||||
'GIT_COMMITTER_DATE': 'Thu 1 Jan 01:00:00 CET 1970',
|
||||
})
|
||||
if os.name == 'nt':
|
||||
if utils.is_windows:
|
||||
# If we don't call this with shell=True it might fail under
|
||||
# some environments on Windows...
|
||||
# http://bugs.python.org/issue24493
|
||||
@ -662,12 +662,12 @@ class TestOsInfo:
|
||||
|
||||
"""Tests for _os_info."""
|
||||
|
||||
@pytest.mark.fake_os('linux')
|
||||
def test_linux_fake(self, monkeypatch):
|
||||
"""Test with a fake Linux.
|
||||
|
||||
No args because osver is set to '' if the OS is linux.
|
||||
"""
|
||||
monkeypatch.setattr(version.sys, 'platform', 'linux')
|
||||
monkeypatch.setattr(version, '_release_info',
|
||||
lambda: [('releaseinfo', 'Hello World')])
|
||||
ret = version._os_info()
|
||||
@ -675,15 +675,16 @@ class TestOsInfo:
|
||||
'--- releaseinfo ---', 'Hello World']
|
||||
assert ret == expected
|
||||
|
||||
@pytest.mark.fake_os('windows')
|
||||
def test_windows_fake(self, monkeypatch):
|
||||
"""Test with a fake Windows."""
|
||||
monkeypatch.setattr(version.sys, 'platform', 'win32')
|
||||
monkeypatch.setattr(version.platform, 'win32_ver',
|
||||
lambda: ('eggs', 'bacon', 'ham', 'spam'))
|
||||
ret = version._os_info()
|
||||
expected = ['OS Version: eggs, bacon, ham, spam']
|
||||
assert ret == expected
|
||||
|
||||
@pytest.mark.fake_os('mac')
|
||||
@pytest.mark.parametrize('mac_ver, mac_ver_str', [
|
||||
(('x', ('', '', ''), 'y'), 'x, y'),
|
||||
(('', ('', '', ''), ''), ''),
|
||||
@ -696,15 +697,14 @@ class TestOsInfo:
|
||||
mac_ver: The tuple to set platform.mac_ver() to.
|
||||
mac_ver_str: The expected Mac version string in version._os_info().
|
||||
"""
|
||||
monkeypatch.setattr(version.sys, 'platform', 'darwin')
|
||||
monkeypatch.setattr(version.platform, 'mac_ver', lambda: mac_ver)
|
||||
ret = version._os_info()
|
||||
expected = ['OS Version: {}'.format(mac_ver_str)]
|
||||
assert ret == expected
|
||||
|
||||
def test_unknown_fake(self, monkeypatch):
|
||||
"""Test with a fake unknown sys.platform."""
|
||||
monkeypatch.setattr(version.sys, 'platform', 'toaster')
|
||||
@pytest.mark.fake_os('unknown')
|
||||
def test_unknown_fake(self):
|
||||
"""Test with a fake unknown platform."""
|
||||
ret = version._os_info()
|
||||
expected = ['OS Version: ?']
|
||||
assert ret == expected
|
||||
|
Loading…
Reference in New Issue
Block a user