Merge pull request #3191 from gyorb/refactor/enum
use Enum start number
This commit is contained in:
commit
25bda66260
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
"""Base class for a wrapper over QWebView/QWebEngineView."""
|
"""Base class for a wrapper over QWebView/QWebEngineView."""
|
||||||
|
|
||||||
|
import enum
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
@ -74,7 +75,7 @@ class UnsupportedOperationError(WebTabError):
|
|||||||
"""Raised when an operation is not supported with the given backend."""
|
"""Raised when an operation is not supported with the given backend."""
|
||||||
|
|
||||||
|
|
||||||
TerminationStatus = usertypes.enum('TerminationStatus', [
|
TerminationStatus = enum.Enum('TerminationStatus', [
|
||||||
'normal',
|
'normal',
|
||||||
'abnormal', # non-zero exit status
|
'abnormal', # non-zero exit status
|
||||||
'crashed', # e.g. segfault
|
'crashed', # e.g. segfault
|
||||||
|
@ -27,6 +27,7 @@ import collections
|
|||||||
import functools
|
import functools
|
||||||
import pathlib
|
import pathlib
|
||||||
import tempfile
|
import tempfile
|
||||||
|
import enum
|
||||||
|
|
||||||
import sip
|
import sip
|
||||||
from PyQt5.QtCore import (pyqtSlot, pyqtSignal, Qt, QObject, QModelIndex,
|
from PyQt5.QtCore import (pyqtSlot, pyqtSignal, Qt, QObject, QModelIndex,
|
||||||
@ -38,8 +39,7 @@ from qutebrowser.utils import (usertypes, standarddir, utils, message, log,
|
|||||||
qtutils)
|
qtutils)
|
||||||
|
|
||||||
|
|
||||||
ModelRole = usertypes.enum('ModelRole', ['item'], start=Qt.UserRole,
|
ModelRole = enum.IntEnum('ModelRole', ['item'], start=Qt.UserRole)
|
||||||
is_int=True)
|
|
||||||
|
|
||||||
|
|
||||||
# Remember the last used directory
|
# Remember the last used directory
|
||||||
|
@ -24,6 +24,7 @@ import functools
|
|||||||
import math
|
import math
|
||||||
import re
|
import re
|
||||||
import html
|
import html
|
||||||
|
import enum
|
||||||
from string import ascii_lowercase
|
from string import ascii_lowercase
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
@ -37,10 +38,9 @@ from qutebrowser.commands import userscripts, cmdexc, cmdutils, runners
|
|||||||
from qutebrowser.utils import usertypes, log, qtutils, message, objreg, utils
|
from qutebrowser.utils import usertypes, log, qtutils, message, objreg, utils
|
||||||
|
|
||||||
|
|
||||||
Target = usertypes.enum('Target', ['normal', 'current', 'tab', 'tab_fg',
|
Target = enum.Enum('Target', ['normal', 'current', 'tab', 'tab_fg', 'tab_bg',
|
||||||
'tab_bg', 'window', 'yank', 'yank_primary',
|
'window', 'yank', 'yank_primary', 'run', 'fill',
|
||||||
'run', 'fill', 'hover', 'download',
|
'hover', 'download', 'userscript', 'spawn'])
|
||||||
'userscript', 'spawn'])
|
|
||||||
|
|
||||||
|
|
||||||
class HintingError(Exception):
|
class HintingError(Exception):
|
||||||
|
@ -24,6 +24,7 @@ Module attributes:
|
|||||||
SELECTORS: CSS selectors for different groups of elements.
|
SELECTORS: CSS selectors for different groups of elements.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import enum
|
||||||
import collections.abc
|
import collections.abc
|
||||||
|
|
||||||
from PyQt5.QtCore import QUrl, Qt, QEvent, QTimer
|
from PyQt5.QtCore import QUrl, Qt, QEvent, QTimer
|
||||||
@ -35,7 +36,7 @@ from qutebrowser.mainwindow import mainwindow
|
|||||||
from qutebrowser.utils import log, usertypes, utils, qtutils, objreg
|
from qutebrowser.utils import log, usertypes, utils, qtutils, objreg
|
||||||
|
|
||||||
|
|
||||||
Group = usertypes.enum('Group', ['all', 'links', 'images', 'url', 'inputs'])
|
Group = enum.Enum('Group', ['all', 'links', 'images', 'url', 'inputs'])
|
||||||
|
|
||||||
|
|
||||||
SELECTORS = {
|
SELECTORS = {
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
"""Base class for vim-like key sequence parser."""
|
"""Base class for vim-like key sequence parser."""
|
||||||
|
|
||||||
|
import enum
|
||||||
import re
|
import re
|
||||||
import unicodedata
|
import unicodedata
|
||||||
|
|
||||||
@ -75,8 +76,8 @@ class BaseKeyParser(QObject):
|
|||||||
do_log = True
|
do_log = True
|
||||||
passthrough = False
|
passthrough = False
|
||||||
|
|
||||||
Match = usertypes.enum('Match', ['partial', 'definitive', 'other', 'none'])
|
Match = enum.Enum('Match', ['partial', 'definitive', 'other', 'none'])
|
||||||
Type = usertypes.enum('Type', ['chain', 'special'])
|
Type = enum.Enum('Type', ['chain', 'special'])
|
||||||
|
|
||||||
def __init__(self, win_id, parent=None, supports_count=None,
|
def __init__(self, win_id, parent=None, supports_count=None,
|
||||||
supports_chains=False):
|
supports_chains=False):
|
||||||
|
@ -24,6 +24,7 @@ Module attributes:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import traceback
|
import traceback
|
||||||
|
import enum
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSlot, Qt
|
from PyQt5.QtCore import pyqtSlot, Qt
|
||||||
|
|
||||||
@ -34,7 +35,7 @@ from qutebrowser.utils import usertypes, log, message, objreg, utils
|
|||||||
|
|
||||||
|
|
||||||
STARTCHARS = ":/?"
|
STARTCHARS = ":/?"
|
||||||
LastPress = usertypes.enum('LastPress', ['none', 'filtertext', 'keystring'])
|
LastPress = enum.Enum('LastPress', ['none', 'filtertext', 'keystring'])
|
||||||
|
|
||||||
|
|
||||||
class NormalKeyParser(keyparser.CommandKeyParser):
|
class NormalKeyParser(keyparser.CommandKeyParser):
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
"""The main statusbar widget."""
|
"""The main statusbar widget."""
|
||||||
|
|
||||||
|
import enum
|
||||||
import attr
|
import attr
|
||||||
from PyQt5.QtCore import pyqtSignal, pyqtSlot, pyqtProperty, Qt, QSize, QTimer
|
from PyQt5.QtCore import pyqtSignal, pyqtSlot, pyqtProperty, Qt, QSize, QTimer
|
||||||
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QStackedLayout, QSizePolicy
|
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QStackedLayout, QSizePolicy
|
||||||
@ -46,7 +47,7 @@ class ColorFlags:
|
|||||||
passthrough: If we're currently in passthrough-mode.
|
passthrough: If we're currently in passthrough-mode.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
CaretMode = usertypes.enum('CaretMode', ['off', 'on', 'selection'])
|
CaretMode = enum.Enum('CaretMode', ['off', 'on', 'selection'])
|
||||||
prompt = attr.ib(False)
|
prompt = attr.ib(False)
|
||||||
insert = attr.ib(False)
|
insert = attr.ib(False)
|
||||||
command = attr.ib(False)
|
command = attr.ib(False)
|
||||||
|
@ -19,10 +19,12 @@
|
|||||||
|
|
||||||
"""Text displayed in the statusbar."""
|
"""Text displayed in the statusbar."""
|
||||||
|
|
||||||
|
import enum
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSlot
|
from PyQt5.QtCore import pyqtSlot
|
||||||
|
|
||||||
from qutebrowser.mainwindow.statusbar import textbase
|
from qutebrowser.mainwindow.statusbar import textbase
|
||||||
from qutebrowser.utils import usertypes, log
|
from qutebrowser.utils import log
|
||||||
|
|
||||||
|
|
||||||
class Text(textbase.TextBase):
|
class Text(textbase.TextBase):
|
||||||
@ -37,7 +39,7 @@ class Text(textbase.TextBase):
|
|||||||
available. If not, the permanent text is shown.
|
available. If not, the permanent text is shown.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
Text = usertypes.enum('Text', ['normal', 'temp'])
|
Text = enum.Enum('Text', ['normal', 'temp'])
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
"""URL displayed in the statusbar."""
|
"""URL displayed in the statusbar."""
|
||||||
|
|
||||||
|
import enum
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSlot, pyqtProperty, Qt, QUrl
|
from PyQt5.QtCore import pyqtSlot, pyqtProperty, Qt, QUrl
|
||||||
|
|
||||||
from qutebrowser.mainwindow.statusbar import textbase
|
from qutebrowser.mainwindow.statusbar import textbase
|
||||||
@ -27,8 +29,8 @@ from qutebrowser.utils import usertypes, urlutils
|
|||||||
|
|
||||||
|
|
||||||
# Note this has entries for success/error/warn from widgets.webview:LoadStatus
|
# Note this has entries for success/error/warn from widgets.webview:LoadStatus
|
||||||
UrlType = usertypes.enum('UrlType', ['success', 'success_https', 'error',
|
UrlType = enum.Enum('UrlType', ['success', 'success_https', 'error', 'warn',
|
||||||
'warn', 'hover', 'normal'])
|
'hover', 'normal'])
|
||||||
|
|
||||||
|
|
||||||
class UrlText(textbase.TextBase):
|
class UrlText(textbase.TextBase):
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
"""The tab widget used for TabbedBrowser from browser.py."""
|
"""The tab widget used for TabbedBrowser from browser.py."""
|
||||||
|
|
||||||
import functools
|
import functools
|
||||||
|
import enum
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
from PyQt5.QtCore import (pyqtSignal, pyqtSlot, Qt, QSize, QRect, QPoint,
|
from PyQt5.QtCore import (pyqtSignal, pyqtSlot, Qt, QSize, QRect, QPoint,
|
||||||
@ -34,8 +35,8 @@ from qutebrowser.config import config
|
|||||||
from qutebrowser.misc import objects
|
from qutebrowser.misc import objects
|
||||||
|
|
||||||
|
|
||||||
PixelMetrics = usertypes.enum('PixelMetrics', ['icon_padding'],
|
PixelMetrics = enum.IntEnum('PixelMetrics', ['icon_padding'],
|
||||||
start=QStyle.PM_CustomBase, is_int=True)
|
start=QStyle.PM_CustomBase)
|
||||||
|
|
||||||
|
|
||||||
class TabWidget(QTabWidget):
|
class TabWidget(QTabWidget):
|
||||||
|
@ -25,6 +25,7 @@ import functools
|
|||||||
import html
|
import html
|
||||||
import ctypes
|
import ctypes
|
||||||
import ctypes.util
|
import ctypes.util
|
||||||
|
import enum
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
@ -37,10 +38,10 @@ from qutebrowser.utils import usertypes, objreg, version, qtutils, log, utils
|
|||||||
from qutebrowser.misc import objects, msgbox
|
from qutebrowser.misc import objects, msgbox
|
||||||
|
|
||||||
|
|
||||||
_Result = usertypes.enum(
|
_Result = enum.IntEnum(
|
||||||
'_Result',
|
'_Result',
|
||||||
['quit', 'restart', 'restart_webkit', 'restart_webengine'],
|
['quit', 'restart', 'restart_webkit', 'restart_webengine'],
|
||||||
is_int=True, start=QDialog.Accepted + 1)
|
start=QDialog.Accepted + 1)
|
||||||
|
|
||||||
|
|
||||||
@attr.s
|
@attr.s
|
||||||
|
@ -27,6 +27,7 @@ import getpass
|
|||||||
import fnmatch
|
import fnmatch
|
||||||
import traceback
|
import traceback
|
||||||
import datetime
|
import datetime
|
||||||
|
import enum
|
||||||
|
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
from PyQt5.QtCore import pyqtSlot, Qt, QSize
|
from PyQt5.QtCore import pyqtSlot, Qt, QSize
|
||||||
@ -35,13 +36,13 @@ from PyQt5.QtWidgets import (QDialog, QLabel, QTextEdit, QPushButton,
|
|||||||
QDialogButtonBox, QApplication, QMessageBox)
|
QDialogButtonBox, QApplication, QMessageBox)
|
||||||
|
|
||||||
import qutebrowser
|
import qutebrowser
|
||||||
from qutebrowser.utils import version, log, utils, objreg, usertypes
|
from qutebrowser.utils import version, log, utils, objreg
|
||||||
from qutebrowser.misc import (miscwidgets, autoupdate, msgbox, httpclient,
|
from qutebrowser.misc import (miscwidgets, autoupdate, msgbox, httpclient,
|
||||||
pastebin)
|
pastebin)
|
||||||
from qutebrowser.config import config, configfiles
|
from qutebrowser.config import config, configfiles
|
||||||
|
|
||||||
|
|
||||||
Result = usertypes.enum('Result', ['restore', 'no_restore'], is_int=True,
|
Result = enum.IntEnum('Result', ['restore', 'no_restore'],
|
||||||
start=QDialog.Accepted + 1)
|
start=QDialog.Accepted + 1)
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,9 +24,10 @@ import sys
|
|||||||
import inspect
|
import inspect
|
||||||
import os.path
|
import os.path
|
||||||
import collections
|
import collections
|
||||||
|
import enum
|
||||||
|
|
||||||
import qutebrowser
|
import qutebrowser
|
||||||
from qutebrowser.utils import usertypes, log, utils
|
from qutebrowser.utils import log, utils
|
||||||
|
|
||||||
|
|
||||||
def is_git_repo():
|
def is_git_repo():
|
||||||
@ -75,7 +76,7 @@ class DocstringParser:
|
|||||||
arg_descs: A dict of argument names to their descriptions
|
arg_descs: A dict of argument names to their descriptions
|
||||||
"""
|
"""
|
||||||
|
|
||||||
State = usertypes.enum('State', ['short', 'desc', 'desc_hidden',
|
State = enum.Enum('State', ['short', 'desc', 'desc_hidden',
|
||||||
'arg_start', 'arg_inside', 'misc'])
|
'arg_start', 'arg_inside', 'misc'])
|
||||||
|
|
||||||
def __init__(self, func):
|
def __init__(self, func):
|
||||||
|
@ -24,17 +24,18 @@ import sys
|
|||||||
import shutil
|
import shutil
|
||||||
import os.path
|
import os.path
|
||||||
import contextlib
|
import contextlib
|
||||||
|
import enum
|
||||||
|
|
||||||
from PyQt5.QtCore import QStandardPaths
|
from PyQt5.QtCore import QStandardPaths
|
||||||
from PyQt5.QtWidgets import QApplication
|
from PyQt5.QtWidgets import QApplication
|
||||||
|
|
||||||
from qutebrowser.utils import log, debug, usertypes, message, utils
|
from qutebrowser.utils import log, debug, message, utils
|
||||||
|
|
||||||
# The cached locations
|
# The cached locations
|
||||||
_locations = {}
|
_locations = {}
|
||||||
|
|
||||||
|
|
||||||
Location = usertypes.enum('Location', ['config', 'auto_config',
|
Location = enum.Enum('Location', ['config', 'auto_config',
|
||||||
'data', 'system_data',
|
'data', 'system_data',
|
||||||
'cache', 'download', 'runtime'])
|
'cache', 'download', 'runtime'])
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ Module attributes:
|
|||||||
|
|
||||||
import operator
|
import operator
|
||||||
import collections.abc
|
import collections.abc
|
||||||
import enum as pyenum
|
import enum
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QTimer
|
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QTimer
|
||||||
|
|
||||||
@ -35,22 +35,6 @@ from qutebrowser.utils import log, qtutils, utils
|
|||||||
_UNSET = object()
|
_UNSET = object()
|
||||||
|
|
||||||
|
|
||||||
def enum(name, items, start=1, is_int=False):
|
|
||||||
"""Factory for simple enumerations.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
name: Name of the enum
|
|
||||||
items: Iterable of items to be sequentially enumerated.
|
|
||||||
start: The number to use for the first value.
|
|
||||||
We use 1 as default so enum members are always True.
|
|
||||||
is_init: True if the enum should be a Python IntEnum
|
|
||||||
"""
|
|
||||||
enums = [(v, i) for (i, v) in enumerate(items, start)]
|
|
||||||
base = pyenum.IntEnum if is_int else pyenum.Enum
|
|
||||||
base = pyenum.unique(base)
|
|
||||||
return base(name, enums)
|
|
||||||
|
|
||||||
|
|
||||||
class NeighborList(collections.abc.Sequence):
|
class NeighborList(collections.abc.Sequence):
|
||||||
|
|
||||||
"""A list of items which saves its current position.
|
"""A list of items which saves its current position.
|
||||||
@ -65,7 +49,7 @@ class NeighborList(collections.abc.Sequence):
|
|||||||
_mode: The current mode.
|
_mode: The current mode.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
Modes = enum('Modes', ['edge', 'exception'])
|
Modes = enum.Enum('Modes', ['edge', 'exception'])
|
||||||
|
|
||||||
def __init__(self, items=None, default=_UNSET, mode=Modes.exception):
|
def __init__(self, items=None, default=_UNSET, mode=Modes.exception):
|
||||||
"""Constructor.
|
"""Constructor.
|
||||||
@ -221,45 +205,46 @@ class NeighborList(collections.abc.Sequence):
|
|||||||
|
|
||||||
|
|
||||||
# The mode of a Question.
|
# The mode of a Question.
|
||||||
PromptMode = enum('PromptMode', ['yesno', 'text', 'user_pwd', 'alert',
|
PromptMode = enum.Enum('PromptMode', ['yesno', 'text', 'user_pwd', 'alert',
|
||||||
'download'])
|
'download'])
|
||||||
|
|
||||||
|
|
||||||
# Where to open a clicked link.
|
# Where to open a clicked link.
|
||||||
ClickTarget = enum('ClickTarget', ['normal', 'tab', 'tab_bg', 'window',
|
ClickTarget = enum.Enum('ClickTarget', ['normal', 'tab', 'tab_bg', 'window',
|
||||||
'hover'])
|
'hover'])
|
||||||
|
|
||||||
|
|
||||||
# Key input modes
|
# Key input modes
|
||||||
KeyMode = enum('KeyMode', ['normal', 'hint', 'command', 'yesno', 'prompt',
|
KeyMode = enum.Enum('KeyMode', ['normal', 'hint', 'command', 'yesno', 'prompt',
|
||||||
'insert', 'passthrough', 'caret', 'set_mark',
|
'insert', 'passthrough', 'caret', 'set_mark',
|
||||||
'jump_mark', 'record_macro', 'run_macro'])
|
'jump_mark', 'record_macro', 'run_macro'])
|
||||||
|
|
||||||
|
|
||||||
# Exit statuses for errors. Needs to be an int for sys.exit.
|
# Exit statuses for errors. Needs to be an int for sys.exit.
|
||||||
Exit = enum('Exit', ['ok', 'reserved', 'exception', 'err_ipc', 'err_init',
|
Exit = enum.IntEnum('Exit', ['ok', 'reserved', 'exception', 'err_ipc',
|
||||||
'err_config', 'err_key_config'], is_int=True, start=0)
|
'err_init', 'err_config', 'err_key_config'],
|
||||||
|
start=0)
|
||||||
|
|
||||||
|
|
||||||
# Load status of a tab
|
# Load status of a tab
|
||||||
LoadStatus = enum('LoadStatus', ['none', 'success', 'success_https', 'error',
|
LoadStatus = enum.Enum('LoadStatus', ['none', 'success', 'success_https',
|
||||||
'warn', 'loading'])
|
'error', 'warn', 'loading'])
|
||||||
|
|
||||||
|
|
||||||
# Backend of a tab
|
# Backend of a tab
|
||||||
Backend = enum('Backend', ['QtWebKit', 'QtWebEngine'])
|
Backend = enum.Enum('Backend', ['QtWebKit', 'QtWebEngine'])
|
||||||
|
|
||||||
|
|
||||||
# JS world for QtWebEngine
|
# JS world for QtWebEngine
|
||||||
JsWorld = enum('JsWorld', ['main', 'application', 'user', 'jseval'])
|
JsWorld = enum.Enum('JsWorld', ['main', 'application', 'user', 'jseval'])
|
||||||
|
|
||||||
|
|
||||||
# Log level of a JS message. This needs to match up with the keys allowed for
|
# Log level of a JS message. This needs to match up with the keys allowed for
|
||||||
# the content.javascript.log setting.
|
# the content.javascript.log setting.
|
||||||
JsLogLevel = enum('JsLogLevel', ['unknown', 'info', 'warning', 'error'])
|
JsLogLevel = enum.Enum('JsLogLevel', ['unknown', 'info', 'warning', 'error'])
|
||||||
|
|
||||||
|
|
||||||
MessageLevel = enum('MessageLevel', ['error', 'warning', 'info'])
|
MessageLevel = enum.Enum('MessageLevel', ['error', 'warning', 'info'])
|
||||||
|
|
||||||
|
|
||||||
class Question(QObject):
|
class Question(QObject):
|
||||||
|
@ -27,6 +27,7 @@ import platform
|
|||||||
import subprocess
|
import subprocess
|
||||||
import importlib
|
import importlib
|
||||||
import collections
|
import collections
|
||||||
|
import enum
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
@ -63,7 +64,7 @@ class DistributionInfo:
|
|||||||
pretty = attr.ib()
|
pretty = attr.ib()
|
||||||
|
|
||||||
|
|
||||||
Distribution = usertypes.enum(
|
Distribution = enum.Enum(
|
||||||
'Distribution', ['unknown', 'ubuntu', 'debian', 'void', 'arch',
|
'Distribution', ['unknown', 'ubuntu', 'debian', 'void', 'arch',
|
||||||
'gentoo', 'fedora', 'opensuse', 'linuxmint', 'manjaro'])
|
'gentoo', 'fedora', 'opensuse', 'linuxmint', 'manjaro'])
|
||||||
|
|
||||||
|
@ -20,15 +20,15 @@
|
|||||||
"""Tests for qutebrowser.commands.argparser."""
|
"""Tests for qutebrowser.commands.argparser."""
|
||||||
|
|
||||||
import inspect
|
import inspect
|
||||||
|
import enum
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from PyQt5.QtCore import QUrl
|
from PyQt5.QtCore import QUrl
|
||||||
|
|
||||||
from qutebrowser.commands import argparser, cmdexc
|
from qutebrowser.commands import argparser, cmdexc
|
||||||
from qutebrowser.utils import usertypes
|
|
||||||
|
|
||||||
|
|
||||||
Enum = usertypes.enum('Enum', ['foo', 'foo_bar'])
|
Enum = enum.Enum('Enum', ['foo', 'foo_bar'])
|
||||||
|
|
||||||
|
|
||||||
class TestArgumentParser:
|
class TestArgumentParser:
|
||||||
|
@ -25,6 +25,7 @@ import sys
|
|||||||
import logging
|
import logging
|
||||||
import types
|
import types
|
||||||
import typing
|
import typing
|
||||||
|
import enum
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
@ -243,7 +244,7 @@ class TestRegister:
|
|||||||
else:
|
else:
|
||||||
assert pos_args == [('arg', 'arg')]
|
assert pos_args == [('arg', 'arg')]
|
||||||
|
|
||||||
Enum = usertypes.enum('Test', ['x', 'y'])
|
Enum = enum.Enum('Test', ['x', 'y'])
|
||||||
|
|
||||||
@pytest.mark.parametrize('typ, inp, choices, expected', [
|
@pytest.mark.parametrize('typ, inp, choices, expected', [
|
||||||
(int, '42', None, 42),
|
(int, '42', None, 42),
|
||||||
|
@ -1,74 +0,0 @@
|
|||||||
# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:
|
|
||||||
|
|
||||||
# Copyright 2014-2017 Florian Bruhin (The Compiler) <mail@qutebrowser.org>
|
|
||||||
#
|
|
||||||
# This file is part of qutebrowser.
|
|
||||||
#
|
|
||||||
# qutebrowser is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# qutebrowser is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with qutebrowser. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
"""Tests for the Enum class."""
|
|
||||||
|
|
||||||
from qutebrowser.utils import usertypes
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def enum():
|
|
||||||
return usertypes.enum('Enum', ['one', 'two'])
|
|
||||||
|
|
||||||
|
|
||||||
def test_values(enum):
|
|
||||||
"""Test if enum members resolve to the right values."""
|
|
||||||
assert enum.one.value == 1
|
|
||||||
assert enum.two.value == 2
|
|
||||||
|
|
||||||
|
|
||||||
def test_name(enum):
|
|
||||||
"""Test .name mapping."""
|
|
||||||
assert enum.one.name == 'one'
|
|
||||||
assert enum.two.name == 'two'
|
|
||||||
|
|
||||||
|
|
||||||
def test_unknown(enum):
|
|
||||||
"""Test invalid values which should raise an AttributeError."""
|
|
||||||
with pytest.raises(AttributeError):
|
|
||||||
_ = enum.three # flake8: disable=F841
|
|
||||||
|
|
||||||
|
|
||||||
def test_start():
|
|
||||||
"""Test the start= argument."""
|
|
||||||
e = usertypes.enum('Enum', ['three', 'four'], start=3)
|
|
||||||
assert e.three.value == 3
|
|
||||||
assert e.four.value == 4
|
|
||||||
|
|
||||||
|
|
||||||
def test_exit():
|
|
||||||
"""Make sure the exit status enum is correct."""
|
|
||||||
assert usertypes.Exit.ok == 0
|
|
||||||
assert usertypes.Exit.reserved == 1
|
|
||||||
|
|
||||||
|
|
||||||
def test_is_int():
|
|
||||||
"""Test the is_int argument."""
|
|
||||||
int_enum = usertypes.enum('Enum', ['item'], is_int=True)
|
|
||||||
no_int_enum = usertypes.enum('Enum', ['item'])
|
|
||||||
assert isinstance(int_enum.item, int)
|
|
||||||
assert not isinstance(no_int_enum.item, int)
|
|
||||||
|
|
||||||
|
|
||||||
def test_unique():
|
|
||||||
"""Make sure elements need to be unique."""
|
|
||||||
with pytest.raises(TypeError):
|
|
||||||
usertypes.enum('Enum', ['item', 'item'])
|
|
Loading…
Reference in New Issue
Block a user