Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 681466 Details for
Bug 764074
dev-python/cmd2-1.4.0 fails tests
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
build.log
build.log (text/plain), 179.16 KB, created by
Agostino Sarubbo
on 2021-01-06 09:56:12 UTC
(
hide
)
Description:
build.log
Filename:
MIME Type:
Creator:
Agostino Sarubbo
Created:
2021-01-06 09:56:12 UTC
Size:
179.16 KB
patch
obsolete
> * Package: dev-python/cmd2-1.4.0 > * Repository: gentoo > * Maintainer: prometheanfire@gentoo.org python@gentoo.org > * USE: abi_x86_64 amd64 elibc_glibc kernel_linux python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 test userland_GNU > * FEATURES: network-sandbox preserve-libs sandbox test userpriv usersandbox > > >@@@@@ PLEASE PAY ATTENTION HERE!!! @@@@@ >This information may help you to understand if this is a duplicate or if this bug exists after you pushed a fix; >This ebuild was merged at the following commit: >https://github.com/gentoo/gentoo/commit/2ccb281efe544c386cff2fff45c4c2670c70f3f3 (Tue Jan 5 22:42:33 UTC 2021) >@@@@@ END @@@@@ > > > >emerge --info: >Portage 3.0.12 (python 3.7.9-final-0, default/linux/amd64/17.1, gcc-10.2.0, glibc-2.32-r6, 5.4.0-1029-aws x86_64) >================================================================= >System uname: Linux-5.4.0-1029-aws-x86_64-Intel-R-_Xeon-R-_Platinum_8124M_CPU_@_3.00GHz-with-gentoo-2.7 >KiB Mem: 71926568 total, 44947128 free >KiB Swap: 0 total, 0 free >sh bash 5.1_p4 >ld GNU ld (Gentoo 2.35.1 p2) 2.35.1 >app-shells/bash: 5.1_p4::gentoo >dev-lang/perl: 5.32.0-r1::gentoo >dev-lang/python: 2.7.18-r5::gentoo, 3.7.9-r1::gentoo, 3.8.7::gentoo, 3.9.1::gentoo >dev-util/cmake: 3.19.2::gentoo >dev-util/pkgconfig: 0.29.2::gentoo >sys-apps/baselayout: 2.7-r1::gentoo >sys-apps/openrc: 0.42.1::gentoo >sys-apps/sandbox: 2.20::gentoo >sys-devel/autoconf: 2.13-r1::gentoo, 2.69-r5::gentoo >sys-devel/automake: 1.16.3-r1::gentoo >sys-devel/binutils: 2.35.1-r1::gentoo >sys-devel/gcc: 10.2.0-r5::gentoo >sys-devel/gcc-config: 2.3.2-r1::gentoo >sys-devel/libtool: 2.4.6-r6::gentoo >sys-devel/make: 4.3::gentoo >sys-kernel/linux-headers: 5.10::gentoo (virtual/os-headers) >sys-libs/glibc: 2.32-r6::gentoo >Repositories: > >gentoo > location: /usr/portage > sync-type: rsync > sync-uri: rsync://rsync.gentoo.org/gentoo-portage > priority: -1000 > sync-rsync-extra-opts: > sync-rsync-verify-max-age: 24 > sync-rsync-verify-metamanifest: yes > sync-rsync-verify-jobs: 1 > >ACCEPT_KEYWORDS="amd64 ~amd64" >ACCEPT_LICENSE="* MIT" >CBUILD="x86_64-pc-linux-gnu" >CFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches" >CHOST="x86_64-pc-linux-gnu" >CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt" >CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo" >CXXFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches" >DISTDIR="/var/tmp/portage/dev-python/cmd2-1.4.0/distdir" >EMERGE_DEFAULT_OPTS="--with-bdeps=y -1 -k -b" >ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR" >FCFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches" >FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms sign split-log strict test unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr" >FFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches" >GENTOO_MIRRORS="http://distfiles.gentoo.org" >LANG="en_US.utf8" >LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0" >MAKEOPTS="-j36 V=1" >PKGDIR="/root/.packages" >PORTAGE_CONFIGROOT="/" >PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git" >PORTAGE_TMPDIR="/var/tmp" >USE="acl amd64 berkdb bzip2 cli crypt dri elogind fortran gdbm iconv ipv6 jumbo-build libglvnd libtirpc multilib native-symlinks ncurses nls nptl openmp pam pcre readline seccomp split-usr ssl tcpd test unicode xattr zlib" ABI_X86="64" ELIBC="glibc" KERNEL="linux" PYTHON_TARGETS="python3_7 python3_8 python3_9" USERLAND="GNU" >Unset: CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS > > > > > >emerge history: >2021-01-06T00:41:40 >>> x11-base/xorg-proto-2020.1 >2021-01-06T00:41:40 >>> dev-python/colorama-0.4.4 >2021-01-06T00:41:40 >>> dev-python/typing-extensions-3.7.4.3 >2021-01-06T00:41:41 >>> dev-python/toml-0.10.2 >2021-01-06T00:41:40 >>> dev-python/wcwidth-0.2.5-r1 >2021-01-06T00:41:41 >>> dev-python/namespace-zope-1-r1 >2021-01-06T00:41:41 >>> x11-libs/xtrans-1.4.0 >2021-01-06T00:41:41 >>> x11-base/xcb-proto-1.14.1 >2021-01-06T00:41:49 >>> x11-libs/libXau-1.0.9-r1 >2021-01-06T00:41:49 >>> x11-libs/libXdmcp-1.1.3 >2021-01-06T00:41:54 >>> dev-python/zipp-3.4.0 >2021-01-06T00:41:57 >>> dev-python/zope-interface-5.2.0 >2021-01-06T00:41:59 >>> x11-libs/libICE-1.0.10 >2021-01-06T00:42:07 >>> x11-libs/libxcb-1.14 >2021-01-06T00:42:09 >>> dev-python/importlib_metadata-3.3.0 >2021-01-06T00:42:11 >>> dev-python/attrs-20.3.0 >2021-01-06T00:42:12 >>> x11-libs/libSM-1.2.3-r1 >2021-01-06T00:42:17 >>> x11-misc/compose-tables-1.7.0 >2021-01-06T00:42:25 >>> x11-libs/libX11-1.7.0 >2021-01-06T00:42:27 >>> x11-libs/libXext-1.3.4 >2021-01-06T00:42:28 >>> x11-libs/libXt-1.2.0 >2021-01-06T00:42:33 >>> x11-misc/xsel-1.2.0-r1 >2021-01-06T00:42:35 >>> dev-python/pyperclip-1.7.0 >2021-01-06T00:42:38 >>> dev-python/cmd2-1.4.0 >2021-01-06T00:42:59 >>> x11-misc/xbitmaps-1.1.2-r1 >2021-01-06T00:42:59 >>> x11-misc/util-macros-1.19.2-r2 >2021-01-06T00:42:59 >>> sys-libs/mtdev-1.1.6 >2021-01-06T00:42:59 >>> x11-libs/libxshmfence-1.3-r2 >2021-01-06T00:43:00 >>> x11-apps/iceauth-1.0.8-r1 >2021-01-06T00:43:00 >>> x11-libs/pixman-0.40.0 >2021-01-06T00:43:00 >>> x11-misc/xkeyboard-config-2.31 >2021-01-06T00:43:01 >>> media-fonts/font-util-1.3.2-r1 >2021-01-06T00:43:01 >>> dev-libs/libevdev-1.10.0 >2021-01-06T00:43:01 >>> x11-libs/libfontenc-1.1.4 >2021-01-06T00:43:01 >>> x11-libs/libXfixes-5.0.3-r3 >2021-01-06T00:43:02 >>> media-libs/libglvnd-1.3.2-r2 >2021-01-06T00:43:02 >>> x11-libs/libXScrnSaver-1.2.3 >2021-01-06T00:43:02 >>> x11-libs/libxkbfile-1.1.0 >2021-01-06T00:43:03 >>> x11-libs/libXxf86vm-1.1.4-r2 >2021-01-06T00:43:03 >>> dev-python/iniconfig-1.1.1 >2021-01-06T00:43:03 >>> x11-libs/libXrender-0.9.10-r2 >2021-01-06T00:43:03 >>> dev-python/more-itertools-8.6.0 >2021-01-06T00:43:04 >>> dev-python/py-1.10.0 >2021-01-06T00:43:04 >>> dev-python/pyparsing-2.4.7-r1 >2021-01-06T00:43:04 >>> x11-libs/libXmu-1.1.3 >2021-01-06T00:43:05 >>> dev-python/pluggy-0.13.1-r1 >2021-01-06T00:43:05 >>> x11-libs/libpciaccess-0.16 >2021-01-06T00:43:05 >>> dev-python/mako-1.1.3-r1 >2021-01-06T00:43:24 >>> x11-apps/rgb-1.0.6-r1 >2021-01-06T00:43:36 >>> dev-libs/libinput-1.16.4 >2021-01-06T00:43:38 >>> x11-libs/libXfont2-2.0.4 >2021-01-06T00:43:40 >>> x11-libs/libXdamage-1.1.5 >2021-01-06T00:43:44 >>> x11-apps/xkbcomp-1.4.4 >2021-01-06T00:43:49 >>> x11-libs/libXrandr-1.5.2 >2021-01-06T00:43:55 >>> dev-python/packaging-20.8 >2021-01-06T00:43:57 >>> x11-apps/xrdb-1.2.0 >2021-01-06T00:43:56 >>> x11-apps/xauth-1.1 >2021-01-06T00:43:57 >>> x11-apps/xhost-1.0.8 >2021-01-06T00:44:00 >>> x11-libs/libdrm-2.4.103 >2021-01-06T00:44:21 >>> dev-python/pytest-6.2.1 >2021-01-06T00:44:24 >>> x11-apps/xinit-1.4.1 >2021-01-06T00:44:28 >>> media-libs/mesa-20.3.2 >2021-01-06T00:44:32 >>> dev-python/pytest-mock-3.5.0 >2021-01-06T00:44:36 >>> media-libs/libepoxy-1.5.5 >2021-01-06T00:44:41 >>> x11-base/xorg-server-1.20.10 >2021-01-06T00:44:44 >>> x11-base/xorg-drivers-1.20-r2 >2021-01-06T00:44:47 >>> x11-drivers/xf86-video-intel-2.99.917_p20200515 >2021-01-06T00:44:50 >>> x11-drivers/xf86-video-vesa-2.5.0 >2021-01-06T00:44:53 >>> x11-drivers/xf86-video-ati-19.1.0 >2021-01-06T00:44:55 >>> x11-drivers/xf86-video-fbdev-0.5.0-r1 >2021-01-06T00:44:58 >>> x11-drivers/xf86-video-amdgpu-19.1.0 >2021-01-06T00:45:01 >>> x11-drivers/xf86-input-libinput-0.30.0 >2021-01-06T00:45:03 >>> x11-drivers/xf86-video-dummy-0.3.8 >2021-01-06T00:45:06 >>> x11-drivers/xf86-video-nouveau-1.0.16 > > >>>> Unpacking source... >>>> Unpacking cmd2-1.4.0.tar.gz to /var/tmp/portage/dev-python/cmd2-1.4.0/work >>>> Source unpacked in /var/tmp/portage/dev-python/cmd2-1.4.0/work >>>> Preparing source in /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0 ... >>>> Source prepared. >>>> Configuring source in /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0 ... >>>> Source configured. >>>> Compiling source in /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0 ... > * python3_7: running distutils-r1_run_phase distutils-r1_python_compile >python3.7 setup.py build -j 36 >running build >running build_py >creating /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/history.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/cmd2.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/utils.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/transcript.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/constants.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/__init__.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/ansi.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/parsing.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/py_bridge.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/exceptions.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/command_definition.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/table_creator.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/decorators.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/rl_utils.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/plugin.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/argparse_custom.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/argparse_completer.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >copying cmd2/clipboard.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_7/lib/cmd2 >warning: build_py: byte-compiling is disabled, skipping. > > * python3_8: running distutils-r1_run_phase distutils-r1_python_compile >python3.8 setup.py build -j 36 >running build >running build_py >creating /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/history.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/cmd2.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/utils.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/transcript.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/constants.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/__init__.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/ansi.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/parsing.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/py_bridge.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/exceptions.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/command_definition.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/table_creator.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/decorators.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/rl_utils.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/plugin.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/argparse_custom.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/argparse_completer.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >copying cmd2/clipboard.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_8/lib/cmd2 >warning: build_py: byte-compiling is disabled, skipping. > > * python3_9: running distutils-r1_run_phase distutils-r1_python_compile >python3.9 setup.py build -j 36 >running build >running build_py >creating /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/history.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/cmd2.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/utils.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/transcript.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/constants.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/__init__.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/ansi.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/parsing.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/py_bridge.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/exceptions.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/command_definition.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/table_creator.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/decorators.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/rl_utils.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/plugin.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/argparse_custom.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/argparse_completer.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >copying cmd2/clipboard.py -> /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0-python3_9/lib/cmd2 >warning: build_py: byte-compiling is disabled, skipping. > >>>> Source compiled. >>>> Test phase: dev-python/cmd2-1.4.0 > * Scanning for an open DISPLAY to start Xvfb ... > * Starting Xvfb on $DISPLAY=4 ... > * python3_7: running distutils-r1_run_phase python_test >============================= test session starts ============================== >platform linux -- Python 3.7.9, pytest-6.2.1, py-1.10.0, pluggy-0.13.1 -- /usr/bin/python3.7 >cachedir: .pytest_cache >rootdir: /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0, configfile: setup.cfg, testpaths: tests >plugins: mock-3.5.0 >collecting ... collected 931 items > >tests/test_ansi.py::test_strip_style PASSED [ 0%] >tests/test_ansi.py::test_style_aware_wcswidth PASSED [ 0%] >tests/test_ansi.py::test_style_none PASSED [ 0%] >tests/test_ansi.py::test_style_fg PASSED [ 0%] >tests/test_ansi.py::test_style_bg PASSED [ 0%] >tests/test_ansi.py::test_style_bold PASSED [ 0%] >tests/test_ansi.py::test_style_dim PASSED [ 0%] >tests/test_ansi.py::test_style_underline PASSED [ 0%] >tests/test_ansi.py::test_style_multi PASSED [ 0%] >tests/test_ansi.py::test_style_color_not_exist PASSED [ 1%] >tests/test_ansi.py::test_fg_lookup_exist PASSED [ 1%] >tests/test_ansi.py::test_fg_lookup_nonexist PASSED [ 1%] >tests/test_ansi.py::test_bg_lookup_exist PASSED [ 1%] >tests/test_ansi.py::test_bg_lookup_nonexist PASSED [ 1%] >tests/test_ansi.py::test_set_title_str PASSED [ 1%] >tests/test_ansi.py::test_async_alert_str[127-(Cmd) -help his-12-\x1b[35mHello World!\x1b[39m-\x1b[2K\r\x1b[35mHello World!\x1b[39m] PASSED [ 1%] >tests/test_ansi.py::test_async_alert_str[127-\n(Cmd) -help -5-foo-\x1b[2K\x1b[1A\x1b[2K\rfoo] PASSED [ 1%] >tests/test_ansi.py::test_async_alert_str[10-(Cmd) -help history of the american republic-4-boo-\x1b[3B\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\rboo] PASSED [ 1%] >tests/test_ansi.py::test_cast_color_as_str PASSED [ 2%] >tests/test_ansi.py::test_color_str_building PASSED [ 2%] >tests/test_ansi.py::test_color_nonunique_values PASSED [ 2%] >tests/test_ansi.py::test_color_enum PASSED [ 2%] >tests/test_ansi.py::test_colors_list PASSED [ 2%] >tests/test_argparse.py::test_invalid_syntax PASSED [ 2%] >tests/test_argparse.py::test_argparse_basic_command PASSED [ 2%] >tests/test_argparse.py::test_argparse_remove_quotes PASSED [ 2%] >tests/test_argparse.py::test_argparser_kwargs PASSED [ 2%] >tests/test_argparse.py::test_argparse_preserve_quotes PASSED [ 3%] >tests/test_argparse.py::test_argparse_custom_namespace PASSED [ 3%] >tests/test_argparse.py::test_argparse_with_list PASSED [ 3%] >tests/test_argparse.py::test_argparse_with_list_remove_quotes PASSED [ 3%] >tests/test_argparse.py::test_argparse_with_list_preserve_quotes PASSED [ 3%] >tests/test_argparse.py::test_argparse_with_list_custom_namespace PASSED [ 3%] >tests/test_argparse.py::test_argparse_with_list_and_empty_doc PASSED [ 3%] >tests/test_argparse.py::test_argparser_correct_args_with_quotes_and_midline_options PASSED [ 3%] >tests/test_argparse.py::test_argparser_and_unknown_args_kwargs PASSED [ 3%] >tests/test_argparse.py::test_argparse_quoted_arguments_multiple PASSED [ 3%] >tests/test_argparse.py::test_argparse_help_docstring PASSED [ 4%] >tests/test_argparse.py::test_argparse_help_description PASSED [ 4%] >tests/test_argparse.py::test_argparse_prog PASSED [ 4%] >tests/test_argparse.py::test_arglist PASSED [ 4%] >tests/test_argparse.py::test_arglist_kwargs PASSED [ 4%] >tests/test_argparse.py::test_preservelist PASSED [ 4%] >tests/test_argparse.py::test_subcommand_foo PASSED [ 4%] >tests/test_argparse.py::test_subcommand_bar PASSED [ 4%] >tests/test_argparse.py::test_subcommand_invalid PASSED [ 4%] >tests/test_argparse.py::test_subcommand_base_help PASSED [ 5%] >tests/test_argparse.py::test_subcommand_help PASSED [ 5%] >tests/test_argparse.py::test_subcommand_invalid_help PASSED [ 5%] >tests/test_argparse.py::test_add_another_subcommand PASSED [ 5%] >tests/test_argparse.py::test_subcmd_decorator PASSED [ 5%] >tests/test_argparse.py::test_unittest_mock PASSED [ 5%] >tests/test_argparse.py::test_pytest_mock_invalid PASSED [ 5%] >tests/test_argparse.py::test_pytest_mock_valid[spec_param0] PASSED [ 5%] >tests/test_argparse.py::test_pytest_mock_valid[spec_param1] PASSED [ 5%] >tests/test_argparse.py::test_pytest_mock_valid[spec_param2] PASSED [ 6%] >tests/test_argparse_completer.py::test_help[music] PASSED [ 6%] >tests/test_argparse_completer.py::test_help[music create] PASSED [ 6%] >tests/test_argparse_completer.py::test_help[music create rock] PASSED [ 6%] >tests/test_argparse_completer.py::test_help[music create jazz] PASSED [ 6%] >tests/test_argparse_completer.py::test_bad_subcommand_help PASSED [ 6%] >tests/test_argparse_completer.py::test_complete_help[-mus-completions0] PASSED [ 6%] >tests/test_argparse_completer.py::test_complete_help[music-cre-completions1] PASSED [ 6%] >tests/test_argparse_completer.py::test_complete_help[music-creab-completions2] PASSED [ 6%] >tests/test_argparse_completer.py::test_complete_help[music create--completions3] PASSED [ 6%] >tests/test_argparse_completer.py::test_complete_help[music crea-jazz-completions4] PASSED [ 7%] >tests/test_argparse_completer.py::test_complete_help[music create-foo-completions5] PASSED [ 7%] >tests/test_argparse_completer.py::test_complete_help[fake create--completions6] PASSED [ 7%] >tests/test_argparse_completer.py::test_complete_help[music fake--completions7] PASSED [ 7%] >tests/test_argparse_completer.py::test_subcommand_completions[create--completions0] PASSED [ 7%] >tests/test_argparse_completer.py::test_subcommand_completions[create-ja-completions1] PASSED [ 7%] >tests/test_argparse_completer.py::test_subcommand_completions[create-foo-completions2] PASSED [ 7%] >tests/test_argparse_completer.py::test_subcommand_completions[creab-ja-completions3] PASSED [ 7%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag---completion_matches0-display_matches0] PASSED [ 7%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag----completion_matches1-display_matches1] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag--n-completion_matches2-display_matches2] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag---n-completion_matches3-display_matches3] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag --append_flag---completion_matches4-display_matches4] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag--r-completion_matches5-display_matches5] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag---rem-completion_matches6-display_matches6] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag -r value---completion_matches7-display_matches7] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag --remainder_flag value----completion_matches8-display_matches8] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag--s-completion_matches9-display_matches9] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag---s-completion_matches10-display_matches10] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag -n----completion_matches11-display_matches11] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag --append_const_flag -c --append_flag value----completion_matches12-display_matches12] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[plus_flag-+-completion_matches13-display_matches13] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[plus_flag-++-completion_matches14-display_matches14] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag ------completion_matches15-display_matches15] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag --help ------completion_matches16-display_matches16] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[plus_flag ---++-completion_matches17-display_matches17] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[plus_flag ++help ---++-completion_matches18-display_matches18] PASSED [ 9%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[-l--completions0] PASSED [ 9%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--list-s-completions1] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[-f--completions2] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--function-ch-completions3] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[-m--completions4] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--method-m-completions5] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[-i--completions6] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--int-1-completions7] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--int---completions8] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--int--1-completions9] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[1--completions0] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[1-s-completions1] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[2--completions2] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[2-ch-completions3] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[3--completions4] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[3-m-completions5] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[4--completions6] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[4-2-completions7] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[5--completions8] PASSED [ 11%] >tests/test_argparse_completer.py::test_flag_sorting PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_flag_completers[-f--completions0] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_flag_completers[--function-f-completions1] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_flag_completers[-m--completions2] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_flag_completers[--method-m-completions3] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_positional_completers[1--completions0] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_positional_completers[1-c-completions1] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_positional_completers[2--completions2] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_positional_completers[2-m-completions3] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_blank_token PASSED [ 12%] >tests/test_argparse_completer.py::test_completion_items[1-False] PASSED [ 13%] >tests/test_argparse_completer.py::test_completion_items[5-True] PASSED [ 13%] >tests/test_argparse_completer.py::test_completion_items[100-False] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--set_value-completions0] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--set_value set-completions1] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--set_value set value-completions2] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--set_value set value --set_value-completions3] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--one_or_more-completions4] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--one_or_more one-completions5] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--optional-completions6] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--optional optional-completions7] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--range-completions8] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--range some-completions9] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--range some range-completions10] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--remainder-completions11] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--remainder remainder -completions12] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--remainder choices --set_value-completions13] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--range choice ---completions14] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--remainder remainder ---completions15] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[-- --one_or_more -completions16] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[-completions17] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[positional-completions18] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[positional --set_value-completions19] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[positional --set_value set-completions20] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[positional --set_value set value-completions21] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[positional --range choice ---completions22] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[the positional-completions23] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[the positional remainder-completions24] PASSED [ 16%] >tests/test_argparse_completer.py::test_autcomp_nargs[the positional remainder choices-completions25] PASSED [ 16%] >tests/test_argparse_completer.py::test_autcomp_nargs[the positional --set_value-completions26] PASSED [ 16%] >tests/test_argparse_completer.py::test_autcomp_nargs[the positional remainder --set_value-completions27] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag foo ----False] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag foo --help--False] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag foo----False] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more one ----False] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more one or --set_value--False] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more one or more----False] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set value ----False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set value --one_or_more--False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set value----False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_val set value----False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range choices ----False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range choices range --set_value--False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range range----False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag ----True] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag --help--True] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more ----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more --set_value--True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set ----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set --one_or_more--True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_val set----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range ----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range --set_value--True] PASSED [ 19%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range----True] PASSED [ 19%] >tests/test_argparse_completer.py::test_completion_items_arg_header PASSED [ 19%] >tests/test_argparse_completer.py::test_completion_items_descriptive_header PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[hint--True] PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[hint --flag--True] PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[hint --suppressed_help--False] PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[hint --suppressed_hint--False] PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[nargs --one_or_more---True] PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[nargs --one_or_more choices-bad_completion-True] PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[nargs --one_or_more choices---False] PASSED [ 20%] >tests/test_argparse_completer.py::test_autocomp_hint[nargs --remainder---True] PASSED [ 20%] >tests/test_argparse_completer.py::test_autocomp_hint[hint---False] PASSED [ 20%] >tests/test_argparse_completer.py::test_autocomp_hint[nargs the choices---True] PASSED [ 20%] >tests/test_argparse_completer.py::test_autocomp_hint[nargs the choices remainder---True] PASSED [ 20%] >tests/test_argparse_completer.py::test_autocomp_hint_no_help_text PASSED [ 20%] >tests/test_argparse_completer.py::test_completion_error[--choice -choice] PASSED [ 20%] >tests/test_argparse_completer.py::test_completion_error[-completer] PASSED [ 20%] >tests/test_argparse_completer.py::test_arg_tokens[arg_tokens choice subcmd-completions0] PASSED [ 20%] >tests/test_argparse_completer.py::test_arg_tokens[arg_tokens completer subcmd fake-completions1] PASSED [ 21%] >tests/test_argparse_completer.py::test_arg_tokens[arg_tokens completer subcmd --parent_arg override fake-completions2] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex--the optional positional-None] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex---fl----flag ] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag--the flag arg-None] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex pos_val---fl--None] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex pos_val --flag--f/--flag: not allowed with argument optional_pos-None] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag flag_val--the last arg-None] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag flag_val---oth--None] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag flag_val --other---o/--other_flag: not allowed with argument -f/--flag-None] PASSED [ 22%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag flag_val --flag--the flag arg-None] PASSED [ 22%] >tests/test_argparse_completer.py::test_single_prefix_char PASSED [ 22%] >tests/test_argparse_completer.py::test_looks_like_flag PASSED [ 22%] >tests/test_argparse_completer.py::test_complete_command_no_tokens PASSED [ 22%] >tests/test_argparse_completer.py::test_complete_command_help_no_tokens PASSED [ 22%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs0-True] PASSED [ 22%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs1-True] PASSED [ 22%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs2-True] PASSED [ 22%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs3-True] PASSED [ 22%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs4-False] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs5-False] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs6-False] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_alongside_choices[kwargs0] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_alongside_choices[kwargs1] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_alongside_choices[kwargs2] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_alongside_choices[kwargs3] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_when_nargs_is_0[kwargs0] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_when_nargs_is_0[kwargs1] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_when_nargs_is_0[kwargs2] PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_when_nargs_is_0[kwargs3] PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_usage PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_nargs_help_format PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_nargs_range_validation PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_narg_invalid_tuples[nargs_tuple0] PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_narg_invalid_tuples[nargs_tuple1] PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_narg_invalid_tuples[nargs_tuple2] PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_narg_invalid_tuples[nargs_tuple3] PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_narg_tuple_order PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_narg_tuple_negative PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_narg_tuple_zero_base PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_narg_tuple_one_base PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_narg_tuple_other_ranges PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_print_message PASSED [ 25%] >tests/test_argparse_custom.py::test_generate_range_error PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_required_options PASSED [ 25%] >tests/test_argparse_custom.py::test_override_parser PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_metavar_tuple PASSED [ 25%] >tests/test_argparse_custom.py::test_cmd2_attribute_wrapper PASSED [ 26%] >tests/test_cmd2.py::test_version PASSED [ 26%] >tests/test_cmd2.py::test_not_in_main_thread PASSED [ 26%] >tests/test_cmd2.py::test_empty_statement PASSED [ 26%] >tests/test_cmd2.py::test_base_help PASSED [ 26%] >tests/test_cmd2.py::test_base_help_verbose PASSED [ 26%] >tests/test_cmd2.py::test_base_argparse_help PASSED [ 26%] >tests/test_cmd2.py::test_base_invalid_option PASSED [ 26%] >tests/test_cmd2.py::test_base_shortcuts PASSED [ 26%] >tests/test_cmd2.py::test_command_starts_with_shortcut PASSED [ 27%] >tests/test_cmd2.py::test_base_show PASSED [ 27%] >tests/test_cmd2.py::test_base_show_long PASSED [ 27%] >tests/test_cmd2.py::test_set PASSED [ 27%] >tests/test_cmd2.py::test_set_val_empty PASSED [ 27%] >tests/test_cmd2.py::test_set_val_is_flag PASSED [ 27%] >tests/test_cmd2.py::test_set_not_supported PASSED [ 27%] >tests/test_cmd2.py::test_set_no_settables PASSED [ 27%] >tests/test_cmd2.py::test_set_allow_style[Never-True-Never] PASSED [ 27%] >tests/test_cmd2.py::test_set_allow_style[neVeR-True-Never] PASSED [ 28%] >tests/test_cmd2.py::test_set_allow_style[Terminal-True-Terminal] PASSED [ 28%] >tests/test_cmd2.py::test_set_allow_style[TeRMInal-True-Terminal] PASSED [ 28%] >tests/test_cmd2.py::test_set_allow_style[Always-True-Always] PASSED [ 28%] >tests/test_cmd2.py::test_set_allow_style[AlWaYs-True-Always] PASSED [ 28%] >tests/test_cmd2.py::test_set_allow_style[invalid-False-Terminal] PASSED [ 28%] >tests/test_cmd2.py::test_set_onchange_hook PASSED [ 28%] >tests/test_cmd2.py::test_base_shell PASSED [ 28%] >tests/test_cmd2.py::test_shell_last_result PASSED [ 28%] >tests/test_cmd2.py::test_shell_manual_call PASSED [ 29%] >tests/test_cmd2.py::test_base_py PASSED [ 29%] >tests/test_cmd2.py::test_base_error PASSED [ 29%] >tests/test_cmd2.py::test_run_script PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_empty_args PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_nonexistent_file PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_directory PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_empty_file PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_binary_file PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_python_file PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_utf8_file PASSED [ 30%] >tests/test_cmd2.py::test_run_script_nested_run_scripts PASSED [ 30%] >tests/test_cmd2.py::test_runcmds_plus_hooks PASSED [ 30%] >tests/test_cmd2.py::test_runcmds_plus_hooks_ctrl_c PASSED [ 30%] >tests/test_cmd2.py::test_relative_run_script PASSED [ 30%] >tests/test_cmd2.py::test_relative_run_script_with_odd_file_names[nothingweird] PASSED [ 30%] >tests/test_cmd2.py::test_relative_run_script_with_odd_file_names[has spaces] PASSED [ 30%] >tests/test_cmd2.py::test_relative_run_script_with_odd_file_names["is_double_quoted"] PASSED [ 30%] >tests/test_cmd2.py::test_relative_run_script_with_odd_file_names['is_single_quoted'] PASSED [ 30%] >tests/test_cmd2.py::test_relative_run_script_requires_an_argument PASSED [ 31%] >tests/test_cmd2.py::test_in_script PASSED [ 31%] >tests/test_cmd2.py::test_system_exit_in_command PASSED [ 31%] >tests/test_cmd2.py::test_output_redirection PASSED [ 31%] >tests/test_cmd2.py::test_output_redirection_to_nonexistent_directory PASSED [ 31%] >tests/test_cmd2.py::test_output_redirection_to_too_long_filename PASSED [ 31%] >tests/test_cmd2.py::test_feedback_to_output_true PASSED [ 31%] >tests/test_cmd2.py::test_feedback_to_output_false PASSED [ 31%] >tests/test_cmd2.py::test_disallow_redirection PASSED [ 31%] >tests/test_cmd2.py::test_pipe_to_shell PASSED [ 32%] >tests/test_cmd2.py::test_pipe_to_shell_and_redirect PASSED [ 32%] >tests/test_cmd2.py::test_pipe_to_shell_error PASSED [ 32%] >tests/test_cmd2.py::test_send_to_paste_buffer PASSED [ 32%] >tests/test_cmd2.py::test_base_timing PASSED [ 32%] >tests/test_cmd2.py::test_base_debug PASSED [ 32%] >tests/test_cmd2.py::test_debug_not_settable PASSED [ 32%] >tests/test_cmd2.py::test_remove_settable_keyerror PASSED [ 32%] >tests/test_cmd2.py::test_edit_file PASSED [ 32%] >tests/test_cmd2.py::test_edit_file_with_odd_file_names[nothingweird] PASSED [ 32%] >tests/test_cmd2.py::test_edit_file_with_odd_file_names[has spaces] PASSED [ 33%] >tests/test_cmd2.py::test_edit_file_with_odd_file_names["is_double_quoted"] PASSED [ 33%] >tests/test_cmd2.py::test_edit_file_with_odd_file_names['is_single_quoted'] PASSED [ 33%] >tests/test_cmd2.py::test_edit_file_with_spaces PASSED [ 33%] >tests/test_cmd2.py::test_edit_blank PASSED [ 33%] >tests/test_cmd2.py::test_base_py_interactive PASSED [ 33%] >tests/test_cmd2.py::test_base_cmdloop_with_startup_commands PASSED [ 33%] >tests/test_cmd2.py::test_base_cmdloop_without_startup_commands PASSED [ 33%] >tests/test_cmd2.py::test_cmdloop_without_rawinput PASSED [ 33%] >tests/test_cmd2.py::test_stty_sane PASSED [ 34%] >tests/test_cmd2.py::test_precmd_hook_success PASSED [ 34%] >tests/test_cmd2.py::test_precmd_hook_failure PASSED [ 34%] >tests/test_cmd2.py::test_interrupt_quit PASSED [ 34%] >tests/test_cmd2.py::test_interrupt_noquit PASSED [ 34%] >tests/test_cmd2.py::test_default_to_shell PASSED [ 34%] >tests/test_cmd2.py::test_ansi_prompt_not_esacped PASSED [ 34%] >tests/test_cmd2.py::test_ansi_prompt_escaped PASSED [ 34%] >tests/test_cmd2.py::test_custom_command_help PASSED [ 34%] >tests/test_cmd2.py::test_custom_help_menu PASSED [ 35%] >tests/test_cmd2.py::test_help_undocumented PASSED [ 35%] >tests/test_cmd2.py::test_help_overridden_method PASSED [ 35%] >tests/test_cmd2.py::test_help_multiline_docstring PASSED [ 35%] >tests/test_cmd2.py::test_help_cat_base PASSED [ 35%] >tests/test_cmd2.py::test_help_cat_verbose PASSED [ 35%] >tests/test_cmd2.py::test_select_options PASSED [ 35%] >tests/test_cmd2.py::test_select_invalid_option_too_big PASSED [ 35%] >tests/test_cmd2.py::test_select_invalid_option_too_small PASSED [ 35%] >tests/test_cmd2.py::test_select_list_of_strings PASSED [ 35%] >tests/test_cmd2.py::test_select_list_of_tuples PASSED [ 36%] >tests/test_cmd2.py::test_select_uneven_list_of_tuples PASSED [ 36%] >tests/test_cmd2.py::test_select_eof PASSED [ 36%] >tests/test_cmd2.py::test_select_ctrl_c PASSED [ 36%] >tests/test_cmd2.py::test_help_with_no_docstring PASSED [ 36%] >tests/test_cmd2.py::test_which_editor_bad PASSED [ 36%] >tests/test_cmd2.py::test_multiline_complete_empty_statement_raises_exception PASSED [ 36%] >tests/test_cmd2.py::test_multiline_complete_statement_without_terminator PASSED [ 36%] >tests/test_cmd2.py::test_multiline_complete_statement_with_unclosed_quotes PASSED [ 36%] >tests/test_cmd2.py::test_multiline_input_line_to_statement PASSED [ 37%] >tests/test_cmd2.py::test_clipboard_failure PASSED [ 37%] >tests/test_cmd2.py::test_commandresult_truthy PASSED [ 37%] >tests/test_cmd2.py::test_commandresult_falsy PASSED [ 37%] >tests/test_cmd2.py::test_is_text_file_bad_input PASSED [ 37%] >tests/test_cmd2.py::test_eof PASSED [ 37%] >tests/test_cmd2.py::test_echo PASSED [ 37%] >tests/test_cmd2.py::test_read_input_rawinput_true PASSED [ 37%] >tests/test_cmd2.py::test_read_input_rawinput_false PASSED [ 37%] >tests/test_cmd2.py::test_read_command_line_eof PASSED [ 38%] >tests/test_cmd2.py::test_poutput_string PASSED [ 38%] >tests/test_cmd2.py::test_poutput_zero PASSED [ 38%] >tests/test_cmd2.py::test_poutput_empty_string PASSED [ 38%] >tests/test_cmd2.py::test_poutput_none PASSED [ 38%] >tests/test_cmd2.py::test_poutput_ansi_always PASSED [ 38%] >tests/test_cmd2.py::test_poutput_ansi_never PASSED [ 38%] >tests/test_cmd2.py::test_get_alias_completion_items PASSED [ 38%] >tests/test_cmd2.py::test_get_macro_completion_items PASSED [ 38%] >tests/test_cmd2.py::test_get_settable_completion_items PASSED [ 38%] >tests/test_cmd2.py::test_alias_no_subcommand PASSED [ 39%] >tests/test_cmd2.py::test_alias_create PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_with_quoted_tokens PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name[""] PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name[#] PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name[!no_shortcut] PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name[">"] PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name["no>pe"] PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name["no spaces"] PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name["nopipe|"] PASSED [ 40%] >tests/test_cmd2.py::test_alias_create_invalid_name["noterm;"] PASSED [ 40%] >tests/test_cmd2.py::test_alias_create_invalid_name[noembedded"quotes] PASSED [ 40%] >tests/test_cmd2.py::test_alias_create_with_command_name PASSED [ 40%] >tests/test_cmd2.py::test_alias_create_with_macro_name PASSED [ 40%] >tests/test_cmd2.py::test_alias_that_resolves_into_comment PASSED [ 40%] >tests/test_cmd2.py::test_alias_list_invalid_alias PASSED [ 40%] >tests/test_cmd2.py::test_alias_delete PASSED [ 40%] >tests/test_cmd2.py::test_alias_delete_all PASSED [ 40%] >tests/test_cmd2.py::test_alias_delete_non_existing PASSED [ 41%] >tests/test_cmd2.py::test_alias_delete_no_name PASSED [ 41%] >tests/test_cmd2.py::test_multiple_aliases PASSED [ 41%] >tests/test_cmd2.py::test_macro_no_subcommand PASSED [ 41%] >tests/test_cmd2.py::test_macro_create PASSED [ 41%] >tests/test_cmd2.py::test_macro_create_with_quoted_tokens PASSED [ 41%] >tests/test_cmd2.py::test_macro_create_invalid_name[""] PASSED [ 41%] >tests/test_cmd2.py::test_macro_create_invalid_name[#] PASSED [ 41%] >tests/test_cmd2.py::test_macro_create_invalid_name[!no_shortcut] PASSED [ 41%] >tests/test_cmd2.py::test_macro_create_invalid_name[">"] PASSED [ 41%] >tests/test_cmd2.py::test_macro_create_invalid_name["no>pe"] PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_invalid_name["no spaces"] PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_invalid_name["nopipe|"] PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_invalid_name["noterm;"] PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_invalid_name[noembedded"quotes] PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_with_command_name PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_with_alias_name PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_with_args PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_with_escaped_args PASSED [ 42%] >tests/test_cmd2.py::test_macro_usage_with_missing_args PASSED [ 43%] >tests/test_cmd2.py::test_macro_usage_with_exta_args PASSED [ 43%] >tests/test_cmd2.py::test_macro_create_with_missing_arg_nums PASSED [ 43%] >tests/test_cmd2.py::test_macro_create_with_invalid_arg_num PASSED [ 43%] >tests/test_cmd2.py::test_macro_create_with_unicode_numbered_arg PASSED [ 43%] >tests/test_cmd2.py::test_macro_create_with_missing_unicode_arg_nums PASSED [ 43%] >tests/test_cmd2.py::test_macro_that_resolves_into_comment PASSED [ 43%] >tests/test_cmd2.py::test_macro_list_invalid_macro PASSED [ 43%] >tests/test_cmd2.py::test_macro_delete PASSED [ 43%] >tests/test_cmd2.py::test_macro_delete_all PASSED [ 44%] >tests/test_cmd2.py::test_macro_delete_non_existing PASSED [ 44%] >tests/test_cmd2.py::test_macro_delete_no_name PASSED [ 44%] >tests/test_cmd2.py::test_multiple_macros PASSED [ 44%] >tests/test_cmd2.py::test_nonexistent_macro PASSED [ 44%] >tests/test_cmd2.py::test_perror_style PASSED [ 44%] >tests/test_cmd2.py::test_perror_no_style PASSED [ 44%] >tests/test_cmd2.py::test_pwarning_style PASSED [ 44%] >tests/test_cmd2.py::test_pwarning_no_style PASSED [ 44%] >tests/test_cmd2.py::test_ppaged PASSED [ 45%] >tests/test_cmd2.py::test_ppaged_blank PASSED [ 45%] >tests/test_cmd2.py::test_ppaged_none PASSED [ 45%] >tests/test_cmd2.py::test_ppaged_strips_ansi_when_redirecting PASSED [ 45%] >tests/test_cmd2.py::test_ppaged_strips_ansi_when_redirecting_if_always PASSED [ 45%] >tests/test_cmd2.py::test_parseline_empty PASSED [ 45%] >tests/test_cmd2.py::test_parseline PASSED [ 45%] >tests/test_cmd2.py::test_onecmd_raw_str_continue PASSED [ 45%] >tests/test_cmd2.py::test_onecmd_raw_str_quit PASSED [ 45%] >tests/test_cmd2.py::test_onecmd_add_to_history PASSED [ 45%] >tests/test_cmd2.py::test_get_all_commands PASSED [ 46%] >tests/test_cmd2.py::test_get_help_topics PASSED [ 46%] >tests/test_cmd2.py::test_get_help_topics_hidden PASSED [ 46%] >tests/test_cmd2.py::test_exit_code_default PASSED [ 46%] >tests/test_cmd2.py::test_exit_code_nonzero PASSED [ 46%] >tests/test_cmd2.py::test_ansi_pouterr_always_tty PASSED [ 46%] >tests/test_cmd2.py::test_ansi_pouterr_always_notty PASSED [ 46%] >tests/test_cmd2.py::test_ansi_terminal_tty PASSED [ 46%] >tests/test_cmd2.py::test_ansi_terminal_notty PASSED [ 46%] >tests/test_cmd2.py::test_ansi_never_tty PASSED [ 47%] >tests/test_cmd2.py::test_ansi_never_notty PASSED [ 47%] >tests/test_cmd2.py::test_disable_and_enable_category PASSED [ 47%] >tests/test_cmd2.py::test_enable_enabled_command PASSED [ 47%] >tests/test_cmd2.py::test_disable_fake_command PASSED [ 47%] >tests/test_cmd2.py::test_disable_command_twice PASSED [ 47%] >tests/test_cmd2.py::test_disabled_command_not_in_history PASSED [ 47%] >tests/test_cmd2.py::test_disabled_message_command_name PASSED [ 47%] >tests/test_cmd2.py::test_startup_script PASSED [ 47%] >tests/test_cmd2.py::test_startup_script_with_odd_file_names[nothingweird] PASSED [ 48%] >tests/test_cmd2.py::test_startup_script_with_odd_file_names[has spaces] PASSED [ 48%] >tests/test_cmd2.py::test_startup_script_with_odd_file_names["is_double_quoted"] PASSED [ 48%] >tests/test_cmd2.py::test_startup_script_with_odd_file_names['is_single_quoted'] PASSED [ 48%] >tests/test_cmd2.py::test_transcripts_at_init PASSED [ 48%] >tests/test_completion.py::test_cmd2_command_completion_single PASSED [ 48%] >tests/test_completion.py::test_complete_command_single PASSED [ 48%] >tests/test_completion.py::test_complete_empty_arg PASSED [ 48%] >tests/test_completion.py::test_complete_bogus_command PASSED [ 48%] >tests/test_completion.py::test_complete_exception PASSED [ 48%] >tests/test_completion.py::test_complete_macro PASSED [ 49%] >tests/test_completion.py::test_default_sort_key PASSED [ 49%] >tests/test_completion.py::test_cmd2_command_completion_multiple PASSED [ 49%] >tests/test_completion.py::test_cmd2_command_completion_nomatch PASSED [ 49%] >tests/test_completion.py::test_cmd2_help_completion_single PASSED [ 49%] >tests/test_completion.py::test_cmd2_help_completion_multiple PASSED [ 49%] >tests/test_completion.py::test_cmd2_help_completion_nomatch PASSED [ 49%] >tests/test_completion.py::test_shell_command_completion_shortcut PASSED [ 49%] >tests/test_completion.py::test_shell_command_completion_doesnt_match_wildcards PASSED [ 49%] >tests/test_completion.py::test_shell_command_completion_multiple PASSED [ 50%] >tests/test_completion.py::test_shell_command_completion_nomatch PASSED [ 50%] >tests/test_completion.py::test_shell_command_completion_doesnt_complete_when_just_shell PASSED [ 50%] >tests/test_completion.py::test_shell_command_completion_does_path_completion_when_after_command PASSED [ 50%] >tests/test_completion.py::test_shell_commmand_complete_in_path PASSED [ 50%] >tests/test_completion.py::test_path_completion_single_end PASSED [ 50%] >tests/test_completion.py::test_path_completion_multiple PASSED [ 50%] >tests/test_completion.py::test_path_completion_nomatch PASSED [ 50%] >tests/test_completion.py::test_default_to_shell_completion PASSED [ 50%] >tests/test_completion.py::test_path_completion_no_text PASSED [ 51%] >tests/test_completion.py::test_path_completion_no_path PASSED [ 51%] >tests/test_completion.py::test_path_completion_cwd_is_root_dir PASSED [ 51%] >tests/test_completion.py::test_path_completion_doesnt_match_wildcards PASSED [ 51%] >tests/test_completion.py::test_path_completion_complete_user PASSED [ 51%] >tests/test_completion.py::test_path_completion_user_path_expansion PASSED [ 51%] >tests/test_completion.py::test_path_completion_directories_only PASSED [ 51%] >tests/test_completion.py::test_basic_completion_single PASSED [ 51%] >tests/test_completion.py::test_basic_completion_multiple PASSED [ 51%] >tests/test_completion.py::test_basic_completion_nomatch PASSED [ 51%] >tests/test_completion.py::test_delimiter_completion PASSED [ 52%] >tests/test_completion.py::test_flag_based_completion_single PASSED [ 52%] >tests/test_completion.py::test_flag_based_completion_multiple PASSED [ 52%] >tests/test_completion.py::test_flag_based_completion_nomatch PASSED [ 52%] >tests/test_completion.py::test_flag_based_default_completer PASSED [ 52%] >tests/test_completion.py::test_flag_based_callable_completer PASSED [ 52%] >tests/test_completion.py::test_index_based_completion_single PASSED [ 52%] >tests/test_completion.py::test_index_based_completion_multiple PASSED [ 52%] >tests/test_completion.py::test_index_based_completion_nomatch PASSED [ 52%] >tests/test_completion.py::test_index_based_default_completer PASSED [ 53%] >tests/test_completion.py::test_index_based_callable_completer PASSED [ 53%] >tests/test_completion.py::test_tokens_for_completion_quoted PASSED [ 53%] >tests/test_completion.py::test_tokens_for_completion_unclosed_quote PASSED [ 53%] >tests/test_completion.py::test_tokens_for_completion_punctuation PASSED [ 53%] >tests/test_completion.py::test_tokens_for_completion_quoted_punctuation PASSED [ 53%] >tests/test_completion.py::test_add_opening_quote_basic_no_text PASSED [ 53%] >tests/test_completion.py::test_add_opening_quote_basic_nothing_added PASSED [ 53%] >tests/test_completion.py::test_add_opening_quote_basic_quote_added PASSED [ 53%] >tests/test_completion.py::test_add_opening_quote_basic_single_quote_added PASSED [ 54%] >tests/test_completion.py::test_add_opening_quote_basic_text_is_common_prefix PASSED [ 54%] >tests/test_completion.py::test_add_opening_quote_delimited_no_text PASSED [ 54%] >tests/test_completion.py::test_add_opening_quote_delimited_nothing_added PASSED [ 54%] >tests/test_completion.py::test_add_opening_quote_delimited_quote_added PASSED [ 54%] >tests/test_completion.py::test_add_opening_quote_delimited_text_is_common_prefix PASSED [ 54%] >tests/test_completion.py::test_add_opening_quote_delimited_space_in_prefix PASSED [ 54%] >tests/test_completion.py::test_no_completer PASSED [ 54%] >tests/test_completion.py::test_quote_as_command PASSED [ 54%] >tests/test_completion.py::test_complete_multiline_on_single_line PASSED [ 54%] >tests/test_completion.py::test_complete_multiline_on_multiple_lines PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake-RedirCompType.DEFAULT] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake arg-RedirCompType.DEFAULT] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake |-RedirCompType.SHELL_CMD] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake | grep-RedirCompType.PATH] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake | grep arg-RedirCompType.PATH] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake | grep >-RedirCompType.PATH] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake | grep > >-RedirCompType.NONE] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake | grep > file-RedirCompType.NONE] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake | grep > file >-RedirCompType.NONE] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake | grep > file |-RedirCompType.SHELL_CMD] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake | grep > file | grep-RedirCompType.PATH] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake | |-RedirCompType.NONE] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake | >-RedirCompType.NONE] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake >-RedirCompType.PATH] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake >>-RedirCompType.PATH] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake > >-RedirCompType.NONE] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake > |-RedirCompType.SHELL_CMD] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake >> file |-RedirCompType.SHELL_CMD] PASSED [ 57%] >tests/test_completion.py::test_redirect_complete[fake >> file | grep-RedirCompType.PATH] PASSED [ 57%] >tests/test_completion.py::test_redirect_complete[fake > file-RedirCompType.NONE] PASSED [ 57%] >tests/test_completion.py::test_redirect_complete[fake > file >-RedirCompType.NONE] PASSED [ 57%] >tests/test_completion.py::test_redirect_complete[fake > file >>-RedirCompType.NONE] PASSED [ 57%] >tests/test_completion.py::test_complete_set_value PASSED [ 57%] >tests/test_completion.py::test_complete_set_value_invalid_settable PASSED [ 57%] >tests/test_completion.py::test_cmd2_subcommand_completion_single_end PASSED [ 57%] >tests/test_completion.py::test_cmd2_subcommand_completion_multiple PASSED [ 57%] >tests/test_completion.py::test_cmd2_subcommand_completion_nomatch PASSED [ 58%] >tests/test_completion.py::test_help_subcommand_completion_single PASSED [ 58%] >tests/test_completion.py::test_help_subcommand_completion_multiple PASSED [ 58%] >tests/test_completion.py::test_help_subcommand_completion_nomatch PASSED [ 58%] >tests/test_completion.py::test_subcommand_tab_completion PASSED [ 58%] >tests/test_completion.py::test_subcommand_tab_completion_with_no_completer PASSED [ 58%] >tests/test_completion.py::test_subcommand_tab_completion_space_in_text PASSED [ 58%] >tests/test_completion.py::test_subcmd_with_unknown_completion_single_end PASSED [ 58%] >tests/test_completion.py::test_subcmd_with_unknown_completion_multiple PASSED [ 58%] >tests/test_completion.py::test_subcmd_with_unknown_completion_nomatch PASSED [ 58%] >tests/test_completion.py::test_help_subcommand_completion_single_scu PASSED [ 59%] >tests/test_completion.py::test_help_subcommand_completion_multiple_scu PASSED [ 59%] >tests/test_completion.py::test_help_subcommand_completion_with_flags_before_command PASSED [ 59%] >tests/test_completion.py::test_complete_help_subcommands_with_blank_command PASSED [ 59%] >tests/test_completion.py::test_help_subcommand_completion_nomatch_scu PASSED [ 59%] >tests/test_completion.py::test_subcommand_tab_completion_scu PASSED [ 59%] >tests/test_completion.py::test_subcommand_tab_completion_with_no_completer_scu PASSED [ 59%] >tests/test_completion.py::test_subcommand_tab_completion_space_in_text_scu PASSED [ 59%] >tests/test_history.py::test_readline_remove_history_item PASSED [ 59%] >tests/test_history.py::test_history_class_span PASSED [ 60%] >tests/test_history.py::test_persisted_history_span PASSED [ 60%] >tests/test_history.py::test_history_class_get PASSED [ 60%] >tests/test_history.py::test_history_str_search PASSED [ 60%] >tests/test_history.py::test_history_regex_search PASSED [ 60%] >tests/test_history.py::test_history_max_length_zero PASSED [ 60%] >tests/test_history.py::test_history_max_length_negative PASSED [ 60%] >tests/test_history.py::test_history_max_length PASSED [ 60%] >tests/test_history.py::test_multiline_histitem PASSED [ 60%] >tests/test_history.py::test_multiline_histitem_verbose PASSED [ 61%] >tests/test_history.py::test_history_item_instantiate PASSED [ 61%] >tests/test_history.py::test_history_item_properties PASSED [ 61%] >tests/test_history.py::test_base_history PASSED [ 61%] >tests/test_history.py::test_history_script_format PASSED [ 61%] >tests/test_history.py::test_history_with_string_argument PASSED [ 61%] >tests/test_history.py::test_history_expanded_with_string_argument PASSED [ 61%] >tests/test_history.py::test_history_expanded_with_regex_argument PASSED [ 61%] >tests/test_history.py::test_history_with_integer_argument PASSED [ 61%] >tests/test_history.py::test_history_with_integer_span PASSED [ 61%] >tests/test_history.py::test_history_with_span_start PASSED [ 62%] >tests/test_history.py::test_history_with_span_end PASSED [ 62%] >tests/test_history.py::test_history_with_span_index_error PASSED [ 62%] >tests/test_history.py::test_history_output_file PASSED [ 62%] >tests/test_history.py::test_history_bad_output_file PASSED [ 62%] >tests/test_history.py::test_history_edit PASSED [ 62%] >tests/test_history.py::test_history_run_all_commands PASSED [ 62%] >tests/test_history.py::test_history_run_one_command PASSED [ 62%] >tests/test_history.py::test_history_clear PASSED [ 62%] >tests/test_history.py::test_history_verbose_with_other_options PASSED [ 63%] >tests/test_history.py::test_history_verbose PASSED [ 63%] >tests/test_history.py::test_history_script_with_invalid_options PASSED [ 63%] >tests/test_history.py::test_history_script PASSED [ 63%] >tests/test_history.py::test_history_expanded_with_invalid_options PASSED [ 63%] >tests/test_history.py::test_history_expanded PASSED [ 63%] >tests/test_history.py::test_history_script_expanded PASSED [ 63%] >tests/test_history.py::test_base_help_history PASSED [ 63%] >tests/test_history.py::test_exclude_from_history PASSED [ 63%] >tests/test_history.py::test_history_file_is_directory PASSED [ 64%] >tests/test_history.py::test_history_can_create_directory PASSED [ 64%] >tests/test_history.py::test_history_cannot_create_directory PASSED [ 64%] >tests/test_history.py::test_history_file_permission_error PASSED [ 64%] >tests/test_history.py::test_history_file_conversion_no_truncate_on_init PASSED [ 64%] >tests/test_history.py::test_history_populates_readline PASSED [ 64%] >tests/test_history.py::test_persist_history_ensure_no_error_if_no_histfile PASSED [ 64%] >tests/test_history.py::test_persist_history_permission_error PASSED [ 64%] >tests/test_parsing.py::test_parse_empty_string PASSED [ 64%] >tests/test_parsing.py::test_parse_empty_string_default PASSED [ 64%] >tests/test_parsing.py::test_tokenize_default[command-tokens0] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[#comment-tokens1] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[not # a comment-tokens2] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[termbare ; > /tmp/output-tokens3] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[termbare; > /tmp/output-tokens4] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[termbare & > /tmp/output-tokens5] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[termbare& > /tmp/output-tokens6] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[help|less-tokens7] PASSED [ 65%] >tests/test_parsing.py::test_tokenize[command-tokens0] PASSED [ 65%] >tests/test_parsing.py::test_tokenize[# comment-tokens1] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[not # a comment-tokens2] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[42 arg1 arg2-tokens3] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[l-tokens4] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[termbare ; > /tmp/output-tokens5] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[termbare; > /tmp/output-tokens6] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[termbare & > /tmp/output-tokens7] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[termbare& > /tmp/output-tokens8] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[help|less-tokens9] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[l|less-tokens10] PASSED [ 67%] >tests/test_parsing.py::test_tokenize_unclosed_quotes PASSED [ 67%] >tests/test_parsing.py::test_command_and_args[tokens0--] PASSED [ 67%] >tests/test_parsing.py::test_command_and_args[tokens1-command-] PASSED [ 67%] >tests/test_parsing.py::test_command_and_args[tokens2-command-arg1 arg2] PASSED [ 67%] >tests/test_parsing.py::test_parse_single_word[plainword] PASSED [ 67%] >tests/test_parsing.py::test_parse_single_word["one word"] PASSED [ 67%] >tests/test_parsing.py::test_parse_single_word['one word'] PASSED [ 67%] >tests/test_parsing.py::test_parse_word_plus_terminator[termbare;-;] PASSED [ 67%] >tests/test_parsing.py::test_parse_word_plus_terminator[termbare ;-;] PASSED [ 67%] >tests/test_parsing.py::test_parse_word_plus_terminator[termbare&-&] PASSED [ 68%] >tests/test_parsing.py::test_parse_word_plus_terminator[termbare &-&] PASSED [ 68%] >tests/test_parsing.py::test_parse_suffix_after_terminator[termbare; suffx-;] PASSED [ 68%] >tests/test_parsing.py::test_parse_suffix_after_terminator[termbare ;suffx-;] PASSED [ 68%] >tests/test_parsing.py::test_parse_suffix_after_terminator[termbare& suffx-&] PASSED [ 68%] >tests/test_parsing.py::test_parse_suffix_after_terminator[termbare &suffx-&] PASSED [ 68%] >tests/test_parsing.py::test_parse_command_with_args PASSED [ 68%] >tests/test_parsing.py::test_parse_command_with_quoted_args PASSED [ 68%] >tests/test_parsing.py::test_parse_command_with_args_terminator_and_suffix PASSED [ 68%] >tests/test_parsing.py::test_parse_comment PASSED [ 69%] >tests/test_parsing.py::test_parse_embedded_comment_char PASSED [ 69%] >tests/test_parsing.py::test_parse_simple_pipe[simple | piped] PASSED [ 69%] >tests/test_parsing.py::test_parse_simple_pipe[simple|piped] PASSED [ 69%] >tests/test_parsing.py::test_parse_double_pipe_is_not_a_pipe PASSED [ 69%] >tests/test_parsing.py::test_parse_complex_pipe PASSED [ 69%] >tests/test_parsing.py::test_parse_redirect[help > out.txt->] PASSED [ 69%] >tests/test_parsing.py::test_parse_redirect[help>out.txt->] PASSED [ 69%] >tests/test_parsing.py::test_parse_redirect[help >> out.txt->>] PASSED [ 69%] >tests/test_parsing.py::test_parse_redirect[help>>out.txt->>] PASSED [ 70%] >tests/test_parsing.py::test_parse_redirect_with_args[afile.txt] PASSED [ 70%] >tests/test_parsing.py::test_parse_redirect_with_args[python-cmd2/afile.txt] PASSED [ 70%] >tests/test_parsing.py::test_parse_redirect_append PASSED [ 70%] >tests/test_parsing.py::test_parse_pipe_then_redirect PASSED [ 70%] >tests/test_parsing.py::test_parse_multiple_pipes PASSED [ 70%] >tests/test_parsing.py::test_redirect_then_pipe PASSED [ 70%] >tests/test_parsing.py::test_append_then_pipe PASSED [ 70%] >tests/test_parsing.py::test_append_then_redirect PASSED [ 70%] >tests/test_parsing.py::test_redirect_then_append PASSED [ 70%] >tests/test_parsing.py::test_redirect_to_quoted_string PASSED [ 71%] >tests/test_parsing.py::test_redirect_to_single_quoted_string PASSED [ 71%] >tests/test_parsing.py::test_redirect_to_empty_quoted_string PASSED [ 71%] >tests/test_parsing.py::test_redirect_to_empty_single_quoted_string PASSED [ 71%] >tests/test_parsing.py::test_parse_output_to_paste_buffer PASSED [ 71%] >tests/test_parsing.py::test_parse_redirect_inside_terminator PASSED [ 71%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside;-;] PASSED [ 71%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside ;-;] PASSED [ 71%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside;;;-;] PASSED [ 71%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside;; ;;-;] PASSED [ 72%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside&-&] PASSED [ 72%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside &;-&] PASSED [ 72%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside&&;-&] PASSED [ 72%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside &; &;-&] PASSED [ 72%] >tests/test_parsing.py::test_parse_unfinished_multiliine_command PASSED [ 72%] >tests/test_parsing.py::test_parse_basic_multiline_command PASSED [ 72%] >tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside;-;] PASSED [ 72%] >tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside;;;-;] PASSED [ 72%] >tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside;; ;;-;] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside &-&] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside & &-&] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_terminated_by_empty_line PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline";-;] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline";;;-;] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline";; ;;-;] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline" &-&] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline" & &-&] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline"\n\n-\n] PASSED [ 74%] >tests/test_parsing.py::test_parse_multiline_ignores_terminators_in_quotes PASSED [ 74%] >tests/test_parsing.py::test_parse_command_with_unicode_args PASSED [ 74%] >tests/test_parsing.py::test_parse_unicode_command PASSED [ 74%] >tests/test_parsing.py::test_parse_redirect_to_unicode_filename PASSED [ 74%] >tests/test_parsing.py::test_parse_unclosed_quotes PASSED [ 74%] >tests/test_parsing.py::test_empty_statement_raises_exception PASSED [ 74%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[helpalias-help-] PASSED [ 74%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[helpalias mycommand-help-mycommand] PASSED [ 74%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[42-theanswer-] PASSED [ 74%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[42 arg1 arg2-theanswer-arg1 arg2] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[!ls-shell-ls] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[!ls -al /tmp-shell-ls -al /tmp] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[l-shell-ls -al] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_on_multiline_command PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_redirection[helpalias > out.txt->] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_redirection[helpalias>out.txt->] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_redirection[helpalias >> out.txt->>] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_redirection[helpalias>>out.txt->>] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_pipe[helpalias | less] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_pipe[helpalias|less] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias;] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias;;] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias;; ;] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias ;] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias ; ;] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias ;; ;] PASSED [ 76%] >tests/test_parsing.py::test_parse_command_only_command_and_args PASSED [ 76%] >tests/test_parsing.py::test_parse_command_only_strips_line PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_expands_alias PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_expands_shortcuts PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_quoted_args PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[helpalias > out.txt-> out.txt] PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[helpalias>out.txt->out.txt] PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[helpalias >> out.txt->> out.txt] PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[helpalias>>out.txt->>out.txt] PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[help|less-|less] PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[helpalias;-;] PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[help ;;-;;] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_specialchars[help; ;;-; ;;] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[;] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[;;] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[;; ;] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[&] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[& &] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[ && &] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[>] PASSED [ 79%] >tests/test_parsing.py::test_parse_command_only_empty['] PASSED [ 79%] >tests/test_parsing.py::test_parse_command_only_empty["] PASSED [ 79%] >tests/test_parsing.py::test_parse_command_only_empty[|] PASSED [ 79%] >tests/test_parsing.py::test_parse_command_only_multiline PASSED [ 79%] >tests/test_parsing.py::test_statement_initialization PASSED [ 79%] >tests/test_parsing.py::test_statement_is_immutable PASSED [ 79%] >tests/test_parsing.py::test_is_valid_command_invalid PASSED [ 79%] >tests/test_parsing.py::test_is_valid_command_valid PASSED [ 79%] >tests/test_parsing.py::test_macro_normal_arg_pattern PASSED [ 80%] >tests/test_parsing.py::test_macro_escaped_arg_pattern PASSED [ 80%] >tests/test_plugin.py::test_register_preloop_hook_too_many_parameters PASSED [ 80%] >tests/test_plugin.py::test_register_preloop_hook_with_return_annotation PASSED [ 80%] >tests/test_plugin.py::test_preloop_hook PASSED [ 80%] >tests/test_plugin.py::test_preloop_hooks PASSED [ 80%] >tests/test_plugin.py::test_register_postloop_hook_too_many_parameters PASSED [ 80%] >tests/test_plugin.py::test_register_postloop_hook_with_wrong_return_annotation PASSED [ 80%] >tests/test_plugin.py::test_postloop_hook PASSED [ 80%] >tests/test_plugin.py::test_postloop_hooks PASSED [ 80%] >tests/test_plugin.py::test_preparse PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_too_many_parameters PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_undeclared_parameter_annotation PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_wrong_parameter_annotation PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_undeclared_return_annotation PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_wrong_return_annotation PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_stop_first PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_stop_second PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_emptystatement_first PASSED [ 82%] >tests/test_plugin.py::test_postparsing_hook_emptystatement_second PASSED [ 82%] >tests/test_plugin.py::test_postparsing_hook_exception PASSED [ 82%] >tests/test_plugin.py::test_register_precmd_hook_parameter_count PASSED [ 82%] >tests/test_plugin.py::test_register_precmd_hook_no_parameter_annotation PASSED [ 82%] >tests/test_plugin.py::test_register_precmd_hook_wrong_parameter_annotation PASSED [ 82%] >tests/test_plugin.py::test_register_precmd_hook_no_return_annotation PASSED [ 82%] >tests/test_plugin.py::test_register_precmd_hook_wrong_return_annotation PASSED [ 82%] >tests/test_plugin.py::test_precmd_hook PASSED [ 82%] >tests/test_plugin.py::test_precmd_hook_emptystatement_first PASSED [ 83%] >tests/test_plugin.py::test_precmd_hook_emptystatement_second PASSED [ 83%] >tests/test_plugin.py::test_register_postcmd_hook_parameter_count PASSED [ 83%] >tests/test_plugin.py::test_register_postcmd_hook_no_parameter_annotation PASSED [ 83%] >tests/test_plugin.py::test_register_postcmd_hook_wrong_parameter_annotation PASSED [ 83%] >tests/test_plugin.py::test_register_postcmd_hook_no_return_annotation PASSED [ 83%] >tests/test_plugin.py::test_register_postcmd_hook_wrong_return_annotation PASSED [ 83%] >tests/test_plugin.py::test_postcmd PASSED [ 83%] >tests/test_plugin.py::test_postcmd_exception_first PASSED [ 83%] >tests/test_plugin.py::test_postcmd_exception_second PASSED [ 83%] >tests/test_plugin.py::test_register_cmdfinalization_hook_parameter_count PASSED [ 84%] >tests/test_plugin.py::test_register_cmdfinalization_hook_no_parameter_annotation PASSED [ 84%] >tests/test_plugin.py::test_register_cmdfinalization_hook_wrong_parameter_annotation PASSED [ 84%] >tests/test_plugin.py::test_register_cmdfinalization_hook_no_return_annotation PASSED [ 84%] >tests/test_plugin.py::test_register_cmdfinalization_hook_wrong_return_annotation PASSED [ 84%] >tests/test_plugin.py::test_cmdfinalization PASSED [ 84%] >tests/test_plugin.py::test_cmdfinalization_stop_first PASSED [ 84%] >tests/test_plugin.py::test_cmdfinalization_stop_second PASSED [ 84%] >tests/test_plugin.py::test_cmdfinalization_hook_exception PASSED [ 84%] >tests/test_plugin.py::test_cmdfinalization_hook_system_exit PASSED [ 85%] >tests/test_plugin.py::test_cmdfinalization_hook_keyboard_interrupt PASSED [ 85%] >tests/test_plugin.py::test_skip_postcmd_hooks PASSED [ 85%] >tests/test_plugin.py::test_cmd2_argparse_exception PASSED [ 85%] >tests/test_run_pyscript.py::test_run_pyscript PASSED [ 85%] >tests/test_run_pyscript.py::test_run_pyscript_recursive_not_allowed PASSED [ 85%] >tests/test_run_pyscript.py::test_run_pyscript_with_nonexist_file PASSED [ 85%] >tests/test_run_pyscript.py::test_run_pyscript_with_non_python_file PASSED [ 85%] >tests/test_run_pyscript.py::test_run_pyscript_with_odd_file_names[nothingweird] PASSED [ 85%] >tests/test_run_pyscript.py::test_run_pyscript_with_odd_file_names[has spaces] PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_with_odd_file_names["is_double_quoted"] PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_with_odd_file_names['is_single_quoted'] PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_with_exception PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_requires_an_argument PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_help PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_dir PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_stdout_capture PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_stop PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_environment PASSED [ 87%] >tests/test_run_pyscript.py::test_run_pyscript_app_echo PASSED [ 87%] >tests/test_table_creator.py::test_column_creation PASSED [ 87%] >tests/test_table_creator.py::test_column_alignment PASSED [ 87%] >tests/test_table_creator.py::test_wrap_text PASSED [ 87%] >tests/test_table_creator.py::test_wrap_text_max_lines PASSED [ 87%] >tests/test_table_creator.py::test_wrap_long_word PASSED [ 87%] >tests/test_table_creator.py::test_wrap_long_word_max_data_lines PASSED [ 87%] >tests/test_table_creator.py::test_wrap_long_char_wider_than_max_width PASSED [ 87%] >tests/test_table_creator.py::test_generate_row_exceptions PASSED [ 87%] >tests/test_table_creator.py::test_tabs PASSED [ 88%] >tests/test_table_creator.py::test_simple_table_creation PASSED [ 88%] >tests/test_table_creator.py::test_simple_table_width PASSED [ 88%] >tests/test_table_creator.py::test_bordered_table_creation PASSED [ 88%] >tests/test_table_creator.py::test_bordered_table_width PASSED [ 88%] >tests/test_table_creator.py::test_alternating_table_creation PASSED [ 88%] >tests/test_transcript.py::test_commands_at_invocation PASSED [ 88%] >tests/test_transcript.py::test_transcript[bol_eol.txt-False] PASSED [ 88%] >tests/test_transcript.py::test_transcript[characterclass.txt-False] PASSED [ 88%] >tests/test_transcript.py::test_transcript[dotstar.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[extension_notation.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[from_cmdloop.txt-True] PASSED [ 89%] >tests/test_transcript.py::test_transcript[multiline_no_regex.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[multiline_regex.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[no_output.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[no_output_last.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[regex_set.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[singleslash.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[slashes_escaped.txt-False] PASSED [ 90%] >tests/test_transcript.py::test_transcript[slashslash.txt-False] PASSED [ 90%] >tests/test_transcript.py::test_transcript[spaces.txt-False] PASSED [ 90%] >tests/test_transcript.py::test_transcript[word_boundaries.txt-False] PASSED [ 90%] >tests/test_transcript.py::test_history_transcript PASSED [ 90%] >tests/test_transcript.py::test_history_transcript_bad_filename PASSED [ 90%] >tests/test_transcript.py::test_run_script_record_transcript PASSED [ 90%] >tests/test_transcript.py::test_generate_transcript_stop PASSED [ 90%] >tests/test_transcript.py::test_parse_transcript_expected[text with no slashes-text\\ with\\ no\\ slashes] PASSED [ 90%] >tests/test_transcript.py::test_parse_transcript_expected[specials .*-specials\\ \\.\\*] PASSED [ 90%] >tests/test_transcript.py::test_parse_transcript_expected[use 2/3 cup-use\\ 2/3\\ cup] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[/tmp is nice-/tmp\\ is\\ nice] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[slash at end/-slash\\ at\\ end/] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[not this slash\\/ or this one\\/-not\\ this\\ slash/\\ or\\ this\\ one/] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[/.*/-.*] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[specials ^ and + /[0-9]+/-specials\\ \\^\\ and\\ \\+\\ [0-9]+] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[/a{6}/ but not \\/a{6} with /.*?/ more-a{6}\\ but\\ not\\ /a\\{6\\}\\ with\\ .*?\\ more] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[not \\/, use /\\|?/, not \\/-not\\ /,\\ use\\ \\|?,\\ not\\ /] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[not \\/, use /\\/?/, not \\/-not\\ /,\\ use\\ /?,\\ not\\ /] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[lots /\\/?/ more /.*/ stuff-lots\\ /?\\ more\\ .*\\ stuff] PASSED [ 92%] >tests/test_transcript.py::test_transcript_failure PASSED [ 92%] >tests/test_transcript.py::test_transcript_no_file PASSED [ 92%] >tests/test_utils.py::test_strip_quotes_no_quotes PASSED [ 92%] >tests/test_utils.py::test_strip_quotes_with_quotes PASSED [ 92%] >tests/test_utils.py::test_remove_duplicates_no_duplicates PASSED [ 92%] >tests/test_utils.py::test_remove_duplicates_with_duplicates PASSED [ 92%] >tests/test_utils.py::test_unicode_normalization PASSED [ 92%] >tests/test_utils.py::test_unicode_casefold PASSED [ 92%] >tests/test_utils.py::test_alphabetical_sort PASSED [ 93%] >tests/test_utils.py::test_try_int_or_force_to_lower_case PASSED [ 93%] >tests/test_utils.py::test_natural_keys PASSED [ 93%] >tests/test_utils.py::test_natural_sort PASSED [ 93%] >tests/test_utils.py::test_is_quoted_short PASSED [ 93%] >tests/test_utils.py::test_is_quoted_yes PASSED [ 93%] >tests/test_utils.py::test_is_quoted_no PASSED [ 93%] >tests/test_utils.py::test_quote_string PASSED [ 93%] >tests/test_utils.py::test_quote_string_if_needed_yes PASSED [ 93%] >tests/test_utils.py::test_quote_string_if_needed_no PASSED [ 93%] >tests/test_utils.py::test_stdsim_write_str PASSED [ 94%] >tests/test_utils.py::test_stdsim_write_bytes PASSED [ 94%] >tests/test_utils.py::test_stdsim_buffer_write_bytes PASSED [ 94%] >tests/test_utils.py::test_stdsim_buffer_write_str PASSED [ 94%] >tests/test_utils.py::test_stdsim_read PASSED [ 94%] >tests/test_utils.py::test_stdsim_read_bytes PASSED [ 94%] >tests/test_utils.py::test_stdsim_clear PASSED [ 94%] >tests/test_utils.py::test_stdsim_getattr_exist PASSED [ 94%] >tests/test_utils.py::test_stdsim_getattr_noexist PASSED [ 94%] >tests/test_utils.py::test_stdsim_pause_storage PASSED [ 95%] >tests/test_utils.py::test_stdsim_line_buffering PASSED [ 95%] >tests/test_utils.py::test_proc_reader_send_sigint PASSED [ 95%] >tests/test_utils.py::test_proc_reader_terminate PASSED [ 95%] >tests/test_utils.py::test_context_flag_bool PASSED [ 95%] >tests/test_utils.py::test_context_flag_exit_err PASSED [ 95%] >tests/test_utils.py::test_truncate_line PASSED [ 95%] >tests/test_utils.py::test_truncate_line_already_fits PASSED [ 95%] >tests/test_utils.py::test_truncate_line_with_newline PASSED [ 95%] >tests/test_utils.py::test_truncate_line_width_is_too_small PASSED [ 96%] >tests/test_utils.py::test_truncate_line_wide_text PASSED [ 96%] >tests/test_utils.py::test_truncate_line_split_wide_text PASSED [ 96%] >tests/test_utils.py::test_truncate_line_tabs PASSED [ 96%] >tests/test_utils.py::test_truncate_with_style PASSED [ 96%] >tests/test_utils.py::test_align_text_fill_char_is_tab PASSED [ 96%] >tests/test_utils.py::test_align_text_with_style PASSED [ 96%] >tests/test_utils.py::test_align_text_width_is_too_small PASSED [ 96%] >tests/test_utils.py::test_align_text_fill_char_is_too_long PASSED [ 96%] >tests/test_utils.py::test_align_text_fill_char_is_newline PASSED [ 96%] >tests/test_utils.py::test_align_text_has_tabs PASSED [ 97%] >tests/test_utils.py::test_align_text_blank PASSED [ 97%] >tests/test_utils.py::test_align_text_wider_than_width PASSED [ 97%] >tests/test_utils.py::test_align_text_wider_than_width_truncate PASSED [ 97%] >tests/test_utils.py::test_align_text_wider_than_width_truncate_add_fill PASSED [ 97%] >tests/test_utils.py::test_align_text_has_unprintable PASSED [ 97%] >tests/test_utils.py::test_align_text_term_width PASSED [ 97%] >tests/test_utils.py::test_align_left PASSED [ 97%] >tests/test_utils.py::test_align_left_multiline PASSED [ 97%] >tests/test_utils.py::test_align_left_wide_text PASSED [ 98%] >tests/test_utils.py::test_align_left_wide_fill PASSED [ 98%] >tests/test_utils.py::test_align_left_wide_fill_needs_padding PASSED [ 98%] >tests/test_utils.py::test_align_center PASSED [ 98%] >tests/test_utils.py::test_align_center_multiline PASSED [ 98%] >tests/test_utils.py::test_align_center_wide_text PASSED [ 98%] >tests/test_utils.py::test_align_center_wide_fill PASSED [ 98%] >tests/test_utils.py::test_align_center_wide_fill_needs_right_padding PASSED [ 98%] >tests/test_utils.py::test_align_center_wide_fill_needs_left_and_right_padding PASSED [ 98%] >tests/test_utils.py::test_align_right PASSED [ 99%] >tests/test_utils.py::test_align_right_multiline PASSED [ 99%] >tests/test_utils.py::test_align_right_wide_text PASSED [ 99%] >tests/test_utils.py::test_align_right_wide_fill PASSED [ 99%] >tests/test_utils.py::test_align_right_wide_fill_needs_padding PASSED [ 99%] >tests/test_utils.py::test_str_to_bool_true PASSED [ 99%] >tests/test_utils.py::test_str_to_bool_false PASSED [ 99%] >tests/test_utils.py::test_str_to_bool_invalid PASSED [ 99%] >tests/test_utils.py::test_str_to_bool_bad_input PASSED [ 99%] >tests/test_utils_defining_class.py::test_get_defining_class PASSED [100%] > >============================= 931 passed in 4.07s ============================== > * python3_8: running distutils-r1_run_phase python_test >============================= test session starts ============================== >platform linux -- Python 3.8.7, pytest-6.2.1, py-1.10.0, pluggy-0.13.1 -- /usr/bin/python3.8 >cachedir: .pytest_cache >rootdir: /var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0, configfile: setup.cfg, testpaths: tests >plugins: mock-3.5.0 >collecting ... collected 931 items > >tests/test_ansi.py::test_strip_style PASSED [ 0%] >tests/test_ansi.py::test_style_aware_wcswidth PASSED [ 0%] >tests/test_ansi.py::test_style_none PASSED [ 0%] >tests/test_ansi.py::test_style_fg PASSED [ 0%] >tests/test_ansi.py::test_style_bg PASSED [ 0%] >tests/test_ansi.py::test_style_bold PASSED [ 0%] >tests/test_ansi.py::test_style_dim PASSED [ 0%] >tests/test_ansi.py::test_style_underline PASSED [ 0%] >tests/test_ansi.py::test_style_multi PASSED [ 0%] >tests/test_ansi.py::test_style_color_not_exist PASSED [ 1%] >tests/test_ansi.py::test_fg_lookup_exist PASSED [ 1%] >tests/test_ansi.py::test_fg_lookup_nonexist PASSED [ 1%] >tests/test_ansi.py::test_bg_lookup_exist PASSED [ 1%] >tests/test_ansi.py::test_bg_lookup_nonexist PASSED [ 1%] >tests/test_ansi.py::test_set_title_str PASSED [ 1%] >tests/test_ansi.py::test_async_alert_str[127-(Cmd) -help his-12-\x1b[35mHello World!\x1b[39m-\x1b[2K\r\x1b[35mHello World!\x1b[39m] PASSED [ 1%] >tests/test_ansi.py::test_async_alert_str[127-\n(Cmd) -help -5-foo-\x1b[2K\x1b[1A\x1b[2K\rfoo] PASSED [ 1%] >tests/test_ansi.py::test_async_alert_str[10-(Cmd) -help history of the american republic-4-boo-\x1b[3B\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\x1b[1A\x1b[2K\rboo] PASSED [ 1%] >tests/test_ansi.py::test_cast_color_as_str PASSED [ 2%] >tests/test_ansi.py::test_color_str_building PASSED [ 2%] >tests/test_ansi.py::test_color_nonunique_values PASSED [ 2%] >tests/test_ansi.py::test_color_enum PASSED [ 2%] >tests/test_ansi.py::test_colors_list PASSED [ 2%] >tests/test_argparse.py::test_invalid_syntax PASSED [ 2%] >tests/test_argparse.py::test_argparse_basic_command PASSED [ 2%] >tests/test_argparse.py::test_argparse_remove_quotes PASSED [ 2%] >tests/test_argparse.py::test_argparser_kwargs PASSED [ 2%] >tests/test_argparse.py::test_argparse_preserve_quotes PASSED [ 3%] >tests/test_argparse.py::test_argparse_custom_namespace PASSED [ 3%] >tests/test_argparse.py::test_argparse_with_list PASSED [ 3%] >tests/test_argparse.py::test_argparse_with_list_remove_quotes PASSED [ 3%] >tests/test_argparse.py::test_argparse_with_list_preserve_quotes PASSED [ 3%] >tests/test_argparse.py::test_argparse_with_list_custom_namespace PASSED [ 3%] >tests/test_argparse.py::test_argparse_with_list_and_empty_doc PASSED [ 3%] >tests/test_argparse.py::test_argparser_correct_args_with_quotes_and_midline_options PASSED [ 3%] >tests/test_argparse.py::test_argparser_and_unknown_args_kwargs PASSED [ 3%] >tests/test_argparse.py::test_argparse_quoted_arguments_multiple PASSED [ 3%] >tests/test_argparse.py::test_argparse_help_docstring PASSED [ 4%] >tests/test_argparse.py::test_argparse_help_description PASSED [ 4%] >tests/test_argparse.py::test_argparse_prog PASSED [ 4%] >tests/test_argparse.py::test_arglist PASSED [ 4%] >tests/test_argparse.py::test_arglist_kwargs PASSED [ 4%] >tests/test_argparse.py::test_preservelist PASSED [ 4%] >tests/test_argparse.py::test_subcommand_foo PASSED [ 4%] >tests/test_argparse.py::test_subcommand_bar PASSED [ 4%] >tests/test_argparse.py::test_subcommand_invalid PASSED [ 4%] >tests/test_argparse.py::test_subcommand_base_help PASSED [ 5%] >tests/test_argparse.py::test_subcommand_help PASSED [ 5%] >tests/test_argparse.py::test_subcommand_invalid_help PASSED [ 5%] >tests/test_argparse.py::test_add_another_subcommand PASSED [ 5%] >tests/test_argparse.py::test_subcmd_decorator PASSED [ 5%] >tests/test_argparse.py::test_unittest_mock PASSED [ 5%] >tests/test_argparse.py::test_pytest_mock_invalid PASSED [ 5%] >tests/test_argparse.py::test_pytest_mock_valid[spec_param0] PASSED [ 5%] >tests/test_argparse.py::test_pytest_mock_valid[spec_param1] PASSED [ 5%] >tests/test_argparse.py::test_pytest_mock_valid[spec_param2] PASSED [ 6%] >tests/test_argparse_completer.py::test_help[music] PASSED [ 6%] >tests/test_argparse_completer.py::test_help[music create] PASSED [ 6%] >tests/test_argparse_completer.py::test_help[music create rock] PASSED [ 6%] >tests/test_argparse_completer.py::test_help[music create jazz] PASSED [ 6%] >tests/test_argparse_completer.py::test_bad_subcommand_help PASSED [ 6%] >tests/test_argparse_completer.py::test_complete_help[-mus-completions0] PASSED [ 6%] >tests/test_argparse_completer.py::test_complete_help[music-cre-completions1] PASSED [ 6%] >tests/test_argparse_completer.py::test_complete_help[music-creab-completions2] PASSED [ 6%] >tests/test_argparse_completer.py::test_complete_help[music create--completions3] PASSED [ 6%] >tests/test_argparse_completer.py::test_complete_help[music crea-jazz-completions4] PASSED [ 7%] >tests/test_argparse_completer.py::test_complete_help[music create-foo-completions5] PASSED [ 7%] >tests/test_argparse_completer.py::test_complete_help[fake create--completions6] PASSED [ 7%] >tests/test_argparse_completer.py::test_complete_help[music fake--completions7] PASSED [ 7%] >tests/test_argparse_completer.py::test_subcommand_completions[create--completions0] PASSED [ 7%] >tests/test_argparse_completer.py::test_subcommand_completions[create-ja-completions1] PASSED [ 7%] >tests/test_argparse_completer.py::test_subcommand_completions[create-foo-completions2] PASSED [ 7%] >tests/test_argparse_completer.py::test_subcommand_completions[creab-ja-completions3] PASSED [ 7%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag---completion_matches0-display_matches0] PASSED [ 7%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag----completion_matches1-display_matches1] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag--n-completion_matches2-display_matches2] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag---n-completion_matches3-display_matches3] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag --append_flag---completion_matches4-display_matches4] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag--r-completion_matches5-display_matches5] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag---rem-completion_matches6-display_matches6] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag -r value---completion_matches7-display_matches7] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag --remainder_flag value----completion_matches8-display_matches8] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag--s-completion_matches9-display_matches9] PASSED [ 8%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag---s-completion_matches10-display_matches10] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag -n----completion_matches11-display_matches11] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag --append_const_flag -c --append_flag value----completion_matches12-display_matches12] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[plus_flag-+-completion_matches13-display_matches13] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[plus_flag-++-completion_matches14-display_matches14] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag ------completion_matches15-display_matches15] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[flag --help ------completion_matches16-display_matches16] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[plus_flag ---++-completion_matches17-display_matches17] PASSED [ 9%] >tests/test_argparse_completer.py::test_autcomp_flag_completion[plus_flag ++help ---++-completion_matches18-display_matches18] PASSED [ 9%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[-l--completions0] PASSED [ 9%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--list-s-completions1] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[-f--completions2] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--function-ch-completions3] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[-m--completions4] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--method-m-completions5] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[-i--completions6] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--int-1-completions7] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--int---completions8] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_flag_choices_completion[--int--1-completions9] PASSED [ 10%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[1--completions0] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[1-s-completions1] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[2--completions2] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[2-ch-completions3] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[3--completions4] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[3-m-completions5] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[4--completions6] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[4-2-completions7] PASSED [ 11%] >tests/test_argparse_completer.py::test_autocomp_positional_choices_completion[5--completions8] PASSED [ 11%] >tests/test_argparse_completer.py::test_flag_sorting PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_flag_completers[-f--completions0] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_flag_completers[--function-f-completions1] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_flag_completers[-m--completions2] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_flag_completers[--method-m-completions3] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_positional_completers[1--completions0] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_positional_completers[1-c-completions1] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_positional_completers[2--completions2] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_positional_completers[2-m-completions3] PASSED [ 12%] >tests/test_argparse_completer.py::test_autocomp_blank_token PASSED [ 12%] >tests/test_argparse_completer.py::test_completion_items[1-False] PASSED [ 13%] >tests/test_argparse_completer.py::test_completion_items[5-True] PASSED [ 13%] >tests/test_argparse_completer.py::test_completion_items[100-False] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--set_value-completions0] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--set_value set-completions1] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--set_value set value-completions2] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--set_value set value --set_value-completions3] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--one_or_more-completions4] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--one_or_more one-completions5] PASSED [ 13%] >tests/test_argparse_completer.py::test_autcomp_nargs[--optional-completions6] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--optional optional-completions7] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--range-completions8] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--range some-completions9] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--range some range-completions10] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--remainder-completions11] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--remainder remainder -completions12] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--remainder choices --set_value-completions13] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--range choice ---completions14] PASSED [ 14%] >tests/test_argparse_completer.py::test_autcomp_nargs[--remainder remainder ---completions15] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[-- --one_or_more -completions16] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[-completions17] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[positional-completions18] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[positional --set_value-completions19] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[positional --set_value set-completions20] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[positional --set_value set value-completions21] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[positional --range choice ---completions22] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[the positional-completions23] PASSED [ 15%] >tests/test_argparse_completer.py::test_autcomp_nargs[the positional remainder-completions24] PASSED [ 16%] >tests/test_argparse_completer.py::test_autcomp_nargs[the positional remainder choices-completions25] PASSED [ 16%] >tests/test_argparse_completer.py::test_autcomp_nargs[the positional --set_value-completions26] PASSED [ 16%] >tests/test_argparse_completer.py::test_autcomp_nargs[the positional remainder --set_value-completions27] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag foo ----False] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag foo --help--False] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag foo----False] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more one ----False] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more one or --set_value--False] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more one or more----False] PASSED [ 16%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set value ----False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set value --one_or_more--False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set value----False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_val set value----False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range choices ----False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range choices range --set_value--False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range range----False] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag ----True] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag --help--True] PASSED [ 17%] >tests/test_argparse_completer.py::test_unfinished_flag_error[hint --flag----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more ----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more --set_value--True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --one_or_more----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set ----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set --one_or_more--True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_value set----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --set_val set----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range ----True] PASSED [ 18%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range --set_value--True] PASSED [ 19%] >tests/test_argparse_completer.py::test_unfinished_flag_error[nargs --range----True] PASSED [ 19%] >tests/test_argparse_completer.py::test_completion_items_arg_header PASSED [ 19%] >tests/test_argparse_completer.py::test_completion_items_descriptive_header PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[hint--True] PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[hint --flag--True] PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[hint --suppressed_help--False] PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[hint --suppressed_hint--False] PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[nargs --one_or_more---True] PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[nargs --one_or_more choices-bad_completion-True] PASSED [ 19%] >tests/test_argparse_completer.py::test_autocomp_hint[nargs --one_or_more choices---False] PASSED [ 20%] >tests/test_argparse_completer.py::test_autocomp_hint[nargs --remainder---True] PASSED [ 20%] >tests/test_argparse_completer.py::test_autocomp_hint[hint---False] PASSED [ 20%] >tests/test_argparse_completer.py::test_autocomp_hint[nargs the choices---True] PASSED [ 20%] >tests/test_argparse_completer.py::test_autocomp_hint[nargs the choices remainder---True] PASSED [ 20%] >tests/test_argparse_completer.py::test_autocomp_hint_no_help_text PASSED [ 20%] >tests/test_argparse_completer.py::test_completion_error[--choice -choice] PASSED [ 20%] >tests/test_argparse_completer.py::test_completion_error[-completer] PASSED [ 20%] >tests/test_argparse_completer.py::test_arg_tokens[arg_tokens choice subcmd-completions0] PASSED [ 20%] >tests/test_argparse_completer.py::test_arg_tokens[arg_tokens completer subcmd fake-completions1] PASSED [ 21%] >tests/test_argparse_completer.py::test_arg_tokens[arg_tokens completer subcmd --parent_arg override fake-completions2] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex--the optional positional-None] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex---fl----flag ] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag--the flag arg-None] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex pos_val---fl--None] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex pos_val --flag--f/--flag: not allowed with argument optional_pos-None] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag flag_val--the last arg-None] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag flag_val---oth--None] PASSED [ 21%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag flag_val --other---o/--other_flag: not allowed with argument -f/--flag-None] PASSED [ 22%] >tests/test_argparse_completer.py::test_complete_mutex_group[mutex --flag flag_val --flag--the flag arg-None] PASSED [ 22%] >tests/test_argparse_completer.py::test_single_prefix_char PASSED [ 22%] >tests/test_argparse_completer.py::test_looks_like_flag PASSED [ 22%] >tests/test_argparse_completer.py::test_complete_command_no_tokens PASSED [ 22%] >tests/test_argparse_completer.py::test_complete_command_help_no_tokens PASSED [ 22%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs0-True] PASSED [ 22%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs1-True] PASSED [ 22%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs2-True] PASSED [ 22%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs3-True] PASSED [ 22%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs4-False] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs5-False] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_choices_callable_count[kwargs6-False] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_alongside_choices[kwargs0] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_alongside_choices[kwargs1] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_alongside_choices[kwargs2] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_alongside_choices[kwargs3] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_when_nargs_is_0[kwargs0] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_when_nargs_is_0[kwargs1] PASSED [ 23%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_when_nargs_is_0[kwargs2] PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_no_choices_callables_when_nargs_is_0[kwargs3] PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_usage PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_nargs_help_format PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_nargs_range_validation PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_narg_invalid_tuples[nargs_tuple0] PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_narg_invalid_tuples[nargs_tuple1] PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_narg_invalid_tuples[nargs_tuple2] PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_narg_invalid_tuples[nargs_tuple3] PASSED [ 24%] >tests/test_argparse_custom.py::test_apcustom_narg_tuple_order PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_narg_tuple_negative PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_narg_tuple_zero_base PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_narg_tuple_one_base PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_narg_tuple_other_ranges PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_print_message PASSED [ 25%] >tests/test_argparse_custom.py::test_generate_range_error PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_required_options PASSED [ 25%] >tests/test_argparse_custom.py::test_override_parser PASSED [ 25%] >tests/test_argparse_custom.py::test_apcustom_metavar_tuple PASSED [ 25%] >tests/test_argparse_custom.py::test_cmd2_attribute_wrapper PASSED [ 26%] >tests/test_cmd2.py::test_version PASSED [ 26%] >tests/test_cmd2.py::test_not_in_main_thread FAILED [ 26%] >tests/test_cmd2.py::test_empty_statement PASSED [ 26%] >tests/test_cmd2.py::test_base_help PASSED [ 26%] >tests/test_cmd2.py::test_base_help_verbose PASSED [ 26%] >tests/test_cmd2.py::test_base_argparse_help PASSED [ 26%] >tests/test_cmd2.py::test_base_invalid_option PASSED [ 26%] >tests/test_cmd2.py::test_base_shortcuts PASSED [ 26%] >tests/test_cmd2.py::test_command_starts_with_shortcut PASSED [ 27%] >tests/test_cmd2.py::test_base_show PASSED [ 27%] >tests/test_cmd2.py::test_base_show_long PASSED [ 27%] >tests/test_cmd2.py::test_set PASSED [ 27%] >tests/test_cmd2.py::test_set_val_empty PASSED [ 27%] >tests/test_cmd2.py::test_set_val_is_flag PASSED [ 27%] >tests/test_cmd2.py::test_set_not_supported PASSED [ 27%] >tests/test_cmd2.py::test_set_no_settables PASSED [ 27%] >tests/test_cmd2.py::test_set_allow_style[Never-True-Never] PASSED [ 27%] >tests/test_cmd2.py::test_set_allow_style[neVeR-True-Never] PASSED [ 28%] >tests/test_cmd2.py::test_set_allow_style[Terminal-True-Terminal] PASSED [ 28%] >tests/test_cmd2.py::test_set_allow_style[TeRMInal-True-Terminal] PASSED [ 28%] >tests/test_cmd2.py::test_set_allow_style[Always-True-Always] PASSED [ 28%] >tests/test_cmd2.py::test_set_allow_style[AlWaYs-True-Always] PASSED [ 28%] >tests/test_cmd2.py::test_set_allow_style[invalid-False-Terminal] PASSED [ 28%] >tests/test_cmd2.py::test_set_onchange_hook PASSED [ 28%] >tests/test_cmd2.py::test_base_shell PASSED [ 28%] >tests/test_cmd2.py::test_shell_last_result PASSED [ 28%] >tests/test_cmd2.py::test_shell_manual_call PASSED [ 29%] >tests/test_cmd2.py::test_base_py PASSED [ 29%] >tests/test_cmd2.py::test_base_error PASSED [ 29%] >tests/test_cmd2.py::test_run_script PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_empty_args PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_nonexistent_file PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_directory PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_empty_file PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_binary_file PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_python_file PASSED [ 29%] >tests/test_cmd2.py::test_run_script_with_utf8_file PASSED [ 30%] >tests/test_cmd2.py::test_run_script_nested_run_scripts PASSED [ 30%] >tests/test_cmd2.py::test_runcmds_plus_hooks PASSED [ 30%] >tests/test_cmd2.py::test_runcmds_plus_hooks_ctrl_c PASSED [ 30%] >tests/test_cmd2.py::test_relative_run_script PASSED [ 30%] >tests/test_cmd2.py::test_relative_run_script_with_odd_file_names[nothingweird] PASSED [ 30%] >tests/test_cmd2.py::test_relative_run_script_with_odd_file_names[has spaces] PASSED [ 30%] >tests/test_cmd2.py::test_relative_run_script_with_odd_file_names["is_double_quoted"] PASSED [ 30%] >tests/test_cmd2.py::test_relative_run_script_with_odd_file_names['is_single_quoted'] PASSED [ 30%] >tests/test_cmd2.py::test_relative_run_script_requires_an_argument PASSED [ 31%] >tests/test_cmd2.py::test_in_script PASSED [ 31%] >tests/test_cmd2.py::test_system_exit_in_command PASSED [ 31%] >tests/test_cmd2.py::test_output_redirection PASSED [ 31%] >tests/test_cmd2.py::test_output_redirection_to_nonexistent_directory PASSED [ 31%] >tests/test_cmd2.py::test_output_redirection_to_too_long_filename PASSED [ 31%] >tests/test_cmd2.py::test_feedback_to_output_true PASSED [ 31%] >tests/test_cmd2.py::test_feedback_to_output_false PASSED [ 31%] >tests/test_cmd2.py::test_disallow_redirection PASSED [ 31%] >tests/test_cmd2.py::test_pipe_to_shell PASSED [ 32%] >tests/test_cmd2.py::test_pipe_to_shell_and_redirect PASSED [ 32%] >tests/test_cmd2.py::test_pipe_to_shell_error PASSED [ 32%] >tests/test_cmd2.py::test_send_to_paste_buffer PASSED [ 32%] >tests/test_cmd2.py::test_base_timing PASSED [ 32%] >tests/test_cmd2.py::test_base_debug PASSED [ 32%] >tests/test_cmd2.py::test_debug_not_settable PASSED [ 32%] >tests/test_cmd2.py::test_remove_settable_keyerror PASSED [ 32%] >tests/test_cmd2.py::test_edit_file PASSED [ 32%] >tests/test_cmd2.py::test_edit_file_with_odd_file_names[nothingweird] PASSED [ 32%] >tests/test_cmd2.py::test_edit_file_with_odd_file_names[has spaces] PASSED [ 33%] >tests/test_cmd2.py::test_edit_file_with_odd_file_names["is_double_quoted"] PASSED [ 33%] >tests/test_cmd2.py::test_edit_file_with_odd_file_names['is_single_quoted'] PASSED [ 33%] >tests/test_cmd2.py::test_edit_file_with_spaces PASSED [ 33%] >tests/test_cmd2.py::test_edit_blank PASSED [ 33%] >tests/test_cmd2.py::test_base_py_interactive PASSED [ 33%] >tests/test_cmd2.py::test_base_cmdloop_with_startup_commands PASSED [ 33%] >tests/test_cmd2.py::test_base_cmdloop_without_startup_commands PASSED [ 33%] >tests/test_cmd2.py::test_cmdloop_without_rawinput PASSED [ 33%] >tests/test_cmd2.py::test_stty_sane PASSED [ 34%] >tests/test_cmd2.py::test_precmd_hook_success PASSED [ 34%] >tests/test_cmd2.py::test_precmd_hook_failure PASSED [ 34%] >tests/test_cmd2.py::test_interrupt_quit PASSED [ 34%] >tests/test_cmd2.py::test_interrupt_noquit PASSED [ 34%] >tests/test_cmd2.py::test_default_to_shell PASSED [ 34%] >tests/test_cmd2.py::test_ansi_prompt_not_esacped PASSED [ 34%] >tests/test_cmd2.py::test_ansi_prompt_escaped PASSED [ 34%] >tests/test_cmd2.py::test_custom_command_help PASSED [ 34%] >tests/test_cmd2.py::test_custom_help_menu PASSED [ 35%] >tests/test_cmd2.py::test_help_undocumented PASSED [ 35%] >tests/test_cmd2.py::test_help_overridden_method PASSED [ 35%] >tests/test_cmd2.py::test_help_multiline_docstring PASSED [ 35%] >tests/test_cmd2.py::test_help_cat_base PASSED [ 35%] >tests/test_cmd2.py::test_help_cat_verbose PASSED [ 35%] >tests/test_cmd2.py::test_select_options PASSED [ 35%] >tests/test_cmd2.py::test_select_invalid_option_too_big PASSED [ 35%] >tests/test_cmd2.py::test_select_invalid_option_too_small PASSED [ 35%] >tests/test_cmd2.py::test_select_list_of_strings PASSED [ 35%] >tests/test_cmd2.py::test_select_list_of_tuples PASSED [ 36%] >tests/test_cmd2.py::test_select_uneven_list_of_tuples PASSED [ 36%] >tests/test_cmd2.py::test_select_eof PASSED [ 36%] >tests/test_cmd2.py::test_select_ctrl_c PASSED [ 36%] >tests/test_cmd2.py::test_help_with_no_docstring PASSED [ 36%] >tests/test_cmd2.py::test_which_editor_bad PASSED [ 36%] >tests/test_cmd2.py::test_multiline_complete_empty_statement_raises_exception PASSED [ 36%] >tests/test_cmd2.py::test_multiline_complete_statement_without_terminator PASSED [ 36%] >tests/test_cmd2.py::test_multiline_complete_statement_with_unclosed_quotes PASSED [ 36%] >tests/test_cmd2.py::test_multiline_input_line_to_statement PASSED [ 37%] >tests/test_cmd2.py::test_clipboard_failure PASSED [ 37%] >tests/test_cmd2.py::test_commandresult_truthy PASSED [ 37%] >tests/test_cmd2.py::test_commandresult_falsy PASSED [ 37%] >tests/test_cmd2.py::test_is_text_file_bad_input PASSED [ 37%] >tests/test_cmd2.py::test_eof PASSED [ 37%] >tests/test_cmd2.py::test_echo PASSED [ 37%] >tests/test_cmd2.py::test_read_input_rawinput_true PASSED [ 37%] >tests/test_cmd2.py::test_read_input_rawinput_false PASSED [ 37%] >tests/test_cmd2.py::test_read_command_line_eof PASSED [ 38%] >tests/test_cmd2.py::test_poutput_string PASSED [ 38%] >tests/test_cmd2.py::test_poutput_zero PASSED [ 38%] >tests/test_cmd2.py::test_poutput_empty_string PASSED [ 38%] >tests/test_cmd2.py::test_poutput_none PASSED [ 38%] >tests/test_cmd2.py::test_poutput_ansi_always PASSED [ 38%] >tests/test_cmd2.py::test_poutput_ansi_never PASSED [ 38%] >tests/test_cmd2.py::test_get_alias_completion_items PASSED [ 38%] >tests/test_cmd2.py::test_get_macro_completion_items PASSED [ 38%] >tests/test_cmd2.py::test_get_settable_completion_items PASSED [ 38%] >tests/test_cmd2.py::test_alias_no_subcommand PASSED [ 39%] >tests/test_cmd2.py::test_alias_create PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_with_quoted_tokens PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name[""] PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name[#] PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name[!no_shortcut] PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name[">"] PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name["no>pe"] PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name["no spaces"] PASSED [ 39%] >tests/test_cmd2.py::test_alias_create_invalid_name["nopipe|"] PASSED [ 40%] >tests/test_cmd2.py::test_alias_create_invalid_name["noterm;"] PASSED [ 40%] >tests/test_cmd2.py::test_alias_create_invalid_name[noembedded"quotes] PASSED [ 40%] >tests/test_cmd2.py::test_alias_create_with_command_name PASSED [ 40%] >tests/test_cmd2.py::test_alias_create_with_macro_name PASSED [ 40%] >tests/test_cmd2.py::test_alias_that_resolves_into_comment PASSED [ 40%] >tests/test_cmd2.py::test_alias_list_invalid_alias PASSED [ 40%] >tests/test_cmd2.py::test_alias_delete PASSED [ 40%] >tests/test_cmd2.py::test_alias_delete_all PASSED [ 40%] >tests/test_cmd2.py::test_alias_delete_non_existing PASSED [ 41%] >tests/test_cmd2.py::test_alias_delete_no_name PASSED [ 41%] >tests/test_cmd2.py::test_multiple_aliases PASSED [ 41%] >tests/test_cmd2.py::test_macro_no_subcommand PASSED [ 41%] >tests/test_cmd2.py::test_macro_create PASSED [ 41%] >tests/test_cmd2.py::test_macro_create_with_quoted_tokens PASSED [ 41%] >tests/test_cmd2.py::test_macro_create_invalid_name[""] PASSED [ 41%] >tests/test_cmd2.py::test_macro_create_invalid_name[#] PASSED [ 41%] >tests/test_cmd2.py::test_macro_create_invalid_name[!no_shortcut] PASSED [ 41%] >tests/test_cmd2.py::test_macro_create_invalid_name[">"] PASSED [ 41%] >tests/test_cmd2.py::test_macro_create_invalid_name["no>pe"] PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_invalid_name["no spaces"] PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_invalid_name["nopipe|"] PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_invalid_name["noterm;"] PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_invalid_name[noembedded"quotes] PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_with_command_name PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_with_alias_name PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_with_args PASSED [ 42%] >tests/test_cmd2.py::test_macro_create_with_escaped_args PASSED [ 42%] >tests/test_cmd2.py::test_macro_usage_with_missing_args PASSED [ 43%] >tests/test_cmd2.py::test_macro_usage_with_exta_args PASSED [ 43%] >tests/test_cmd2.py::test_macro_create_with_missing_arg_nums PASSED [ 43%] >tests/test_cmd2.py::test_macro_create_with_invalid_arg_num PASSED [ 43%] >tests/test_cmd2.py::test_macro_create_with_unicode_numbered_arg PASSED [ 43%] >tests/test_cmd2.py::test_macro_create_with_missing_unicode_arg_nums PASSED [ 43%] >tests/test_cmd2.py::test_macro_that_resolves_into_comment PASSED [ 43%] >tests/test_cmd2.py::test_macro_list_invalid_macro PASSED [ 43%] >tests/test_cmd2.py::test_macro_delete PASSED [ 43%] >tests/test_cmd2.py::test_macro_delete_all PASSED [ 44%] >tests/test_cmd2.py::test_macro_delete_non_existing PASSED [ 44%] >tests/test_cmd2.py::test_macro_delete_no_name PASSED [ 44%] >tests/test_cmd2.py::test_multiple_macros PASSED [ 44%] >tests/test_cmd2.py::test_nonexistent_macro PASSED [ 44%] >tests/test_cmd2.py::test_perror_style PASSED [ 44%] >tests/test_cmd2.py::test_perror_no_style PASSED [ 44%] >tests/test_cmd2.py::test_pwarning_style PASSED [ 44%] >tests/test_cmd2.py::test_pwarning_no_style PASSED [ 44%] >tests/test_cmd2.py::test_ppaged PASSED [ 45%] >tests/test_cmd2.py::test_ppaged_blank PASSED [ 45%] >tests/test_cmd2.py::test_ppaged_none PASSED [ 45%] >tests/test_cmd2.py::test_ppaged_strips_ansi_when_redirecting PASSED [ 45%] >tests/test_cmd2.py::test_ppaged_strips_ansi_when_redirecting_if_always PASSED [ 45%] >tests/test_cmd2.py::test_parseline_empty PASSED [ 45%] >tests/test_cmd2.py::test_parseline PASSED [ 45%] >tests/test_cmd2.py::test_onecmd_raw_str_continue PASSED [ 45%] >tests/test_cmd2.py::test_onecmd_raw_str_quit PASSED [ 45%] >tests/test_cmd2.py::test_onecmd_add_to_history PASSED [ 45%] >tests/test_cmd2.py::test_get_all_commands PASSED [ 46%] >tests/test_cmd2.py::test_get_help_topics PASSED [ 46%] >tests/test_cmd2.py::test_get_help_topics_hidden PASSED [ 46%] >tests/test_cmd2.py::test_exit_code_default PASSED [ 46%] >tests/test_cmd2.py::test_exit_code_nonzero PASSED [ 46%] >tests/test_cmd2.py::test_ansi_pouterr_always_tty PASSED [ 46%] >tests/test_cmd2.py::test_ansi_pouterr_always_notty PASSED [ 46%] >tests/test_cmd2.py::test_ansi_terminal_tty PASSED [ 46%] >tests/test_cmd2.py::test_ansi_terminal_notty PASSED [ 46%] >tests/test_cmd2.py::test_ansi_never_tty PASSED [ 47%] >tests/test_cmd2.py::test_ansi_never_notty PASSED [ 47%] >tests/test_cmd2.py::test_disable_and_enable_category PASSED [ 47%] >tests/test_cmd2.py::test_enable_enabled_command PASSED [ 47%] >tests/test_cmd2.py::test_disable_fake_command PASSED [ 47%] >tests/test_cmd2.py::test_disable_command_twice PASSED [ 47%] >tests/test_cmd2.py::test_disabled_command_not_in_history PASSED [ 47%] >tests/test_cmd2.py::test_disabled_message_command_name PASSED [ 47%] >tests/test_cmd2.py::test_startup_script PASSED [ 47%] >tests/test_cmd2.py::test_startup_script_with_odd_file_names[nothingweird] PASSED [ 48%] >tests/test_cmd2.py::test_startup_script_with_odd_file_names[has spaces] PASSED [ 48%] >tests/test_cmd2.py::test_startup_script_with_odd_file_names["is_double_quoted"] PASSED [ 48%] >tests/test_cmd2.py::test_startup_script_with_odd_file_names['is_single_quoted'] PASSED [ 48%] >tests/test_cmd2.py::test_transcripts_at_init PASSED [ 48%] >tests/test_completion.py::test_cmd2_command_completion_single PASSED [ 48%] >tests/test_completion.py::test_complete_command_single PASSED [ 48%] >tests/test_completion.py::test_complete_empty_arg PASSED [ 48%] >tests/test_completion.py::test_complete_bogus_command PASSED [ 48%] >tests/test_completion.py::test_complete_exception PASSED [ 48%] >tests/test_completion.py::test_complete_macro PASSED [ 49%] >tests/test_completion.py::test_default_sort_key PASSED [ 49%] >tests/test_completion.py::test_cmd2_command_completion_multiple PASSED [ 49%] >tests/test_completion.py::test_cmd2_command_completion_nomatch PASSED [ 49%] >tests/test_completion.py::test_cmd2_help_completion_single PASSED [ 49%] >tests/test_completion.py::test_cmd2_help_completion_multiple PASSED [ 49%] >tests/test_completion.py::test_cmd2_help_completion_nomatch PASSED [ 49%] >tests/test_completion.py::test_shell_command_completion_shortcut PASSED [ 49%] >tests/test_completion.py::test_shell_command_completion_doesnt_match_wildcards PASSED [ 49%] >tests/test_completion.py::test_shell_command_completion_multiple PASSED [ 50%] >tests/test_completion.py::test_shell_command_completion_nomatch PASSED [ 50%] >tests/test_completion.py::test_shell_command_completion_doesnt_complete_when_just_shell PASSED [ 50%] >tests/test_completion.py::test_shell_command_completion_does_path_completion_when_after_command PASSED [ 50%] >tests/test_completion.py::test_shell_commmand_complete_in_path PASSED [ 50%] >tests/test_completion.py::test_path_completion_single_end PASSED [ 50%] >tests/test_completion.py::test_path_completion_multiple PASSED [ 50%] >tests/test_completion.py::test_path_completion_nomatch PASSED [ 50%] >tests/test_completion.py::test_default_to_shell_completion PASSED [ 50%] >tests/test_completion.py::test_path_completion_no_text PASSED [ 51%] >tests/test_completion.py::test_path_completion_no_path PASSED [ 51%] >tests/test_completion.py::test_path_completion_cwd_is_root_dir PASSED [ 51%] >tests/test_completion.py::test_path_completion_doesnt_match_wildcards PASSED [ 51%] >tests/test_completion.py::test_path_completion_complete_user PASSED [ 51%] >tests/test_completion.py::test_path_completion_user_path_expansion PASSED [ 51%] >tests/test_completion.py::test_path_completion_directories_only PASSED [ 51%] >tests/test_completion.py::test_basic_completion_single PASSED [ 51%] >tests/test_completion.py::test_basic_completion_multiple PASSED [ 51%] >tests/test_completion.py::test_basic_completion_nomatch PASSED [ 51%] >tests/test_completion.py::test_delimiter_completion PASSED [ 52%] >tests/test_completion.py::test_flag_based_completion_single PASSED [ 52%] >tests/test_completion.py::test_flag_based_completion_multiple PASSED [ 52%] >tests/test_completion.py::test_flag_based_completion_nomatch PASSED [ 52%] >tests/test_completion.py::test_flag_based_default_completer PASSED [ 52%] >tests/test_completion.py::test_flag_based_callable_completer PASSED [ 52%] >tests/test_completion.py::test_index_based_completion_single PASSED [ 52%] >tests/test_completion.py::test_index_based_completion_multiple PASSED [ 52%] >tests/test_completion.py::test_index_based_completion_nomatch PASSED [ 52%] >tests/test_completion.py::test_index_based_default_completer PASSED [ 53%] >tests/test_completion.py::test_index_based_callable_completer PASSED [ 53%] >tests/test_completion.py::test_tokens_for_completion_quoted PASSED [ 53%] >tests/test_completion.py::test_tokens_for_completion_unclosed_quote PASSED [ 53%] >tests/test_completion.py::test_tokens_for_completion_punctuation PASSED [ 53%] >tests/test_completion.py::test_tokens_for_completion_quoted_punctuation PASSED [ 53%] >tests/test_completion.py::test_add_opening_quote_basic_no_text PASSED [ 53%] >tests/test_completion.py::test_add_opening_quote_basic_nothing_added PASSED [ 53%] >tests/test_completion.py::test_add_opening_quote_basic_quote_added PASSED [ 53%] >tests/test_completion.py::test_add_opening_quote_basic_single_quote_added PASSED [ 54%] >tests/test_completion.py::test_add_opening_quote_basic_text_is_common_prefix PASSED [ 54%] >tests/test_completion.py::test_add_opening_quote_delimited_no_text PASSED [ 54%] >tests/test_completion.py::test_add_opening_quote_delimited_nothing_added PASSED [ 54%] >tests/test_completion.py::test_add_opening_quote_delimited_quote_added PASSED [ 54%] >tests/test_completion.py::test_add_opening_quote_delimited_text_is_common_prefix PASSED [ 54%] >tests/test_completion.py::test_add_opening_quote_delimited_space_in_prefix PASSED [ 54%] >tests/test_completion.py::test_no_completer PASSED [ 54%] >tests/test_completion.py::test_quote_as_command PASSED [ 54%] >tests/test_completion.py::test_complete_multiline_on_single_line PASSED [ 54%] >tests/test_completion.py::test_complete_multiline_on_multiple_lines PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake-RedirCompType.DEFAULT] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake arg-RedirCompType.DEFAULT] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake |-RedirCompType.SHELL_CMD] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake | grep-RedirCompType.PATH] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake | grep arg-RedirCompType.PATH] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake | grep >-RedirCompType.PATH] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake | grep > >-RedirCompType.NONE] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake | grep > file-RedirCompType.NONE] PASSED [ 55%] >tests/test_completion.py::test_redirect_complete[fake | grep > file >-RedirCompType.NONE] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake | grep > file |-RedirCompType.SHELL_CMD] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake | grep > file | grep-RedirCompType.PATH] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake | |-RedirCompType.NONE] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake | >-RedirCompType.NONE] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake >-RedirCompType.PATH] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake >>-RedirCompType.PATH] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake > >-RedirCompType.NONE] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake > |-RedirCompType.SHELL_CMD] PASSED [ 56%] >tests/test_completion.py::test_redirect_complete[fake >> file |-RedirCompType.SHELL_CMD] PASSED [ 57%] >tests/test_completion.py::test_redirect_complete[fake >> file | grep-RedirCompType.PATH] PASSED [ 57%] >tests/test_completion.py::test_redirect_complete[fake > file-RedirCompType.NONE] PASSED [ 57%] >tests/test_completion.py::test_redirect_complete[fake > file >-RedirCompType.NONE] PASSED [ 57%] >tests/test_completion.py::test_redirect_complete[fake > file >>-RedirCompType.NONE] PASSED [ 57%] >tests/test_completion.py::test_complete_set_value PASSED [ 57%] >tests/test_completion.py::test_complete_set_value_invalid_settable PASSED [ 57%] >tests/test_completion.py::test_cmd2_subcommand_completion_single_end PASSED [ 57%] >tests/test_completion.py::test_cmd2_subcommand_completion_multiple PASSED [ 57%] >tests/test_completion.py::test_cmd2_subcommand_completion_nomatch PASSED [ 58%] >tests/test_completion.py::test_help_subcommand_completion_single PASSED [ 58%] >tests/test_completion.py::test_help_subcommand_completion_multiple PASSED [ 58%] >tests/test_completion.py::test_help_subcommand_completion_nomatch PASSED [ 58%] >tests/test_completion.py::test_subcommand_tab_completion PASSED [ 58%] >tests/test_completion.py::test_subcommand_tab_completion_with_no_completer PASSED [ 58%] >tests/test_completion.py::test_subcommand_tab_completion_space_in_text PASSED [ 58%] >tests/test_completion.py::test_subcmd_with_unknown_completion_single_end PASSED [ 58%] >tests/test_completion.py::test_subcmd_with_unknown_completion_multiple PASSED [ 58%] >tests/test_completion.py::test_subcmd_with_unknown_completion_nomatch PASSED [ 58%] >tests/test_completion.py::test_help_subcommand_completion_single_scu PASSED [ 59%] >tests/test_completion.py::test_help_subcommand_completion_multiple_scu PASSED [ 59%] >tests/test_completion.py::test_help_subcommand_completion_with_flags_before_command PASSED [ 59%] >tests/test_completion.py::test_complete_help_subcommands_with_blank_command PASSED [ 59%] >tests/test_completion.py::test_help_subcommand_completion_nomatch_scu PASSED [ 59%] >tests/test_completion.py::test_subcommand_tab_completion_scu PASSED [ 59%] >tests/test_completion.py::test_subcommand_tab_completion_with_no_completer_scu PASSED [ 59%] >tests/test_completion.py::test_subcommand_tab_completion_space_in_text_scu PASSED [ 59%] >tests/test_history.py::test_readline_remove_history_item PASSED [ 59%] >tests/test_history.py::test_history_class_span PASSED [ 60%] >tests/test_history.py::test_persisted_history_span PASSED [ 60%] >tests/test_history.py::test_history_class_get PASSED [ 60%] >tests/test_history.py::test_history_str_search PASSED [ 60%] >tests/test_history.py::test_history_regex_search PASSED [ 60%] >tests/test_history.py::test_history_max_length_zero PASSED [ 60%] >tests/test_history.py::test_history_max_length_negative PASSED [ 60%] >tests/test_history.py::test_history_max_length PASSED [ 60%] >tests/test_history.py::test_multiline_histitem PASSED [ 60%] >tests/test_history.py::test_multiline_histitem_verbose PASSED [ 61%] >tests/test_history.py::test_history_item_instantiate PASSED [ 61%] >tests/test_history.py::test_history_item_properties PASSED [ 61%] >tests/test_history.py::test_base_history PASSED [ 61%] >tests/test_history.py::test_history_script_format PASSED [ 61%] >tests/test_history.py::test_history_with_string_argument PASSED [ 61%] >tests/test_history.py::test_history_expanded_with_string_argument PASSED [ 61%] >tests/test_history.py::test_history_expanded_with_regex_argument PASSED [ 61%] >tests/test_history.py::test_history_with_integer_argument PASSED [ 61%] >tests/test_history.py::test_history_with_integer_span PASSED [ 61%] >tests/test_history.py::test_history_with_span_start PASSED [ 62%] >tests/test_history.py::test_history_with_span_end PASSED [ 62%] >tests/test_history.py::test_history_with_span_index_error PASSED [ 62%] >tests/test_history.py::test_history_output_file PASSED [ 62%] >tests/test_history.py::test_history_bad_output_file PASSED [ 62%] >tests/test_history.py::test_history_edit PASSED [ 62%] >tests/test_history.py::test_history_run_all_commands PASSED [ 62%] >tests/test_history.py::test_history_run_one_command PASSED [ 62%] >tests/test_history.py::test_history_clear PASSED [ 62%] >tests/test_history.py::test_history_verbose_with_other_options PASSED [ 63%] >tests/test_history.py::test_history_verbose PASSED [ 63%] >tests/test_history.py::test_history_script_with_invalid_options PASSED [ 63%] >tests/test_history.py::test_history_script PASSED [ 63%] >tests/test_history.py::test_history_expanded_with_invalid_options PASSED [ 63%] >tests/test_history.py::test_history_expanded PASSED [ 63%] >tests/test_history.py::test_history_script_expanded PASSED [ 63%] >tests/test_history.py::test_base_help_history PASSED [ 63%] >tests/test_history.py::test_exclude_from_history PASSED [ 63%] >tests/test_history.py::test_history_file_is_directory PASSED [ 64%] >tests/test_history.py::test_history_can_create_directory PASSED [ 64%] >tests/test_history.py::test_history_cannot_create_directory PASSED [ 64%] >tests/test_history.py::test_history_file_permission_error PASSED [ 64%] >tests/test_history.py::test_history_file_conversion_no_truncate_on_init PASSED [ 64%] >tests/test_history.py::test_history_populates_readline PASSED [ 64%] >tests/test_history.py::test_persist_history_ensure_no_error_if_no_histfile PASSED [ 64%] >tests/test_history.py::test_persist_history_permission_error PASSED [ 64%] >tests/test_parsing.py::test_parse_empty_string PASSED [ 64%] >tests/test_parsing.py::test_parse_empty_string_default PASSED [ 64%] >tests/test_parsing.py::test_tokenize_default[command-tokens0] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[#comment-tokens1] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[not # a comment-tokens2] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[termbare ; > /tmp/output-tokens3] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[termbare; > /tmp/output-tokens4] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[termbare & > /tmp/output-tokens5] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[termbare& > /tmp/output-tokens6] PASSED [ 65%] >tests/test_parsing.py::test_tokenize_default[help|less-tokens7] PASSED [ 65%] >tests/test_parsing.py::test_tokenize[command-tokens0] PASSED [ 65%] >tests/test_parsing.py::test_tokenize[# comment-tokens1] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[not # a comment-tokens2] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[42 arg1 arg2-tokens3] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[l-tokens4] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[termbare ; > /tmp/output-tokens5] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[termbare; > /tmp/output-tokens6] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[termbare & > /tmp/output-tokens7] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[termbare& > /tmp/output-tokens8] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[help|less-tokens9] PASSED [ 66%] >tests/test_parsing.py::test_tokenize[l|less-tokens10] PASSED [ 67%] >tests/test_parsing.py::test_tokenize_unclosed_quotes PASSED [ 67%] >tests/test_parsing.py::test_command_and_args[tokens0--] PASSED [ 67%] >tests/test_parsing.py::test_command_and_args[tokens1-command-] PASSED [ 67%] >tests/test_parsing.py::test_command_and_args[tokens2-command-arg1 arg2] PASSED [ 67%] >tests/test_parsing.py::test_parse_single_word[plainword] PASSED [ 67%] >tests/test_parsing.py::test_parse_single_word["one word"] PASSED [ 67%] >tests/test_parsing.py::test_parse_single_word['one word'] PASSED [ 67%] >tests/test_parsing.py::test_parse_word_plus_terminator[termbare;-;] PASSED [ 67%] >tests/test_parsing.py::test_parse_word_plus_terminator[termbare ;-;] PASSED [ 67%] >tests/test_parsing.py::test_parse_word_plus_terminator[termbare&-&] PASSED [ 68%] >tests/test_parsing.py::test_parse_word_plus_terminator[termbare &-&] PASSED [ 68%] >tests/test_parsing.py::test_parse_suffix_after_terminator[termbare; suffx-;] PASSED [ 68%] >tests/test_parsing.py::test_parse_suffix_after_terminator[termbare ;suffx-;] PASSED [ 68%] >tests/test_parsing.py::test_parse_suffix_after_terminator[termbare& suffx-&] PASSED [ 68%] >tests/test_parsing.py::test_parse_suffix_after_terminator[termbare &suffx-&] PASSED [ 68%] >tests/test_parsing.py::test_parse_command_with_args PASSED [ 68%] >tests/test_parsing.py::test_parse_command_with_quoted_args PASSED [ 68%] >tests/test_parsing.py::test_parse_command_with_args_terminator_and_suffix PASSED [ 68%] >tests/test_parsing.py::test_parse_comment PASSED [ 69%] >tests/test_parsing.py::test_parse_embedded_comment_char PASSED [ 69%] >tests/test_parsing.py::test_parse_simple_pipe[simple | piped] PASSED [ 69%] >tests/test_parsing.py::test_parse_simple_pipe[simple|piped] PASSED [ 69%] >tests/test_parsing.py::test_parse_double_pipe_is_not_a_pipe PASSED [ 69%] >tests/test_parsing.py::test_parse_complex_pipe PASSED [ 69%] >tests/test_parsing.py::test_parse_redirect[help > out.txt->] PASSED [ 69%] >tests/test_parsing.py::test_parse_redirect[help>out.txt->] PASSED [ 69%] >tests/test_parsing.py::test_parse_redirect[help >> out.txt->>] PASSED [ 69%] >tests/test_parsing.py::test_parse_redirect[help>>out.txt->>] PASSED [ 70%] >tests/test_parsing.py::test_parse_redirect_with_args[afile.txt] PASSED [ 70%] >tests/test_parsing.py::test_parse_redirect_with_args[python-cmd2/afile.txt] PASSED [ 70%] >tests/test_parsing.py::test_parse_redirect_append PASSED [ 70%] >tests/test_parsing.py::test_parse_pipe_then_redirect PASSED [ 70%] >tests/test_parsing.py::test_parse_multiple_pipes PASSED [ 70%] >tests/test_parsing.py::test_redirect_then_pipe PASSED [ 70%] >tests/test_parsing.py::test_append_then_pipe PASSED [ 70%] >tests/test_parsing.py::test_append_then_redirect PASSED [ 70%] >tests/test_parsing.py::test_redirect_then_append PASSED [ 70%] >tests/test_parsing.py::test_redirect_to_quoted_string PASSED [ 71%] >tests/test_parsing.py::test_redirect_to_single_quoted_string PASSED [ 71%] >tests/test_parsing.py::test_redirect_to_empty_quoted_string PASSED [ 71%] >tests/test_parsing.py::test_redirect_to_empty_single_quoted_string PASSED [ 71%] >tests/test_parsing.py::test_parse_output_to_paste_buffer PASSED [ 71%] >tests/test_parsing.py::test_parse_redirect_inside_terminator PASSED [ 71%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside;-;] PASSED [ 71%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside ;-;] PASSED [ 71%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside;;;-;] PASSED [ 71%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside;; ;;-;] PASSED [ 72%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside&-&] PASSED [ 72%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside &;-&] PASSED [ 72%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside&&;-&] PASSED [ 72%] >tests/test_parsing.py::test_parse_multiple_terminators[multiline with | inside &; &;-&] PASSED [ 72%] >tests/test_parsing.py::test_parse_unfinished_multiliine_command PASSED [ 72%] >tests/test_parsing.py::test_parse_basic_multiline_command PASSED [ 72%] >tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside;-;] PASSED [ 72%] >tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside;;;-;] PASSED [ 72%] >tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside;; ;;-;] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside &-&] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_command_ignores_redirectors_within_it[multiline has > inside & &-&] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_terminated_by_empty_line PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline";-;] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline";;;-;] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline";; ;;-;] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline" &-&] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline" & &-&] PASSED [ 73%] >tests/test_parsing.py::test_parse_multiline_with_embedded_newline[multiline command "with\nembedded newline"\n\n-\n] PASSED [ 74%] >tests/test_parsing.py::test_parse_multiline_ignores_terminators_in_quotes PASSED [ 74%] >tests/test_parsing.py::test_parse_command_with_unicode_args PASSED [ 74%] >tests/test_parsing.py::test_parse_unicode_command PASSED [ 74%] >tests/test_parsing.py::test_parse_redirect_to_unicode_filename PASSED [ 74%] >tests/test_parsing.py::test_parse_unclosed_quotes PASSED [ 74%] >tests/test_parsing.py::test_empty_statement_raises_exception PASSED [ 74%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[helpalias-help-] PASSED [ 74%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[helpalias mycommand-help-mycommand] PASSED [ 74%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[42-theanswer-] PASSED [ 74%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[42 arg1 arg2-theanswer-arg1 arg2] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[!ls-shell-ls] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[!ls -al /tmp-shell-ls -al /tmp] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_and_shortcut_expansion[l-shell-ls -al] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_on_multiline_command PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_redirection[helpalias > out.txt->] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_redirection[helpalias>out.txt->] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_redirection[helpalias >> out.txt->>] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_redirection[helpalias>>out.txt->>] PASSED [ 75%] >tests/test_parsing.py::test_parse_alias_pipe[helpalias | less] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_pipe[helpalias|less] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias;] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias;;] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias;; ;] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias ;] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias ; ;] PASSED [ 76%] >tests/test_parsing.py::test_parse_alias_terminator_no_whitespace[helpalias ;; ;] PASSED [ 76%] >tests/test_parsing.py::test_parse_command_only_command_and_args PASSED [ 76%] >tests/test_parsing.py::test_parse_command_only_strips_line PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_expands_alias PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_expands_shortcuts PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_quoted_args PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[helpalias > out.txt-> out.txt] PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[helpalias>out.txt->out.txt] PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[helpalias >> out.txt->> out.txt] PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[helpalias>>out.txt->>out.txt] PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[help|less-|less] PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[helpalias;-;] PASSED [ 77%] >tests/test_parsing.py::test_parse_command_only_specialchars[help ;;-;;] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_specialchars[help; ;;-; ;;] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[;] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[;;] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[;; ;] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[&] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[& &] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[ && &] PASSED [ 78%] >tests/test_parsing.py::test_parse_command_only_empty[>] PASSED [ 79%] >tests/test_parsing.py::test_parse_command_only_empty['] PASSED [ 79%] >tests/test_parsing.py::test_parse_command_only_empty["] PASSED [ 79%] >tests/test_parsing.py::test_parse_command_only_empty[|] PASSED [ 79%] >tests/test_parsing.py::test_parse_command_only_multiline PASSED [ 79%] >tests/test_parsing.py::test_statement_initialization PASSED [ 79%] >tests/test_parsing.py::test_statement_is_immutable PASSED [ 79%] >tests/test_parsing.py::test_is_valid_command_invalid PASSED [ 79%] >tests/test_parsing.py::test_is_valid_command_valid PASSED [ 79%] >tests/test_parsing.py::test_macro_normal_arg_pattern PASSED [ 80%] >tests/test_parsing.py::test_macro_escaped_arg_pattern PASSED [ 80%] >tests/test_plugin.py::test_register_preloop_hook_too_many_parameters PASSED [ 80%] >tests/test_plugin.py::test_register_preloop_hook_with_return_annotation PASSED [ 80%] >tests/test_plugin.py::test_preloop_hook PASSED [ 80%] >tests/test_plugin.py::test_preloop_hooks PASSED [ 80%] >tests/test_plugin.py::test_register_postloop_hook_too_many_parameters PASSED [ 80%] >tests/test_plugin.py::test_register_postloop_hook_with_wrong_return_annotation PASSED [ 80%] >tests/test_plugin.py::test_postloop_hook PASSED [ 80%] >tests/test_plugin.py::test_postloop_hooks PASSED [ 80%] >tests/test_plugin.py::test_preparse PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_too_many_parameters PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_undeclared_parameter_annotation PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_wrong_parameter_annotation PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_undeclared_return_annotation PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_wrong_return_annotation PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_stop_first PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_stop_second PASSED [ 81%] >tests/test_plugin.py::test_postparsing_hook_emptystatement_first PASSED [ 82%] >tests/test_plugin.py::test_postparsing_hook_emptystatement_second PASSED [ 82%] >tests/test_plugin.py::test_postparsing_hook_exception PASSED [ 82%] >tests/test_plugin.py::test_register_precmd_hook_parameter_count PASSED [ 82%] >tests/test_plugin.py::test_register_precmd_hook_no_parameter_annotation PASSED [ 82%] >tests/test_plugin.py::test_register_precmd_hook_wrong_parameter_annotation PASSED [ 82%] >tests/test_plugin.py::test_register_precmd_hook_no_return_annotation PASSED [ 82%] >tests/test_plugin.py::test_register_precmd_hook_wrong_return_annotation PASSED [ 82%] >tests/test_plugin.py::test_precmd_hook PASSED [ 82%] >tests/test_plugin.py::test_precmd_hook_emptystatement_first PASSED [ 83%] >tests/test_plugin.py::test_precmd_hook_emptystatement_second PASSED [ 83%] >tests/test_plugin.py::test_register_postcmd_hook_parameter_count PASSED [ 83%] >tests/test_plugin.py::test_register_postcmd_hook_no_parameter_annotation PASSED [ 83%] >tests/test_plugin.py::test_register_postcmd_hook_wrong_parameter_annotation PASSED [ 83%] >tests/test_plugin.py::test_register_postcmd_hook_no_return_annotation PASSED [ 83%] >tests/test_plugin.py::test_register_postcmd_hook_wrong_return_annotation PASSED [ 83%] >tests/test_plugin.py::test_postcmd PASSED [ 83%] >tests/test_plugin.py::test_postcmd_exception_first PASSED [ 83%] >tests/test_plugin.py::test_postcmd_exception_second PASSED [ 83%] >tests/test_plugin.py::test_register_cmdfinalization_hook_parameter_count PASSED [ 84%] >tests/test_plugin.py::test_register_cmdfinalization_hook_no_parameter_annotation PASSED [ 84%] >tests/test_plugin.py::test_register_cmdfinalization_hook_wrong_parameter_annotation PASSED [ 84%] >tests/test_plugin.py::test_register_cmdfinalization_hook_no_return_annotation PASSED [ 84%] >tests/test_plugin.py::test_register_cmdfinalization_hook_wrong_return_annotation PASSED [ 84%] >tests/test_plugin.py::test_cmdfinalization PASSED [ 84%] >tests/test_plugin.py::test_cmdfinalization_stop_first PASSED [ 84%] >tests/test_plugin.py::test_cmdfinalization_stop_second PASSED [ 84%] >tests/test_plugin.py::test_cmdfinalization_hook_exception PASSED [ 84%] >tests/test_plugin.py::test_cmdfinalization_hook_system_exit PASSED [ 85%] >tests/test_plugin.py::test_cmdfinalization_hook_keyboard_interrupt PASSED [ 85%] >tests/test_plugin.py::test_skip_postcmd_hooks PASSED [ 85%] >tests/test_plugin.py::test_cmd2_argparse_exception PASSED [ 85%] >tests/test_run_pyscript.py::test_run_pyscript PASSED [ 85%] >tests/test_run_pyscript.py::test_run_pyscript_recursive_not_allowed PASSED [ 85%] >tests/test_run_pyscript.py::test_run_pyscript_with_nonexist_file PASSED [ 85%] >tests/test_run_pyscript.py::test_run_pyscript_with_non_python_file PASSED [ 85%] >tests/test_run_pyscript.py::test_run_pyscript_with_odd_file_names[nothingweird] PASSED [ 85%] >tests/test_run_pyscript.py::test_run_pyscript_with_odd_file_names[has spaces] PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_with_odd_file_names["is_double_quoted"] PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_with_odd_file_names['is_single_quoted'] PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_with_exception PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_requires_an_argument PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_help PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_dir PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_stdout_capture PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_stop PASSED [ 86%] >tests/test_run_pyscript.py::test_run_pyscript_environment PASSED [ 87%] >tests/test_run_pyscript.py::test_run_pyscript_app_echo PASSED [ 87%] >tests/test_table_creator.py::test_column_creation PASSED [ 87%] >tests/test_table_creator.py::test_column_alignment PASSED [ 87%] >tests/test_table_creator.py::test_wrap_text PASSED [ 87%] >tests/test_table_creator.py::test_wrap_text_max_lines PASSED [ 87%] >tests/test_table_creator.py::test_wrap_long_word PASSED [ 87%] >tests/test_table_creator.py::test_wrap_long_word_max_data_lines PASSED [ 87%] >tests/test_table_creator.py::test_wrap_long_char_wider_than_max_width PASSED [ 87%] >tests/test_table_creator.py::test_generate_row_exceptions PASSED [ 87%] >tests/test_table_creator.py::test_tabs PASSED [ 88%] >tests/test_table_creator.py::test_simple_table_creation PASSED [ 88%] >tests/test_table_creator.py::test_simple_table_width PASSED [ 88%] >tests/test_table_creator.py::test_bordered_table_creation PASSED [ 88%] >tests/test_table_creator.py::test_bordered_table_width PASSED [ 88%] >tests/test_table_creator.py::test_alternating_table_creation PASSED [ 88%] >tests/test_transcript.py::test_commands_at_invocation PASSED [ 88%] >tests/test_transcript.py::test_transcript[bol_eol.txt-False] PASSED [ 88%] >tests/test_transcript.py::test_transcript[characterclass.txt-False] PASSED [ 88%] >tests/test_transcript.py::test_transcript[dotstar.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[extension_notation.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[from_cmdloop.txt-True] PASSED [ 89%] >tests/test_transcript.py::test_transcript[multiline_no_regex.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[multiline_regex.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[no_output.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[no_output_last.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[regex_set.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[singleslash.txt-False] PASSED [ 89%] >tests/test_transcript.py::test_transcript[slashes_escaped.txt-False] PASSED [ 90%] >tests/test_transcript.py::test_transcript[slashslash.txt-False] PASSED [ 90%] >tests/test_transcript.py::test_transcript[spaces.txt-False] PASSED [ 90%] >tests/test_transcript.py::test_transcript[word_boundaries.txt-False] PASSED [ 90%] >tests/test_transcript.py::test_history_transcript PASSED [ 90%] >tests/test_transcript.py::test_history_transcript_bad_filename PASSED [ 90%] >tests/test_transcript.py::test_run_script_record_transcript PASSED [ 90%] >tests/test_transcript.py::test_generate_transcript_stop PASSED [ 90%] >tests/test_transcript.py::test_parse_transcript_expected[text with no slashes-text\\ with\\ no\\ slashes] PASSED [ 90%] >tests/test_transcript.py::test_parse_transcript_expected[specials .*-specials\\ \\.\\*] PASSED [ 90%] >tests/test_transcript.py::test_parse_transcript_expected[use 2/3 cup-use\\ 2/3\\ cup] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[/tmp is nice-/tmp\\ is\\ nice] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[slash at end/-slash\\ at\\ end/] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[not this slash\\/ or this one\\/-not\\ this\\ slash/\\ or\\ this\\ one/] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[/.*/-.*] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[specials ^ and + /[0-9]+/-specials\\ \\^\\ and\\ \\+\\ [0-9]+] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[/a{6}/ but not \\/a{6} with /.*?/ more-a{6}\\ but\\ not\\ /a\\{6\\}\\ with\\ .*?\\ more] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[not \\/, use /\\|?/, not \\/-not\\ /,\\ use\\ \\|?,\\ not\\ /] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[not \\/, use /\\/?/, not \\/-not\\ /,\\ use\\ /?,\\ not\\ /] PASSED [ 91%] >tests/test_transcript.py::test_parse_transcript_expected[lots /\\/?/ more /.*/ stuff-lots\\ /?\\ more\\ .*\\ stuff] PASSED [ 92%] >tests/test_transcript.py::test_transcript_failure PASSED [ 92%] >tests/test_transcript.py::test_transcript_no_file PASSED [ 92%] >tests/test_utils.py::test_strip_quotes_no_quotes PASSED [ 92%] >tests/test_utils.py::test_strip_quotes_with_quotes PASSED [ 92%] >tests/test_utils.py::test_remove_duplicates_no_duplicates PASSED [ 92%] >tests/test_utils.py::test_remove_duplicates_with_duplicates PASSED [ 92%] >tests/test_utils.py::test_unicode_normalization PASSED [ 92%] >tests/test_utils.py::test_unicode_casefold PASSED [ 92%] >tests/test_utils.py::test_alphabetical_sort PASSED [ 93%] >tests/test_utils.py::test_try_int_or_force_to_lower_case PASSED [ 93%] >tests/test_utils.py::test_natural_keys PASSED [ 93%] >tests/test_utils.py::test_natural_sort PASSED [ 93%] >tests/test_utils.py::test_is_quoted_short PASSED [ 93%] >tests/test_utils.py::test_is_quoted_yes PASSED [ 93%] >tests/test_utils.py::test_is_quoted_no PASSED [ 93%] >tests/test_utils.py::test_quote_string PASSED [ 93%] >tests/test_utils.py::test_quote_string_if_needed_yes PASSED [ 93%] >tests/test_utils.py::test_quote_string_if_needed_no PASSED [ 93%] >tests/test_utils.py::test_stdsim_write_str PASSED [ 94%] >tests/test_utils.py::test_stdsim_write_bytes PASSED [ 94%] >tests/test_utils.py::test_stdsim_buffer_write_bytes PASSED [ 94%] >tests/test_utils.py::test_stdsim_buffer_write_str PASSED [ 94%] >tests/test_utils.py::test_stdsim_read PASSED [ 94%] >tests/test_utils.py::test_stdsim_read_bytes PASSED [ 94%] >tests/test_utils.py::test_stdsim_clear PASSED [ 94%] >tests/test_utils.py::test_stdsim_getattr_exist PASSED [ 94%] >tests/test_utils.py::test_stdsim_getattr_noexist PASSED [ 94%] >tests/test_utils.py::test_stdsim_pause_storage PASSED [ 95%] >tests/test_utils.py::test_stdsim_line_buffering PASSED [ 95%] >tests/test_utils.py::test_proc_reader_send_sigint PASSED [ 95%] >tests/test_utils.py::test_proc_reader_terminate PASSED [ 95%] >tests/test_utils.py::test_context_flag_bool PASSED [ 95%] >tests/test_utils.py::test_context_flag_exit_err PASSED [ 95%] >tests/test_utils.py::test_truncate_line PASSED [ 95%] >tests/test_utils.py::test_truncate_line_already_fits PASSED [ 95%] >tests/test_utils.py::test_truncate_line_with_newline PASSED [ 95%] >tests/test_utils.py::test_truncate_line_width_is_too_small PASSED [ 96%] >tests/test_utils.py::test_truncate_line_wide_text PASSED [ 96%] >tests/test_utils.py::test_truncate_line_split_wide_text PASSED [ 96%] >tests/test_utils.py::test_truncate_line_tabs PASSED [ 96%] >tests/test_utils.py::test_truncate_with_style PASSED [ 96%] >tests/test_utils.py::test_align_text_fill_char_is_tab PASSED [ 96%] >tests/test_utils.py::test_align_text_with_style PASSED [ 96%] >tests/test_utils.py::test_align_text_width_is_too_small PASSED [ 96%] >tests/test_utils.py::test_align_text_fill_char_is_too_long PASSED [ 96%] >tests/test_utils.py::test_align_text_fill_char_is_newline PASSED [ 96%] >tests/test_utils.py::test_align_text_has_tabs PASSED [ 97%] >tests/test_utils.py::test_align_text_blank PASSED [ 97%] >tests/test_utils.py::test_align_text_wider_than_width PASSED [ 97%] >tests/test_utils.py::test_align_text_wider_than_width_truncate PASSED [ 97%] >tests/test_utils.py::test_align_text_wider_than_width_truncate_add_fill PASSED [ 97%] >tests/test_utils.py::test_align_text_has_unprintable PASSED [ 97%] >tests/test_utils.py::test_align_text_term_width PASSED [ 97%] >tests/test_utils.py::test_align_left PASSED [ 97%] >tests/test_utils.py::test_align_left_multiline PASSED [ 97%] >tests/test_utils.py::test_align_left_wide_text PASSED [ 98%] >tests/test_utils.py::test_align_left_wide_fill PASSED [ 98%] >tests/test_utils.py::test_align_left_wide_fill_needs_padding PASSED [ 98%] >tests/test_utils.py::test_align_center PASSED [ 98%] >tests/test_utils.py::test_align_center_multiline PASSED [ 98%] >tests/test_utils.py::test_align_center_wide_text PASSED [ 98%] >tests/test_utils.py::test_align_center_wide_fill PASSED [ 98%] >tests/test_utils.py::test_align_center_wide_fill_needs_right_padding PASSED [ 98%] >tests/test_utils.py::test_align_center_wide_fill_needs_left_and_right_padding PASSED [ 98%] >tests/test_utils.py::test_align_right PASSED [ 99%] >tests/test_utils.py::test_align_right_multiline PASSED [ 99%] >tests/test_utils.py::test_align_right_wide_text PASSED [ 99%] >tests/test_utils.py::test_align_right_wide_fill PASSED [ 99%] >tests/test_utils.py::test_align_right_wide_fill_needs_padding PASSED [ 99%] >tests/test_utils.py::test_str_to_bool_true PASSED [ 99%] >tests/test_utils.py::test_str_to_bool_false PASSED [ 99%] >tests/test_utils.py::test_str_to_bool_invalid PASSED [ 99%] >tests/test_utils.py::test_str_to_bool_bad_input PASSED [ 99%] >tests/test_utils_defining_class.py::test_get_defining_class PASSED [100%] > >=================================== FAILURES =================================== >___________________________ test_not_in_main_thread ____________________________ > >base_app = <cmd2.cmd2.Cmd object at 0x7fb29c944b50> >capsys = <_pytest.capture.CaptureFixture object at 0x7fb29c932280> > > def test_not_in_main_thread(base_app, capsys): > import threading > cli_thread = threading.Thread(name='cli_thread', target=base_app.cmdloop) > > cli_thread.start() > cli_thread.join() > out, err = capsys.readouterr() >> assert "cmdloop must be run in the main thread" in err >E AssertionError: assert 'cmdloop must be run in the main thread' in '' > >tests/test_cmd2.py:57: AssertionError >=============================== warnings summary =============================== >tests/test_cmd2.py::test_not_in_main_thread > /usr/lib/python3.8/site-packages/_pytest/threadexception.py:75: PytestUnhandledThreadExceptionWarning: Exception in thread cli_thread > > Traceback (most recent call last): > File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner > self.run() > File "/usr/lib/python3.8/threading.py", line 870, in run > self._target(*self._args, **self._kwargs) > File "/var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0/cmd2/cmd2.py", line 4607, in cmdloop > raise RuntimeError("cmdloop must be run in the main thread") > RuntimeError: cmdloop must be run in the main thread > > warnings.warn(pytest.PytestUnhandledThreadExceptionWarning(msg)) > >-- Docs: https://docs.pytest.org/en/stable/warnings.html >=========================== short test summary info ============================ >FAILED tests/test_cmd2.py::test_not_in_main_thread - AssertionError: assert '... >=================== 1 failed, 930 passed, 1 warning in 3.93s =================== > * ERROR: dev-python/cmd2-1.4.0::gentoo failed (test phase): > * Tests fail with python3.8 > * > * Call stack: > * ebuild.sh, line 125: Called src_test > * environment, line 3147: Called virtx 'distutils-r1_src_test' > * environment, line 3932: Called nonfatal 'distutils-r1_src_test' > * isolated-functions.sh, line 100: Called distutils-r1_src_test > * environment, line 1343: Called _distutils-r1_run_foreach_impl 'python_test' > * environment, line 559: Called python_foreach_impl 'distutils-r1_run_phase' 'python_test' > * environment, line 2751: Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' > * environment, line 2183: Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test' > * environment, line 2181: Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'python_test' > * environment, line 916: Called distutils-r1_run_phase 'python_test' > * environment, line 1280: Called python_test > * environment, line 3105: Called die > * The specific snippet of code: > * pytest -vv || die "Tests fail with ${EPYTHON}" > * > * If you need support, post the output of `emerge --info '=dev-python/cmd2-1.4.0::gentoo'`, > * the complete build log and the output of `emerge -pqv '=dev-python/cmd2-1.4.0::gentoo'`. > * The complete build log is located at '/var/log/emerge-log/build/dev-python/cmd2-1.4.0:20210105-234509.log'. > * For convenience, a symlink to the build log is located at '/var/tmp/portage/dev-python/cmd2-1.4.0/temp/build.log'. > * The ebuild environment file is located at '/var/tmp/portage/dev-python/cmd2-1.4.0/temp/environment'. > * Working directory: '/var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0' > * S: '/var/tmp/portage/dev-python/cmd2-1.4.0/work/cmd2-1.4.0'
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 764074
: 681466