ruby-dbus 0.22.1 → 0.23.0.beta2
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 +38 -0
- data/VERSION +1 -1
- data/doc/Reference.md +5 -5
- data/examples/no-bus/pulseaudio.rb +50 -0
- data/examples/service/complex-property.rb +2 -2
- data/examples/service/service_newapi.rb +2 -2
- data/lib/dbus/bus.rb +48 -694
- data/lib/dbus/connection.rb +350 -0
- data/lib/dbus/logger.rb +3 -2
- data/lib/dbus/main.rb +66 -0
- data/lib/dbus/message.rb +6 -8
- data/lib/dbus/node_tree.rb +105 -0
- data/lib/dbus/object.rb +28 -9
- data/lib/dbus/object_manager.rb +6 -3
- data/lib/dbus/object_server.rb +149 -0
- data/lib/dbus/org.freedesktop.DBus.xml +97 -0
- data/lib/dbus/proxy_object.rb +4 -4
- data/lib/dbus/proxy_service.rb +107 -0
- data/lib/dbus.rb +10 -8
- data/ruby-dbus.gemspec +1 -1
- data/spec/bus_connection_spec.rb +80 -0
- data/spec/connection_spec.rb +37 -0
- data/spec/coverage_helper.rb +39 -0
- data/spec/dbus_spec.rb +22 -0
- data/spec/main_loop_spec.rb +14 -0
- 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} +21 -10
- data/spec/node_spec.rb +1 -5
- data/spec/object_server_spec.rb +138 -0
- data/spec/object_spec.rb +46 -0
- data/spec/{bus_driver_spec.rb → proxy_service_spec.rb} +13 -8
- data/spec/spec_helper.rb +9 -45
- data/spec/thread_safety_spec.rb +9 -11
- data/spec/tools/dbus-launch-simple +4 -1
- data/spec/tools/dbus-limited-session.conf +3 -0
- data/spec/tools/test_env +26 -6
- metadata +24 -10
- data/spec/server_spec.rb +0 -55
- data/spec/service_spec.rb +0 -18
- data/spec/tools/test_server +0 -39
@@ -43,6 +43,9 @@
|
|
43
43
|
<allow eavesdrop="true"/>
|
44
44
|
<!-- Allow anyone to own anything -->
|
45
45
|
<allow own="*"/>
|
46
|
+
|
47
|
+
<!-- To test how request_name handles bus errors -->
|
48
|
+
<deny own="org.rubygems.ruby_dbus.NobodyCanOwnThisName"/>
|
46
49
|
</policy>
|
47
50
|
|
48
51
|
<!-- Do not increase the limits.
|
data/spec/tools/test_env
CHANGED
@@ -2,13 +2,33 @@
|
|
2
2
|
# test_env: set up the environment needed to run tests:
|
3
3
|
# - set up a private bus
|
4
4
|
# - run a test server on it
|
5
|
+
set -o errexit
|
5
6
|
|
6
7
|
#export DBUS_VERBOSE=1
|
7
8
|
#export RUBYOPT="-d"
|
8
9
|
export RUBYOPT="$RUBYOPT -w"
|
9
|
-
|
10
|
-
$
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
MYDIR=$(dirname $0)
|
11
|
+
TOPDIR=$(realpath $MYDIR/../..)
|
12
|
+
|
13
|
+
|
14
|
+
# Clean up at exit.
|
15
|
+
trap "rm -rf \$RM_FILES" EXIT TERM INT
|
16
|
+
|
17
|
+
export XDG_DATA_DIRS=`mktemp -d dbus.activation.XXXXXX`
|
18
|
+
RM_FILES="$RM_FILES $XDG_DATA_DIRS"
|
19
|
+
|
20
|
+
SVCDIR=$XDG_DATA_DIRS/dbus-1/services
|
21
|
+
mkdir -p $SVCDIR
|
22
|
+
for SVC in $TOPDIR/spec/mock-service/*.service; do
|
23
|
+
SVCBASE=${SVC##*/}
|
24
|
+
sed -e "s@\(Exec\)=/usr/bin/@\1=$TOPDIR/spec/mock-service/@" $SVC > $SVCDIR/$SVCBASE
|
25
|
+
done
|
26
|
+
|
27
|
+
|
28
|
+
# no command given -> run an interactive shell
|
29
|
+
if [ $# = 0 ]; then
|
30
|
+
set -- env PS1="TEST_ENV \w> " bash
|
31
|
+
fi
|
32
|
+
|
33
|
+
$MYDIR/dbus-launch-simple \
|
34
|
+
"$@"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-dbus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.23.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ruby DBus Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rexml
|
@@ -124,6 +124,7 @@ files:
|
|
124
124
|
- doc/Tutorial.md
|
125
125
|
- examples/doc/README.md
|
126
126
|
- examples/doc/_extract_examples
|
127
|
+
- examples/no-bus/pulseaudio.rb
|
127
128
|
- examples/no-introspect/nm-test.rb
|
128
129
|
- examples/no-introspect/tracker-test.rb
|
129
130
|
- examples/rhythmbox/playpause.rb
|
@@ -140,6 +141,7 @@ files:
|
|
140
141
|
- lib/dbus/auth.rb
|
141
142
|
- lib/dbus/bus.rb
|
142
143
|
- lib/dbus/bus_name.rb
|
144
|
+
- lib/dbus/connection.rb
|
143
145
|
- lib/dbus/core_ext/class/attribute.rb
|
144
146
|
- lib/dbus/core_ext/module/redefine_method.rb
|
145
147
|
- lib/dbus/data.rb
|
@@ -147,17 +149,22 @@ files:
|
|
147
149
|
- lib/dbus/error.rb
|
148
150
|
- lib/dbus/introspect.rb
|
149
151
|
- lib/dbus/logger.rb
|
152
|
+
- lib/dbus/main.rb
|
150
153
|
- lib/dbus/marshall.rb
|
151
154
|
- lib/dbus/matchrule.rb
|
152
155
|
- lib/dbus/message.rb
|
153
156
|
- lib/dbus/message_queue.rb
|
157
|
+
- lib/dbus/node_tree.rb
|
154
158
|
- lib/dbus/object.rb
|
155
159
|
- lib/dbus/object_manager.rb
|
156
160
|
- lib/dbus/object_path.rb
|
161
|
+
- lib/dbus/object_server.rb
|
162
|
+
- lib/dbus/org.freedesktop.DBus.xml
|
157
163
|
- lib/dbus/platform.rb
|
158
164
|
- lib/dbus/proxy_object.rb
|
159
165
|
- lib/dbus/proxy_object_factory.rb
|
160
166
|
- lib/dbus/proxy_object_interface.rb
|
167
|
+
- lib/dbus/proxy_service.rb
|
161
168
|
- lib/dbus/raw_message.rb
|
162
169
|
- lib/dbus/type.rb
|
163
170
|
- lib/dbus/xml.rb
|
@@ -166,21 +173,31 @@ files:
|
|
166
173
|
- spec/auth_spec.rb
|
167
174
|
- spec/binding_spec.rb
|
168
175
|
- spec/bus_and_xml_backend_spec.rb
|
169
|
-
- spec/
|
176
|
+
- spec/bus_connection_spec.rb
|
170
177
|
- spec/bus_name_spec.rb
|
171
178
|
- spec/bus_spec.rb
|
172
179
|
- spec/byte_array_spec.rb
|
173
180
|
- spec/client_robustness_spec.rb
|
181
|
+
- spec/connection_spec.rb
|
182
|
+
- spec/coverage_helper.rb
|
174
183
|
- spec/data/marshall.yaml
|
175
184
|
- spec/data_spec.rb
|
185
|
+
- spec/dbus_spec.rb
|
176
186
|
- spec/emits_changed_signal_spec.rb
|
177
187
|
- spec/err_msg_spec.rb
|
178
188
|
- spec/introspect_xml_parser_spec.rb
|
179
189
|
- spec/introspection_spec.rb
|
180
190
|
- spec/main_loop_spec.rb
|
191
|
+
- spec/message_spec.rb
|
192
|
+
- spec/mock-service/cockpit-dbustests.rb
|
193
|
+
- spec/mock-service/com.redhat.Cockpit.DBusTests.xml
|
194
|
+
- spec/mock-service/org.ruby.service.service
|
195
|
+
- spec/mock-service/org.rubygems.ruby_dbus.DBusTests.service
|
196
|
+
- spec/mock-service/spaghetti-monster.rb
|
181
197
|
- spec/node_spec.rb
|
182
198
|
- spec/object_manager_spec.rb
|
183
199
|
- spec/object_path_spec.rb
|
200
|
+
- spec/object_server_spec.rb
|
184
201
|
- spec/object_spec.rb
|
185
202
|
- spec/packet_marshaller_spec.rb
|
186
203
|
- spec/packet_unmarshaller_spec.rb
|
@@ -188,11 +205,9 @@ files:
|
|
188
205
|
- spec/property_spec.rb
|
189
206
|
- spec/proxy_object_interface_spec.rb
|
190
207
|
- spec/proxy_object_spec.rb
|
208
|
+
- spec/proxy_service_spec.rb
|
191
209
|
- spec/raw_message_spec.rb
|
192
210
|
- spec/server_robustness_spec.rb
|
193
|
-
- spec/server_spec.rb
|
194
|
-
- spec/service_newapi.rb
|
195
|
-
- spec/service_spec.rb
|
196
211
|
- spec/session_bus_spec.rb
|
197
212
|
- spec/session_bus_spec_manual.rb
|
198
213
|
- spec/signal_spec.rb
|
@@ -201,14 +216,13 @@ files:
|
|
201
216
|
- spec/tools/dbus-launch-simple
|
202
217
|
- spec/tools/dbus-limited-session.conf
|
203
218
|
- spec/tools/test_env
|
204
|
-
- spec/tools/test_server
|
205
219
|
- spec/type_spec.rb
|
206
220
|
- spec/value_spec.rb
|
207
221
|
- spec/variant_spec.rb
|
208
222
|
- spec/zzz_quit_spec.rb
|
209
223
|
homepage: https://github.com/mvidner/ruby-dbus
|
210
224
|
licenses:
|
211
|
-
- LGPL-2.1
|
225
|
+
- LGPL-2.1-or-later
|
212
226
|
metadata: {}
|
213
227
|
post_install_message:
|
214
228
|
rdoc_options: []
|
@@ -221,9 +235,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
221
235
|
version: 2.4.0
|
222
236
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
237
|
requirements:
|
224
|
-
- - "
|
238
|
+
- - ">"
|
225
239
|
- !ruby/object:Gem::Version
|
226
|
-
version:
|
240
|
+
version: 1.3.1
|
227
241
|
requirements: []
|
228
242
|
rubygems_version: 3.3.26
|
229
243
|
signing_key:
|
data/spec/server_spec.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
#!/usr/bin/env rspec
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
# Test that a server survives various error cases
|
5
|
-
require_relative "spec_helper"
|
6
|
-
require "dbus"
|
7
|
-
|
8
|
-
class Foo < DBus::Object
|
9
|
-
dbus_interface "org.ruby.ServerTest" do
|
10
|
-
dbus_signal :signal_without_arguments
|
11
|
-
dbus_signal :signal_with_argument, "epsilon:d"
|
12
|
-
end
|
13
|
-
|
14
|
-
dbus_signal :signal_without_interface
|
15
|
-
rescue DBus::Object::UndefinedInterface
|
16
|
-
# raised by the preceding signal declaration
|
17
|
-
end
|
18
|
-
|
19
|
-
class Bar < DBus::Object
|
20
|
-
dbus_interface "org.ruby.ServerTest" do
|
21
|
-
# a valid Ruby symbol but an invalid DBus name; Ticket#38
|
22
|
-
dbus_signal :signal_with_a_bang!
|
23
|
-
end
|
24
|
-
rescue DBus::InvalidMethodName
|
25
|
-
# raised by the preceding signal declaration
|
26
|
-
end
|
27
|
-
|
28
|
-
describe "ServerTest" do
|
29
|
-
before(:each) do
|
30
|
-
@bus = DBus::ASessionBus.new
|
31
|
-
@svc = @bus.request_service "org.ruby.server-test"
|
32
|
-
end
|
33
|
-
|
34
|
-
after(:each) do
|
35
|
-
@bus.proxy.ReleaseName "org.ruby.server-test"
|
36
|
-
end
|
37
|
-
|
38
|
-
it "tests unexporting an object" do
|
39
|
-
obj = Foo.new "/org/ruby/Foo"
|
40
|
-
@svc.export obj
|
41
|
-
expect(@svc.unexport(obj)).to be_a DBus::Object
|
42
|
-
end
|
43
|
-
|
44
|
-
it "tests unexporting an object not exported" do
|
45
|
-
obj = Foo.new "/org/ruby/Foo"
|
46
|
-
expect(@svc.unexport(obj)).to be false
|
47
|
-
end
|
48
|
-
|
49
|
-
it "tests emiting signals" do
|
50
|
-
obj = Foo.new "/org/ruby/Foo"
|
51
|
-
@svc.export obj
|
52
|
-
obj.signal_without_arguments
|
53
|
-
obj.signal_with_argument(-0.1)
|
54
|
-
end
|
55
|
-
end
|
data/spec/service_spec.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
#!/usr/bin/env rspec
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require_relative "spec_helper"
|
5
|
-
require "dbus"
|
6
|
-
|
7
|
-
describe "DBus::Service (server role)" do
|
8
|
-
let(:bus) { DBus::ASessionBus.new }
|
9
|
-
# This is the client role, but the server role API is bad
|
10
|
-
# and for the one test there is no difference
|
11
|
-
let(:service) { bus["org.ruby.service"] }
|
12
|
-
|
13
|
-
describe "#descendants_for" do
|
14
|
-
it "raises for not existing path" do
|
15
|
-
expect { service.descendants_for("/notthere") }.to raise_error(ArgumentError)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/spec/tools/test_server
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
#! /bin/sh
|
2
|
-
# A wrapper for DBus tests
|
3
|
-
# Run a server (directly or by dbus activation) and then the test
|
4
|
-
# $0 server [args...] -- test [args...]
|
5
|
-
set -o errexit
|
6
|
-
|
7
|
-
while [ "$1" != "--" ]; do
|
8
|
-
SERVER="$SERVER $1"
|
9
|
-
shift
|
10
|
-
done
|
11
|
-
shift # --
|
12
|
-
|
13
|
-
setup_activation () {
|
14
|
-
SDIR=$XDG_DATA_DIRS/dbus-1/services
|
15
|
-
mkdir -p $SDIR
|
16
|
-
# FIXME Name is hardcoded
|
17
|
-
cat <<EOF > $SDIR/test.service
|
18
|
-
[D-BUS Service]
|
19
|
-
Name=org.ruby.service
|
20
|
-
Exec=$SERVER
|
21
|
-
EOF
|
22
|
-
}
|
23
|
-
|
24
|
-
run_server () {
|
25
|
-
echo -n "Hey, server, get on da bus... "
|
26
|
-
# start the server
|
27
|
-
$SERVER & sleep 3
|
28
|
-
echo "off we go!"
|
29
|
-
}
|
30
|
-
|
31
|
-
export XDG_DATA_DIRS=`mktemp -d dbus.activation.XXXXXX`
|
32
|
-
RM_FILES="$RM_FILES $XDG_DATA_DIRS"
|
33
|
-
setup_activation
|
34
|
-
#run_server
|
35
|
-
|
36
|
-
# Clean up at exit.
|
37
|
-
trap "rm -rf \$RM_FILES" EXIT TERM INT
|
38
|
-
|
39
|
-
"$@"
|