Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-kiwi for openSUSE:Factory 
checked in at 2021-10-23 23:13:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-kiwi (Old)
 and      /work/SRC/openSUSE:Factory/.python-kiwi.new.1890 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-kiwi"

Sat Oct 23 23:13:44 2021 rev:85 rq:926893 version:9.24.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-kiwi/python-kiwi.changes  2021-10-16 
22:46:53.380653970 +0200
+++ /work/SRC/openSUSE:Factory/.python-kiwi.new.1890/python-kiwi.changes        
2021-10-23 23:13:53.092978414 +0200
@@ -1,0 +2,68 @@
+Fri Oct 15 10:02:06 CEST 2021 - Marcus Sch??fer <m...@suse.de>
+
+- Bump version: 9.24.0 ??? 9.24.1
+
+-------------------------------------------------------------------
+Thu Oct 14 16:00:27 CEST 2021 - Marcus Sch??fer <m...@suse.de>
+
+- Make sure embedded test exposes the kernel
+
+-------------------------------------------------------------------
+Thu Oct 14 11:27:16 CEST 2021 - Marcus Sch??fer <m...@suse.de>
+
+- Fixed use of LUKS encrypted images with empty pass
+
+  For initial provisioning of LUKS encrypted disk images an
+  empty passphrase key is handy to avoid interaction in the
+  deployment process. However, the dracut kiwi modules were
+  lacking the information that the luks keyfile could be an
+  empty passphrase key which must not be opened with the
+  potential risk to get prompted for input. This commit
+  introduces a new profile environment variable evaluated
+  by the dracut kiwi lib code to open the LUKS pool and
+  allows to distinguish the situation on key files with
+  or without a passphrase
+
+-------------------------------------------------------------------
+Thu Oct 14 10:11:01 CEST 2021 - Marcus Sch??fer <m...@suse.de>
+
+- Fixed type annotations for LuksDevice class
+
+-------------------------------------------------------------------
+Wed Oct 13 17:10:30 CEST 2021 - Marcus Sch??fer <m...@suse.de>
+
+- Fixed repo setup for test-image-embedded
+
+  Use obsrepositories
+
+-------------------------------------------------------------------
+Wed Oct 13 17:03:48 CEST 2021 - Marcus Sch??fer <m...@suse.de>
+
+- Added a build test for no-initrd / no-bootloader
+
+  It's allowed to configure an image building without an
+  initrd and/or bootloader setup. These are settings mostly
+  used in the embedded world and this build test makes sure
+  images of that kind can be build
+
+-------------------------------------------------------------------
+Wed Oct 13 00:31:49 CEST 2021 - Marcus Sch??fer <m...@suse.de>
+
+- Add support for portable result data (#1949)
+
+  In addition to the serialized Result instance kiwi.result
+  file this commit also creates a portable version of this
+  information in kiwi.result.json. Only the information that
+  can be expressed as json document is part of the portable
+  version. This is related to Issue #1918
+
+-------------------------------------------------------------------
+Thu Oct 07 16:12:47 CEST 2021 - Marcus Sch??fer <m...@suse.de>
+
+- Added documentation for kiwi stackbuild plugin
+
+  Restructure the documentation to put all plugin documentation
+  under its own category. Add a chapter about the stackbuild
+  plugin, it's concepts and use cases. This Fixes #1907
+
+-------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-kiwi.spec ++++++
--- /var/tmp/diff_new_pack.4H9sVa/_old  2021-10-23 23:13:53.612978669 +0200
+++ /var/tmp/diff_new_pack.4H9sVa/_new  2021-10-23 23:13:53.616978670 +0200
@@ -43,7 +43,7 @@
 %endif
 
 Name:           python-kiwi
-Version:        9.24.0
+Version:        9.24.1
 Provides:       kiwi-schema = 7.4
 Release:        0
 Url:            https://github.com/OSInside/kiwi
@@ -335,6 +335,7 @@
 %else
 Requires:       python%{python3_pkgversion}-PyYAML
 %endif
+Requires:       python%{python3_pkgversion}-simplejson
 Requires:       python%{python3_pkgversion}-docopt
 Requires:       python%{python3_pkgversion}-lxml
 Requires:       python%{python3_pkgversion}-requests

++++++ PKGBUILD ++++++
--- /var/tmp/diff_new_pack.4H9sVa/_old  2021-10-23 23:13:53.640978682 +0200
+++ /var/tmp/diff_new_pack.4H9sVa/_new  2021-10-23 23:13:53.640978682 +0200
@@ -3,7 +3,7 @@
 
 pkgname=('python-kiwi' 'kiwi-man-pages' 'dracut-kiwi-lib' 
'dracut-kiwi-oem-repart' 'dracut-kiwi-oem-dump' 'dracut-kiwi-live' 
'dracut-kiwi-overlay')
 arch=(x86_64)
-pkgver=9.24.0
+pkgver=9.24.1
 pkgrel=0
 pkgdesc="KIWI - Appliance Builder Next Generation"
 url="https://github.com/SUSE/kiwi/tarball/master";
@@ -12,7 +12,7 @@
 provides=(kiwi-ng kiwi)
 source=("${pkgname}.tar.gz")
 changelog="${pkgname}.changes"
-md5sums=('83e3f0776a09b90ef04108ec46ee76bc')
+md5sums=('070111b542fb65e4bebff3cf6affe8c0')
 
 
 build() {

++++++ python-kiwi.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/.bumpversion.cfg 
new/kiwi-9.24.1/.bumpversion.cfg
--- old/kiwi-9.24.0/.bumpversion.cfg    2021-10-07 09:54:22.000000000 +0200
+++ new/kiwi-9.24.1/.bumpversion.cfg    2021-10-15 10:02:06.000000000 +0200
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 9.24.0
+current_version = 9.24.1
 commit = True
 tag = True
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/.virtualenv.dev-requirements.txt 
new/kiwi-9.24.1/.virtualenv.dev-requirements.txt
--- old/kiwi-9.24.0/.virtualenv.dev-requirements.txt    2021-09-02 
16:55:04.000000000 +0200
+++ new/kiwi-9.24.1/.virtualenv.dev-requirements.txt    2021-10-13 
09:15:07.000000000 +0200
@@ -31,6 +31,7 @@
 types-requests
 types-PyYAML
 types-mock
+types-simplejson
 
 # Generate Data Structures from XML Schema
 # http://pythonhosted.org/generateDS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/.virtualenv.requirements.txt 
new/kiwi-9.24.1/.virtualenv.requirements.txt
--- old/kiwi-9.24.0/.virtualenv.requirements.txt        2021-07-14 
18:09:36.000000000 +0200
+++ new/kiwi-9.24.1/.virtualenv.requirements.txt        2021-10-13 
09:15:07.000000000 +0200
@@ -19,3 +19,6 @@
 
 # markup support
 anymarkup
+
+# json support that also knows about tuples
+simplejson
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/PKG-INFO new/kiwi-9.24.1/PKG-INFO
--- old/kiwi-9.24.0/PKG-INFO    2021-10-07 09:57:15.000000000 +0200
+++ new/kiwi-9.24.1/PKG-INFO    2021-10-15 10:04:10.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: kiwi
-Version: 9.24.0
+Version: 9.24.1
 Summary: KIWI - Appliance Builder (next generation)
 Home-page: https://osinside.github.io/kiwi
 Author: Marcus Schaefer
Binary files old/kiwi-9.24.0/doc/build/latex/kiwi.pdf and 
new/kiwi-9.24.1/doc/build/latex/kiwi.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/build/man/kiwi.8 
new/kiwi-9.24.1/doc/build/man/kiwi.8
--- old/kiwi-9.24.0/doc/build/man/kiwi.8        2021-10-07 09:57:11.000000000 
+0200
+++ new/kiwi-9.24.1/doc/build/man/kiwi.8        2021-10-15 10:04:08.000000000 
+0200
@@ -27,7 +27,7 @@
 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
 ..
-.TH "KIWI" "8" "Oct 07, 2021" "9.24.0" "KIWI NG"
+.TH "KIWI" "8" "Oct 15, 2021" "9.24.1" "KIWI NG"
 .SH NAME
 kiwi \- Creating Operating System Images
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/build/man/kiwi::image::info.8 
new/kiwi-9.24.1/doc/build/man/kiwi::image::info.8
--- old/kiwi-9.24.0/doc/build/man/kiwi::image::info.8   2021-10-07 
09:57:11.000000000 +0200
+++ new/kiwi-9.24.1/doc/build/man/kiwi::image::info.8   2021-10-15 
10:04:08.000000000 +0200
@@ -27,7 +27,7 @@
 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
 ..
-.TH "KIWI::IMAGE::INFO" "8" "Oct 07, 2021" "9.24.0" "KIWI NG"
+.TH "KIWI::IMAGE::INFO" "8" "Oct 15, 2021" "9.24.1" "KIWI NG"
 .SH NAME
 kiwi::image::info \- Provide detailed information about an image description
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/build/man/kiwi::image::resize.8 
new/kiwi-9.24.1/doc/build/man/kiwi::image::resize.8
--- old/kiwi-9.24.0/doc/build/man/kiwi::image::resize.8 2021-10-07 
09:57:11.000000000 +0200
+++ new/kiwi-9.24.1/doc/build/man/kiwi::image::resize.8 2021-10-15 
10:04:08.000000000 +0200
@@ -27,7 +27,7 @@
 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
 ..
-.TH "KIWI::IMAGE::RESIZE" "8" "Oct 07, 2021" "9.24.0" "KIWI NG"
+.TH "KIWI::IMAGE::RESIZE" "8" "Oct 15, 2021" "9.24.1" "KIWI NG"
 .SH NAME
 kiwi::image::resize \- Resize disk images to new geometry
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/build/man/kiwi::result::bundle.8 
new/kiwi-9.24.1/doc/build/man/kiwi::result::bundle.8
--- old/kiwi-9.24.0/doc/build/man/kiwi::result::bundle.8        2021-10-07 
09:57:11.000000000 +0200
+++ new/kiwi-9.24.1/doc/build/man/kiwi::result::bundle.8        2021-10-15 
10:04:08.000000000 +0200
@@ -27,7 +27,7 @@
 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
 ..
-.TH "KIWI::RESULT::BUNDLE" "8" "Oct 07, 2021" "9.24.0" "KIWI NG"
+.TH "KIWI::RESULT::BUNDLE" "8" "Oct 15, 2021" "9.24.1" "KIWI NG"
 .SH NAME
 kiwi::result::bundle \- Bundle build results
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/build/man/kiwi::result::list.8 
new/kiwi-9.24.1/doc/build/man/kiwi::result::list.8
--- old/kiwi-9.24.0/doc/build/man/kiwi::result::list.8  2021-10-07 
09:57:11.000000000 +0200
+++ new/kiwi-9.24.1/doc/build/man/kiwi::result::list.8  2021-10-15 
10:04:08.000000000 +0200
@@ -27,7 +27,7 @@
 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
 ..
-.TH "KIWI::RESULT::LIST" "8" "Oct 07, 2021" "9.24.0" "KIWI NG"
+.TH "KIWI::RESULT::LIST" "8" "Oct 15, 2021" "9.24.1" "KIWI NG"
 .SH NAME
 kiwi::result::list \- List build results
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/build/man/kiwi::system::build.8 
new/kiwi-9.24.1/doc/build/man/kiwi::system::build.8
--- old/kiwi-9.24.0/doc/build/man/kiwi::system::build.8 2021-10-07 
09:57:11.000000000 +0200
+++ new/kiwi-9.24.1/doc/build/man/kiwi::system::build.8 2021-10-15 
10:04:08.000000000 +0200
@@ -27,7 +27,7 @@
 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
 ..
-.TH "KIWI::SYSTEM::BUILD" "8" "Oct 07, 2021" "9.24.0" "KIWI NG"
+.TH "KIWI::SYSTEM::BUILD" "8" "Oct 15, 2021" "9.24.1" "KIWI NG"
 .SH NAME
 kiwi::system::build \- Build image in combined prepare and create step
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/build/man/kiwi::system::create.8 
new/kiwi-9.24.1/doc/build/man/kiwi::system::create.8
--- old/kiwi-9.24.0/doc/build/man/kiwi::system::create.8        2021-10-07 
09:57:11.000000000 +0200
+++ new/kiwi-9.24.1/doc/build/man/kiwi::system::create.8        2021-10-15 
10:04:08.000000000 +0200
@@ -27,7 +27,7 @@
 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
 ..
-.TH "KIWI::SYSTEM::CREATE" "8" "Oct 07, 2021" "9.24.0" "KIWI NG"
+.TH "KIWI::SYSTEM::CREATE" "8" "Oct 15, 2021" "9.24.1" "KIWI NG"
 .SH NAME
 kiwi::system::create \- Create image from prepared root system
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/build/man/kiwi::system::prepare.8 
new/kiwi-9.24.1/doc/build/man/kiwi::system::prepare.8
--- old/kiwi-9.24.0/doc/build/man/kiwi::system::prepare.8       2021-10-07 
09:57:11.000000000 +0200
+++ new/kiwi-9.24.1/doc/build/man/kiwi::system::prepare.8       2021-10-15 
10:04:08.000000000 +0200
@@ -27,7 +27,7 @@
 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
 ..
-.TH "KIWI::SYSTEM::PREPARE" "8" "Oct 07, 2021" "9.24.0" "KIWI NG"
+.TH "KIWI::SYSTEM::PREPARE" "8" "Oct 15, 2021" "9.24.1" "KIWI NG"
 .SH NAME
 kiwi::system::prepare \- Prepare image root system
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/build/man/kiwi::system::update.8 
new/kiwi-9.24.1/doc/build/man/kiwi::system::update.8
--- old/kiwi-9.24.0/doc/build/man/kiwi::system::update.8        2021-10-07 
09:57:11.000000000 +0200
+++ new/kiwi-9.24.1/doc/build/man/kiwi::system::update.8        2021-10-15 
10:04:08.000000000 +0200
@@ -27,7 +27,7 @@
 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
 .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
 ..
-.TH "KIWI::SYSTEM::UPDATE" "8" "Oct 07, 2021" "9.24.0" "KIWI NG"
+.TH "KIWI::SYSTEM::UPDATE" "8" "Oct 15, 2021" "9.24.1" "KIWI NG"
 .SH NAME
 kiwi::system::update \- Update/Upgrade image root system
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/source/conf.py 
new/kiwi-9.24.1/doc/source/conf.py
--- old/kiwi-9.24.0/doc/source/conf.py  2021-10-07 09:54:22.000000000 +0200
+++ new/kiwi-9.24.1/doc/source/conf.py  2021-10-15 10:02:06.000000000 +0200
@@ -140,7 +140,7 @@
 # built documents.
 #
 # The short X.Y version.
-version = '9.24.0'
+version = '9.24.1'
 # The full version, including alpha/beta/rc tags.
 release = version
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/source/index.rst 
new/kiwi-9.24.1/doc/source/index.rst
--- old/kiwi-9.24.0/doc/source/index.rst        2021-09-02 16:55:04.000000000 
+0200
+++ new/kiwi-9.24.1/doc/source/index.rst        2021-10-15 10:02:03.000000000 
+0200
@@ -20,7 +20,7 @@
    quickstart
    commands
    troubleshooting
-   self_contained
+   plugins
    concept_and_workflow
    image_description
    image_types_and_results
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/source/plugins/self_contained.rst 
new/kiwi-9.24.1/doc/source/plugins/self_contained.rst
--- old/kiwi-9.24.0/doc/source/plugins/self_contained.rst       1970-01-01 
01:00:00.000000000 +0100
+++ new/kiwi-9.24.1/doc/source/plugins/self_contained.rst       2021-10-15 
10:02:03.000000000 +0200
@@ -0,0 +1,81 @@
+.. _self_contained:
+
+Building in a Self-Contained Environment
+========================================
+
+.. note:: **Abstract**
+
+   Users building images with {kiwi} face problems if they want
+   to build an image matching one of the following criteria:
+
+   * build should happen as non root user.
+
+   * build should happen on a host system distribution for which
+     no {kiwi} packages exists.
+
+   * build happens on an incompatible host system distribution
+     compared to the target image distribution. For example
+     building an apt/dpkg  based system on an rpm based system.
+
+   * run more than one build process at the same time on the
+     same host.
+
+   * run a build process for a different target architecture
+     compared to the host architecture (Cross Arch Image Build)
+
+   This document describes how to perform the build process in
+   a self contained environment using fast booting virtual
+   machines to address the issues listed above.
+
+   The changes on the machine to become a build host will
+   be reduced to the requirements of the {kiwi} `boxed plugin`
+
+Requirements
+------------
+
+Add the {kiwi} repo from the Open Build Service. For details see
+:ref:`installation-from-obs`. The following {kiwi} plugin needs to be
+installed on the build system:
+
+.. code:: bash
+
+    $ sudo zypper in python3-kiwi_boxed_plugin
+
+Building with the boxbuild command
+----------------------------------
+
+The installation of the {kiwi} boxed plugin has registered a new kiwi
+command named `boxbuild`. The command implementation uses KVM as
+virtualization technology and runs the {kiwi} `build` command inside of
+a KVM controlled virtual machine. For running the build process in a
+virtual machine it's required to provide VM images that are suitable
+to perform this job. We call the VM images `boxes` and they contain
+kiwi itself as well as all other components needed to build appliances.
+Those boxes are hosted in the Open Build Service and are publicly
+available at the `Subprojects` tab in the: 
`Virtualization:Appliances:SelfContained 
<https://build.opensuse.org/project/show/Virtualization:Appliances:SelfContained>`__
+project.
+
+As a user you don't need to work with the boxes because this is all done
+by the plugin and provided as a service by the {kiwi} team. The `boxbuild`
+command knows where to fetch the box and also cares for an update of the
+box when it has changed.
+
+Building an image with the `boxbuild` command is similar to building with
+the `build` command. The plugin validates the given command call with the
+capabilities of the `build` command. Thus one part of the `boxbuild` command
+is exactly the same as with the `build` command. The separation between
+`boxbuild` and `build` options is done using the `--` separator like
+shown in the following example:
+
+.. code:: bash
+
+   $ kiwi-ng --type iso system boxbuild --box leap -- \
+         --description kiwi/build-tests/{exc_description_disk} \
+         --set-repo {exc_repo_leap} \
+         --target-dir /tmp/myimage
+
+.. note::
+
+   The provided `--description` and `--target-dir` options are
+   setup as shared folders between the host and the guest. No other
+   data will be shared with the host.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/source/plugins/stackbuild.rst 
new/kiwi-9.24.1/doc/source/plugins/stackbuild.rst
--- old/kiwi-9.24.0/doc/source/plugins/stackbuild.rst   1970-01-01 
01:00:00.000000000 +0100
+++ new/kiwi-9.24.1/doc/source/plugins/stackbuild.rst   2021-10-15 
10:02:03.000000000 +0200
@@ -0,0 +1,227 @@
+.. _stackbuild:
+
+Building based on Containers
+============================
+
+.. note:: **Abstract**
+
+   When building images exposes one of the following
+   requirements the stackbuild plugin provides an opportunity
+   to address it:
+
+   * Preserve the image rootfs for a later rebuild without
+     requiring the original software repositories.
+
+   * Build an image based on an existing container.
+
+   * Build an image based on a container stack.
+
+   * Transform a container into a {kiwi} image type
+
+Installation
+------------
+
+Add the {kiwi} repo from the Open Build Service. For details see
+:ref:`installation-from-obs`. The following {kiwi} plugin needs to be
+installed on the build system:
+
+.. code:: bash
+
+    $ sudo zypper in python3-kiwi_stackbuild_plugin
+
+Concept
+-------
+
+The design of the stackbuild plugin is two fold:
+
+First the plugin comes with a command called `stash` which allows
+to store a kiwi built root tree as an OCI container. OCI stands for
+*Open Container Interface* and is a defacto standard format in the
+container world. Once the container got created it can be managed
+using the preferred container toolchain. The plugin code itself
+uses `podman` to work with containers.
+
+As a next step and with the root tree as a container the plugin offers
+the opportunity to build images based on one ore more containers.
+That's also the reason why the plugin is called *stackbuild* as it
+allows you to stack different root containers together.
+Consequently the other command provided is named `stackbuild`.
+
+The `stash` and `stackbuild` commands can be used independently
+from each other. If there is already a registry with containers
+that should be used to build images from, `stackbuild` can
+directly consume them.
+
+This concept leads to a number of use cases and a few of them were
+picked and put into the abstract of this article. For the purpose
+of documenting the functionality of the plugin only a part of the
+possibilities are taken into account as follows:
+
+.. _stash:
+
+Create a stash
+--------------
+
+The `stash` command creates an OCI compliant container from a given
+{kiwi-product} image root tree and registers it in the local
+container registry. From there a user can push it to any registry
+of choice.
+
+The following example creates a stash of a Tumbleweed build
+and illustrates how to register it in a foreign container
+registry:
+
+.. code:: bash
+
+    # Build some image...
+    $ git clone https://github.com/OSInside/kiwi.git
+    $ sudo kiwi-ng system build \
+        --description kiwi/build-tests/x86/tumbleweed/test-image-MicroOS/ \
+        --set-repo http://download.opensuse.org/tumbleweed/repo/oss \
+        --target-dir /tmp/myTWToday
+
+    # Stash the image root into a container
+    $ sudo kiwi-ng system stash \
+        --root /tmp/myTWToday/build/image-root \
+        --container-name twmos-snapshot
+
+    # Register the stash in a registry
+    $ podman login
+    $ podman push twmos-20211008 \
+        docker://docker.io/.../twmos-snapshot:2021-10-08
+
+If the `stash` command is called multiple times with the same
+container-name this leads to a new layer in the container for
+each call. To inspect the number of layers added to the
+container the following command can be used:
+
+.. code:: bash
+
+    $ podman inspect twmos-snapshot
+
+To list all stashes created by the `stash` command the following
+command can be used
+
+.. code:: bash
+
+    $ kiwi-ng system stash --list
+
+Rebuild from a stash
+--------------------
+
+The `stackbuild` command takes the given container(s) from the local or
+remote registry and uses it/them to either rebuild an image from that
+data or build a new image on top of that data. If multiple containers
+are given the `stackbuild` command stacks them together in the order
+as they were provided.
+
+.. note:: 
+
+   When using multiple containers the result stack root tree is
+   created from a sequence of rsync commands into the same target
+   directory. The stackbuild plugin does this with any container
+   content given and does not check, validate or guarantee that
+   the selection of containers are actually stackable or leads to
+   an usable root tree. This means it's in the responsibility of
+   the caller to make sure the provided containers can actually
+   be stacked together in the given order.
+   
+To simply rebuild the image from the stash created in :ref:`stash`
+call `stackbuild` as follows:
+
+.. code:: bash
+
+    # Delete the image
+    $ sudo rm -rf /tmp/myTWToday
+
+    # Rebuild image from stash
+    $ sudo kiwi-ng system stackbuild \
+        --stash twmos-snapshot:2021-10-08 \
+        --target-dir /tmp/myTWToday
+
+This rebuilds the image from the stash and the {kiwi} configuration
+inside of the stash. As all rootfs data is already in the stash, the
+command will not need external resources to rebuild the image.
+
+Turn a container into a VM image
+--------------------------------
+
+Another use case for the `stackbuild` plugin is the transformation
+of container images into another image type that is supported by {kiwi}.
+The following example demonstrates how an existing container image
+from the openSUSE registry can be turned into a virtual machine image.
+
+When moving a container into a virtual machine image the following
+aspects has to be taken into account:
+
+1. A container image usually has no kernel installed.
+2. A container image usually has no bootloader installed.
+3. A container image usually has no user configured.
+
+For a VM image the mentioned aspects are mandatory. Therefore
+the following {kiwi} image description contains this additional
+information which the container cannot provide: Create the
+{kiwi} description as follows:
+
+.. code:: bash
+
+    $ mkdir container_to_VM_layer
+    $ vi container_to_VM_layer/config.kiwi
+
+And place the following content:
+
+.. code:: xml
+
+    <?xml version="1.0" encoding="utf-8"?>
+
+    <image schemaversion="6.8" name="Leap-VM">
+        <description type="system">
+            <author>The Author</author>
+            <contact>u...@example.org</contact>
+            <specification>
+                Leap Container as VM
+            </specification>
+        </description>
+        <preferences>
+            <type image="oem" filesystem="xfs" firmware="uefi">
+                <oemconfig>
+                    <oem-resize>false</oem-resize>
+                </oemconfig>
+            </type>
+            <version>1.99.1</version>
+            <packagemanager>zypper</packagemanager>
+            <locale>en_US</locale>
+            <keytable>us</keytable>
+            <timezone>UTC</timezone>
+        </preferences>
+        <repository type="rpm-md" alias="Leap_15_3">
+            <source path="obs://openSUSE:Leap:15.3/standard"/>
+        </repository>
+        <packages type="image">
+            <package name="grub2"/>
+            <package name="grub2-x86_64-efi" arch="x86_64"/>
+            <package name="grub2-i386-pc"/>
+            <package name="shim"/>
+            <package name="kernel-default"/>
+        </packages>
+        <users>
+            <user password="$1$wYJUgpM5$RXMMeASDc035eX.NbYWFl0" home="/root" 
name="root" groups="root"/>
+        </users>
+    </image>
+
+To build the virtual machine image from the current hosted Leap 15.3
+container at SUSE, call the following `stackbuild` command:
+
+.. code:: bash
+
+    $ sudo kiwi-ng system stackbuild \
+        --stash leap:15.3 \
+        --from-registry registry.opensuse.org/opensuse \
+        --target-dir /tmp/myLeap \
+        --description container_to_VM_layer
+
+The resulting virtual machine image can be booted as follows:
+
+.. code:: bash
+
+    $ qemu-kvm Leap-VM.x86_64-1.99.1.raw
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/source/plugins.rst 
new/kiwi-9.24.1/doc/source/plugins.rst
--- old/kiwi-9.24.0/doc/source/plugins.rst      1970-01-01 01:00:00.000000000 
+0100
+++ new/kiwi-9.24.1/doc/source/plugins.rst      2021-10-15 10:02:03.000000000 
+0200
@@ -0,0 +1,13 @@
+KIWI Plugins
+============
+
+.. note::
+
+   This document provides a list of the existing {kiwi-product} plugins
+   which provides extended functionality for version |version|.
+
+.. toctree::
+   :maxdepth: 1
+
+   plugins/self_contained
+   plugins/stackbuild
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/doc/source/self_contained.rst 
new/kiwi-9.24.1/doc/source/self_contained.rst
--- old/kiwi-9.24.0/doc/source/self_contained.rst       2021-07-14 
18:09:36.000000000 +0200
+++ new/kiwi-9.24.1/doc/source/self_contained.rst       1970-01-01 
01:00:00.000000000 +0100
@@ -1,81 +0,0 @@
-.. _self_contained:
-
-Building in a Self-Contained Environment
-========================================
-
-.. note:: **Abstract**
-
-   Users building images with {kiwi} face problems if they want
-   to build an image matching one of the following criteria:
-
-   * build should happen as non root user.
-
-   * build should happen on a host system distribution for which
-     no {kiwi} packages exists.
-
-   * build happens on an incompatible host system distribution
-     compared to the target image distribution. For example
-     building an apt/dpkg  based system on an rpm based system.
-
-   * run more than one build process at the same time on the
-     same host.
-
-   * run a build process for a different target architecture
-     compared to the host architecture (Cross Arch Image Build)
-
-   This document describes how to perform the build process in
-   a self contained environment using fast booting virtual
-   machines to address the issues listed above.
-
-   The changes on the machine to become a build host will
-   be reduced to the requirements of the {kiwi} `boxed plugin`
-
-Requirements
-------------
-
-Add the {kiwi} repo from the Open Build Service. For details see
-:ref:`installation-from-obs`. The following {kiwi} plugin needs to be
-installed on the build system:
-
-.. code:: bash
-
-    $ sudo zypper in python3-kiwi_boxed_plugin
-
-Building with the boxbuild command
-----------------------------------
-
-The installation of the {kiwi} boxed plugin has registered a new kiwi
-command named `boxbuild`. The command implementation uses KVM as
-virtualization technology and runs the {kiwi} `build` command inside of
-a KVM controlled virtual machine. For running the build process in a
-virtual machine it's required to provide VM images that are suitable
-to perform this job. We call the VM images `boxes` and they contain
-kiwi itself as well as all other components needed to build appliances.
-Those boxes are hosted in the Open Build Service and are publicly
-available at the `Subprojects` tab in the: 
`Virtualization:Appliances:SelfContained 
<https://build.opensuse.org/project/show/Virtualization:Appliances:SelfContained>`__
-project.
-
-As a user you don't need to work with the boxes because this is all done
-by the plugin and provided as a service by the {kiwi} team. The `boxbuild`
-command knows where to fetch the box and also cares for an update of the
-box when it has changed.
-
-Building an image with the `boxbuild` command is similar to building with
-the `build` command. The plugin validates the given command call with the
-capabilities of the `build` command. Thus one part of the `boxbuild` command
-is exactly the same as with the `build` command. The separation between
-`boxbuild` and `build` options is done using the `--` separator like
-shown in the following example:
-
-.. code:: bash
-
-   $ kiwi-ng --type iso system boxbuild --box leap -- \
-         --description kiwi/build-tests/{exc_description_disk} \
-         --set-repo {exc_repo_leap} \
-         --target-dir /tmp/myimage
-
-.. note::
-
-   The provided `--description` and `--target-dir` options are
-   setup as shared folders between the host and the guest. No other
-   data will be shared with the host.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kiwi-9.24.0/dracut/modules.d/99kiwi-lib/kiwi-luks-lib.sh 
new/kiwi-9.24.1/dracut/modules.d/99kiwi-lib/kiwi-luks-lib.sh
--- old/kiwi-9.24.0/dracut/modules.d/99kiwi-lib/kiwi-luks-lib.sh        
2021-07-14 18:09:36.000000000 +0200
+++ new/kiwi-9.24.1/dracut/modules.d/99kiwi-lib/kiwi-luks-lib.sh        
2021-10-15 10:02:03.000000000 +0200
@@ -23,8 +23,22 @@
 }
 
 function activate_luks {
+    declare kiwi_luks_empty_passphrase=${kiwi_luks_empty_passphrase}
     local device=$1
-    /usr/lib/systemd/systemd-cryptsetup attach luks "${device}"
+    if [ "${kiwi_luks_empty_passphrase}" = "true" ];then
+        # There is no keyfile and kiwi has created the luks pool with
+        # an empty key. Therefore it can be opened without interaction
+        # but this requires to manually call luksOpen since
+        # with systemd-cryptsetup we saw it still asking for
+        # a passphrase
+        cryptsetup \
+            --key-file /dev/zero \
+            --keyfile-size 32 \
+        luksOpen "${device}" luks
+    else
+        # There is a keyfile and we need to get prompted to enter the 
passphrase
+        /usr/lib/systemd/systemd-cryptsetup attach luks "${device}"
+    fi
     wait_for_storage_device "/dev/mapper/luks"
     set_root_map "/dev/mapper/luks"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/kiwi/builder/disk.py 
new/kiwi-9.24.1/kiwi/builder/disk.py
--- old/kiwi-9.24.0/kiwi/builder/disk.py        2021-09-07 16:17:23.000000000 
+0200
+++ new/kiwi-9.24.1/kiwi/builder/disk.py        2021-10-15 10:02:03.000000000 
+0200
@@ -296,7 +296,7 @@
             luks_root.create_crypto_luks(
                 passphrase=self.luks,
                 os=self.luks_os,
-                keyfile=self.luks_boot_keyfile if luks_need_keyfile else None
+                keyfile=self.luks_boot_keyfile if luks_need_keyfile else ''
             )
             if luks_need_keyfile:
                 self.luks_boot_keyfile_setup = ''.join(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/kiwi/storage/luks_device.py 
new/kiwi-9.24.1/kiwi/storage/luks_device.py
--- old/kiwi-9.24.0/kiwi/storage/luks_device.py 2021-09-02 16:55:04.000000000 
+0200
+++ new/kiwi-9.24.1/kiwi/storage/luks_device.py 2021-10-15 10:02:03.000000000 
+0200
@@ -39,7 +39,7 @@
 
     :param object storage_provider: Instance of class based on DeviceProvider
     """
-    def __init__(self, storage_provider: DeviceProvider):
+    def __init__(self, storage_provider: DeviceProvider) -> None:
         # bind the underlaying block device providing class instance
         # to this object (e.g loop) if present. This is done to guarantee
         # the correct destructor order when the device should be released.
@@ -73,8 +73,8 @@
 
     def create_crypto_luks(
         self, passphrase: str, os: str = None,
-        options: list = None, keyfile: str = None
-    ):
+        options: list = None, keyfile: str = ''
+    ) -> None:
         """
         Create luks device. Please note the passphrase is readable
         at creation time of this image. Make sure your host system
@@ -156,7 +156,7 @@
         )
         self.luks_device = '/dev/mapper/' + self.luks_name
 
-    def create_crypttab(self, filename: str):
+    def create_crypttab(self, filename: str) -> None:
         """
         Create crypttab, setting the UUID of the storage device
 
@@ -192,7 +192,7 @@
         return self.storage_provider.is_loop()
 
     @staticmethod
-    def create_random_keyfile(filename: str):
+    def create_random_keyfile(filename: str) -> None:
         """
         Create keyfile with random data
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/kiwi/system/profile.py 
new/kiwi-9.24.1/kiwi/system/profile.py
--- old/kiwi-9.24.0/kiwi/system/profile.py      2021-09-02 16:55:04.000000000 
+0200
+++ new/kiwi-9.24.1/kiwi/system/profile.py      2021-10-15 10:02:03.000000000 
+0200
@@ -334,6 +334,8 @@
             type_section.get_vga()
         self.dot_profile['kiwi_startsector'] = \
             self.xml_state.get_disk_start_sector()
+        self.dot_profile['kiwi_luks_empty_passphrase'] = \
+            True if type_section.get_luks() == '' else False
 
     def _profile_names_to_profile(self):
         # kiwi_profiles
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/kiwi/system/result.py 
new/kiwi-9.24.1/kiwi/system/result.py
--- old/kiwi-9.24.0/kiwi/system/result.py       2021-07-14 18:09:36.000000000 
+0200
+++ new/kiwi-9.24.1/kiwi/system/result.py       2021-10-13 09:15:07.000000000 
+0200
@@ -16,6 +16,7 @@
 # along with kiwi.  If not, see <http://www.gnu.org/licenses/>
 #
 import logging
+import simplejson
 import pickle
 import os
 from typing import (
@@ -96,11 +97,16 @@
             for key, value in sorted(list(self.result_files.items())):
                 log.info('--> %s: %s', key, value.filename)
 
-    def dump(self, filename: str) -> None:
+    def dump(self, filename: str, portable: bool = True) -> None:
         """
         Picke dump this instance to a file
 
         :param str filename: file path name
+        :param bool portable:
+            If set to true also create a .json formatted variant
+            of the dump file which contains the elements of this
+            instance that could be expressed in a portable json
+            document. Default is set to: True
 
         :raises KiwiResultError: if pickle fails to dump :class:`Result`
             instance
@@ -108,6 +114,13 @@
         try:
             with open(filename, 'wb') as result:
                 pickle.dump(self, result)
+            if portable:
+                with open(filename + '.json', 'w') as result_portable:
+                    result_portable.write(
+                        simplejson.dumps(
+                            self.result_files, sort_keys=True, indent=4
+                        ) + os.linesep
+                    )
         except Exception as e:
             raise KiwiResultError(
                 'Failed to pickle dump results: %s' % format(e)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/kiwi/version.py 
new/kiwi-9.24.1/kiwi/version.py
--- old/kiwi-9.24.0/kiwi/version.py     2021-10-07 09:54:22.000000000 +0200
+++ new/kiwi-9.24.1/kiwi/version.py     2021-10-15 10:02:06.000000000 +0200
@@ -18,5 +18,5 @@
 """
 Global version information used in kiwi and the package
 """
-__version__ = '9.24.0'
-__githash__ = '1f545b82c17fbcb5ef74ed169ad59662ffb03bcd'
+__version__ = '9.24.1'
+__githash__ = '4467c1e4d93b94708e3a8587cde68dc45b2a4826'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/kiwi.egg-info/PKG-INFO 
new/kiwi-9.24.1/kiwi.egg-info/PKG-INFO
--- old/kiwi-9.24.0/kiwi.egg-info/PKG-INFO      2021-10-07 09:57:15.000000000 
+0200
+++ new/kiwi-9.24.1/kiwi.egg-info/PKG-INFO      2021-10-15 10:04:09.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: kiwi
-Version: 9.24.0
+Version: 9.24.1
 Summary: KIWI - Appliance Builder (next generation)
 Home-page: https://osinside.github.io/kiwi
 Author: Marcus Schaefer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/kiwi.egg-info/SOURCES.txt 
new/kiwi-9.24.1/kiwi.egg-info/SOURCES.txt
--- old/kiwi-9.24.0/kiwi.egg-info/SOURCES.txt   2021-10-07 09:57:15.000000000 
+0200
+++ new/kiwi-9.24.1/kiwi.egg-info/SOURCES.txt   2021-10-15 10:04:09.000000000 
+0200
@@ -30,8 +30,8 @@
 doc/source/index.rst
 doc/source/installation.rst
 doc/source/overview.rst
+doc/source/plugins.rst
 doc/source/quickstart.rst
-doc/source/self_contained.rst
 doc/source/troubleshooting.rst
 doc/source/working_with_images.rst
 doc/source/.images/intro.png
@@ -92,6 +92,8 @@
 doc/source/contributing/scripts_testing.rst
 doc/source/image_description/elements.rst
 doc/source/overview/workflow.rst
+doc/source/plugins/self_contained.rst
+doc/source/plugins/stackbuild.rst
 doc/source/troubleshooting/filesystems.rst
 doc/source/working_with_images/build_in_buildservice.rst
 doc/source/working_with_images/build_with_profiles.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/kiwi.egg-info/requires.txt 
new/kiwi-9.24.1/kiwi.egg-info/requires.txt
--- old/kiwi-9.24.0/kiwi.egg-info/requires.txt  2021-10-07 09:57:15.000000000 
+0200
+++ new/kiwi-9.24.1/kiwi.egg-info/requires.txt  2021-10-15 10:04:09.000000000 
+0200
@@ -3,3 +3,4 @@
 pyxattr
 requests
 PyYAML
+simplejson
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/package/python-kiwi-spec-template 
new/kiwi-9.24.1/package/python-kiwi-spec-template
--- old/kiwi-9.24.0/package/python-kiwi-spec-template   2021-10-06 
17:10:46.000000000 +0200
+++ new/kiwi-9.24.1/package/python-kiwi-spec-template   2021-10-13 
09:15:07.000000000 +0200
@@ -335,6 +335,7 @@
 %else
 Requires:       python%{python3_pkgversion}-PyYAML
 %endif
+Requires:       python%{python3_pkgversion}-simplejson
 Requires:       python%{python3_pkgversion}-docopt
 Requires:       python%{python3_pkgversion}-lxml
 Requires:       python%{python3_pkgversion}-requests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/setup.py new/kiwi-9.24.1/setup.py
--- old/kiwi-9.24.0/setup.py    2021-10-07 09:57:12.000000000 +0200
+++ new/kiwi-9.24.1/setup.py    2021-10-15 10:04:09.000000000 +0200
@@ -66,7 +66,8 @@
         'lxml',
         'pyxattr',
         'requests',
-        'PyYAML'
+        'PyYAML',
+        'simplejson'
     ],
     'packages': ['kiwi'],
     'cmdclass': {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/test/data/example_dot_profile_config.xml 
new/kiwi-9.24.1/test/data/example_dot_profile_config.xml
--- old/kiwi-9.24.0/test/data/example_dot_profile_config.xml    2021-07-14 
18:09:37.000000000 +0200
+++ new/kiwi-9.24.1/test/data/example_dot_profile_config.xml    2021-10-15 
10:02:03.000000000 +0200
@@ -19,7 +19,7 @@
         <rpm-check-signatures>false</rpm-check-signatures>
         <bootsplash-theme>openSUSE</bootsplash-theme>
         <bootloader-theme>openSUSE</bootloader-theme>
-        <type image="oem" primary="true" filesystem="ext3" installiso="true" 
kernelcmdline="splash" firmware="efi" ramonly="true" xen_server="true">
+        <type image="oem" primary="true" filesystem="ext3" installiso="true" 
kernelcmdline="splash" firmware="efi" ramonly="true" xen_server="true" luks="">
             <systemdisk>
                 <volume name="usr/lib" size="1G"/>
                 <volume name="@root" freespace="500M"/>
Binary files old/kiwi-9.24.0/test/unit/.coverage and 
new/kiwi-9.24.1/test/unit/.coverage differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/test/unit/system/profile_test.py 
new/kiwi-9.24.1/test/unit/system/profile_test.py
--- old/kiwi-9.24.0/test/unit/system/profile_test.py    2021-09-02 
16:55:04.000000000 +0200
+++ new/kiwi-9.24.1/test/unit/system/profile_test.py    2021-10-15 
10:02:03.000000000 +0200
@@ -93,6 +93,7 @@
             'kiwi_type': 'oem',
             'kiwi_vga': None,
             'kiwi_startsector': 2048,
+            'kiwi_luks_empty_passphrase': True,
             'kiwi_wwid_wait_timeout': None,
             'kiwi_xendomain': 'dom0',
             'kiwi_rootpartuuid': None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kiwi-9.24.0/test/unit/system/result_test.py 
new/kiwi-9.24.1/test/unit/system/result_test.py
--- old/kiwi-9.24.0/test/unit/system/result_test.py     2021-07-14 
18:09:37.000000000 +0200
+++ new/kiwi-9.24.1/test/unit/system/result_test.py     2021-10-13 
09:15:07.000000000 +0200
@@ -1,6 +1,6 @@
 import logging
 from mock import (
-    patch, Mock, mock_open
+    patch, Mock, mock_open, call
 )
 from pytest import (
     raises, fixture
@@ -39,18 +39,22 @@
             self.result.print_results()
 
     @patch('pickle.dump')
-    def test_dump(self, mock_pickle_dump):
-
+    @patch('simplejson.dumps')
+    def test_dump(self, mock_simplejson_dumps, mock_pickle_dump):
         m_open = mock_open()
         with patch('builtins.open', m_open, create=True):
             assert self.result.dump('kiwi.result') is None
 
-        m_open.assert_called_once_with(
-            'kiwi.result', 'wb'
-        )
+        assert m_open.call_args_list == [
+            call('kiwi.result', 'wb'),
+            call('kiwi.result.json', 'w')
+        ]
         mock_pickle_dump.assert_called_once_with(
             self.result, m_open.return_value
         )
+        mock_simplejson_dumps.assert_called_once_with(
+            self.result.result_files, sort_keys=True, indent=4
+        )
 
     @patch('pickle.dump')
     def test_dump_failed(self, mock_pickle_dump):

Reply via email to