test for --version invocation

This commit is contained in:
Daniel Karbach 2016-09-28 14:38:15 +02:00
parent 50fb4a78c7
commit 73e1460556

View File

@ -21,9 +21,15 @@
import sys
import logging
import re
import pytest
from PyQt5.QtCore import QProcess
from end2end.fixtures.quteprocess import QuteProc
from end2end.fixtures.testprocess import ProcessExited
def _base_args(config):
"""Get the arguments to pass with every invocation."""
@ -177,3 +183,83 @@ def test_optimize(request, quteproc_new, capfd, level):
# Waiting for quit to make sure no other warning is emitted
quteproc_new.send_cmd(':quit')
quteproc_new.wait_for_quit()
def test_version(request):
"""Test invocation with --version argument."""
args = ['--version'] + _base_args(request.config)
# can't use quteproc_new here because it's confused by
# early process termination
proc = QuteProc(request)
proc.proc.setProcessChannelMode(QProcess.SeparateChannels)
try:
proc.start(args)
proc.wait_for_quit()
except ProcessExited:
assert proc.proc.exitStatus() == QProcess.NormalExit
pass
else:
assert False
proc.proc.setReadChannel(QProcess.StandardOutput)
lines = []
while proc.proc.canReadLine():
line = proc.proc.readLine()
lines.append(bytes(line).decode('utf-8').rstrip('\r\n'))
output = '\n'.join(lines)
assert re.search('^qutebrowser\s+v\d+(\.\d+)*$',
output, re.MULTILINE) is not None
assert re.search('^CPython:\s+\d+(\.\d+)*$',
output, re.MULTILINE) is not None
assert re.search('^Qt:\s+\d+(\.\d+)*$',
output, re.MULTILINE) is not None
assert re.search('^PyQt:\s+\d+(\.\d+)*$',
output, re.MULTILINE) is not None
assert re.search('^sip:\s+(\d+(\.\d+)*|no)$',
output, re.MULTILINE) is not None
assert re.search('^colorama:\s+(\d+(\.\d+)*|no)$',
output, re.MULTILINE) is not None
assert re.search('^pypeg2:\s+(\d+(\.\d+)*|no)$',
output, re.MULTILINE) is not None
assert re.search('^jinja2:\s+(\d+(\.\d+)*|no)$',
output, re.MULTILINE) is not None
assert re.search('^pygments:\s+(\d+(\.\d+)*|no)$',
output, re.MULTILINE) is not None
assert re.search('^yaml:\s+(\d+(\.\d+)*|no)$',
output, re.MULTILINE) is not None
assert re.search('^cssutils:\s+(\d+(\.\d+)*.*|no)$',
output, re.MULTILINE) is not None
assert re.search('^typing:\s+(yes|no)$',
output, re.MULTILINE) is not None
assert re.search('^PyQt5\.QtWebEngineWidgets:\s+(yes|no)$',
output, re.MULTILINE) is not None
assert re.search('^pdf\.js:\s+(\d+(\.\d+)*|no)$',
output, re.MULTILINE) is not None
assert re.search('^Webkit:\s+(\d+(\.\d+)*|no)$',
output, re.MULTILINE) is not None
assert re.search('^SSL:\s.+$',
output, re.MULTILINE) is not None
assert re.search('^Platform:\s.+,\s+.+$',
output, re.MULTILINE) is not None
assert re.search('^Frozen:\s(True|False)$',
output, re.MULTILINE) is not None
assert re.search('^Imported from .+$',
output, re.MULTILINE) is not None
assert re.search('^OS Version: .*$',
output, re.MULTILINE) is not None
assert re.search('^Paths$',
output, re.MULTILINE) is not None
assert re.search('^config:\s+.+$',
output, re.MULTILINE) is not None
assert re.search('^system_data:\s+.+$',
output, re.MULTILINE) is not None
assert re.search('^cache:\s+.+$',
output, re.MULTILINE) is not None
assert re.search('^data:\s+.+$',
output, re.MULTILINE) is not None
assert re.search('^download:\s+.+$',
output, re.MULTILINE) is not None
assert re.search('^runtime:\s+.+$',
output, re.MULTILINE) is not None