Changelog

10.1.1

  • [FIX] Add check for the existence of ssh control path directory

  • [FIX] Handle is_installed for rpm package when rpm database is corrupted

  • [FIX] Fix service.exists

10.1.0

  • [NEW] Add Interface.link property

  • [FIX] Make file properties follow symlinks

  • [FIX] Require pytest>=6 and use future annotations for pytest<7 compatibility

10.0.0

  • [FIX] Ansible: Fix for missing group names in get_variables()

  • [FIX] testinfra/modules/blockdevice: Don’t fail on stderr

  • [DOC] Extend and show the documentation of CommandResult

  • [FIX] Extend list of valid suffixes for systemd units

  • [DOC] Add missing Environment doc section

  • [MISC] Define types for plugin.py

  • [FIX] Missing RHEL distribution in package module

  • [NEW] Add brew support in package module

  • [NEW] Add Service.exists

  • [MISC] Make CommandResult a dataclass

9.0.0

  • [BREAKING] pytest-testinfra now require python >= 3.9

  • [BREAKING] Drop deprecated module PipPackage

  • [NEW] Add support for the SSH ControlPath connection sharing option (#713)

  • [FIX] Retry SSH on ConnectionResetError (#708)

  • [FIX] List openSUSE Leap and Tumbleweed explicitly as rpm based distributions

  • [FIX] Make group name mandatory in group module

8.1.0

  • [NEW] Add Windows support for File and Service modules

  • [NEW] Add File.is_executable property

8.0.0

  • [NEW] Add Group.members attribute

  • [NEW] Add File.inode attribute

  • [NEW] Add Interface.routes() method

  • [NEW] Add Docker.is_restarting attribute

  • [FIX] Fix possible error in Interface.default()

  • [FIX] Fix busybox detection in Process module

  • [FIX] Fix possible KeyError in SysInfo module

  • [BREAKING] Drop support for python 3.7

7.0.1

  • [FIX] Fix command -v compatibility with dash shell

7.0.0

  • [NEW] Improved ssh config support in Paramiko backend

  • [NEW] Add chroot backend

  • [NEW] Add support for Manjaro-Linux

  • [NEW] Add support for Cloudlinux

  • [BREAKING] Drop support for python 3.6 which is EOL

6.8.0

  • [NEW] Add support for AlmaLinux and RockyLinux

6.7.0

  • [NEW] Handle ansible_connection type community.docker.docker

  • [NEW] add ssh_extra_args option

6.6.0

  • [NEW] Allow to test for user password expiration

  • [NEW] Handle ANSIBLE_SSH_COMMON_ARGS and ANSIBLE_SSH_EXTRA_ARGS environment variables for ansible connections

  • [FIX] Fix encoding issue in salt connections

  • [FIX] Fix AttributeError when “command” is not available and fallback to “which”

6.5.0

  • Fallback to which when “command -v” fails

  • Use realpath by default to resolve symlinks instead of “readlink -f”

  • ansible: Support environment variables

  • Force package module to resolve to RpmPackage on Fedora

  • Fix new versions of supervisor may exit with status != 0

  • Eventually decode ansible output when it’s not ascii

  • Either use python3 or python to get remote encoding

6.4.0

  • Implement Interface names and default (#615)

  • Implement Service.systemd_properties (#612)

6.3.0

  • Fix #451 for use with pytest -p no:terminal

  • Add client_version() and server_version() and version() to docker module.

6.2.0

  • Fix #590: Systeminfo doesn’t resolve Windows correctly (#592)

  • First implementation of network namespaces in addr module (#596)

  • pip check support in PipPackage module (#605)

  • pip refactoring: implementation of installed and version (#606)

  • Allow to specify supervisorctl and supervisord.conf paths (#536)

6.1.0

  • Fix wrong package module on CentOS having dpkg tools installed #570 (#575)

  • Deduplicate hosts returned by get_backends() (#572)

  • Use /run/systemd/system/ to detect systemd (fixes #546)

  • Use ssh_args from ansible.cfg

  • Require python >= 3.6

  • Fix ValueError with python 3.8+ when using –nagios option.

6.0.0

  • Breaking change: testinfra has moved to the https://github.com/pytest-dev/ organization. Project on PyPi is renamed as pytest-testinfra. A dummy testinfra will make the transition, but you should rename to pytest-testinfra in your requirements files.

5.3.1

5.3.0

  • Add is_masked property on systemd service

5.2.2

  • iptables: use -w option to wait for iptables lock when running in parallel with pytest-xdist.

5.2.1

  • Fix documentation build

5.2.0

  • Allow kubeconfig context to be supplied in kubernetes backend

  • Drop file.__ne__ implementation and require python >= 3.5

5.1.0

  • Use remote_user and remote_port in ansible.cfg

  • Add arch (architecture) attribute to system_info module

5.0.0

  • Breaking change: host.file().listdir() is now a method

4.1.0

  • Pass extra arguments to ansible CLI via host.ansible()

  • New method host.file.listdir() to list items in a directory.

4.0.0

  • Drop python2 support

3.4.0

  • Add podman backend and module

  • WARNING: this will be the latest testinfra version supporting python2, please upgrade to python3.

3.3.0

  • Add extras for backend dependencies (#454)

  • Various enhancements of kitchen integration documentation

  • ansible backend now support “password” field from ansible inventory

  • New backend “openshift”

3.2.1

  • Fix Process module when working with long strings (username, …) #505

3.2.0

  • New module “environment” for getting remote environment variables

  • New module “block_device” exposing block device information

  • Add a global flag –force-ansible to the command line

  • Raise an error in case of missing ansible inventory file

  • Fix an escape issue with ansible ssh args set inventory or configuration file

3.1.0

  • ssh connections uses persistent connections by default. You can disable this by passing controlpersist=0 to the connections options.

  • ansible ssh connections now use ssh backend instead of paramiko. ansible_ssh_common_args and ansible_ssh_extra_args are now taking in account.

  • Add a new ansible connection options “force_ansible”, when set to True, testinfra will always call ansible for all commands he need to run.

  • Handle all ansible connections types by setting force_ansible=True for connections which doesn’t have a testinfra equivalent connection (for example “network_cli”).

3.0.6

  • Issue full command logging using DEBUG log level to avoid logging sensible data when log level is INFO.

  • Fix possible crash when parsing ansible inventories #470

  • Support using alternative kubeconfig file in kubectl connections #460

  • Support parsing ProxyCommand from ssh_config for paramiko connections

3.0.5

  • Set default timeout to 10s on ssh/paramiko connections

  • Add support for ansible inventory parameter ansible_private_key_file

3.0.4

  • Add support for ansible lxc and lxd connections

3.0.3

  • Fix paramiko parsing RequestTTY from ssh configs

  • Re-add “groups” key from ansible.get_variables() to be backward compatible with testinfra 2.X

3.0.2

  • Fix ansible with no inventory resolving to “localhost”

  • Fix support for ansible 2.8 with no inventory

  • Fix ansible/paramiko which wasn’t reading hosts config from ~/.ssh/config

  • Allow to pass –ssh-config and –ssh-identity-file to ansible connection

3.0.1

  • Fix parsing of ipv6 addresses for paramiko, ssh and ansible backends.

  • Fix –connection=ansible invocation when no hosts are provided

3.0.0

  • New ansible backend fixing support for ansible 2.8 and license issue. See https://github.com/philpep/testinfra/issues/431 for details. This make ansible using testinfra native backends and only works for local, ssh or docker connections. I you have others connection types or issues, please open a bug on https://github.com/philpep/testinfra/issues/new

  • Windows support is improved. “package” module is handled with Chocolatey and there’s support for the “user” module.

2.1.0

  • docker: new get_containers() classmethod

  • socket: fix parsing of ipv6 addresses with new versions of ss

  • service: systemd fallback to sysv when “systemctl is-active” is not working

2.0.0

  • Add addr module, used to test network connectivity

  • Drop deprecated “testinfra” command, you should use “py.test” instead

  • Drop deprecated top level fixtures, access them through the fixture “host” instead.

  • Drop support for ansible <= 2.4

1.19.0

  • Add docker module

  • Fix pytest 4 compatibility

1.18.0

  • Allow to urlencode character in host specification “user:pass@host” (#387)

  • Fix double logging from both pytest and testinfra

  • Drop support for python 2.6

  • Allow to configure timeouts for winrm backend

1.17.0

  • Add support for ansible “become” user in ansible module

  • Add failed/succeeded property on run() output

1.16.0

  • packaging: Use setuptools_scm instead of pbr

  • iptables: add ip6tables support

  • sysctl: find sysctl outside of PATH (/sbin)

1.15.0

  • Fix finding ss and netstat command in “sbin” paths for Centos (359)

  • Add a workaround for https://github.com/pytest-dev/pytest/issues/3542

  • Handle “starting” status for Service module on Alpine linux

  • Fix no_ssl and no_verify_ssl options for WinRM backend

1.14.1

  • Fix multi-host test ordering (#347), regression introduced in 1.13.1

  • Fix Socket on OpenBSD hosts (#338)

1.14.0

  • Add a new lxc backend

  • Socket: fix is_listening for unix sockets

  • Add namespace and container support for kubernetes backend

  • Add a cache of parsed ansible inventories for ansible backend

  • Service: fix service detection on Centos 6 hosts

  • File: implement file comparison with string paths

1.13.1

  • package: fix is_installed and version behavior for uninstalled packages (#321 and #326)

  • ansible: Use predictibles test ordering when using pytest-xdist to fix random test collections errors (#316)

1.13.0

  • socket: fix detection of udp listening sockets (#311)

  • ssh backend: Add support for GSSAPI

1.12.0

  • ansible: fix compatibility with ansible 2.5

  • pip: fix compatibility with pip 10 (#299)

1.11.1

  • Socket: fix error with old versions of ss without the –no-header option (#293)

1.11.0

  • Fix bad error reporting when using ansible module without ansible backend (#288)

  • Socket: add a new implementation using ss instead of netstat (#124)

  • Add service, process, and systeminfo support for Alpine (#283)

1.10.1

  • Fix get_variables() for ansible>=2.0,<2.4 (#274)

  • Paramiko: Use the RequireTTY setting if specified in a provided SSHConfig (#247)

1.10.0

  • New iptables module

1.9.1

  • Fix running testinfra within a suite using doctest (#268)

  • Service: add is_valid method for systemd

  • Fix file.linked_to() for Mac OS

1.9.0

  • Interface: allow to find ‘ip’ command ousite of PATH

  • Fix –nagios option with python 3

1.8.0

  • Deprecate testinfra command (will be dropped in 2.0), use py.test instead #135

  • Handle –nagios option when using py.test command

1.7.1

  • Support for ansible 2.4 (#249)

1.7.0

  • Salt: allow specify config directory (#230)

  • Add a WinRM backend

  • Socket: ipv6 sockets can handle ipv4 clients (#234)

  • Service: Enhance upstart detection (#243)

1.6.5

  • Service: add is_enabled() support for OpenBSD

  • Add ssh identity file option for paramiko and ssh backends

  • Expand tilde (~) to user home directory for ssh-config, ssh-identity-file and ansible-inventory options

1.6.4

  • Service: Allow to find ‘service’ command outside of $PATH #211

  • doc fixes

1.6.3

  • Fix unwanted deprecation warning when running tests with pytest 3.1 #204

1.6.2

  • Fix wheel package for 1.6.1

1.6.1

  • Support ansible 2.3 with python 3 (#197)

1.6.0

1.5.5

  • backends: Fix ansible backend with ansible >= 2.3 (#195)

1.5.4

  • backends: fallback to UTF-8 encoding when system encoding is ASCII.

  • Service: fix is_running() on systems using Upstart

1.5.3

  • Sudo: restore backend command in case of exceptions

1.5.2

  • Honnor become_user when using the ansible backend

1.5.1

  • Add dependency on importlib on python 2.6

1.5.0

  • New kubectl backend

  • Command: check_output strip carriage return and newlines (#164)

  • Package: rpm improve getting version() and release()

  • User: add gecos (comment) field (#155)

1.4.5

  • SystemInfo: detect codename from VERSION_CODENAME in /etc/os-release (fallback when lsb_release isn’t installed).

  • Package: add release property for rpm based systems.