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.
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
- "$@"