=========
Changelog
=========

10.2.2
======

* [FIX] Include files required to run tests in sdist

10.2.1
======

* [FIX] Fix releasing to pypi

10.2.0
======

* [NEW] Query all usernames and group names
* [FIX] Prevent Paramiko deadlock when test sends more than 2MB to stdout
* [FIX] Follow changes in ansible shell module
* [FIX] Add 4 to the expected exit code when running "systemctl is-active"
* [FIX] Fix KeyError in MountPoint.__repr__() if mount does not exist
* [DOC] Use pytest command instead of py.test
* [DOC] Extend backend documentation with a general host spec section
* [MISC] Also run lint for py 3.12 and 3.13
* [MISC] Switch packaging to use hatchling
* [MISC] Drop unused extra "args" argument to run_winrm()
* [MISC] Use ruff format instead of black/isort
* [MISC] Use ruff instead of flake8
* [MISC] Use f-string instead of str.format()
* [MISC] Use builtin dict, list and tuple for typing
* [MISC] Use python 3.11 during tests
* [MISC] Fix salt tests
* [MISC] Fix tests failing due to expiration date passed
* [MISC] Remove crypt lib from testing

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
=====

* Fix newly introduced is_masked property on systemd service https://github.com/philpep/testinfra/pull/569

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
=====

* New 'host' fixture as a replacement for all other fixtures.
  See https://testinfra.readthedocs.io/en/latest/modules.html#host
  (Other fixtures are deprecated and will be removed in 2.0 release).


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.
