ruby-dbus 0.22.1 → 0.23.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/NEWS.md +38 -0
  3. data/VERSION +1 -1
  4. data/doc/Reference.md +5 -5
  5. data/examples/no-bus/pulseaudio.rb +50 -0
  6. data/examples/service/complex-property.rb +2 -2
  7. data/examples/service/service_newapi.rb +2 -2
  8. data/lib/dbus/bus.rb +48 -694
  9. data/lib/dbus/connection.rb +350 -0
  10. data/lib/dbus/logger.rb +3 -2
  11. data/lib/dbus/main.rb +66 -0
  12. data/lib/dbus/message.rb +6 -8
  13. data/lib/dbus/node_tree.rb +105 -0
  14. data/lib/dbus/object.rb +28 -9
  15. data/lib/dbus/object_manager.rb +6 -3
  16. data/lib/dbus/object_server.rb +149 -0
  17. data/lib/dbus/org.freedesktop.DBus.xml +97 -0
  18. data/lib/dbus/proxy_object.rb +4 -4
  19. data/lib/dbus/proxy_service.rb +107 -0
  20. data/lib/dbus.rb +10 -8
  21. data/ruby-dbus.gemspec +1 -1
  22. data/spec/bus_connection_spec.rb +80 -0
  23. data/spec/connection_spec.rb +37 -0
  24. data/spec/coverage_helper.rb +39 -0
  25. data/spec/dbus_spec.rb +22 -0
  26. data/spec/main_loop_spec.rb +14 -0
  27. data/spec/message_spec.rb +21 -0
  28. data/spec/mock-service/cockpit-dbustests.rb +29 -0
  29. data/spec/mock-service/com.redhat.Cockpit.DBusTests.xml +180 -0
  30. data/spec/mock-service/org.ruby.service.service +4 -0
  31. data/spec/mock-service/org.rubygems.ruby_dbus.DBusTests.service +4 -0
  32. data/spec/{service_newapi.rb → mock-service/spaghetti-monster.rb} +21 -10
  33. data/spec/node_spec.rb +1 -5
  34. data/spec/object_server_spec.rb +138 -0
  35. data/spec/object_spec.rb +46 -0
  36. data/spec/{bus_driver_spec.rb → proxy_service_spec.rb} +13 -8
  37. data/spec/spec_helper.rb +9 -45
  38. data/spec/thread_safety_spec.rb +9 -11
  39. data/spec/tools/dbus-launch-simple +4 -1
  40. data/spec/tools/dbus-limited-session.conf +3 -0
  41. data/spec/tools/test_env +26 -6
  42. metadata +24 -10
  43. data/spec/server_spec.rb +0 -55
  44. data/spec/service_spec.rb +0 -18
  45. 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
- DIR=$(dirname $0)
10
- $DIR/test_server \
11
- $DIR/../service_newapi.rb \
12
- -- \
13
- $DIR/dbus-launch-simple \
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.22.1
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-05-17 00:00:00.000000000 Z
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/bus_driver_spec.rb
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: '0'
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
@@ -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
- "$@"