rspec-openhab-scripting 1.0.0 → 1.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f9f1f804d263fe2179ef5680704f14bc2ba476dc4525f014329aa30ea6e01d0
4
- data.tar.gz: 924e7e3a2cc0f2578ff526d21a9a4050e216c7555004ebf21a7a76eca62a5e9c
3
+ metadata.gz: dc03fc7377be69a2c03c83d60bbc9faab0e6fc343dde9876b9acbb3b6320826d
4
+ data.tar.gz: b509c499d267a18e4adbeffb1f744a57b2b81ca027f97300b712f3f71f4119ff
5
5
  SHA512:
6
- metadata.gz: 292ebc4f0386a670ee9b02528e13880e9c9801c397ada5bc83cc9193ff5728f056a27b6b780f6b5b8b789970da03fec6fa63fe6bc3420140ceaedba06f909e9e
7
- data.tar.gz: b8c0d8e5619c50499189bfc1b85fa496d76549c03bbb23cae531e61afbac87a16b9f2d37cf4b6cb5518a55a5557570a248a0525ad4be66a84bcdb84a03b96bbf
6
+ metadata.gz: 6f623a8485f6d2e0f85e265855167f1b3818a1060bb2528dd8f7045327f375f54bd89e392beec84807b47ac825c861f46282605e0d8e0b30e97d159be2df75a5
7
+ data.tar.gz: 2b8d9371d764fea96ebb401f1f389abce1bae4e04c33ba31c2927d00b1b2f12df99d0dc6020972d3a5c27d2935ff47c700a5554c0985877ae73234696d0c169d
@@ -165,7 +165,7 @@ module RSpec
165
165
 
166
166
  filename.slice!(0..transform_path.length)
167
167
  dir = File.dirname(filename)
168
- modules = dir == "." ? [] : moduleize(dir)
168
+ modules = (dir == ".") ? [] : moduleize(dir)
169
169
  basename = File.basename(filename)
170
170
  method = basename[0...-7]
171
171
  modules << method
@@ -217,8 +217,15 @@ module RSpec
217
217
  next unless metadata.uid.namespace == "autoupdate"
218
218
 
219
219
  to_add << metadata
220
+
221
+ # 3.2.0 can't remove single namespaces from the GenericMetadataProvider, so
222
+ # we have to remove everything from the item
223
+ unless gmp.respond_to?(:remove_metadata_by_namespace)
224
+ to_add.concat(gmp.all.select { |m2| m2.uid.item_name == metadata.uid.item_name })
225
+ gmp.remove_metadata(metadata.uid.item_name)
226
+ end
220
227
  end
221
- gmp.remove_metadata_by_namespace("autoupdate")
228
+ gmp.remove_metadata_by_namespace("autoupdate") if gmp.respond_to?(:remove_metadata_by_namespace)
222
229
 
223
230
  to_add.each do |m|
224
231
  if mmp.get(m.uid)
@@ -233,6 +233,22 @@ module RSpec
233
233
  field.set(fs, OpenHAB::Core::Mocks::BundleInstallSupport.new(fs.installSupport, self))
234
234
  end
235
235
  wait_for_service("org.osgi.service.cm.ConfigurationAdmin") do |ca|
236
+ # register a listener, so that we can know if the Start Level Service is busted
237
+ bundle = org.osgi.framework.FrameworkUtil.get_bundle(ca.class)
238
+ listener = org.osgi.service.cm.ConfigurationListener.impl do |_method, event|
239
+ next unless event.type == org.osgi.service.cm.ConfigurationEvent::CM_UPDATED
240
+ next unless event.pid == "org.openhab.startlevel"
241
+
242
+ # have to wait for the StartLevelService itself to process this event
243
+ Thread.new do
244
+ sleep 1
245
+ reset_start_level_service
246
+ end
247
+ end
248
+ bundle.bundle_context.register_service(org.osgi.service.cm.ConfigurationListener.java_class,
249
+ listener,
250
+ nil)
251
+
236
252
  cfg = ca.get_configuration("org.openhab.addons", nil)
237
253
  props = cfg.properties || java.util.Hashtable.new
238
254
  # remove all non-binding addons
@@ -310,7 +326,6 @@ module RSpec
310
326
  org.openhab.core.thing.internal.console.FirmwareUpdateConsoleCommandExtension
311
327
  ],
312
328
  # the following bundles are blocked completely from starting
313
- "org.apache.felix.fileinstall" => nil,
314
329
  "org.apache.karaf.http.core" => nil,
315
330
  "org.apache.karaf.features.command" => nil,
316
331
  "org.apache.karaf.shell.commands" => nil,
@@ -529,15 +544,16 @@ module RSpec
529
544
  # import global variables and constants that openhab-scripting gem expects,
530
545
  # since we're going to be running it in this same VM
531
546
  def set_jruby_script_presets
