OBSOLETE: Release news of newer versions are contained in the git tag descriptions.

## [0.28.1] - 2022-06-28
- Again works on RHEL/CentOS 8 (0.27 broke there), now in CI
- Avoid glib GI dependency for main dbusmock, for running in virtualenv (thanks Allison Karlitskaya)

## [0.28.0] - 2022-06-19
- Drop unmaintained and broken accountsservice template
- testcase: Throw an error when spawning a well-known name that exists (thanks Benjamin Berg)
- mockobject: Allow sending signals with extra details (thanks Peter Hutterer)

## [0.27.5] - 2022-04-05
- bluez and accountsservice templates: Drop default arguments from D-Bus methods (thanks Simon McVittie)

## [0.27.4] - 2022-04-04
- Fix D-Bus signature detection regression from 0.27.0 (thanks Peter Hutterer) (#118)

## [0.27.3] - 2022-03-22
- packit: Fix file name to sync

## [0.27.2] - 2022-03-22
- packit: Really fix Fedora dist-git syncing

## [0.27.1] - 2022-03-22
- packit: Fix Fedora dist-git syncing

## [0.27.0] - 2022-03-22
- Do not register standard session service directories, add API to enable selected services (thanks Benjamin Berg)
- Log static method calls from templates (thanks Peter Hutterer)

## [0.26.1] - 2022-02-25
- Fix README content type to Markdown, to fix releasing to PyPi

## [0.26.0] - 2022-02-25
- logind template: Add locking API (thanks Andy Holmes)
- bluez5 template: Add RemoveDevice() and RemoveAdapterWithDevices() methods,
  fix properties (thanks Bastien Nocera)
- Documentation improvements, particularly wrt. raising errors

## [0.25.0] - 2021-12-25
- bluez template: Implement adapter discovery, connect, disconnect, and removal
  (thanks Bastien Nocera)
- Fix changing array properties (thanks Jonas Ådahl)
- Fix CLI upower tests (thanks Marco Trevisan)
- Add testing and Fedora updating through packit

## [0.24.1] - 2021-10-27
- Do not register standard D-Bus service directories (Thanks Benjamin Berg)
- templates: Add IIO Sensors Proxy support (Thanks Marco Trevisan)
- Fix importlib module import (Thanks Marco Trevisan)
- Clean up code for most recent pylint version

## [0.24.0] - 2021-08-28
- Add Add power-profiles-daemon template (Thanks Bastien Nocera)
- logind: Implement Inhibit and ListInhibitors (Thanks to Benjamin Berg)
- Fix new complaints from pylint 2.9

## [0.23.1] - 2021-06-15
- Fix tests for Python 3.10

## [0.23.0] - 2021-03-24
- DBusMockObject: Add UpdateProperties() method (Thanks to Jonas Ådahl)
- DBusTestCase: Add bus override argument to spawn_server_template, to use
  templates on either system or session bus; add corresponding --session CLI
  option
- bluez template: Implement Pair() method on the Device interface and the
  AgentManager1 interface (Thanks to Bastien Nocera)
- polkit template: Implement RegisterAuthenticationAgent() (Thanks to Jonas Ådahl)
- Add accountsservice template (Thanks to Marco Trevisan)

## [0.22.0] - 2021-01-02
- NetworkManager template: Fix connecting to wifi
- NetworkManager template: Add Reload() method
- tests: Replace nose test runner with standard unittest
- setup.py: Drop deprecated `test_suite`, run tests through
  `python3 -m unittest` directly

## [0.21.0] - 2021-01-01
- Add type annotations to the whole API
- Drop obsolete ConsoleKit and bluez4 templates/tests
- upower template: Drop support for 0.9 API

## [0.20.0] - 2020-12-19
- NetworkManager template: Handle NetworkingEnable
- NetworkManager template: AddConnectionUnsaved
- Drop support for Python 2

## [0.19] - 2020-01-09
- NetworkManager template: Add "StateReason" property and active connection ID
- Add low-memory-monitor template

## [0.18.3] - 2019-09-08
- Fix timeouts for loaded machines and parallel tests
- Fix tests for Python 3.8

## [0.18.2] - 2019-02-23
- test: Adjust for changed version output format in systemd 241

## [0.18.1] - 2018-11-11
- test: Fix failures with systemd 239 in chroots

## [0.18] - 2018-07-01
- logind template: Add support for suspend-then-hibernate
- NetworkManager template: Add GetConnectionByUuid method
- bluez template: Add PairDevice() 'class_' parameter
- Fix logging of unicode strings in Python 2
- Adjust logind and timedated tests to systemd 239 (Debian #902602)

## [0.17.2] - 2018-03-01
- NetworkManager template: Add GetDeviceByIpIface().
- Move release tarballs from Launchpad to
  <https://github.com/martinpitt/python-dbusmock/releases>.
  <https://pypi.python.org/pypi/python-dbusmock> remains as usual.

## [0.17.1] - 2018-02-22
- Fix NetworkManager tests due to name changes from 802-11-wireless to wifi.

## [0.17] - 2017-11-07
- Call dbus-daemon directly instead of dbus-launch. (Debian #836053)
- Fix DBusTestCase.stop_dbus() to actually enforce a timeout. Thanks to Renat
  Galimov!
- Fix test_timedated for changed timedatectl output format in systemd 235.

## [0.16.9] - 2017-06-19
- NetworkManager template: Fix type of 'State' property in AddActiveConnection()
- Fix BlueZ tests to work with Python 2 again.

## [0.16.8] - 2017-06-12
- bluez5 template tests: Fix failure of test_no_adapters with BlueZ 5.45.
  (LP: #1696480)
- tests: Move from pep8 to pycodestyle for static code tests.
- NetworkManager: Add ObjectManager, to work with NM ≥ 1.6.

## [0.16.7] - 2016-09-12
- bluez5 template tests: Fix failure on "Waiting to connect to bluetoothd"
  messages.

## [0.16.6] - 2016-06-19
- upower template tests: Fix version comparison.

## [0.16.5] - 2016-06-19
- Ofono template: generate unique ICCIDs (CardIdentifier).

## [0.16.4] - 2016-06-07
- Ofono template: Add missing properties to SimManager interface.

## [0.16.3] - 2015-12-14
- NetworkManager template test: Make the test run standalone. Thanks Pete
  Woods.

## [0.16.2] - 2015-12-09
- NetworkManager template: Fix connection settings Updated signal emitted by
  wrong object.
- NetworkManager template: Handle empty device at connection activation.
- NetworkManager template: Implement secrets management in settings.

## [0.16.1] - 2015-10-22
- NetworkManager template: Fix indexing bug in SettingsAddConnection. Thanks
  Pete Woods.

## [0.16] - 2015-10-08
- NetworkManager template: Generate a new unused name in connection activation
  instead of just using the access point name. Thanks Pete Woods for the
  original patch!
- Allow the passing of template parameters via the command-line as JSON
  strings. Thanks Pete Woods.

## [0.15.3] - 2015-09-16
- NetworkManager template: Add missing properties to ethernet device and
  active connection. Thanks Pete Woods.
- Quiesce irrelevant PEP-8 errors with pep8 1.6.

## [0.15.2] - 2015-06-11
- test_ofono: Test fields which don't get obfuscated with Ubuntu's latest
  ofono (See LP #1459983). Thanks Iain Lane.
- timedated template: Add NTPSynchronized property and set it in SetNTP(), to
  also work with systemd 220.

## [0.15.1] - 2015-05-12
- SECURITY FIX: When loading a template from an arbitrary file through the
  AddTemplate() D-Bus method call or DBusTestCase.spawn_server_template()
  Python method, don't create or use Python's *.pyc cached files. By tricking
  a user into loading a template from a world-writable directory like /tmp, an
  attacker could run arbitrary code with the user's privileges by putting a
  crafted .pyc file into that directory. Note that this is highly unlikely to
  actually appear in practice as custom dbusmock templates are usually shipped
  in project directories, not directly in world-writable directories.
  Thanks to Simon McVittie for discovering this!
  (LP: #1453815, CVE-2015-1326)

## [0.15] - 2015-05-08
- NetworkManager template: Restore nm-specific PropertiesChanged signal
- NetworkManager template: Add DeactivateConnection(),
  Settings.AddConnection(), Settings.Connection.Update(), and
  Settings.Connection.Delete() methods. Also allow Connections with
  autoconnect, added using AddConnection, to be automatically connected by the
  first found device, roughly like NetworkManager itself does. Thanks Jonas
  Grønås Drange!
- NetworkManager template: Fix broken exception in AddWiFiConnection.
- NetworkManager template: Set RsnFlags to have the same value as WpaFlags.
  Thanks Pete Woods!

## [0.14] - 2015-03-30
- Move project hosting to github, update README.rst.
- urfkill template: Return boolean from block() method, as the original
  urfkill does. Thanks Jonas Grønås Drange!
- Correctly instantiate DBusExceptions so that they get a proper name and
  message (issue #3)
- ofono template: Fix SubscriberIdentity property type
- Emit PropertiesChanged signal when Set()ing properties.
- urfkill template: Return boolean from Block() and FlightMode() methods
- ofono template: Add ConnectionManager interface.
- NetworkManager template: Much more complete support for mocking access
  points and connections.

## [0.13] - 2015-02-27
- Add urfkill template. Thanks Jussi Pakkanen!

## [0.12] - 2015-01-17
- upower template: Add SetDeviceProperties() convenience method for changing
  upower device properties. Thanks Charles Kerr!

## [0.11.4] - 2014-09-22
- upower template: Go back to using type 's' for Device* signal arguments for
  upower 0.9. The older library does not get along with 'o'. (Regression in
  0.11.2)

## [0.11.3] - 2014-09-19
- Fix test suite crash if loginctl is not installed.

## [0.11.2] - 2014-09-19
- upower template: Fix type of Device* signal arguments to be 'o', not 's'.
  Thanks Iain Lane.
- ofono template: Add org.ofono.SimManager interface. Thanks Jonas Grønås
  Drange.
- bluez5 template: Fix the type of the 'Transferred' property. Thanks Philip
  Withnall.
- networkmanager template: Fix the "FAILED" state value to be 120, not 12.
  Thanks Jonas Grønås Drange.
- bluez5 tests: Accept devices in state "not available" (or other states) as
  well.
- timedated and logind tests: Adjust to also accept output format of
  systemd 215.

## [0.11.1] - 2014-08-08
- Rename bluez test classes to TestBlueZ4 and TestBlueZ5, to tell them apart
  in the output.
- logind template: Fix type of IdleSinceHint property, and add
  IdleSinceHintMonotonic and IdleActionUSec properties. (LP: #1348437)
- bluez4 template: Fix settings properties in StartDiscovery/StopDiscovery.
  Thanks to Mathieu Trudel-Lapierre.
- NetworkManager template: Add "Devices" and "AccessPoints" properties of
  NetworkManager 0.9.10. (LP: #1328579)
- NetworkManager template: Fix the types of the AccessPoint properties, and
  add some more properties.
- Adjust NetworkManager template tests for changed strings in NM 0.9.10.

## [0.11] - 2014-07-24
- ofono: Fix GetOperators() to only apply to its own modem, not all modems.
  Thanks to Jonas Grønås Drange.
- Add template for BlueZ 4. Thanks to Mathieu Trudel-Lapierre!

## [0.10.3] - 2014-07-16
- Fix upower tests to work for upower 0.99 in environments without a system
  D-Bus.

## [0.10.2] - 2014-07-16
- ofono: Make Scan() do the same as GetOperators(). Thanks Iain Lane.
- README.rst: Clarify that the "True" argument to get_dbus() means the system
  bus.
- Fix code to be compliant with pep8 1.5.
- Fix TestCLI.test_template_system test with upower 0.99. (LP: #1330037)
- ofono template: Support adding a second modem with AddModem().
  (LP: #1340590)

## [0.10.1] - 2014-01-30
- Move code from bzr to git, adjust README.rst, do-release, and other files
  accordingly.
- timedated template: Emit PropertiesChanged when setting properties. Thanks
  Iain Lane.

## [0.10] - 2013-12-18
- Add dynamic properties to introspection XML, to make mocked properties work
  with Qt's property support, d-feet, and other tools. Thanks Iain Lane!
- Fix frequent KeyError() when calling static methods from a template.
  Regression from 0.9.
- Support having the same method name on different D-Bus interfaces.
- Add ofono template with support for the Manager, VoiceCallManager, and
  NetworkRegistration/NetworkOperator interfaces.
- Add template for systemd's timedated. Thanks Iain Lane!

## [0.9.2] - 2013-12-13
- upower template: Emit DeviceAdded when adding new a new AC adapter or
  battery. Thanks Iain Lane!
- Fix ResourceWarnings in test suite.

## [0.9.1] - 2013-12-10
- Fix UnicodeDecodeError in NEWS parsing when trying to build with a C locale.
  Thanks Dmitry Shachnev.

## [0.9] - 2013-11-29
- Make static template methods appear in introspection. Thanks Philip
  Whitnall! (LP: #1250096)
- Add support for the D-Bus ObjectManager interface. This can now be enabled
  in templates (IS_OBJECT_MANAGER = True) or the CLI (--is-object-manager/-m).
  Thanks Philip Whitnall!
- Add Reset() mock interface method to reset that object’s state (including
  removing all its sub-objects) as if the object or template had been
  destroyed and re-created. This is intended for use at the end of test cases
  to reset state before the next test case is run, as an alternative to
  killing python-dbusmock and re-starting it. Thanks Philip Whitnall!
- logind template: Fix return value of CanSuspend() and related methods,
  calling them previously caused a crash.
- Don't close the log file multiple times if it is shared between objects.
  Thanks Philip Whitnall!
- Log calls to Get(), GetAll(), and Set().
- Add templates for BlueZ 5 and BlueZ-OBEX. These templates are moderately
  well featured, though currently targeted exclusively at testing OBEX vCard
  transfers from phones to computers. Thanks Philip Whitnall!

## [0.8.1] - 2013-11-11
- Fix test failure if the "upower" tool is not installed.
- Fix bad upower test which assumed a locale with a comma decimal separator.

## [0.8] - 2013-11-08
- upower template: Change default daemon version to "0.9", and fix tests to
  work with both upower 0.9 and 1.0 client tool.
- upower template: Provide 1.0 API if DaemonVersion property/template
  parameter gets set to >= "0.99". (LP: #1245955)
- upower template: Add SetupDisplayDevice() method on the mock interface to
  conveniently configure all defined properties of the DisplayDevice. Only
  available when using the 1.0 API. (LP: #1245955)

## [0.7.2] - 2013-08-30
- Add optional "timeout" argument to DBusTestCase.wait_for_bus_object().
  (LP: #1218318)
- DBusTestCase.start_system_bus(): Make the fake bus look more like a real
  system bus by specifying a configuration file with type "system".

## [0.7.1] - 2013-08-02
- Handle the "Disconnected" signal only if it comes from the D-Bus object, to
  avoid accidentally reacting to other signals (like from BlueZ). Thanks
  Lucas De Marchi.

## [0.7] - 2013-07-30
- Accept *.py files for the--template command line option, similar to
  AddTemplate(). Thanks Emanuele Aina.
- Pass log file to objects created with AddObject(). Thanks Emanuele Aina.
- NetworkManager template: Add new method AddWiFiConnection(), to simulate a
  connection associated to a previously added device (with AddWiFiDevice()).
  Thanks Pete Woods.

## [0.6.3] - 2013-06-13
- Drop "can-suspend" and "can-hibernate" checks from upower template test.
  upower 1.0 deprecates this functionality, and defaults to not building it.

## [0.6.2] - 2013-06-13
- Fix test_api.TestSubclass test to work without an existing session D-Bus.

## [0.6.1] - 2013-06-13
- Add dbusmock.__version__ attribute, as per PEP-0396.
- Fix not being able to inherit from DBusMockObject. Thanks Lucas De Marchi!
- Allow subclassed DBusMockObject constructors to specify props arguments as
  None.
- Fix failing notification-daemon tests for too old libnotify. (LP: #1190208)
- notification_daemon template: Generate new IDs for Notify() calls with an
  input ID of 0. (LP: #1190209 part 1)
- notification_daemon template: Send NotificationClosed signal in
  CloseNotification() method for valid IDs. (LP: #1190209 part 2)

## [0.6] - 2013-03-20
- Emit MethodCalled() signal on the DBusMock interface, as an alternative way
  of verifying method calls. Thanks Lars Uebernickel.
- DBusMockObject.AddTemplate() and DBusTestCase.spawn_server_template() can
  now load local templates by specifying a path to a *.py file as template
  name. Thanks Lucas De Marchi.
- Quit mock process if the D-Bus it connected to goes down. (LP: #1156561)
- Support Get() and GetAll() with empty interface names, default to main
  interface in this case.
- Add template for systemd's logind.

## [0.5] - 2013-02-03
- upower template: Change LidIsClosed property default value to False.
- Add polkitd template. (LP: #1112551)

## [0.4.0] - 2013-01-21
- Add GetCalls(), GetMethodCalls() and ClearCalls() methods on the mock D-Bus
  interface to query the call log, for cases where parsing stdout is
  inconvenient. Thanks to Robert Bruce Park for the patch! (LP: #1099483)
- Document how to keep internal state in AddMethod().
- Add template for gnome-screensaver. Thanks to Bastien Nocera!
- Fix logging of signal arguments to have the same format as method call
  arguments.

## [0.3.1] - 2013-01-07
- upower template: Set Energy and EnergyFull properties.

## [0.3] - 2012-12-19
- In the logging of mock method calls, log the arguments as well.
- Fix race condition in waiting for mock to get online on the bus, by avoiding
  triggering D-Bus service activation with system-installed services.
- Add "notification_daemon" mock template.

## [0.2.2] - 2012-11-27
- tests: Suppress "nmcli and NetworkManager versions don't match" warning.
- networkmanager template: Add DeviceState enum for easier specification of
  states. Thanks Alberto Ruiz.
- Fix deprecation warnings with PyGObject 3.7.x.

## [0.2.1] - 2012-11-15
- Fix tests to skip instead of fail if NetworkManager or upower are not
  installed.

## [0.2.0] - 2012-11-15
- Turn dbusmock from a module into a package. This is transparent for API
  users, but necessary for adding future subpackages and also makes the code
  more maintainable.
- Run pyflakes and pep8 during test suite, if available.
- Add support for templates: You can now call AddTemplate() on the
  org.freedesktop.DBus.Mock interface to load a template into the mock, or in
  Python, start a server process with loading a template with
  DBusTestCase.spawn_server_template(). Templates set up the common structure
  of these services (their main objects, properties, and methods) so that you
  do not need to carry around this common code, and only need to set up the
  particular properties and specific D-Bus objects that you need. These
  templates can be parameterized for common customizations, and they can
  provide additional convenience methods on the org.freedesktop.DBus.Mock
  interface to provide more abstract functionality like "add a battery".
- Add a first simple "upower" template with convenience methods to add AC and
  battery objects, and change tests/test_upower.py to use it.
- Add a first "networkmanager" template with convenience methods to add
  Ethernet/WiFi devices and access points. Thanks Iftikhar Ahmad!
- Add symbol dbusmock.MOCK_IFACE for 'org.freedesktop.DBus.Mock'.
- Add test cases for command line invocation (python3-m dbusmock ...).

## [0.1.3] - 2012-11-03
- Ship NEWS in release tarballs.

## [0.1.2] - 2012-10-10
- dbusmock.py, EmitSignal(): Convert arguments to the right data types
  according to the signature.
- dbusmock.py, method calls: Convert arguments to the right data types
  according to the signature.
- tests/test_api.py: Check proper handling of signature vs. argument list
  length and/or type mismatch. (LP: #1064836)
- tests/test_upower.py: Add test for handling "DeviceChanged" signal.
- setup.py: Get version from NEWS file.

## [0.1.1] - 2012-10-04
- setup.py: Use README.rst as long description.
- setup.py: Add download URL.
- tests/test_consolekit.py: Skip test if ck-list-sessions is not installed.
- setup.py: Import "multiprocessing" to work around "'NoneType' object
  is not callable" error when running "setup.py test" with python 2.7.

## [0.1] - 2012-10-04
- tests/test_api.py: Add tests for adding existing objects.
- dbusmock.py: Also put first (main) object into the global objects map.
- dbusmock.py: Document global objects map in AddMethod().
- tests/test_upower.py: Silence "No ... property" warnings; the test does not
  create them all.
- dbusmock.py: Fix stopping of local D-Bus daemons for test subclasses.
- dbusmock.py, stop_dbus(): Wait for local D-Bus to be killed, and avoid
  getting SIGTERMed ourselves.
- dbusmock.py: Add AddProperties() method to conveniently add several
  properties to one interface at once. Update upower test case to use this.
- dbusmock.py: Add EmitSignal() method to emit an arbitrary signal on any
  interface.
- Make code compatible with Python 2.7 as well. (LP: #1060278)

## [0.0.3] - 2012-10-01
- tests/test_api.py: Add tests for GetAll()
- wait_for_bus_object(): Poll for Introspect() instead of GetAll(), as some
  services such as gnome-session don't implement GetAll() properly.
- Rename "dbus_mock" module to "dbusmock", to be more consistent with the
  project name and Python module name conventions.
- Support adding properties to different interfaces.
- Support adding methods to different interfaces.

## [0.0.2] - 2012-10-01
- setup.py: Add categories.

## [0.0.1] - 2012-09-28
Initial release.
