ruby-dbus 0.16.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/NEWS.md +288 -3
- data/README.md +3 -5
- data/Rakefile +27 -12
- data/VERSION +1 -1
- data/doc/Reference.md +109 -10
- data/examples/doc/_extract_examples +7 -0
- data/examples/no-bus/pulseaudio.rb +50 -0
- data/examples/no-introspect/nm-test.rb +2 -0
- data/examples/no-introspect/tracker-test.rb +3 -1
- data/examples/rhythmbox/playpause.rb +2 -1
- data/examples/service/call_service.rb +2 -1
- data/examples/service/complex-property.rb +21 -0
- data/examples/service/service_newapi.rb +3 -3
- data/examples/simple/call_introspect.rb +1 -0
- data/examples/simple/get_id.rb +6 -3
- data/examples/simple/properties.rb +2 -0
- data/examples/utils/listnames.rb +10 -1
- data/examples/utils/notify.rb +1 -0
- data/lib/dbus/api_options.rb +9 -0
- data/lib/dbus/auth.rb +307 -217
- data/lib/dbus/bus.rb +155 -588
- data/lib/dbus/bus_name.rb +12 -8
- data/lib/dbus/connection.rb +363 -0
- data/lib/dbus/core_ext/class/attribute.rb +1 -1
- data/lib/dbus/data.rb +821 -0
- data/lib/dbus/emits_changed_signal.rb +83 -0
- data/lib/dbus/error.rb +4 -2
- data/lib/dbus/introspect.rb +133 -31
- data/lib/dbus/logger.rb +6 -3
- data/lib/dbus/main.rb +66 -0
- data/lib/dbus/marshall.rb +247 -296
- data/lib/dbus/matchrule.rb +16 -16
- data/lib/dbus/message.rb +66 -57
- data/lib/dbus/message_queue.rb +40 -25
- data/lib/dbus/node_tree.rb +105 -0
- data/lib/dbus/object.rb +442 -33
- data/lib/dbus/object_manager.rb +61 -0
- data/lib/dbus/object_path.rb +11 -6
- data/lib/dbus/object_server.rb +149 -0
- data/lib/dbus/org.freedesktop.DBus.xml +97 -0
- data/lib/dbus/platform.rb +26 -0
- data/lib/dbus/proxy_object.rb +30 -11
- data/lib/dbus/proxy_object_factory.rb +13 -7
- data/lib/dbus/proxy_object_interface.rb +63 -30
- data/lib/dbus/proxy_service.rb +107 -0
- data/lib/dbus/raw_message.rb +91 -0
- data/lib/dbus/type.rb +319 -86
- data/lib/dbus/xml.rb +40 -19
- data/lib/dbus.rb +28 -17
- data/ruby-dbus.gemspec +13 -6
- data/spec/async_spec.rb +2 -0
- data/spec/auth_spec.rb +225 -0
- data/spec/binding_spec.rb +2 -0
- data/spec/bus_and_xml_backend_spec.rb +5 -1
- data/spec/bus_connection_spec.rb +93 -0
- data/spec/bus_name_spec.rb +3 -1
- data/spec/bus_spec.rb +2 -0
- data/spec/byte_array_spec.rb +2 -0
- data/spec/client_robustness_spec.rb +4 -2
- data/spec/connection_spec.rb +37 -0
- data/spec/coverage_helper.rb +39 -0
- data/spec/data/marshall.yaml +1667 -0
- data/spec/data_spec.rb +673 -0
- data/spec/dbus_spec.rb +22 -0
- data/spec/emits_changed_signal_spec.rb +58 -0
- data/spec/err_msg_spec.rb +2 -0
- data/spec/introspect_xml_parser_spec.rb +2 -0
- data/spec/introspection_spec.rb +2 -0
- data/spec/main_loop_spec.rb +17 -1
- data/spec/message_spec.rb +21 -0
- data/spec/mock-service/cockpit-dbustests.rb +29 -0
- data/spec/mock-service/com.redhat.Cockpit.DBusTests.xml +180 -0
- data/spec/mock-service/org.ruby.service.service +4 -0
- data/spec/mock-service/org.rubygems.ruby_dbus.DBusTests.service +4 -0
- data/spec/{service_newapi.rb → mock-service/spaghetti-monster.rb} +122 -75
- data/spec/node_spec.rb +65 -0
- data/spec/object_manager_spec.rb +33 -0
- data/spec/object_path_spec.rb +3 -0
- data/spec/object_server_spec.rb +138 -0
- data/spec/object_spec.rb +194 -0
- data/spec/packet_marshaller_spec.rb +41 -0
- data/spec/packet_unmarshaller_spec.rb +248 -0
- data/spec/platform_spec.rb +14 -0
- data/spec/property_spec.rb +214 -12
- data/spec/proxy_object_interface_spec.rb +35 -0
- data/spec/proxy_object_spec.rb +2 -0
- data/spec/{bus_driver_spec.rb → proxy_service_spec.rb} +15 -8
- data/spec/raw_message_spec.rb +32 -0
- data/spec/server_robustness_spec.rb +20 -6
- data/spec/session_bus_spec.rb +36 -1
- data/spec/session_bus_spec_manual.rb +2 -0
- data/spec/signal_spec.rb +16 -3
- data/spec/spec_helper.rb +25 -33
- data/spec/thread_safety_spec.rb +55 -12
- data/spec/tools/dbus-launch-simple +9 -6
- data/spec/tools/dbus-limited-session.conf +32 -0
- data/spec/tools/test_env +26 -6
- data/spec/type_spec.rb +214 -6
- data/spec/value_spec.rb +16 -1
- data/spec/variant_spec.rb +4 -2
- data/spec/zzz_quit_spec.rb +16 -0
- metadata +92 -20
- data/examples/gdbus/gdbus +0 -257
- data/examples/gdbus/gdbus.glade +0 -98
- data/examples/gdbus/launch.sh +0 -4
- data/spec/server_spec.rb +0 -53
- data/spec/tools/test_server +0 -39
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env rspec
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require_relative "spec_helper"
|
|
5
|
+
require "dbus"
|
|
6
|
+
|
|
7
|
+
describe DBus::PeerConnection do
|
|
8
|
+
let(:address) { ENV["DBUS_SESSION_BUS_ADDRESS"] }
|
|
9
|
+
subject { described_class.new(address) }
|
|
10
|
+
|
|
11
|
+
describe "#peer_service" do
|
|
12
|
+
it "returns a PeerService with a nil name" do
|
|
13
|
+
svc = subject.peer_service
|
|
14
|
+
expect(svc).to be_a(DBus::ProxyService)
|
|
15
|
+
expect(svc.name).to be_nil
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "#add_match, #remove_match" do
|
|
20
|
+
it "doesn't crash trying to call AddMatch, RemoveMatch" do
|
|
21
|
+
mr = DBus::MatchRule.new
|
|
22
|
+
mr.member = "StateUpdated"
|
|
23
|
+
mr.interface = "org.PulseAudio.Core1.Device"
|
|
24
|
+
handler = ->(_msg) {}
|
|
25
|
+
|
|
26
|
+
# Cheating a bit with the mocking:
|
|
27
|
+
# a PulseAudio peer connection would error with
|
|
28
|
+
# > DBus::Error: Method "AddMatch" with signature "s" on interface
|
|
29
|
+
# > "org.freedesktop.DBus" doesn't exist
|
|
30
|
+
# but here we do have a bus at the other end, which replies with
|
|
31
|
+
# > DBus::Error: Client tried to send a message other than Hello without being registered
|
|
32
|
+
# where "registering" is a libdbus-1 thing meaning "internal bookkeeping and send Hello"
|
|
33
|
+
expect { subject.add_match(mr, &handler) }.to_not raise_error
|
|
34
|
+
expect { subject.remove_match(mr) }.to_not raise_error
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
coverage = if ENV["COVERAGE"]
|
|
4
|
+
ENV["COVERAGE"] == "true"
|
|
5
|
+
else
|
|
6
|
+
# heuristics: enable for interactive builds (but not in OBS)
|
|
7
|
+
ENV["DISPLAY"]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
if coverage
|
|
11
|
+
require "simplecov"
|
|
12
|
+
SimpleCov.root File.expand_path("..", __dir__)
|
|
13
|
+
|
|
14
|
+
# do not cover specs
|
|
15
|
+
SimpleCov.add_filter "_spec.rb"
|
|
16
|
+
# do not cover the activesupport helpers
|
|
17
|
+
SimpleCov.add_filter "/core_ext/"
|
|
18
|
+
# measure all if/else branches on a line
|
|
19
|
+
SimpleCov.enable_coverage :branch
|
|
20
|
+
|
|
21
|
+
SimpleCov.start
|
|
22
|
+
|
|
23
|
+
# additionally use the LCOV format for on-line code coverage reporting at CI
|
|
24
|
+
if ENV["COVERAGE_LCOV"] == "true"
|
|
25
|
+
require "simplecov-lcov"
|
|
26
|
+
|
|
27
|
+
SimpleCov::Formatter::LcovFormatter.config do |c|
|
|
28
|
+
c.report_with_single_file = true
|
|
29
|
+
# this is the default Coveralls GitHub Action location
|
|
30
|
+
# https://github.com/marketplace/actions/coveralls-github-action
|
|
31
|
+
c.single_report_path = "coverage/lcov.info"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new [
|
|
35
|
+
SimpleCov::Formatter::HTMLFormatter,
|
|
36
|
+
SimpleCov::Formatter::LcovFormatter
|
|
37
|
+
]
|
|
38
|
+
end
|
|
39
|
+
end
|