Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package rubygem-ruby-dbus for 
openSUSE:Factory checked in at 2025-04-04 17:29:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-ruby-dbus (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-ruby-dbus.new.1907 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-ruby-dbus"

Fri Apr  4 17:29:11 2025 rev:41 rq:1266924 version:0.25.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-ruby-dbus/rubygem-ruby-dbus.changes      
2025-01-07 20:51:25.695972652 +0100
+++ 
/work/SRC/openSUSE:Factory/.rubygem-ruby-dbus.new.1907/rubygem-ruby-dbus.changes
    2025-04-04 17:29:28.132914781 +0200
@@ -1,0 +2,9 @@
+Thu Apr  3 12:35:53 UTC 2025 - Martin Vidner <mvid...@suse.com>
+
+- 0.25.0
+ Bug fixes:
+ * Mention qualified property name in Get or Set errors
+   (gh#mvidner/ruby-dbus#147).
+ * Fix declaring logger and ostruct gems for Ruby 3.5
+
+-------------------------------------------------------------------

Old:
----
  ruby-dbus-0.24.0.gem

New:
----
  ruby-dbus-0.25.0.gem

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

Other differences:
------------------
++++++ rubygem-ruby-dbus.spec ++++++
--- /var/tmp/diff_new_pack.AWlICo/_old  2025-04-04 17:29:29.144956509 +0200
+++ /var/tmp/diff_new_pack.AWlICo/_new  2025-04-04 17:29:29.144956509 +0200
@@ -24,12 +24,14 @@
 #
 
 Name:           rubygem-ruby-dbus
-Version:        0.24.0
+Version:        0.25.0
 Release:        0
 %define mod_name ruby-dbus
 %define mod_full_name %{mod_name}-%{version}
 # MANUAL
+BuildRequires:  %{rubygem logger}
 BuildRequires:  %{rubygem nokogiri >= 1.12}
+BuildRequires:  %{rubygem ostruct}
 BuildRequires:  %{rubygem packaging_rake_tasks}
 BuildRequires:  %{rubygem rake}
 BuildRequires:  %{rubygem rspec >= 3.9}

++++++ gem2rpm.yml ++++++
--- /var/tmp/diff_new_pack.AWlICo/_old  2025-04-04 17:29:29.176957828 +0200
+++ /var/tmp/diff_new_pack.AWlICo/_new  2025-04-04 17:29:29.180957993 +0200
@@ -73,7 +73,9 @@
     Provides:       ruby-dbus = %{version}
     Obsoletes:      ruby-dbus < %{version}
 :preamble: |-
+  BuildRequires:  %{rubygem logger}
   BuildRequires:  %{rubygem nokogiri >= 1.12}
+  BuildRequires:  %{rubygem ostruct}
   BuildRequires:  %{rubygem packaging_rake_tasks}
   BuildRequires:  %{rubygem rake}
   BuildRequires:  %{rubygem rspec >= 3.9}

++++++ ruby-dbus-0.24.0.gem -> ruby-dbus-0.25.0.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/NEWS.md new/NEWS.md
--- old/NEWS.md 2025-01-02 15:13:57.000000000 +0100
+++ new/NEWS.md 2025-04-03 17:18:04.000000000 +0200
@@ -2,6 +2,14 @@
 
 ## Unreleased
 
+## Ruby D-Bus 0.25.0 - 2025-04-03
+
+Bug fixes:
+ * Mention qualified property name in Get or Set errors ([#147][]).
+ * Fix declaring logger and ostruct gems for Ruby 3.5
+
+[#147]: https://github.com/mvidner/ruby-dbus/pull/147
+
 ## Ruby D-Bus 0.24.0 - 2025-01-02
 
 Bug fixes:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Rakefile new/Rakefile
--- old/Rakefile        2025-01-02 15:13:57.000000000 +0100
+++ new/Rakefile        2025-04-03 17:18:04.000000000 +0200
@@ -4,7 +4,7 @@
 require "rake"
 require "fileutils"
 require "tmpdir"
-require "rspec/core/rake_task"
+require "shellwords"
 begin
   require "rubocop/rake_task"
 rescue LoadError
@@ -34,13 +34,18 @@
 task default: [:spec, :rubocop]
 task test: :spec
 
-RSpec::Core::RakeTask.new("bare:spec")
+desc "Run RSpec code examples"
+task "bare:spec", [:options] do |_t, args|
+  args.with_defaults(options: "")
+  sh "rspec #{args[:options]}"
+end
 
 ["spec"].each do |tname|
   desc "Run bare:#{tname} in the proper environment"
-  task tname do |_t|
+  task tname, [:options] do |_t, args|
+    args.with_defaults(options: "")
     cd "spec/tools" do
-      sh "./test_env rake bare:#{tname}"
+      sh "./test_env rake bare:#{tname}[#{args[:options].shellescape}]"
     end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/VERSION new/VERSION
--- old/VERSION 2025-01-02 15:13:57.000000000 +0100
+++ new/VERSION 2025-04-03 17:18:04.000000000 +0200
@@ -1 +1 @@
-0.24.0
+0.25.0
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/dbus/logger.rb new/lib/dbus/logger.rb
--- old/lib/dbus/logger.rb      2025-01-02 15:13:57.000000000 +0100
+++ new/lib/dbus/logger.rb      2025-04-03 17:18:04.000000000 +0200
@@ -17,7 +17,7 @@
   # The default one logs to STDERR,
   # with DEBUG if $DEBUG is set, otherwise INFO.
   def logger
-    if @logger.nil?
+    if !defined?(@logger) || @logger.nil?
       debug = $DEBUG || ENV["RUBY_DBUS_DEBUG"]
       @logger = Logger.new($stderr)
       @logger.level = debug ? Logger::DEBUG : Logger::INFO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/dbus/marshall.rb new/lib/dbus/marshall.rb
--- old/lib/dbus/marshall.rb    2025-01-02 15:13:57.000000000 +0100
+++ new/lib/dbus/marshall.rb    2025-04-03 17:18:04.000000000 +0200
@@ -180,7 +180,7 @@
       case alignment
       when 1, 2, 4, 8
         bits = alignment - 1
-        num + bits & ~bits
+        (num + bits) & ~bits
       else
         raise ArgumentError, "Unsupported alignment #{alignment}"
       end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/dbus/message.rb new/lib/dbus/message.rb
--- old/lib/dbus/message.rb     2025-01-02 15:13:57.000000000 +0100
+++ new/lib/dbus/message.rb     2025-04-03 17:18:04.000000000 +0200
@@ -103,9 +103,9 @@
 
     def to_s
       "#{message_type} sender=#{sender} -> dest=#{destination} " \
-      "serial=#{serial} reply_serial=#{reply_serial} " \
-      "path=#{path}; interface=#{interface}; member=#{member} " \
-      "error_name=#{error_name}"
+        "serial=#{serial} reply_serial=#{reply_serial} " \
+        "path=#{path}; interface=#{interface}; member=#{member} " \
+        "error_name=#{error_name}"
     end
 
     # @return [String] name of message type, as used in match rules:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/dbus/object.rb new/lib/dbus/object.rb
--- old/lib/dbus/object.rb      2025-01-02 15:13:57.000000000 +0100
+++ new/lib/dbus/object.rb      2025-04-03 17:18:04.000000000 +0200
@@ -116,7 +116,7 @@
 
     # Forgetting to declare the interface for a method/signal/property
     # is a ScriptError.
-    class UndefinedInterface < ScriptError # rubocop:disable 
Lint/InheritException
+    class UndefinedInterface < ScriptError
       def initialize(sym)
         super "No interface specified for #{sym}. Enclose it in 
dbus_interface."
       end
@@ -253,7 +253,7 @@
       property = Property.new(dbus_name, type, :read, ruby_name: ruby_name)
       @@cur_intf.define(property)
 
-      ruby_name_eq = "#{ruby_name}=".to_sym
+      ruby_name_eq = :"#{ruby_name}="
       return unless method_defined?(ruby_name_eq)
 
       dbus_watcher(ruby_name, dbus_name: dbus_name, emits_changed_signal: 
emits_changed_signal)
@@ -294,7 +294,7 @@
       interface_name = @@cur_intf.name
 
       ruby_name = ruby_name.to_s.sub(/=$/, "").to_sym
-      ruby_name_eq = "#{ruby_name}=".to_sym
+      ruby_name_eq = :"#{ruby_name}="
       original_ruby_name_eq = "_original_#{ruby_name_eq}"
 
       dbus_name = make_dbus_name(ruby_name, dbus_name: dbus_name)
@@ -455,11 +455,16 @@
         property = dbus_lookup_property(interface_name, property_name)
 
         if property.readable?
-          ruby_name = property.ruby_name
-          value = public_send(ruby_name)
-          # may raise, DBus.error or 
https://ruby-doc.com/core-3.1.0/TypeError.html
-          typed_value = Data.make_typed(property.type, value)
-          [typed_value]
+          begin
+            ruby_name = property.ruby_name
+            value = public_send(ruby_name)
+            # may raise, DBus.error or 
https://ruby-doc.com/core-3.1.0/TypeError.html
+            typed_value = Data.make_typed(property.type, value)
+            [typed_value]
+          rescue StandardError => e
+            msg = "When getting '#{interface_name}.#{property_name}': " + 
e.message
+            raise e.exception(msg)
+          end
         else
           raise DBus.error("org.freedesktop.DBus.Error.PropertyWriteOnly"),
                 "Property '#{interface_name}.#{property_name}' (on object 
'#{@path}') is not readable"
@@ -470,11 +475,16 @@
         property = dbus_lookup_property(interface_name, property_name)
 
         if property.writable?
-          ruby_name_eq = "#{property.ruby_name}="
-          # TODO: declare dbus_method :Set to take :exact argument
-          # and type check it here before passing its :plain value
-          # to the implementation
-          public_send(ruby_name_eq, value)
+          begin
+            ruby_name_eq = "#{property.ruby_name}="
+            # TODO: declare dbus_method :Set to take :exact argument
+            # and type check it here before passing its :plain value
+            # to the implementation
+            public_send(ruby_name_eq, value)
+          rescue StandardError => e
+            msg = "When setting '#{interface_name}.#{property_name}': " + 
e.message
+            raise e.exception(msg)
+          end
         else
           raise DBus.error("org.freedesktop.DBus.Error.PropertyReadOnly"),
                 "Property '#{interface_name}.#{property_name}' (on object 
'#{@path}') is not writable"
@@ -507,8 +517,8 @@
             typed_value = Data.make_typed(property.type, value)
             p_hash[p_name.to_s] = typed_value
           rescue StandardError
-            DBus.logger.debug "Property '#{interface_name}.#{p_name}' (on 
object '#{@path}')" \
-                              " has raised during GetAll, omitting it"
+            DBus.logger.debug "Property '#{interface_name}.#{p_name}' (on 
object '#{@path}') " \
+                              "has raised during GetAll, omitting it"
           end
         end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/dbus/proxy_object.rb new/lib/dbus/proxy_object.rb
--- old/lib/dbus/proxy_object.rb        2025-01-02 15:13:57.000000000 +0100
+++ new/lib/dbus/proxy_object.rb        2025-04-03 17:18:04.000000000 +0200
@@ -129,7 +129,7 @@
     # @return [void]
     def on_signal(name, &block)
       unless @default_iface && has_iface?(@default_iface)
-        raise NoMethodError, "undefined signal #{OPEN_QUOTE}#{name}' for DBus 
interface "\
+        raise NoMethodError, "undefined signal #{OPEN_QUOTE}#{name}' for DBus 
interface " \
                              "#{OPEN_QUOTE}#{@default_iface}' on object 
#{OPEN_QUOTE}#{@path}'"
       end
 
@@ -139,13 +139,6 @@
     ####################################################
     private
 
-    # rubocop:disable Lint/MissingSuper
-    # as this should forward everything
-    #
-    # https://github.com/rubocop-hq/ruby-style-guide#no-method-missing
-    # and http://blog.marc-andre.ca/2010/11/15/methodmissing-politely/
-    # have a point to be investigated
-
     # Handles all unkown methods, mostly to route method calls to the
     # default interface.
     def method_missing(name, *args, &reply_handler)
@@ -154,7 +147,7 @@
         # - di not specified
         # TODO
         # - di is specified but not found in introspection data
-        raise NoMethodError, "undefined method #{OPEN_QUOTE}#{name}' for DBus 
interface "\
+        raise NoMethodError, "undefined method #{OPEN_QUOTE}#{name}' for DBus 
interface " \
                              "#{OPEN_QUOTE}#{@default_iface}' on object 
#{OPEN_QUOTE}#{@path}'"
       end
 
@@ -166,16 +159,15 @@
         raise unless e.to_s =~ /undefined method #{OPEN_QUOTE}#{name}'/
 
         # BTW e.exception("...") would preserve the class.
-        raise NoMethodError, "undefined method #{OPEN_QUOTE}#{name}' for DBus 
interface "\
+        raise NoMethodError, "undefined method #{OPEN_QUOTE}#{name}' for DBus 
interface " \
                              "#{OPEN_QUOTE}#{@default_iface}' on object 
#{OPEN_QUOTE}#{@path}'"
       end
     end
-    # rubocop:enable Lint/MissingSuper
 
     def respond_to_missing?(name, _include_private = false)
-      @default_iface &&
+      (@default_iface &&
         has_iface?(@default_iface) &&
-        @interfaces[@default_iface].methods.key?(name) or super
+        @interfaces[@default_iface].methods.key?(name)) or super
     end
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/dbus/type.rb new/lib/dbus/type.rb
--- old/lib/dbus/type.rb        2025-01-02 15:13:57.000000000 +0100
+++ new/lib/dbus/type.rb        2025-04-03 17:18:04.000000000 +0200
@@ -163,7 +163,8 @@
       if @sigtype == DICT_ENTRY
         case @members.size
         when 2
-          raise SignatureException, "DICT_ENTRY must have 2 subtypes, found 3 
or more in #{@signature}"
+          raise SignatureException,
+                "DICT_ENTRY must have 2 subtypes, found 3 or more: 
#{@members.inspect} << #{item.inspect}"
         when 0
           if [STRUCT, ARRAY, DICT_ENTRY, VARIANT].member?(item.sigtype)
             raise SignatureException, "DICT_ENTRY key must be basic 
(non-container)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2025-01-02 15:13:57.000000000 +0100
+++ new/metadata        2025-04-03 17:18:04.000000000 +0200
@@ -1,15 +1,30 @@
 --- !ruby/object:Gem::Specification
 name: ruby-dbus
 version: !ruby/object:Gem::Version
-  version: 0.24.0
+  version: 0.25.0
 platform: ruby
 authors:
 - Ruby DBus Team
+autorequire: 
 bindir: bin
 cert_chain: []
-date: 2025-01-02 00:00:00.000000000 Z
+date: 2025-04-03 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
+  name: logger
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: '0'
+  type: :runtime
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: '0'
+- !ruby/object:Gem::Dependency
   name: rexml
   requirement: !ruby/object:Gem::Requirement
     requirements:
@@ -38,7 +53,7 @@
       - !ruby/object:Gem::Version
         version: '0'
 - !ruby/object:Gem::Dependency
-  name: packaging_rake_tasks
+  name: ostruct
   requirement: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
@@ -52,7 +67,7 @@
       - !ruby/object:Gem::Version
         version: '0'
 - !ruby/object:Gem::Dependency
-  name: rake
+  name: packaging_rake_tasks
   requirement: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
@@ -66,33 +81,33 @@
       - !ruby/object:Gem::Version
         version: '0'
 - !ruby/object:Gem::Dependency
-  name: rspec
+  name: rake
   requirement: !ruby/object:Gem::Requirement
     requirements:
-    - - "~>"
+    - - ">="
       - !ruby/object:Gem::Version
-        version: '3'
+        version: '0'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
-    - - "~>"
+    - - ">="
       - !ruby/object:Gem::Version
-        version: '3'
+        version: '0'
 - !ruby/object:Gem::Dependency
-  name: rubocop
+  name: rspec
   requirement: !ruby/object:Gem::Requirement
     requirements:
-    - - '='
+    - - "~>"
       - !ruby/object:Gem::Version
-        version: '1.0'
+        version: '3'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
-    - - '='
+    - - "~>"
       - !ruby/object:Gem::Version
-        version: '1.0'
+        version: '3'
 - !ruby/object:Gem::Dependency
   name: simplecov
   requirement: !ruby/object:Gem::Requirement
@@ -237,6 +252,7 @@
 licenses:
 - LGPL-2.1-or-later
 metadata: {}
+post_install_message: 
 rdoc_options: []
 require_paths:
 - lib
@@ -251,7 +267,8 @@
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
-rubygems_version: 3.6.2
+rubygems_version: 3.2.33
+signing_key: 
 specification_version: 4
 summary: Ruby module for interaction with D-Bus
 test_files: []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruby-dbus.gemspec new/ruby-dbus.gemspec
--- old/ruby-dbus.gemspec       2025-01-02 15:13:57.000000000 +0100
+++ new/ruby-dbus.gemspec       2025-04-03 17:18:04.000000000 +0200
@@ -1,7 +1,6 @@
 # frozen_string_literal: true
 
 # -*- ruby -*-
-require "rubygems"
 
 GEMSPEC = Gem::Specification.new do |s|
   s.name = "ruby-dbus"
@@ -22,6 +21,7 @@
 
   s.required_ruby_version = ">= 2.4.0"
 
+  s.add_runtime_dependency "logger"
   # Either of rexml and nokogiri is required
   # but AFAIK gemspec cannot express that.
   # Nokogiri is recommended as rexml is dead slow.
@@ -30,10 +30,10 @@
 
   # workaround: rubocop-1.0 needs base64 which is no longer in stdlib in newer 
rubies
   s.add_development_dependency "base64"
+  s.add_development_dependency "ostruct"
   s.add_development_dependency "packaging_rake_tasks"
   s.add_development_dependency "rake"
   s.add_development_dependency "rspec", "~> 3"
-  s.add_development_dependency "rubocop", "= 1.0"
   s.add_development_dependency "simplecov"
   s.add_development_dependency "simplecov-lcov"
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spec/data_spec.rb new/spec/data_spec.rb
--- old/spec/data_spec.rb       2025-01-02 15:13:57.000000000 +0100
+++ new/spec/data_spec.rb       2025-04-03 17:18:04.000000000 +0200
@@ -223,43 +223,43 @@
 
   describe DBus::Data::Byte do
     include_examples "#== and #eql? work for basic types"
-    include_examples "constructor accepts numeric range", 0, 2**8 - 1
+    include_examples "constructor accepts numeric range", 0, (2**8) - 1
     include_examples "constructor accepts plain or typed values", 42
   end
 
   describe DBus::Data::Int16 do
     include_examples "#== and #eql? work for basic types"
-    include_examples "constructor accepts numeric range", -2**15, 2**15 - 1
+    include_examples "constructor accepts numeric range", -2**15, (2**15) - 1
     include_examples "constructor accepts plain or typed values", 42
   end
 
   describe DBus::Data::UInt16 do
     include_examples "#== and #eql? work for basic types"
-    include_examples "constructor accepts numeric range", 0, 2**16 - 1
+    include_examples "constructor accepts numeric range", 0, (2**16) - 1
     include_examples "constructor accepts plain or typed values", 42
   end
 
   describe DBus::Data::Int32 do
     include_examples "#== and #eql? work for basic types"
-    include_examples "constructor accepts numeric range", -2**31, 2**31 - 1
+    include_examples "constructor accepts numeric range", -2**31, (2**31) - 1
     include_examples "constructor accepts plain or typed values", 42
   end
 
   describe DBus::Data::UInt32 do
     include_examples "#== and #eql? work for basic types"
-    include_examples "constructor accepts numeric range", 0, 2**32 - 1
+    include_examples "constructor accepts numeric range", 0, (2**32) - 1
     include_examples "constructor accepts plain or typed values", 42
   end
 
   describe DBus::Data::Int64 do
     include_examples "#== and #eql? work for basic types"
-    include_examples "constructor accepts numeric range", -2**63, 2**63 - 1
+    include_examples "constructor accepts numeric range", -2**63, (2**63) - 1
     include_examples "constructor accepts plain or typed values", 42
   end
 
   describe DBus::Data::UInt64 do
     include_examples "#== and #eql? work for basic types"
-    include_examples "constructor accepts numeric range", 0, 2**64 - 1
+    include_examples "constructor accepts numeric range", 0, (2**64) - 1
     include_examples "constructor accepts plain or typed values", 42
   end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spec/mock-service/spaghetti-monster.rb 
new/spec/mock-service/spaghetti-monster.rb
--- old/spec/mock-service/spaghetti-monster.rb  2025-01-02 15:13:57.000000000 
+0100
+++ new/spec/mock-service/spaghetti-monster.rb  2025-04-03 17:18:04.000000000 
+0200
@@ -122,6 +122,8 @@
     dbus_attr_reader :read_me, "s"
 
     def write_me=(value)
+      raise "We don't talk about Bruno" if value =~ /Bruno/
+
       @read_me = value
     end
     dbus_writer :write_me, "s"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spec/node_spec.rb new/spec/node_spec.rb
--- old/spec/node_spec.rb       2025-01-02 15:13:57.000000000 +0100
+++ new/spec/node_spec.rb       2025-04-03 17:18:04.000000000 +0200
@@ -25,7 +25,7 @@
     let(:manager_path) { "/org/example/FooManager" }
     let(:child_paths) do
       [
-        # note that "/org/example/FooManager/good"
+        # NOTE: "/org/example/FooManager/good"
         # is a path under a managed object but there is no object there
         "/org/example/FooManager/good/1",
         "/org/example/FooManager/good/2",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spec/property_spec.rb new/spec/property_spec.rb
--- old/spec/property_spec.rb   2025-01-02 15:13:57.000000000 +0100
+++ new/spec/property_spec.rb   2025-04-03 17:18:04.000000000 +0200
@@ -31,17 +31,36 @@
     expect(iface["ReadMe"]).to eq("READ ME")
   end
 
-  it "gets an error when reading a property whose implementation raises" do
-    expect { @iface["Explosive"] }.to raise_error(DBus::Error, /Something 
failed/)
+  context "when reading a property fails" do
+    it "gets an error, mentioning the qualified property name" do
+      expect { @iface["Explosive"] }
+        .to raise_error(DBus::Error, 
/getting.*SampleInterface.Explosive.*Something failed/)
+    end
   end
 
   it "tests property nonreading" do
     expect { @iface["WriteMe"] }.to raise_error(DBus::Error, /not readable/)
   end
 
-  it "tests property writing" do
-    @iface["ReadOrWriteMe"] = "VALUE"
-    expect(@iface["ReadOrWriteMe"]).to eq("VALUE")
+  context "writing properties" do
+    it "tests property writing" do
+      @iface["ReadOrWriteMe"] = "VALUE"
+      expect(@iface["ReadOrWriteMe"]).to eq("VALUE")
+    end
+
+    context "when writing a read-only property" do
+      it "gets an error, mentioning the qualified property name" do
+        expect { @iface["ReadMe"] = "WROTE" }
+          .to raise_error(DBus::Error, /SampleInterface.ReadMe.*not writable/)
+      end
+    end
+
+    context "when writing a property fails" do
+      it "gets an error, mentioning the qualified property name" do
+        expect { @iface["WriteMe"] = "Bruno is a city in Czechia" }
+          .to raise_error(DBus::Error, /setting.*SampleInterface.WriteMe/)
+      end
+    end
   end
 
   # https://github.com/mvidner/ruby-dbus/pull/19
@@ -54,10 +73,6 @@
     expect(@iface["ReadOrWriteMe"]).to eq("VALUE")
   end
 
-  it "tests property nonwriting" do
-    expect { @iface["ReadMe"] = "WROTE" }.to raise_error(DBus::Error, /not 
writable/)
-  end
-
   it "tests get all" do
     all = @iface.all_properties
     expect(all.keys.sort).to eq(["MyArray", "MyByte", "MyDict", "MyStruct", 
"MyVariant", "ReadMe", "ReadOrWriteMe"])

Reply via email to