532
- wait_for_service("org.openhab.core.automation.module.script.internal.ScriptExtensionManager") do |sem|
547
+ wait_for_service("org.openhab.core.automation.module.script.ScriptEngineFactory",
548
+ filter: "(service.config.description.uri=automation:jruby)") do |jrubyscripting|
549
+ # "org.openhab.core.automation.module.script.internal.ScriptExtensionManager") do |sem|
550
+ sem = ::OpenHAB::Core::OSGI.service(
551
+ "org.openhab.core.automation.module.script.internal.ScriptExtensionManager"
552
+ )
533
553
  # since we're not created by the ScriptEngineManager, this never gets set; manually set it
534
554
  $se = $scriptExtension = ScriptExtensionManagerWrapper.new(sem)
535
555
  scope_values = sem.find_default_presets("rspec")
536
556
  scope_values = scope_values.entry_set
537
- jrubyscripting = ::OpenHAB::Core::OSGI.services(
538
- "org.openhab.core.automation.module.script.ScriptEngineFactory",
539
- filter: "(service.pid=org.openhab.automation.jrubyscripting)"
540
- ).first
541
557
 
542
558
  %w[mapInstancePresets mapGlobalPresets].each do |method_name|
543
559
  method = jrubyscripting.class.java_class.get_declared_method(method_name, java.util.Map::Entry.java_class)
@@ -680,12 +696,32 @@ module RSpec
680
696
  startlevels = File.read(config_file)
681
697
  startlevels.sub!(",rules:refresh,rules:dslprovider", "")
682
698
 
683
- target_file = "#{oh_userdata}/etc/services.cfg"
699
+ target_file = "#{oh_userdata}/services.cfg"
684
700
  target_file_contents = File.read(target_file) if File.exist?(target_file)
685
701
  File.write(target_file, startlevels) unless target_file_contents == startlevels
686
702
  java.lang.System.set_property("openhab.servicecfg", target_file)
687
703
  end
688
704
 
705
+ # workaround for https://github.com/openhab/openhab-core/pull/3092
706
+ def reset_start_level_service
707
+ sls = ::OpenHAB::Core::OSGI.service("org.openhab.core.service.StartLevelService")
708
+ rs = ::OpenHAB::Core::OSGI.service("org.openhab.core.service.ReadyService")
709
+ sls.class.field_reader :trackers, :markers
710
+ rs.class.field_reader :trackers
711
+ return unless sls.markers.empty?
712
+ # SLS thinks it has trackers that RS doesn't?! Yeah, we hit the bug
713
+ return if (sls.trackers.values - rs.trackers.keys).empty?
714
+
715
+ ca = ::OpenHAB::Core::OSGI.service("org.osgi.service.cm.ConfigurationAdmin")
716
+ cfg = ca.get_configuration("org.openhab.startlevel", nil)
717
+ props = cfg.properties
718
+ config = props.keys.to_h { |k| [k, props.get(k)] }
719
+ m = sls.class.java_class.get_declared_method("modified", java.util.Map)
720
+ m.accessible = true
721
+ sls.trackers.clear
722
+ m.invoke(sls, config)
723
+ end
724
+
689
725
  def minimize_installed_features
690
726
  # cuts down openhab-runtime-base significantly, makes sure
691
727
  # openhab-runtime-ui doesn't get installed (from profile.cfg),
@@ -696,6 +732,13 @@ module RSpec
696
732
  File.write("#{oh_userdata}/etc/org.apache.karaf.features.xml", <<~XML)
697
733
  <?xml version="1.0" encoding="UTF-8"?>
698
734
  <featuresProcessing xmlns="http://karaf.apache.org/xmlns/features-processing/v1.0.0" xmlns:f="http://karaf.apache.org/xmlns/features/v1.6.0">
735
+ <!-- From OpenHAB 3.2.0 -->
736
+ <bundleReplacements>
737
+ <bundle originalUri="mvn:org.ops4j.pax.logging/pax-logging-api/[0,2.0.13)" replacement="mvn:org.ops4j.pax.logging/pax-logging-api/2.0.13" mode="maven" />
738
+ <bundle originalUri="mvn:org.ops4j.pax.logging/pax-logging-log4j2/[0,2.0.13)" replacement="mvn:org.ops4j.pax.logging/pax-logging-log4j2/2.0.13" mode="maven" />
739
+ <bundle originalUri="mvn:org.ops4j.pax.logging/pax-logging-logback/[0,2.0.13)" replacement="mvn:org.ops4j.pax.logging/pax-logging-logback/2.0.13" mode="maven" />
740
+ </bundleReplacements>
741
+
699
742
  <blacklistedFeatures>
700
743
  <feature>openhab-runtime-ui</feature>
701
744
  <feature>openhab-core-ui*</feature>
@@ -721,6 +764,7 @@ module RSpec
721
764
  <f:feature>openhab-core-storage-json</f:feature>
722
765
  <f:feature>openhab-automation-jrubyscripting</f:feature>
723
766
  <f:feature>openhab-transport-http</f:feature>
767
+ <f:feature prerequisite="true">wrapper</f:feature>
724
768
  <f:bundle>mvn:org.openhab.core.bundles/org.openhab.core.karaf/#{version}</f:bundle>
725
769
  </feature>
726
770
  </replacement>
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module OpenHAB
5
- VERSION = "1.0.0"
5
+ VERSION = "1.0.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-openhab-scripting
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-13 00:00:00.000000000 Z
11
+ date: 2022-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement