Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libstorage-ng for openSUSE:Factory 
checked in at 2026-04-04 19:05:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libstorage-ng (Old)
 and      /work/SRC/openSUSE:Factory/.libstorage-ng.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libstorage-ng"

Sat Apr  4 19:05:08 2026 rev:332 rq:1344162 version:4.5.308

Changes:
--------
--- /work/SRC/openSUSE:Factory/libstorage-ng/libstorage-ng.changes      
2026-03-14 22:21:12.630187534 +0100
+++ /work/SRC/openSUSE:Factory/.libstorage-ng.new.21863/libstorage-ng.changes   
2026-04-04 19:06:04.553824917 +0200
@@ -1,0 +2,8 @@
+Wed Apr 1 14:09:25 UTC 2026 - [email protected]
+
+- merge gh#openSUSE/libstorage-ng#1063
+- use json output of blkid if available
+- use consistent class names
+- 4.5.308
+
+--------------------------------------------------------------------

Old:
----
  libstorage-ng-4.5.307.tar.xz

New:
----
  libstorage-ng-4.5.308.tar.xz

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

Other differences:
------------------
++++++ libstorage-ng.spec ++++++
--- /var/tmp/diff_new_pack.7h1OF7/_old  2026-04-04 19:06:05.261853947 +0200
+++ /var/tmp/diff_new_pack.7h1OF7/_new  2026-04-04 19:06:05.261853947 +0200
@@ -18,7 +18,7 @@
 
 %define libname %{name}1
 Name:           libstorage-ng
-Version:        4.5.307
+Version:        4.5.308
 Release:        0
 Summary:        Library for storage management
 License:        GPL-2.0-only

++++++ libstorage-ng-4.5.307.tar.xz -> libstorage-ng-4.5.308.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.5.307/VERSION 
new/libstorage-ng-4.5.308/VERSION
--- old/libstorage-ng-4.5.307/VERSION   2026-03-13 16:04:18.000000000 +0100
+++ new/libstorage-ng-4.5.308/VERSION   2026-04-01 16:09:25.000000000 +0200
@@ -1 +1 @@
-4.5.307
+4.5.308
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.5.307/storage/SystemInfo/CmdBlkid.cc 
new/libstorage-ng-4.5.308/storage/SystemInfo/CmdBlkid.cc
--- old/libstorage-ng-4.5.307/storage/SystemInfo/CmdBlkid.cc    2026-03-13 
16:04:18.000000000 +0100
+++ new/libstorage-ng-4.5.308/storage/SystemInfo/CmdBlkid.cc    2026-04-01 
16:09:25.000000000 +0200
@@ -32,6 +32,7 @@
 #include "storage/SystemInfo/SystemInfoImpl.h"
 #include "storage/Filesystems/FilesystemImpl.h"
 #include "storage/EnvironmentImpl.h"
+#include "storage/Utils/JsonFile.h"
 
 
 namespace storage
@@ -39,25 +40,27 @@
     using namespace std;
 
 
-    Blkid::Blkid(Udevadm& udevadm)
-       : Blkid(udevadm, std::nullopt)
+    CmdBlkid::CmdBlkid(Udevadm& udevadm)
+       : CmdBlkid(udevadm, std::nullopt)
     {
     }
 
 
-    Blkid::Blkid(Udevadm& udevadm, const string& device)
-       : Blkid(udevadm, make_optional(device))
+    CmdBlkid::CmdBlkid(Udevadm& udevadm, const string& device)
+       : CmdBlkid(udevadm, make_optional(device))
     {
     }
 
 
-    Blkid::Blkid(Udevadm& udevadm, const std::optional<string>& device)
+    CmdBlkid::CmdBlkid(Udevadm& udevadm, const std::optional<string>& device)
     {
        const bool json = CmdBlkidVersion::supports_json_option_v2();
 
        udevadm.settle();
 
        SystemCmd::Args cmd_args({ BLKID_BIN, "--cache-file", DEV_NULL_FILE });
+       if (json)
+           cmd_args << "--output" << "json";
        if (device)
            cmd_args << device.value();
 
@@ -68,12 +71,18 @@
 
        SystemCmd cmd(options);
 
-       parse(cmd.stdout());
+       if (!json)
+           parse(cmd.stdout());
+       else
+           parse_json(cmd.stdout());
+
+       if (device && data.size() > 1)
+           ST_THROW(Exception("command blkid returned wrong number of 
devices"));
     }
 
 
     void
-    Blkid::parse(const vector<string>& lines)
+    CmdBlkid::parse(const vector<string>& lines)
     {
        data.clear();
 
@@ -182,7 +191,7 @@
 
 
     vector<string>
-    Blkid::split_line(const string& line)
+    CmdBlkid::split_line(const string& line)
     {
         vector<string> result;
 
@@ -236,8 +245,85 @@
     }
 
 
-    Blkid::const_iterator
-    Blkid::find_by_any_name(const string& device, SystemInfo::Impl& 
system_info) const
+    void
+    CmdBlkid::parse_json(const vector<string>& lines)
+    {
+       data.clear();
+
+       JsonFile json_file(lines);
+
+       vector<json_object*> tmp1;
+       if (!get_child_nodes(json_file.get_root(), "blkid", tmp1))
+           ST_THROW(Exception("\"blkid\" not found in json output of 
'blkid'"));
+
+       for (json_object* tmp2 : tmp1)
+       {
+           string device;
+           if (!get_child_value(tmp2, "device", device))
+               continue;
+
+           string type;
+           if (!get_child_value(tmp2, "type", type))
+               continue;
+
+           Entry entry;
+
+           if (type == "BitLocker" && cryptsetup_for_bitlocker())
+           {
+               entry.is_bitlocker = true;
+
+               // Unfortunately no UUID although BitLocker has one.
+           }
+           else if (toValue(type, entry.fs_type, false))
+           {
+               entry.is_fs = true;
+
+               get_child_value(tmp2, "uuid", entry.fs_uuid);
+               get_child_value(tmp2, "label", entry.fs_label);
+               get_child_value(tmp2, "ext_journal", entry.fs_journal_uuid);
+               get_child_value(tmp2, "uuid_sub",  entry.fs_sub_uuid);
+           }
+           else if (type == "jbd" || type == "xfs_external_log")
+           {
+               entry.is_journal = true;
+
+               get_child_value(tmp2, "loguuid", entry.journal_uuid);
+           }
+           else if (boost::ends_with(type, "_raid_member"))
+           {
+               entry.is_md = true;
+
+               // Does include the UUID but in a different format than 
reported by mdadm.
+           }
+           else if (type == "LVM2_member")
+           {
+               entry.is_lvm = true;
+           }
+           else if (type == "crypto_LUKS")
+           {
+               entry.is_luks = true;
+
+               get_child_value(tmp2, "uuid", entry.luks_uuid);
+               get_child_value(tmp2, "label", entry.luks_label);
+           }
+           else if (type == "bcache")
+           {
+               entry.is_bcache = true;
+
+               get_child_value(tmp2, "uuid", entry.bcache_uuid);
+           }
+
+           if (entry.is_fs || entry.is_journal || entry.is_md || entry.is_lvm 
|| entry.is_luks ||
+               entry.is_bitlocker || entry.is_bcache)
+               data[device] = entry;
+       }
+
+       y2mil(*this);
+    }
+
+
+    CmdBlkid::const_iterator
+    CmdBlkid::find_by_any_name(const string& device, SystemInfo::Impl& 
system_info) const
     {
        const_iterator it = data.find(device);
        if (it != end())
@@ -250,8 +336,8 @@
     }
 
 
-    Blkid::const_iterator
-    Blkid::find_by_journal_uuid(const string& journal_uuid) const
+    CmdBlkid::const_iterator
+    CmdBlkid::find_by_journal_uuid(const string& journal_uuid) const
     {
        return find_if(begin(), end(), [&journal_uuid](const value_type& tmp) {
            return tmp.second.is_journal && tmp.second.journal_uuid == 
journal_uuid;
@@ -259,50 +345,50 @@
     }
 
 
-    Blkid::const_iterator
-    Blkid::get_sole_entry() const
+    CmdBlkid::const_iterator
+    CmdBlkid::get_sole_entry() const
     {
        return data.size() == 1 ? begin() : end();
     }
 
 
     bool
-    Blkid::any_md() const
+    CmdBlkid::any_md() const
     {
        return std::any_of(data.begin(), data.end(), [](const value_type& 
value) { return value.second.is_md; });
     }
 
 
     bool
-    Blkid::any_lvm() const
+    CmdBlkid::any_lvm() const
     {
        return std::any_of(data.begin(), data.end(), [](const value_type& 
value) { return value.second.is_lvm; });
     }
 
 
     bool
-    Blkid::any_luks() const
+    CmdBlkid::any_luks() const
     {
        return std::any_of(data.begin(), data.end(), [](const value_type& 
value) { return value.second.is_luks; });
     }
 
 
     bool
-    Blkid::any_bitlocker() const
+    CmdBlkid::any_bitlocker() const
     {
        return std::any_of(data.begin(), data.end(), [](const value_type& 
value) { return value.second.is_bitlocker; });
     }
 
 
     bool
-    Blkid::any_bcache() const
+    CmdBlkid::any_bcache() const
     {
        return std::any_of(data.begin(), data.end(), [](const value_type& 
value) { return value.second.is_bcache; });
     }
 
 
     bool
-    Blkid::any_btrfs() const
+    CmdBlkid::any_btrfs() const
     {
        return std::any_of(data.begin(), data.end(), [](const value_type& 
value) {
            return value.second.is_fs && value.second.fs_type == FsType::BTRFS;
@@ -311,17 +397,17 @@
 
 
     std::ostream&
-    operator<<(std::ostream& s, const Blkid& blkid)
+    operator<<(std::ostream& s, const CmdBlkid& cmd_blkid)
     {
-       for (Blkid::const_iterator it = blkid.data.begin(); it != 
blkid.data.end(); ++it)
-           s << "data[" << it->first << "] -> " << it->second << '\n';
+       for (const map<string, CmdBlkid::Entry>::value_type& value : cmd_blkid)
+           s << "data[" << value.first << "] -> " << value.second << '\n';
 
        return s;
     }
 
 
     std::ostream&
-    operator<<(std::ostream& s, const Blkid::Entry& entry)
+    operator<<(std::ostream& s, const CmdBlkid::Entry& entry)
     {
        if (entry.is_fs)
        {
@@ -396,7 +482,7 @@
     void
     CmdBlkidVersion::parse_version(const string& version)
     {
-       // example versions: "2.41.3"
+       // example versions: "2.41.3", "2.42-start-1440-edadb", "2.42-rc1", 
"2.42", "2.43.devel"
        const regex version_rx("blkid from util-linux 
([0-9]+)\\.([0-9]+)(\\.([0-9]+))?.*",
                               regex::extended);
 
@@ -420,9 +506,10 @@
     {
        query_version();
 
-       // Format of JSON output is supposed to change. Thus this function is 
called _v2.
+       // Format of JSON output changed with version 2.42. Thus this function 
is called
+       // _v2.
 
-       return false;
+       return major >= 3 || (major == 2 && minor >= 42);
     }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.5.307/storage/SystemInfo/CmdBlkid.h 
new/libstorage-ng-4.5.308/storage/SystemInfo/CmdBlkid.h
--- old/libstorage-ng-4.5.307/storage/SystemInfo/CmdBlkid.h     2026-03-13 
16:04:18.000000000 +0100
+++ new/libstorage-ng-4.5.308/storage/SystemInfo/CmdBlkid.h     2026-04-01 
16:09:25.000000000 +0200
@@ -45,12 +45,12 @@
     /**
      * Run and parse the "blkid" command.
      */
-    class Blkid
+    class CmdBlkid
     {
     public:
 
-       Blkid(Udevadm& udevadm);
-       Blkid(Udevadm& udevadm, const string& device);
+       CmdBlkid(Udevadm& udevadm);
+       CmdBlkid(Udevadm& udevadm, const string& device);
 
        struct Entry
        {
@@ -84,7 +84,7 @@
        const_iterator begin() const { return data.begin(); }
        const_iterator end() const { return data.end(); }
 
-       friend std::ostream& operator<<(std::ostream& s, const Blkid& blkid);
+       friend std::ostream& operator<<(std::ostream& s, const CmdBlkid& 
cmd_blkid);
        friend std::ostream& operator<<(std::ostream& s, const Entry& entry);
 
        /**
@@ -113,15 +113,19 @@
 
     private:
 
-       Blkid(Udevadm& udevadm, const std::optional<string>& device);
+       CmdBlkid(Udevadm& udevadm, const std::optional<string>& device);
 
        void parse(const vector<string>& lines);
+       void parse_json(const vector<string>& lines);
 
        map<string, Entry> data;
 
     };
 
 
+    using Blkid = CmdBlkid;
+
+
     class CmdBlkidVersion
     {
     public:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.5.307/storage/SystemInfo/CmdDasdview.cc 
new/libstorage-ng-4.5.308/storage/SystemInfo/CmdDasdview.cc
--- old/libstorage-ng-4.5.307/storage/SystemInfo/CmdDasdview.cc 2026-03-13 
16:04:18.000000000 +0100
+++ new/libstorage-ng-4.5.308/storage/SystemInfo/CmdDasdview.cc 2026-04-01 
16:09:25.000000000 +0200
@@ -31,7 +31,7 @@
 namespace storage
 {
 
-    Dasdview::Dasdview(const string& device)
+    CmdDasdview::CmdDasdview(const string& device)
        : device(device)
     {
        SystemCmd cmd({ DASDVIEW_BIN, "--extended", device }, 
SystemCmd::DoThrow);
@@ -41,7 +41,7 @@
 
 
     void
-    Dasdview::parse(const vector<string>& lines)
+    CmdDasdview::parse(const vector<string>& lines)
     {
        vector<string>::const_iterator pos;
 
@@ -82,10 +82,10 @@
 
 
     std::ostream&
-    operator<<(std::ostream& s, const Dasdview& dasdview)
+    operator<<(std::ostream& s, const CmdDasdview& cmd_dasdview)
     {
-       s << "device:" << dasdview.device << " bus-id:" << dasdview.bus_id << " 
type:"
-         << toString(dasdview.type) << " format:" << toString(dasdview.format);
+       s << "device:" << cmd_dasdview.device << " bus-id:" << 
cmd_dasdview.bus_id << " type:"
+         << toString(cmd_dasdview.type) << " format:" << 
toString(cmd_dasdview.format);
 
        return s;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.5.307/storage/SystemInfo/CmdDasdview.h 
new/libstorage-ng-4.5.308/storage/SystemInfo/CmdDasdview.h
--- old/libstorage-ng-4.5.307/storage/SystemInfo/CmdDasdview.h  2026-03-13 
16:04:18.000000000 +0100
+++ new/libstorage-ng-4.5.308/storage/SystemInfo/CmdDasdview.h  2026-04-01 
16:09:25.000000000 +0200
@@ -33,14 +33,14 @@
     using std::string;
 
 
-    class Dasdview
+    class CmdDasdview
     {
 
     public:
 
-       Dasdview(const string& device);
+       CmdDasdview(const string& device);
 
-       friend std::ostream& operator<<(std::ostream& s, const Dasdview& 
dasdview);
+       friend std::ostream& operator<<(std::ostream& s, const CmdDasdview& 
cmd_dasdview);
 
        string get_bus_id() const { return bus_id; }
 
@@ -60,6 +60,9 @@
 
     };
 
+
+    using Dasdview = CmdDasdview;
+
 }
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.5.307/storage/SystemInfo/CmdParted.cc 
new/libstorage-ng-4.5.308/storage/SystemInfo/CmdParted.cc
--- old/libstorage-ng-4.5.307/storage/SystemInfo/CmdParted.cc   2026-03-13 
16:04:18.000000000 +0100
+++ new/libstorage-ng-4.5.308/storage/SystemInfo/CmdParted.cc   2026-04-01 
16:09:25.000000000 +0200
@@ -42,7 +42,7 @@
     using namespace std;
 
 
-    Parted::Parted(Udevadm& udevadm, const string& device)
+    CmdParted::CmdParted(Udevadm& udevadm, const string& device)
        : device(device)
     {
        const bool json = CmdPartedVersion::supports_json_option();
@@ -88,7 +88,7 @@
 
 
     void
-    Parted::parse(const vector<string>& stdout, const vector<string>& stderr)
+    CmdParted::parse(const vector<string>& stdout, const vector<string>& 
stderr)
     {
        primary_slots = -1;
        implicit = false;
@@ -147,7 +147,7 @@
 
 
     void
-    Parted::scan_device(json_object* node)
+    CmdParted::scan_device(json_object* node)
     {
        string tmp;
 
@@ -171,7 +171,7 @@
 
 
     void
-    Parted::scan_device_flags(json_object* node)
+    CmdParted::scan_device_flags(json_object* node)
     {
        vector<json_object*> nodes;
        if (!get_child_nodes(node, "flags", nodes))
@@ -193,7 +193,7 @@
 
 
     void
-    Parted::scan_entry(json_object* node)
+    CmdParted::scan_entry(json_object* node)
     {
        Entry entry;
 
@@ -262,7 +262,7 @@
 
 
     void
-    Parted::scan_entry_flags(json_object* node, Entry& entry) const
+    CmdParted::scan_entry_flags(json_object* node, Entry& entry) const
     {
        entry.id = ID_LINUX;
        entry.boot = false;
@@ -311,7 +311,7 @@
 
 
     void
-    Parted::scan_device_line(const string& line)
+    CmdParted::scan_device_line(const string& line)
     {
        vector<string> tmp = tokenize(line);
 
@@ -335,7 +335,7 @@
 
 
     void
-    Parted::scan_device_flags(const string& s)
+    CmdParted::scan_device_flags(const string& s)
     {
        implicit = boost::contains(s, "implicit_partition_table");
 
@@ -344,7 +344,7 @@
 
 
     PtType
-    Parted::scan_partition_table_type(const string& s) const
+    CmdParted::scan_partition_table_type(const string& s) const
     {
        for (map<const char*, PtType>::value_type tmp : name_to_pt_type)
        {
@@ -357,7 +357,7 @@
 
 
     void
-    Parted::scan_entry_line(const string& line)
+    CmdParted::scan_entry_line(const string& line)
     {
        vector<string> tmp = tokenize(line);
 
@@ -385,7 +385,7 @@
 
 
     void
-    Parted::scan_entry_flags(const string& s, Entry& entry) const
+    CmdParted::scan_entry_flags(const string& s, Entry& entry) const
     {
        entry.type = PartitionType::PRIMARY;
 
@@ -445,7 +445,7 @@
 
 
     unsigned long long
-    Parted::scan_sectors(const string& s) const
+    CmdParted::scan_sectors(const string& s) const
     {
        if (s.empty() || s.back() != 's')
            ST_THROW(ParseException("bad sector value", s, "1024s"));
@@ -461,7 +461,7 @@
 
 
     void
-    Parted::scan_stderr(const vector<string>& stderr)
+    CmdParted::scan_stderr(const vector<string>& stderr)
     {
        gpt_undersized = contains_if(stderr, string_contains("fix the GPT to 
use all"));
 
@@ -471,7 +471,7 @@
 
 
     void
-    Parted::fix_dasd_sector_size()
+    CmdParted::fix_dasd_sector_size()
     {
        // see do_resize() and do_create() in PartitionImpl.cc
        if (label == PtType::DASD && logical_sector_size == 512 &&
@@ -496,7 +496,7 @@
 
 
     bool
-    Parted::get_entry(unsigned number, Entry& entry) const
+    CmdParted::get_entry(unsigned number, Entry& entry) const
     {
        for (const_iterator it = entries.begin(); it != entries.end(); ++it)
        {
@@ -512,7 +512,7 @@
 
 
     vector<string>
-    Parted::tokenize(const string& line) const
+    CmdParted::tokenize(const string& line) const
     {
        if (!boost::ends_with(line, ";"))
            ST_THROW(ParseException("missing semicolon", "", ";"));
@@ -557,29 +557,29 @@
 
 
     std::ostream&
-    operator<<(std::ostream& s, const Parted& parted)
+    operator<<(std::ostream& s, const CmdParted& cmd_parted)
     {
-       s << "device:" << parted.device << " label:" << 
get_pt_type_name(parted.label)
-         << " region:" << parted.region;
+       s << "device:" << cmd_parted.device << " label:" << 
get_pt_type_name(cmd_parted.label)
+         << " region:" << cmd_parted.region;
 
-       if (parted.primary_slots >= 0)
-           s << " primary-slots:" << parted.primary_slots;
+       if (cmd_parted.primary_slots >= 0)
+           s << " primary-slots:" << cmd_parted.primary_slots;
 
-       if (parted.implicit)
+       if (cmd_parted.implicit)
            s << " implicit";
 
-       if (parted.gpt_undersized)
+       if (cmd_parted.gpt_undersized)
            s << " gpt-undersized";
 
-       if (parted.gpt_backup_broken)
+       if (cmd_parted.gpt_backup_broken)
            s << " gpt-backup-broken";
 
-       if (parted.gpt_pmbr_boot)
+       if (cmd_parted.gpt_pmbr_boot)
            s << " gpt-pmbr-boot";
 
        s << '\n';
 
-       for (const Parted::Entry& entry : parted.entries)
+       for (const CmdParted::Entry& entry : cmd_parted.entries)
            s << entry << '\n';
 
        return s;
@@ -587,7 +587,7 @@
 
 
     std::ostream&
-    operator<<(std::ostream& s, const Parted::Entry& entry)
+    operator<<(std::ostream& s, const CmdParted::Entry& entry)
     {
        s << "number:" << entry.number << " region:" << entry.region << " type:"
          << get_partition_type_name(entry.type) << " id:" << sformat("0x%02x", 
entry.id);
@@ -608,7 +608,7 @@
     }
 
 
-    const map<unsigned int, const char*> Parted::id_to_name = {
+    const map<unsigned int, const char*> CmdParted::id_to_name = {
        { ID_BIOS_BOOT, "bios_grub" },
        { ID_DIAG, "diag" },
        { ID_ESP, "esp" },
@@ -623,7 +623,7 @@
     };
 
 
-    const map<unsigned int, const char*> Parted::id_to_uuid = {
+    const map<unsigned int, const char*> CmdParted::id_to_uuid = {
        { ID_LINUX, "0fc63daf-8483-4772-8e79-3d69d8477de4" },
        { ID_LINUX_ROOT_ARM, "69dad710-2ce4-4e3c-b16c-21a1d49abed3" },
        { ID_LINUX_ROOT_AARCH64, "b921b045-1df0-41c3-af44-4c6f280d3fae" },
@@ -652,7 +652,7 @@
     };
 
 
-    const map<const char*, PtType> Parted::name_to_pt_type = {
+    const map<const char*, PtType> CmdParted::name_to_pt_type = {
        { "aix", PtType::AIX },
        { "amiga", PtType::AMIGA },
        { "atari", PtType::ATARI },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.5.307/storage/SystemInfo/CmdParted.h 
new/libstorage-ng-4.5.308/storage/SystemInfo/CmdParted.h
--- old/libstorage-ng-4.5.307/storage/SystemInfo/CmdParted.h    2026-03-13 
16:04:18.000000000 +0100
+++ new/libstorage-ng-4.5.308/storage/SystemInfo/CmdParted.h    2026-04-01 
16:09:25.000000000 +0200
@@ -41,7 +41,7 @@
     /**
      * Class for probing for partitions with the 'parted' command.
      */
-    class Parted
+    class CmdParted
     {
 
     public:
@@ -51,7 +51,7 @@
         * with the 'parted' command and parse its output.
         * This may throw a SystemCmdException or a ParseException.
         */
-       Parted(Udevadm& udevadm, const string& device);
+       CmdParted(Udevadm& udevadm, const string& device);
 
        /**
         * Entry for one partition.
@@ -83,7 +83,7 @@
            string name;
        };
 
-       friend std::ostream& operator<<(std::ostream& s, const Parted& parted);
+       friend std::ostream& operator<<(std::ostream& s, const CmdParted& 
cmd_parted);
        friend std::ostream& operator<<(std::ostream& s, const Entry& entry);
 
        /**
@@ -218,6 +218,9 @@
     };
 
 
+    using Parted = CmdParted;
+
+
     class CmdPartedVersion
     {
     public:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.5.307/testsuite/SystemInfo/Makefile.am 
new/libstorage-ng-4.5.308/testsuite/SystemInfo/Makefile.am
--- old/libstorage-ng-4.5.307/testsuite/SystemInfo/Makefile.am  2026-03-13 
16:04:18.000000000 +0100
+++ new/libstorage-ng-4.5.308/testsuite/SystemInfo/Makefile.am  2026-04-01 
16:09:25.000000000 +0200
@@ -7,8 +7,8 @@
 LDADD = ../../storage/libstorage-ng.la -lboost_unit_test_framework
 
 check_PROGRAMS =                                                               
\
-       blkid.test btrfs-filesystem-df-60.test btrfs-filesystem-df-61.test      
\
-       btrfs-filesystem-show.test                                              
\
+       blkid-241.test blkid-242.test btrfs-filesystem-df-60.test               
\
+       btrfs-filesystem-df-61.test btrfs-filesystem-show.test                  
\
        btrfs-subvolume-get-default.test btrfs-subvolume-list.test              
\
        btrfs-subvolume-show.test btrfs-qgroup-show-60.test                     
\
        btrfs-qgroup-show-602.test btrfs-qgroup-show-62.test                    
\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.5.307/testsuite/SystemInfo/blkid-241.cc 
new/libstorage-ng-4.5.308/testsuite/SystemInfo/blkid-241.cc
--- old/libstorage-ng-4.5.307/testsuite/SystemInfo/blkid-241.cc 1970-01-01 
01:00:00.000000000 +0100
+++ new/libstorage-ng-4.5.308/testsuite/SystemInfo/blkid-241.cc 2026-04-01 
16:09:25.000000000 +0200
@@ -0,0 +1,333 @@
+
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE libstorage
+
+#include <boost/test/unit_test.hpp>
+#include <boost/algorithm/string.hpp>
+
+#include "storage/SystemInfo/CmdBlkid.h"
+#include "storage/Utils/Mockup.h"
+#include "storage/Utils/StorageDefines.h"
+
+
+using namespace std;
+using namespace storage;
+
+
+void
+check(const vector<string>& input, const vector<string>& output)
+{
+    Mockup::set_mode(Mockup::Mode::PLAYBACK);
+    Mockup::set_command(BLKID_BIN " --version",
+                       RemoteCommand({ "blkid from util-linux 2.41.3  
(libblkid 2.41.3, 15-Dec-2025)" }, {}, 0));
+    Mockup::set_command(BLKID_BIN " --cache-file /dev/null", input);
+    Mockup::set_command({ UDEVADM_BIN_SETTLE }, {});
+
+    Udevadm udevadm;
+
+    CmdBlkid cmd_blkid(udevadm);
+
+    ostringstream parsed;
+    parsed.setf(std::ios::boolalpha);
+    parsed << cmd_blkid;
+
+    string lhs = parsed.str();
+    string rhs = boost::join(output, "\n") + "\n";
+
+    BOOST_CHECK_EQUAL(lhs, rhs);
+}
+
+
+void
+check(const string& device, const vector<string>& input, const vector<string>& 
output)
+{
+    Mockup::set_mode(Mockup::Mode::PLAYBACK);
+    Mockup::set_command(BLKID_BIN " --version",
+                       RemoteCommand({ "blkid from util-linux 2.41.3  
(libblkid 2.41.3, 15-Dec-2025)" }, {}, 0));
+    Mockup::set_command(BLKID_BIN " --cache-file /dev/null " + device, input);
+    Mockup::set_command({ UDEVADM_BIN_SETTLE }, {});
+
+    Udevadm udevadm;
+
+    CmdBlkid cmd_blkid(udevadm, device);
+
+    ostringstream parsed;
+    parsed.setf(std::ios::boolalpha);
+    parsed << cmd_blkid;
+
+    string lhs = parsed.str();
+    string rhs = boost::join(output, "\n") + "\n";
+
+    BOOST_CHECK_EQUAL(lhs, rhs);
+}
+
+
+void
+check_split_line( const string & input, const string & output )
+{
+    string result = boost::join(CmdBlkid::split_line(input), "|");
+
+    BOOST_CHECK_EQUAL( result, output );
+}
+
+
+BOOST_AUTO_TEST_CASE(split_line)
+{
+    check_split_line( "aaa bbb ccc", "aaa|bbb|ccc" );
+    check_split_line( "  aaa   bbb   ccc  ", "aaa|bbb|ccc" );
+    check_split_line( "", "" );
+    check_split_line( "aa=\"xxx\" bb=\"yyy\" cc=\"zzz\"", 
"aa=\"xxx\"|bb=\"yyy\"|cc=\"zzz\"" );
+    check_split_line( "  aa=\"xxx\"   bb=\"yyy\"   cc=\"zzz\"  ", 
"aa=\"xxx\"|bb=\"yyy\"|cc=\"zzz\"" );
+
+    // Whitespace in quoted strings
+    check_split_line( "aa=\"x  x x\" bb=\"yy y\" cc=\"zzz\"", "aa=\"x  x 
x\"|bb=\"yy y\"|cc=\"zzz\"" );
+    check_split_line( "aa=\"x  x x\" bb=\"yy y", "aa=\"x  x x\"|bb=\"yy y" );
+
+    // Escaped quote in string
+    check_split_line( "aa=\"x\\\"xx\" bb=\"yyy\"", 
"aa=\"x\\\"xx\"|bb=\"yyy\"");
+
+    // Escaped quote in string and at the end and not properly terminated
+    check_split_line( "aa=\"x\\\"xx\" bb=\"yyy\\\"", 
"aa=\"x\\\"xx\"|bb=\"yyy\\\"");
+}
+
+
+BOOST_AUTO_TEST_CASE(parse1)
+{
+    vector<string> input = {
+       "/dev/sda1: LABEL=\"BOOT\" 
UUID=\"14875716-b8e3-4c83-ac86-48c20682b63a\" TYPE=\"ext3\" PTTYPE=\"dos\" ",
+       "/dev/sda2: UUID=\"qquP1O-WWoh-Ofas-Rbx0-y72T-0sNe-Wnyc33\" 
TYPE=\"LVM2_member\" ",
+       "/dev/mapper/system-abuild: LABEL=\"ABUILD\" 
UUID=\"16337c60-fc2a-4b87-8199-4f511fa06c65\" TYPE=\"ext4\" ",
+       "/dev/mapper/system-btrfs: LABEL=\"BTRFS\" 
UUID=\"946de1e3-ab5a-49d2-8c9d-057f1613d395\" 
UUID_SUB=\"8fd5c226-d060-4049-90e6-1df5c865fdf4\" TYPE=\"btrfs\" ",
+       "/dev/mapper/system-giant: LABEL=\"GIANT\" 
UUID=\"0857a01f-c58e-464a-b74b-cd46992873e7\" TYPE=\"xfs\" ",
+       "/dev/mapper/system-root: LABEL=\"ROOT\" 
UUID=\"31e381c9-5b35-4045-8d01-9274a30e1298\" TYPE=\"ext3\" ",
+       "/dev/mapper/system-swap: LABEL=\"SWAP\" 
UUID=\"fd39c3f9-2990-435d-8eed-e56b6dc2e592\" TYPE=\"swap\" ",
+       "/dev/mapper/docker-254:3-266193-pool: 
UUID=\"b8965f68-1e7c-4fac-982b-5859dca91de5\" TYPE=\"ext4\" "
+    };
+
+    vector<string> output = {
+       "data[/dev/mapper/docker-254:3-266193-pool] -> is-fs:true fs-type:ext4 
fs-uuid:b8965f68-1e7c-4fac-982b-5859dca91de5",
+       "data[/dev/mapper/system-abuild] -> is-fs:true fs-type:ext4 
fs-uuid:16337c60-fc2a-4b87-8199-4f511fa06c65 fs-label:ABUILD",
+       "data[/dev/mapper/system-btrfs] -> is-fs:true fs-type:btrfs 
fs-uuid:946de1e3-ab5a-49d2-8c9d-057f1613d395 fs-label:BTRFS 
fs-sub-uuid:8fd5c226-d060-4049-90e6-1df5c865fdf4",
+       "data[/dev/mapper/system-giant] -> is-fs:true fs-type:xfs 
fs-uuid:0857a01f-c58e-464a-b74b-cd46992873e7 fs-label:GIANT",
+       "data[/dev/mapper/system-root] -> is-fs:true fs-type:ext3 
fs-uuid:31e381c9-5b35-4045-8d01-9274a30e1298 fs-label:ROOT",
+       "data[/dev/mapper/system-swap] -> is-fs:true fs-type:swap 
fs-uuid:fd39c3f9-2990-435d-8eed-e56b6dc2e592 fs-label:SWAP",
+       "data[/dev/sda1] -> is-fs:true fs-type:ext3 
fs-uuid:14875716-b8e3-4c83-ac86-48c20682b63a fs-label:BOOT",
+       "data[/dev/sda2] -> is-lvm:true"
+    };
+
+    check(input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse2)
+{
+    vector<string> input = {
+       "/dev/sda1: UUID=\"fc5985ee-e069-4bb4-a36c-24d8f6022f7a\" TYPE=\"ext4\" 
",
+       "/dev/sda2: UUID=\"f98def5a-6553-49a1-940d-df55a77d7d28\" 
TYPE=\"crypto_LUKS\" ",
+       "/dev/mapper/tmp: UUID=\"wunWKW-nDeG-SUnC-CxDO-5UNt-BA4Y-Se7xVC\" 
TYPE=\"LVM2_member\" ",
+       "/dev/mapper/system-home: UUID=\"7e9e18c3-b743-47d8-9f33-464f466fc517\" 
UUID_SUB=\"4f40002c-125e-43c1-8a38-b5bf29f5319c\" TYPE=\"btrfs\" ",
+       "/dev/mapper/system-root: UUID=\"9fca85ff-4278-4f49-932e-4060726cf0d6\" 
UUID_SUB=\"ab28e20a-9c11-4ea6-a46d-0fe412fe0e19\" TYPE=\"btrfs\" ",
+       "/dev/mapper/system-swap: UUID=\"d0f020a1-9847-4ee5-a22e-fe0cdd4aa905\" 
TYPE=\"swap\" "
+    };
+
+    vector<string> output = {
+       "data[/dev/mapper/system-home] -> is-fs:true fs-type:btrfs 
fs-uuid:7e9e18c3-b743-47d8-9f33-464f466fc517 
fs-sub-uuid:4f40002c-125e-43c1-8a38-b5bf29f5319c",
+       "data[/dev/mapper/system-root] -> is-fs:true fs-type:btrfs 
fs-uuid:9fca85ff-4278-4f49-932e-4060726cf0d6 
fs-sub-uuid:ab28e20a-9c11-4ea6-a46d-0fe412fe0e19",
+       "data[/dev/mapper/system-swap] -> is-fs:true fs-type:swap 
fs-uuid:d0f020a1-9847-4ee5-a22e-fe0cdd4aa905",
+       "data[/dev/mapper/tmp] -> is-lvm:true",
+       "data[/dev/sda1] -> is-fs:true fs-type:ext4 
fs-uuid:fc5985ee-e069-4bb4-a36c-24d8f6022f7a",
+       "data[/dev/sda2] -> is-luks:true 
luks-uuid:f98def5a-6553-49a1-940d-df55a77d7d28"
+    };
+
+    check(input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse3)
+{
+    vector<string> input = {
+       "/dev/dasda1: UUID=\"ab43b144-37e2-4e9c-8369-6df220f055b0\" 
SEC_TYPE=\"ext2\" TYPE=\"ext4\" "
+    };
+
+    vector<string> output = {
+       "data[/dev/dasda1] -> is-fs:true fs-type:ext4 
fs-uuid:ab43b144-37e2-4e9c-8369-6df220f055b0"
+    };
+
+    check(input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse4)
+{
+    vector<string> input = {
+       "/dev/sdb: UUID=\"2013-06-14-19-02-28-00\" 
LABEL=\"SLES-11-SP3-MINI-ISO-x86_640703\" TYPE=\"iso9660\" ",
+       "/dev/sdc1: SEC_TYPE=\"msdos\" LABEL=\"BOOT\" UUID=\"65CB-FEB0\" 
TYPE=\"vfat\" PARTUUID=\"a893698d-01\" ",
+       "/dev/sdc2: UUID=\"2013-11-06-15-55-09-00\" LABEL=\"openSUSE 13.1 KDE 
Live\" TYPE=\"udf\" PARTUUID=\"a893698d-02\" "
+    };
+
+    vector<string> output = {
+       "data[/dev/sdb] -> is-fs:true fs-type:iso9660 
fs-uuid:2013-06-14-19-02-28-00 fs-label:SLES-11-SP3-MINI-ISO-x86_640703",
+       "data[/dev/sdc1] -> is-fs:true fs-type:vfat fs-uuid:65CB-FEB0 
fs-label:BOOT",
+       "data[/dev/sdc2] -> is-fs:true fs-type:udf 
fs-uuid:2013-11-06-15-55-09-00 fs-label:openSUSE 13.1 KDE Live"
+    };
+
+    check(input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse5)
+{
+    vector<string> input = {
+       "/dev/sdb1: UUID=\"db2702b8-7ae4-6bea-1849-341d8ecd7367\" 
UUID_SUB=\"5b8ceee8-7757-7ce9-d003-a50c09c88b02\" LABEL=\"thalassa:0\" 
TYPE=\"linux_raid_member\" PARTUUID=\"995ef2e3-cae4-4515-adf0-525729463b0e\"",
+       "/dev/sdb2: UUID=\"db2702b8-7ae4-6bea-1849-341d8ecd7367\" 
UUID_SUB=\"e1385e7d-40c2-6ec7-f610-ab5bbfb5df8d\" LABEL=\"thalassa:0\" 
TYPE=\"linux_raid_member\" PARTUUID=\"460714f6-8eed-4ffe-9de0-8dfa2c6fff40\""
+    };
+
+    vector<string> output = {
+       "data[/dev/sdb1] -> is-md:true",
+       "data[/dev/sdb2] -> is-md:true"
+    };
+
+    check(input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse6)
+{
+    vector<string> input = {
+       "/dev/sdb: UUID=\"86fa0e25-c962-4410-9113-cd23bfad08a6\" 
TYPE=\"bcache\"",
+       "/dev/sdc: UUID=\"5f5da36e-b312-45e5-b86c-059275cfe1de\" 
TYPE=\"bcache\"",
+       "/dev/bcache0: UUID=\"38986ecf-78d1-450b-8ad4-f071a33a7984\" 
TYPE=\"xfs\"",
+    };
+
+    vector<string> output = {
+       "data[/dev/bcache0] -> is-fs:true fs-type:xfs 
fs-uuid:38986ecf-78d1-450b-8ad4-f071a33a7984",
+       "data[/dev/sdb] -> is-bcache:true 
bcache-uuid:86fa0e25-c962-4410-9113-cd23bfad08a6",
+       "data[/dev/sdc] -> is-bcache:true 
bcache-uuid:5f5da36e-b312-45e5-b86c-059275cfe1de"
+    };
+
+    check(input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse7)
+{
+    vector<string> input = {
+       "/dev/sda1: LABEL=\"BOOT\" 
UUID=\"14875716-b8e3-4c83-ac86-48c20682b63a\" TYPE=\"ext3\" PTTYPE=\"dos\" "
+    };
+
+    vector<string> output = {
+       "data[/dev/sda1] -> is-fs:true fs-type:ext3 
fs-uuid:14875716-b8e3-4c83-ac86-48c20682b63a fs-label:BOOT"
+    };
+
+    check("/dev/sda1", input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse_external_journal)
+{
+    vector<string> input = {
+       "/dev/sdc1: UUID=\"6ed5af86-99f7-4ffc-aeef-1e9da94c8f10\" 
EXT_JOURNAL=\"d1cdcace-86b4-4f36-aaf3-38897c95108d\" TYPE=\"ext4\"",
+       "/dev/sdc2: UUID=\"d1cdcace-86b4-4f36-aaf3-38897c95108d\" 
LOGUUID=\"d1cdcace-86b4-4f36-aaf3-38897c95108d\" TYPE=\"jbd\"",
+       "/dev/sdc3: UUID=\"3937b487-0ea8-4605-a2b1-69504a79ad02\" TYPE=\"xfs\"",
+       "/dev/sdc4: LOGUUID=\"3937b487-0ea8-4605-a2b1-69504a79ad02\" 
TYPE=\"xfs_external_log\""
+    };
+
+    vector<string> output = {
+       "data[/dev/sdc1] -> is-fs:true fs-type:ext4 
fs-uuid:6ed5af86-99f7-4ffc-aeef-1e9da94c8f10 
fs-journal-uuid:d1cdcace-86b4-4f36-aaf3-38897c95108d",
+       "data[/dev/sdc2] -> is-journal:true 
journal-uuid:d1cdcace-86b4-4f36-aaf3-38897c95108d",
+       "data[/dev/sdc3] -> is-fs:true fs-type:xfs 
fs-uuid:3937b487-0ea8-4605-a2b1-69504a79ad02",
+       "data[/dev/sdc4] -> is-journal:true 
journal-uuid:3937b487-0ea8-4605-a2b1-69504a79ad02"
+    };
+
+    check(input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse_isw)
+{
+    vector<string> input = {
+       "/dev/sdb: TYPE=\"isw_raid_member\"",
+       "/dev/sdc: TYPE=\"isw_raid_member\"",
+       "/dev/sdd: TYPE=\"isw_raid_member\"",
+       "/dev/md126: UUID=\"aa211544-31d9-491a-b770-2295381acb3b\" 
TYPE=\"ext4\""
+    };
+
+    vector<string> output = {
+       "data[/dev/md126] -> is-fs:true fs-type:ext4 
fs-uuid:aa211544-31d9-491a-b770-2295381acb3b",
+       "data[/dev/sdb] -> is-md:true",
+       "data[/dev/sdc] -> is-md:true",
+       "data[/dev/sdd] -> is-md:true"
+    };
+
+    check(input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse_ddf)
+{
+    vector<string> input = {
+       "/dev/sdb: UUID=\"Linux-MDM-^M--M->M-o\" TYPE=\"ddf_raid_member\"",
+       "/dev/sdc: UUID=\"Linux-MDM-^M--M->M-o\" TYPE=\"ddf_raid_member\"",
+       "/dev/sdd: UUID=\"Linux-MDM-^M--M->M-o\" TYPE=\"ddf_raid_member\"",
+       "/dev/md126: UUID=\"b6da62bd-6057-4315-a58c-b7b4a9a5e693\" 
TYPE=\"ext4\""
+    };
+
+    vector<string> output = {
+       "data[/dev/md126] -> is-fs:true fs-type:ext4 
fs-uuid:b6da62bd-6057-4315-a58c-b7b4a9a5e693",
+       "data[/dev/sdb] -> is-md:true",
+       "data[/dev/sdc] -> is-md:true",
+       "data[/dev/sdd] -> is-md:true"
+    };
+
+    check(input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse_luks)
+{
+    vector<string> input = {
+       "/dev/sdb1: UUID=\"b329b40b-e5f0-4f8e-814d-b6afb7f0ce64\" 
TYPE=\"crypto_LUKS\" PARTUUID=\"02cabc90-ca73-4302-928e-a924cda495bc\"",
+       "/dev/sdb2: UUID=\"332cd185-9d1b-479c-ade6-a9fb6e4e536d\" 
LABEL=\"master-plan\" TYPE=\"crypto_LUKS\" 
PARTUUID=\"20e9945b-1b57-4f46-89d8-b6321be05df3\""
+    };
+
+    vector<string> output = {
+       "data[/dev/sdb1] -> is-luks:true 
luks-uuid:b329b40b-e5f0-4f8e-814d-b6afb7f0ce64",
+       "data[/dev/sdb2] -> is-luks:true 
luks-uuid:332cd185-9d1b-479c-ade6-a9fb6e4e536d luks-label:master-plan"
+    };
+
+    check(input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(split_weird_uuid_line)
+{
+    // bsc#1102572
+    string input  = "/dev/sdb: UUID=\"LSI     M-^@M-^FM-!^F^W4^R\\\"HM-^@M- 
^XM-.kwM-T\" TYPE=\"ddf_raid_member\"";
+    string output = "/dev/sdb:|UUID=\"LSI     M-^@M-^FM-!^F^W4^R\\\"HM-^@M- 
^XM-.kwM-T\"|TYPE=\"ddf_raid_member\"";
+
+    check_split_line( input, output );
+}
+
+
+BOOST_AUTO_TEST_CASE(weird_uuid)
+{
+     // bsc#1102572
+    vector<string> input = {
+        "/dev/sdb: UUID=\"LSI     M-^@M-^FM-!^F^W4^R\\\"HM-^@M- ^XM-.kwM-T\" 
TYPE=\"ddf_raid_member\"",
+        "/dev/sda: UUID=\"LSI     M-^@M-^FM-!^F^W4^R\\\"HM-^@M- ^XM-.kwM-T\" 
TYPE=\"ddf_raid_member\"",
+        "/dev/md126: PTUUID=\"361b9912\" PTTYPE=\"dos\"",
+        "/dev/md126p1: LABEL=\"LINSERV\" UUID=\"88B5-20E8\" TYPE=\"vfat\" 
PARTUUID=\"361b9912-01\"",
+        "/dev/md126p2: LABEL=\"RAID1\" UUID=\"BAE2-F35E\" TYPE=\"vfat\" 
PARTUUID=\"361b9912-02\""
+    };
+
+    vector<string> output = {
+        // Alpha-sorted by map key, thus the different order than in the input
+       "data[/dev/md126p1] -> is-fs:true fs-type:vfat fs-uuid:88B5-20E8 
fs-label:LINSERV",
+       "data[/dev/md126p2] -> is-fs:true fs-type:vfat fs-uuid:BAE2-F35E 
fs-label:RAID1",
+        // No output for /dev/md126 because it's irrelevant (partitionable 
device, nothing else)
+       "data[/dev/sda] -> is-md:true",
+       "data[/dev/sdb] -> is-md:true"
+    };
+
+    check(input, output);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.5.307/testsuite/SystemInfo/blkid-242.cc 
new/libstorage-ng-4.5.308/testsuite/SystemInfo/blkid-242.cc
--- old/libstorage-ng-4.5.307/testsuite/SystemInfo/blkid-242.cc 1970-01-01 
01:00:00.000000000 +0100
+++ new/libstorage-ng-4.5.308/testsuite/SystemInfo/blkid-242.cc 2026-04-01 
16:09:25.000000000 +0200
@@ -0,0 +1,118 @@
+
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE libstorage
+
+#include <boost/test/unit_test.hpp>
+#include <boost/algorithm/string.hpp>
+
+#include "storage/SystemInfo/CmdBlkid.h"
+#include "storage/Utils/Mockup.h"
+#include "storage/Utils/StorageDefines.h"
+
+
+using namespace std;
+using namespace storage;
+
+
+void
+check(const vector<string>& input, const vector<string>& output)
+{
+    Mockup::set_mode(Mockup::Mode::PLAYBACK);
+    Mockup::set_command(BLKID_BIN " --version",
+                       RemoteCommand({ "blkid from util-linux 2.42  (libblkid 
2.42, 01-Apr-2026)" }, {}, 0));
+    Mockup::set_command(BLKID_BIN " --cache-file /dev/null --output json", 
input);
+    Mockup::set_command({ UDEVADM_BIN_SETTLE }, {});
+
+    Udevadm udevadm;
+
+    CmdBlkid cmd_blkid(udevadm);
+
+    ostringstream parsed;
+    parsed.setf(std::ios::boolalpha);
+    parsed << cmd_blkid;
+
+    string lhs = parsed.str();
+    string rhs = boost::join(output, "\n") + "\n";
+
+    BOOST_CHECK_EQUAL(lhs, rhs);
+}
+
+
+void
+check(const string& device, const vector<string>& input, const vector<string>& 
output)
+{
+    Mockup::set_mode(Mockup::Mode::PLAYBACK);
+    Mockup::set_command(BLKID_BIN " --version",
+                       RemoteCommand({ "blkid from util-linux 2.42  (libblkid 
2.42, 01-Apr-2026)" }, {}, 0));
+    Mockup::set_command(BLKID_BIN " --cache-file /dev/null --output json " + 
device, input);
+    Mockup::set_command({ UDEVADM_BIN_SETTLE }, {});
+
+    Udevadm udevadm;
+
+    CmdBlkid cmd_blkid(udevadm, device);
+
+    ostringstream parsed;
+    parsed.setf(std::ios::boolalpha);
+    parsed << cmd_blkid;
+
+    string lhs = parsed.str();
+    string rhs = boost::join(output, "\n") + "\n";
+
+    BOOST_CHECK_EQUAL(lhs, rhs);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse1)
+{
+    vector<string> input = {
+       "{",
+       "   \"blkid\": [",
+       "      {",
+       "         \"device\": \"/dev/mapper/system-root\",",
+       "         \"uuid\": \"72e2918a-b8a8-494c-abd7-2090ebf34e64\",",
+       "         \"block_size\": \"4096\",",
+       "         \"type\": \"ext4\"",
+       "      },{",
+       "         \"device\": \"/dev/sda2\",",
+       "         \"uuid\": \"Ni5zl4-XUxV-0DxM-aUe1-eQpN-JHId-RDj9fa\",",
+       "         \"type\": \"LVM2_member\",",
+       "         \"partuuid\": \"65867d0b-0150-4af6-966c-fe82cdb180cd\"",
+       "      },{",
+       "         \"device\": \"/dev/sda1\",",
+       "         \"partuuid\": \"54b83199-0935-41b7-b982-08c11a7cc47a\"",
+       "      }",
+       "   ]",
+       "}"
+    };
+
+    vector<string> output = {
+       "data[/dev/mapper/system-root] -> is-fs:true fs-type:ext4 
fs-uuid:72e2918a-b8a8-494c-abd7-2090ebf34e64",
+       "data[/dev/sda2] -> is-lvm:true"
+    };
+
+    check(input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse2)
+{
+    vector<string> input = {
+       "{",
+       "   \"blkid\": [",
+       "      {",
+       "         \"device\": \"/dev/sdc1\",",
+       "         \"uuid\": \"43653208-6196-4d1d-8823-fb735b2c66e9\",",
+       "         \"block_size\": \"4096\",",
+       "         \"type\": \"ext4\",",
+       "         \"partuuid\": \"dc2fd0b9-7957-4183-b357-f9d482d43b7d\"",
+       "      }",
+       "   ]",
+       "}"
+    };
+
+    vector<string> output = {
+       "data[/dev/sdc1] -> is-fs:true fs-type:ext4 
fs-uuid:43653208-6196-4d1d-8823-fb735b2c66e9"
+    };
+
+    check("/dev/sdc1", input, output);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.5.307/testsuite/SystemInfo/blkid.cc 
new/libstorage-ng-4.5.308/testsuite/SystemInfo/blkid.cc
--- old/libstorage-ng-4.5.307/testsuite/SystemInfo/blkid.cc     2026-03-13 
16:04:18.000000000 +0100
+++ new/libstorage-ng-4.5.308/testsuite/SystemInfo/blkid.cc     1970-01-01 
01:00:00.000000000 +0100
@@ -1,333 +0,0 @@
-
-#define BOOST_TEST_DYN_LINK
-#define BOOST_TEST_MODULE libstorage
-
-#include <boost/test/unit_test.hpp>
-#include <boost/algorithm/string.hpp>
-
-#include "storage/SystemInfo/CmdBlkid.h"
-#include "storage/Utils/Mockup.h"
-#include "storage/Utils/StorageDefines.h"
-
-
-using namespace std;
-using namespace storage;
-
-
-void
-check(const vector<string>& input, const vector<string>& output)
-{
-    Mockup::set_mode(Mockup::Mode::PLAYBACK);
-    Mockup::set_command(BLKID_BIN " --version",
-                       RemoteCommand({ "blkid from util-linux 2.41.3  
(libblkid 2.41.3, 15-Dec-2025)" }, {}, 0));
-    Mockup::set_command(BLKID_BIN " --cache-file /dev/null", input);
-    Mockup::set_command({ UDEVADM_BIN_SETTLE }, {});
-
-    Udevadm udevadm;
-
-    Blkid blkid(udevadm);
-
-    ostringstream parsed;
-    parsed.setf(std::ios::boolalpha);
-    parsed << blkid;
-
-    string lhs = parsed.str();
-    string rhs = boost::join(output, "\n") + "\n";
-
-    BOOST_CHECK_EQUAL(lhs, rhs);
-}
-
-
-void
-check(const string& device, const vector<string>& input, const vector<string>& 
output)
-{
-    Mockup::set_mode(Mockup::Mode::PLAYBACK);
-    Mockup::set_command(BLKID_BIN " --version",
-                       RemoteCommand({ "blkid from util-linux 2.41.3  
(libblkid 2.41.3, 15-Dec-2025)" }, {}, 0));
-    Mockup::set_command(BLKID_BIN " --cache-file /dev/null " + device, input);
-    Mockup::set_command({ UDEVADM_BIN_SETTLE }, {});
-
-    Udevadm udevadm;
-
-    Blkid blkid(udevadm, device);
-
-    ostringstream parsed;
-    parsed.setf(std::ios::boolalpha);
-    parsed << blkid;
-
-    string lhs = parsed.str();
-    string rhs = boost::join(output, "\n") + "\n";
-
-    BOOST_CHECK_EQUAL(lhs, rhs);
-}
-
-
-void
-check_split_line( const string & input, const string & output )
-{
-    string result = boost::join( Blkid::split_line( input ), "|" );
-
-    BOOST_CHECK_EQUAL( result, output );
-}
-
-
-BOOST_AUTO_TEST_CASE(split_line)
-{
-    check_split_line( "aaa bbb ccc", "aaa|bbb|ccc" );
-    check_split_line( "  aaa   bbb   ccc  ", "aaa|bbb|ccc" );
-    check_split_line( "", "" );
-    check_split_line( "aa=\"xxx\" bb=\"yyy\" cc=\"zzz\"", 
"aa=\"xxx\"|bb=\"yyy\"|cc=\"zzz\"" );
-    check_split_line( "  aa=\"xxx\"   bb=\"yyy\"   cc=\"zzz\"  ", 
"aa=\"xxx\"|bb=\"yyy\"|cc=\"zzz\"" );
-
-    // Whitespace in quoted strings
-    check_split_line( "aa=\"x  x x\" bb=\"yy y\" cc=\"zzz\"", "aa=\"x  x 
x\"|bb=\"yy y\"|cc=\"zzz\"" );
-    check_split_line( "aa=\"x  x x\" bb=\"yy y", "aa=\"x  x x\"|bb=\"yy y" );
-
-    // Escaped quote in string
-    check_split_line( "aa=\"x\\\"xx\" bb=\"yyy\"", 
"aa=\"x\\\"xx\"|bb=\"yyy\"");
-
-    // Escaped quote in string and at the end and not properly terminated
-    check_split_line( "aa=\"x\\\"xx\" bb=\"yyy\\\"", 
"aa=\"x\\\"xx\"|bb=\"yyy\\\"");
-}
-
-
-BOOST_AUTO_TEST_CASE(parse1)
-{
-    vector<string> input = {
-       "/dev/sda1: LABEL=\"BOOT\" 
UUID=\"14875716-b8e3-4c83-ac86-48c20682b63a\" TYPE=\"ext3\" PTTYPE=\"dos\" ",
-       "/dev/sda2: UUID=\"qquP1O-WWoh-Ofas-Rbx0-y72T-0sNe-Wnyc33\" 
TYPE=\"LVM2_member\" ",
-       "/dev/mapper/system-abuild: LABEL=\"ABUILD\" 
UUID=\"16337c60-fc2a-4b87-8199-4f511fa06c65\" TYPE=\"ext4\" ",
-       "/dev/mapper/system-btrfs: LABEL=\"BTRFS\" 
UUID=\"946de1e3-ab5a-49d2-8c9d-057f1613d395\" 
UUID_SUB=\"8fd5c226-d060-4049-90e6-1df5c865fdf4\" TYPE=\"btrfs\" ",
-       "/dev/mapper/system-giant: LABEL=\"GIANT\" 
UUID=\"0857a01f-c58e-464a-b74b-cd46992873e7\" TYPE=\"xfs\" ",
-       "/dev/mapper/system-root: LABEL=\"ROOT\" 
UUID=\"31e381c9-5b35-4045-8d01-9274a30e1298\" TYPE=\"ext3\" ",
-       "/dev/mapper/system-swap: LABEL=\"SWAP\" 
UUID=\"fd39c3f9-2990-435d-8eed-e56b6dc2e592\" TYPE=\"swap\" ",
-       "/dev/mapper/docker-254:3-266193-pool: 
UUID=\"b8965f68-1e7c-4fac-982b-5859dca91de5\" TYPE=\"ext4\" "
-    };
-
-    vector<string> output = {
-       "data[/dev/mapper/docker-254:3-266193-pool] -> is-fs:true fs-type:ext4 
fs-uuid:b8965f68-1e7c-4fac-982b-5859dca91de5",
-       "data[/dev/mapper/system-abuild] -> is-fs:true fs-type:ext4 
fs-uuid:16337c60-fc2a-4b87-8199-4f511fa06c65 fs-label:ABUILD",
-       "data[/dev/mapper/system-btrfs] -> is-fs:true fs-type:btrfs 
fs-uuid:946de1e3-ab5a-49d2-8c9d-057f1613d395 fs-label:BTRFS 
fs-sub-uuid:8fd5c226-d060-4049-90e6-1df5c865fdf4",
-       "data[/dev/mapper/system-giant] -> is-fs:true fs-type:xfs 
fs-uuid:0857a01f-c58e-464a-b74b-cd46992873e7 fs-label:GIANT",
-       "data[/dev/mapper/system-root] -> is-fs:true fs-type:ext3 
fs-uuid:31e381c9-5b35-4045-8d01-9274a30e1298 fs-label:ROOT",
-       "data[/dev/mapper/system-swap] -> is-fs:true fs-type:swap 
fs-uuid:fd39c3f9-2990-435d-8eed-e56b6dc2e592 fs-label:SWAP",
-       "data[/dev/sda1] -> is-fs:true fs-type:ext3 
fs-uuid:14875716-b8e3-4c83-ac86-48c20682b63a fs-label:BOOT",
-       "data[/dev/sda2] -> is-lvm:true"
-    };
-
-    check(input, output);
-}
-
-
-BOOST_AUTO_TEST_CASE(parse2)
-{
-    vector<string> input = {
-       "/dev/sda1: UUID=\"fc5985ee-e069-4bb4-a36c-24d8f6022f7a\" TYPE=\"ext4\" 
",
-       "/dev/sda2: UUID=\"f98def5a-6553-49a1-940d-df55a77d7d28\" 
TYPE=\"crypto_LUKS\" ",
-       "/dev/mapper/tmp: UUID=\"wunWKW-nDeG-SUnC-CxDO-5UNt-BA4Y-Se7xVC\" 
TYPE=\"LVM2_member\" ",
-       "/dev/mapper/system-home: UUID=\"7e9e18c3-b743-47d8-9f33-464f466fc517\" 
UUID_SUB=\"4f40002c-125e-43c1-8a38-b5bf29f5319c\" TYPE=\"btrfs\" ",
-       "/dev/mapper/system-root: UUID=\"9fca85ff-4278-4f49-932e-4060726cf0d6\" 
UUID_SUB=\"ab28e20a-9c11-4ea6-a46d-0fe412fe0e19\" TYPE=\"btrfs\" ",
-       "/dev/mapper/system-swap: UUID=\"d0f020a1-9847-4ee5-a22e-fe0cdd4aa905\" 
TYPE=\"swap\" "
-    };
-
-    vector<string> output = {
-       "data[/dev/mapper/system-home] -> is-fs:true fs-type:btrfs 
fs-uuid:7e9e18c3-b743-47d8-9f33-464f466fc517 
fs-sub-uuid:4f40002c-125e-43c1-8a38-b5bf29f5319c",
-       "data[/dev/mapper/system-root] -> is-fs:true fs-type:btrfs 
fs-uuid:9fca85ff-4278-4f49-932e-4060726cf0d6 
fs-sub-uuid:ab28e20a-9c11-4ea6-a46d-0fe412fe0e19",
-       "data[/dev/mapper/system-swap] -> is-fs:true fs-type:swap 
fs-uuid:d0f020a1-9847-4ee5-a22e-fe0cdd4aa905",
-       "data[/dev/mapper/tmp] -> is-lvm:true",
-       "data[/dev/sda1] -> is-fs:true fs-type:ext4 
fs-uuid:fc5985ee-e069-4bb4-a36c-24d8f6022f7a",
-       "data[/dev/sda2] -> is-luks:true 
luks-uuid:f98def5a-6553-49a1-940d-df55a77d7d28"
-    };
-
-    check(input, output);
-}
-
-
-BOOST_AUTO_TEST_CASE(parse3)
-{
-    vector<string> input = {
-       "/dev/dasda1: UUID=\"ab43b144-37e2-4e9c-8369-6df220f055b0\" 
SEC_TYPE=\"ext2\" TYPE=\"ext4\" "
-    };
-
-    vector<string> output = {
-       "data[/dev/dasda1] -> is-fs:true fs-type:ext4 
fs-uuid:ab43b144-37e2-4e9c-8369-6df220f055b0"
-    };
-
-    check(input, output);
-}
-
-
-BOOST_AUTO_TEST_CASE(parse4)
-{
-    vector<string> input = {
-       "/dev/sdb: UUID=\"2013-06-14-19-02-28-00\" 
LABEL=\"SLES-11-SP3-MINI-ISO-x86_640703\" TYPE=\"iso9660\" ",
-       "/dev/sdc1: SEC_TYPE=\"msdos\" LABEL=\"BOOT\" UUID=\"65CB-FEB0\" 
TYPE=\"vfat\" PARTUUID=\"a893698d-01\" ",
-       "/dev/sdc2: UUID=\"2013-11-06-15-55-09-00\" LABEL=\"openSUSE 13.1 KDE 
Live\" TYPE=\"udf\" PARTUUID=\"a893698d-02\" "
-    };
-
-    vector<string> output = {
-       "data[/dev/sdb] -> is-fs:true fs-type:iso9660 
fs-uuid:2013-06-14-19-02-28-00 fs-label:SLES-11-SP3-MINI-ISO-x86_640703",
-       "data[/dev/sdc1] -> is-fs:true fs-type:vfat fs-uuid:65CB-FEB0 
fs-label:BOOT",
-       "data[/dev/sdc2] -> is-fs:true fs-type:udf 
fs-uuid:2013-11-06-15-55-09-00 fs-label:openSUSE 13.1 KDE Live"
-    };
-
-    check(input, output);
-}
-
-
-BOOST_AUTO_TEST_CASE(parse5)
-{
-    vector<string> input = {
-       "/dev/sdb1: UUID=\"db2702b8-7ae4-6bea-1849-341d8ecd7367\" 
UUID_SUB=\"5b8ceee8-7757-7ce9-d003-a50c09c88b02\" LABEL=\"thalassa:0\" 
TYPE=\"linux_raid_member\" PARTUUID=\"995ef2e3-cae4-4515-adf0-525729463b0e\"",
-       "/dev/sdb2: UUID=\"db2702b8-7ae4-6bea-1849-341d8ecd7367\" 
UUID_SUB=\"e1385e7d-40c2-6ec7-f610-ab5bbfb5df8d\" LABEL=\"thalassa:0\" 
TYPE=\"linux_raid_member\" PARTUUID=\"460714f6-8eed-4ffe-9de0-8dfa2c6fff40\""
-    };
-
-    vector<string> output = {
-       "data[/dev/sdb1] -> is-md:true",
-       "data[/dev/sdb2] -> is-md:true"
-    };
-
-    check(input, output);
-}
-
-
-BOOST_AUTO_TEST_CASE(parse6)
-{
-    vector<string> input = {
-       "/dev/sdb: UUID=\"86fa0e25-c962-4410-9113-cd23bfad08a6\" 
TYPE=\"bcache\"",
-       "/dev/sdc: UUID=\"5f5da36e-b312-45e5-b86c-059275cfe1de\" 
TYPE=\"bcache\"",
-       "/dev/bcache0: UUID=\"38986ecf-78d1-450b-8ad4-f071a33a7984\" 
TYPE=\"xfs\"",
-    };
-
-    vector<string> output = {
-       "data[/dev/bcache0] -> is-fs:true fs-type:xfs 
fs-uuid:38986ecf-78d1-450b-8ad4-f071a33a7984",
-       "data[/dev/sdb] -> is-bcache:true 
bcache-uuid:86fa0e25-c962-4410-9113-cd23bfad08a6",
-       "data[/dev/sdc] -> is-bcache:true 
bcache-uuid:5f5da36e-b312-45e5-b86c-059275cfe1de"
-    };
-
-    check(input, output);
-}
-
-
-BOOST_AUTO_TEST_CASE(parse7)
-{
-    vector<string> input = {
-       "/dev/sda1: LABEL=\"BOOT\" 
UUID=\"14875716-b8e3-4c83-ac86-48c20682b63a\" TYPE=\"ext3\" PTTYPE=\"dos\" "
-    };
-
-    vector<string> output = {
-       "data[/dev/sda1] -> is-fs:true fs-type:ext3 
fs-uuid:14875716-b8e3-4c83-ac86-48c20682b63a fs-label:BOOT"
-    };
-
-    check("/dev/sda1", input, output);
-}
-
-
-BOOST_AUTO_TEST_CASE(parse_external_journal)
-{
-    vector<string> input = {
-       "/dev/sdc1: UUID=\"6ed5af86-99f7-4ffc-aeef-1e9da94c8f10\" 
EXT_JOURNAL=\"d1cdcace-86b4-4f36-aaf3-38897c95108d\" TYPE=\"ext4\"",
-       "/dev/sdc2: UUID=\"d1cdcace-86b4-4f36-aaf3-38897c95108d\" 
LOGUUID=\"d1cdcace-86b4-4f36-aaf3-38897c95108d\" TYPE=\"jbd\"",
-       "/dev/sdc3: UUID=\"3937b487-0ea8-4605-a2b1-69504a79ad02\" TYPE=\"xfs\"",
-       "/dev/sdc4: LOGUUID=\"3937b487-0ea8-4605-a2b1-69504a79ad02\" 
TYPE=\"xfs_external_log\""
-    };
-
-    vector<string> output = {
-       "data[/dev/sdc1] -> is-fs:true fs-type:ext4 
fs-uuid:6ed5af86-99f7-4ffc-aeef-1e9da94c8f10 
fs-journal-uuid:d1cdcace-86b4-4f36-aaf3-38897c95108d",
-       "data[/dev/sdc2] -> is-journal:true 
journal-uuid:d1cdcace-86b4-4f36-aaf3-38897c95108d",
-       "data[/dev/sdc3] -> is-fs:true fs-type:xfs 
fs-uuid:3937b487-0ea8-4605-a2b1-69504a79ad02",
-       "data[/dev/sdc4] -> is-journal:true 
journal-uuid:3937b487-0ea8-4605-a2b1-69504a79ad02"
-    };
-
-    check(input, output);
-}
-
-
-BOOST_AUTO_TEST_CASE(parse_isw)
-{
-    vector<string> input = {
-       "/dev/sdb: TYPE=\"isw_raid_member\"",
-       "/dev/sdc: TYPE=\"isw_raid_member\"",
-       "/dev/sdd: TYPE=\"isw_raid_member\"",
-       "/dev/md126: UUID=\"aa211544-31d9-491a-b770-2295381acb3b\" 
TYPE=\"ext4\""
-    };
-
-    vector<string> output = {
-       "data[/dev/md126] -> is-fs:true fs-type:ext4 
fs-uuid:aa211544-31d9-491a-b770-2295381acb3b",
-       "data[/dev/sdb] -> is-md:true",
-       "data[/dev/sdc] -> is-md:true",
-       "data[/dev/sdd] -> is-md:true"
-    };
-
-    check(input, output);
-}
-
-
-BOOST_AUTO_TEST_CASE(parse_ddf)
-{
-    vector<string> input = {
-       "/dev/sdb: UUID=\"Linux-MDM-^M--M->M-o\" TYPE=\"ddf_raid_member\"",
-       "/dev/sdc: UUID=\"Linux-MDM-^M--M->M-o\" TYPE=\"ddf_raid_member\"",
-       "/dev/sdd: UUID=\"Linux-MDM-^M--M->M-o\" TYPE=\"ddf_raid_member\"",
-       "/dev/md126: UUID=\"b6da62bd-6057-4315-a58c-b7b4a9a5e693\" 
TYPE=\"ext4\""
-    };
-
-    vector<string> output = {
-       "data[/dev/md126] -> is-fs:true fs-type:ext4 
fs-uuid:b6da62bd-6057-4315-a58c-b7b4a9a5e693",
-       "data[/dev/sdb] -> is-md:true",
-       "data[/dev/sdc] -> is-md:true",
-       "data[/dev/sdd] -> is-md:true"
-    };
-
-    check(input, output);
-}
-
-
-BOOST_AUTO_TEST_CASE(parse_luks)
-{
-    vector<string> input = {
-       "/dev/sdb1: UUID=\"b329b40b-e5f0-4f8e-814d-b6afb7f0ce64\" 
TYPE=\"crypto_LUKS\" PARTUUID=\"02cabc90-ca73-4302-928e-a924cda495bc\"",
-       "/dev/sdb2: UUID=\"332cd185-9d1b-479c-ade6-a9fb6e4e536d\" 
LABEL=\"master-plan\" TYPE=\"crypto_LUKS\" 
PARTUUID=\"20e9945b-1b57-4f46-89d8-b6321be05df3\""
-    };
-
-    vector<string> output = {
-       "data[/dev/sdb1] -> is-luks:true 
luks-uuid:b329b40b-e5f0-4f8e-814d-b6afb7f0ce64",
-       "data[/dev/sdb2] -> is-luks:true 
luks-uuid:332cd185-9d1b-479c-ade6-a9fb6e4e536d luks-label:master-plan"
-    };
-
-    check(input, output);
-}
-
-
-BOOST_AUTO_TEST_CASE(split_weird_uuid_line)
-{
-    // bsc#1102572
-    string input  = "/dev/sdb: UUID=\"LSI     M-^@M-^FM-!^F^W4^R\\\"HM-^@M- 
^XM-.kwM-T\" TYPE=\"ddf_raid_member\"";
-    string output = "/dev/sdb:|UUID=\"LSI     M-^@M-^FM-!^F^W4^R\\\"HM-^@M- 
^XM-.kwM-T\"|TYPE=\"ddf_raid_member\"";
-
-    check_split_line( input, output );
-}
-
-
-BOOST_AUTO_TEST_CASE(weird_uuid)
-{
-     // bsc#1102572
-    vector<string> input = {
-        "/dev/sdb: UUID=\"LSI     M-^@M-^FM-!^F^W4^R\\\"HM-^@M- ^XM-.kwM-T\" 
TYPE=\"ddf_raid_member\"",
-        "/dev/sda: UUID=\"LSI     M-^@M-^FM-!^F^W4^R\\\"HM-^@M- ^XM-.kwM-T\" 
TYPE=\"ddf_raid_member\"",
-        "/dev/md126: PTUUID=\"361b9912\" PTTYPE=\"dos\"",
-        "/dev/md126p1: LABEL=\"LINSERV\" UUID=\"88B5-20E8\" TYPE=\"vfat\" 
PARTUUID=\"361b9912-01\"",
-        "/dev/md126p2: LABEL=\"RAID1\" UUID=\"BAE2-F35E\" TYPE=\"vfat\" 
PARTUUID=\"361b9912-02\""
-    };
-
-    vector<string> output = {
-        // Alpha-sorted by map key, thus the different order than in the input
-       "data[/dev/md126p1] -> is-fs:true fs-type:vfat fs-uuid:88B5-20E8 
fs-label:LINSERV",
-       "data[/dev/md126p2] -> is-fs:true fs-type:vfat fs-uuid:BAE2-F35E 
fs-label:RAID1",
-        // No output for /dev/md126 because it's irrelevant (partitionable 
device, nothing else)
-       "data[/dev/sda] -> is-md:true",
-       "data[/dev/sdb] -> is-md:true"
-    };
-
-    check(input, output);
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.5.307/testsuite/SystemInfo/dasdview.cc 
new/libstorage-ng-4.5.308/testsuite/SystemInfo/dasdview.cc
--- old/libstorage-ng-4.5.307/testsuite/SystemInfo/dasdview.cc  2026-03-13 
16:04:18.000000000 +0100
+++ new/libstorage-ng-4.5.308/testsuite/SystemInfo/dasdview.cc  2026-04-01 
16:09:25.000000000 +0200
@@ -21,11 +21,11 @@
     Mockup::set_mode(Mockup::Mode::PLAYBACK);
     Mockup::set_command({ DASDVIEW_BIN, "--extended", device }, input);
 
-    Dasdview dasdview(device);
+    CmdDasdview cmd_dasdview(device);
 
     ostringstream parsed;
     parsed.setf(std::ios::boolalpha);
-    parsed << dasdview;
+    parsed << cmd_dasdview;
 
     string lhs = parsed.str();
     string rhs = boost::join(output, "\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.5.307/testsuite/SystemInfo/parted-34.cc 
new/libstorage-ng-4.5.308/testsuite/SystemInfo/parted-34.cc
--- old/libstorage-ng-4.5.307/testsuite/SystemInfo/parted-34.cc 2026-03-13 
16:04:18.000000000 +0100
+++ new/libstorage-ng-4.5.308/testsuite/SystemInfo/parted-34.cc 2026-04-01 
16:09:25.000000000 +0200
@@ -28,11 +28,11 @@
 
     Udevadm udevadm;
 
-    Parted parted(udevadm, device);
+    CmdParted cmd_parted(udevadm, device);
 
     ostringstream parsed;
     parsed.setf(std::ios::boolalpha);
-    parsed << parted;
+    parsed << cmd_parted;
 
     string lhs = parsed.str();
     string rhs = boost::join(result, "\n") + "\n";
@@ -57,7 +57,7 @@
 
     Udevadm udevadm;
 
-    BOOST_CHECK_THROW({ Parted parted(udevadm, device); }, ParseException);
+    BOOST_CHECK_THROW({ CmdParted cmd_parted(udevadm, device); }, 
ParseException);
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.5.307/testsuite/SystemInfo/parted-35.cc 
new/libstorage-ng-4.5.308/testsuite/SystemInfo/parted-35.cc
--- old/libstorage-ng-4.5.307/testsuite/SystemInfo/parted-35.cc 2026-03-13 
16:04:18.000000000 +0100
+++ new/libstorage-ng-4.5.308/testsuite/SystemInfo/parted-35.cc 2026-04-01 
16:09:25.000000000 +0200
@@ -28,11 +28,11 @@
 
     Udevadm udevadm;
 
-    Parted parted(udevadm, device);
+    CmdParted cmd_parted(udevadm, device);
 
     ostringstream parsed;
     parsed.setf(std::ios::boolalpha);
-    parsed << parted;
+    parsed << cmd_parted;
 
     string lhs = parsed.str();
     string rhs = boost::join(result, "\n") + "\n";
@@ -57,7 +57,7 @@
 
     Udevadm udevadm;
 
-    BOOST_CHECK_THROW({ Parted parted(udevadm, device); }, Exception);
+    BOOST_CHECK_THROW({ CmdParted cmd_parted(udevadm, device); }, Exception);
 }
 
 

Reply via email to