rspec-openhab-scripting 1.0.5 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rspec/openhab/configuration.rb +35 -0
- data/lib/rspec/openhab/core/item_proxy.rb +4 -0
- data/lib/rspec/openhab/dsl/things/thing.rb +25 -0
- data/lib/rspec/openhab/helpers.rb +15 -1
- data/lib/rspec/openhab/hooks.rb +19 -14
- data/lib/rspec/openhab/karaf.rb +14 -1
- data/lib/rspec/openhab/version.rb +1 -1
- data/lib/rspec-openhab-scripting.rb +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e3e336c4b70557c83f8116331678ecc50f0ec67326049b70302893903d48f18
|
4
|
+
data.tar.gz: 7d10a10b19aeacbc89eba86b0c40875c7c6f43a0b1529fc9af7ec06ab569d0bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f6eaf2489819f42da8e95f5a8095ead7314c62a6f338d4d605bb6e924848cafd318abe97fbd0503bf48ae43dc747f6663c917b3c597e5c6ec99515dd088a7c7
|
7
|
+
data.tar.gz: c3a04761c79f529c49b11597ae63bfd409ab2a117f24af666a2638d541690d908c4258efdaaec5f01921c7680f8c643f8bcfe5f99abc8c0d67b285c40df27a96
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RSpec
|
4
|
+
module OpenHAB
|
5
|
+
module Configuration
|
6
|
+
class << self
|
7
|
+
# Copy binding configuration from the root OpenHAB instance
|
8
|
+
# Default `true`
|
9
|
+
# @return [true, false]
|
10
|
+
attr_accessor :include_bindings
|
11
|
+
# Copy the JSONDB (managed thing and item configuration) from the root
|
12
|
+
# OpenHAB instance
|
13
|
+
# Default `true`
|
14
|
+
# @return [true, false]
|
15
|
+
attr_accessor :include_jsondb
|
16
|
+
# Use a private (empty) confdir (scripts, rules, items, and things
|
17
|
+
# # files), instead of sharing with the root OpenHAB
|
18
|
+
# instance.
|
19
|
+
# Default `false`
|
20
|
+
# @return [true, false]
|
21
|
+
attr_accessor :private_confdir
|
22
|
+
# Use the root OpenHAB instance directly, rather than creating a
|
23
|
+
# private (but linked) instance.
|
24
|
+
# @default `false`
|
25
|
+
# @return [true, false]
|
26
|
+
attr_accessor :use_root_instance
|
27
|
+
end
|
28
|
+
|
29
|
+
self.include_bindings = true
|
30
|
+
self.include_jsondb = true
|
31
|
+
self.private_confdir = false
|
32
|
+
self.use_root_instance = false
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OpenHAB
|
4
|
+
module DSL
|
5
|
+
module Things
|
6
|
+
class Thing
|
7
|
+
@proxies = {}
|
8
|
+
|
9
|
+
class << self
|
10
|
+
# ensure each item only has a single proxy, so that
|
11
|
+
# expect(item).to receive(:method) works
|
12
|
+
def new(thing)
|
13
|
+
@proxies.fetch(thing.uid.to_s) do
|
14
|
+
@proxies[thing.uid.to_s] = super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def reset_cache
|
19
|
+
@proxies = {}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -75,7 +75,7 @@ module RSpec
|
|
75
75
|
@rules.fetch(rule_name).execute(nil, { "event" => event })
|
76
76
|
end
|
77
77
|
|
78
|
-
def trigger_channel(channel, event)
|
78
|
+
def trigger_channel(channel, event = "")
|
79
79
|
channel = org.openhab.core.thing.ChannelUID.new(channel) if channel.is_a?(String)
|
80
80
|
channel = channel.uid if channel.is_a?(org.openhab.core.thing.Channel)
|
81
81
|
thing = channel.thing
|
@@ -112,6 +112,7 @@ module RSpec
|
|
112
112
|
require_relative "actions"
|
113
113
|
require_relative "core/item_proxy"
|
114
114
|
require_relative "dsl/timers/timer"
|
115
|
+
require_relative "dsl/things/thing"
|
115
116
|
# TODO: still needed?
|
116
117
|
require_relative "dsl/rules/triggers/watch"
|
117
118
|
|
@@ -174,6 +175,19 @@ module RSpec
|
|
174
175
|
end
|
175
176
|
end
|
176
177
|
|
178
|
+
def install_addon(addon_id, wait: true)
|
179
|
+
addon_service = ::OpenHAB::Core::OSGI.service("org.openhab.core.addon.AddonService")
|
180
|
+
addon_service.install(addon_id)
|
181
|
+
return unless wait
|
182
|
+
|
183
|
+
loop do
|
184
|
+
addon = addon_service.get_addon(addon_id, nil)
|
185
|
+
return if addon.installed?
|
186
|
+
|
187
|
+
sleep 0.25
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
177
191
|
private
|
178
192
|
|
179
193
|
def jrubyscripting_config
|
data/lib/rspec/openhab/hooks.rb
CHANGED
@@ -4,20 +4,18 @@ module RSpec
|
|
4
4
|
module OpenHAB
|
5
5
|
Object.include RSpec::OpenHAB::Helpers if defined?(IRB)
|
6
6
|
|
7
|
+
Helpers.launch_karaf(
|
8
|
+
include_bindings: Configuration.include_bindings,
|
9
|
+
include_jsondb: Configuration.include_jsondb,
|
10
|
+
private_confdir: Configuration.private_confdir,
|
11
|
+
use_root_instance: Configuration.use_root_instance
|
12
|
+
)
|
13
|
+
|
7
14
|
if RSpec.respond_to?(:configure)
|
8
15
|
RSpec.configure do |config|
|
9
|
-
config.add_setting :include_openhab_bindings, default: true
|
10
|
-
config.add_setting :include_openhab_jsondb, default: true
|
11
|
-
config.add_setting :private_openhab_confdir, default: false
|
12
|
-
config.add_setting :use_root_openhab_instance, default: false
|
13
|
-
|
14
16
|
config.before(:suite) do
|
15
|
-
Helpers.launch_karaf(include_bindings: config.include_openhab_bindings,
|
16
|
-
include_jsondb: config.include_openhab_jsondb,
|
17
|
-
private_confdir: config.private_openhab_confdir,
|
18
|
-
use_root_instance: config.use_root_openhab_instance)
|
19
17
|
config.include ::OpenHAB::Core::EntityLookup
|
20
|
-
Helpers.autorequires unless
|
18
|
+
Helpers.autorequires unless Configuration.private_confdir
|
21
19
|
Helpers.send(:set_up_autoupdates)
|
22
20
|
Helpers.load_transforms
|
23
21
|
Helpers.load_rules
|
@@ -35,10 +33,14 @@ module RSpec
|
|
35
33
|
end
|
36
34
|
|
37
35
|
config.before do
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
36
|
+
if defined?(::OpenHAB::DSL::Items::ItemProvider)
|
37
|
+
@item_provider = ::OpenHAB::DSL::Items::ItemProvider.send(:new)
|
38
|
+
allow(::OpenHAB::DSL::Items::ItemProvider).to receive(:instance).and_return(@item_provider)
|
39
|
+
end
|
40
|
+
if defined?(::OpenHAB::DSL::Things::ThingProvider)
|
41
|
+
@thing_provider = ::OpenHAB::DSL::Things::ThingProvider.send(:new)
|
42
|
+
allow(::OpenHAB::DSL::Things::ThingProvider).to receive(:instance).and_return(@thing_provider)
|
43
|
+
end
|
42
44
|
end
|
43
45
|
|
44
46
|
config.after do
|
@@ -47,6 +49,9 @@ module RSpec
|
|
47
49
|
::OpenHAB::Core.rule_registry.remove(uid)
|
48
50
|
end
|
49
51
|
$ir.remove_provider(@item_provider) if instance_variable_defined?(:@item_provider) && @item_provider
|
52
|
+
::OpenHAB::Core::ItemProxy.reset_cache
|
53
|
+
$things.remove_provider(@thing_provider) if instance_variable_defined?(:@thing_provider) && @thing_provider
|
54
|
+
::OpenHAB::DSL::Things::Thing.reset_cache
|
50
55
|
::OpenHAB::DSL::Timers.timer_manager.cancel_all
|
51
56
|
Timecop.return
|
52
57
|
restore_autoupdate_items
|
data/lib/rspec/openhab/karaf.rb
CHANGED
@@ -304,7 +304,6 @@ module RSpec
|
|
304
304
|
BLOCKED_COMPONENTS = {
|
305
305
|
"org.openhab.core" => %w[
|
306
306
|
org.openhab.core.addon.AddonEventFactory
|
307
|
-
org.openhab.core.binding.BindingInfoRegistry
|
308
307
|
org.openhab.core.binding.i18n.BindingI18nLocalizationService
|
309
308
|
org.openhab.core.internal.auth.ManagedUserProvider
|
310
309
|
org.openhab.core.internal.auth.UserRegistryImpl
|
@@ -675,6 +674,7 @@ module RSpec
|
|
675
674
|
def cleanup_instance
|
676
675
|
cleanup_clone
|
677
676
|
minimize_installed_features
|
677
|
+
filter_addons
|
678
678
|
end
|
679
679
|
|
680
680
|
def cleanup_clone
|
@@ -685,10 +685,23 @@ module RSpec
|
|
685
685
|
"#{oh_userdata}/tmp/*",
|
686
686
|
"#{oh_userdata}/jsondb/org.openhab.marketplace.json",
|
687
687
|
"#{oh_userdata}/jsondb/org.openhab.jsonaddonservice.json",
|
688
|
+
"#{path}/config/org/apache/felix/fileinstall",
|
688
689
|
"#{felix_cm}/org/openhab/jsonaddonservice.config"])
|
689
690
|
FileUtils.rm_rf("#{oh_userdata}/jsondb") unless include_jsondb
|
690
691
|
end
|
691
692
|
|
693
|
+
def filter_addons
|
694
|
+
config_file = "#{path}/etc/org.apache.felix.fileinstall-deploy.cfg"
|
695
|
+
return unless File.exist?(config_file)
|
696
|
+
|
697
|
+
config = File.read(config_file)
|
698
|
+
new_config = config.sub(/^(felix\.fileinstall\.filter\s+=)[^\n]+$/, "\\1 .*/openhab-addons-[^/]+\\.kar")
|
699
|
+
|
700
|
+
return if config == new_config
|
701
|
+
|
702
|
+
File.write(config_file, new_config)
|
703
|
+
end
|
704
|
+
|
692
705
|
def prune_startlevels
|
693
706
|
config_file = java.lang.System.get_property("openhab.servicecfg")
|
694
707
|
return unless File.exist?(config_file)
|
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
|
4
|
+
version: 1.1.0
|
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-
|
11
|
+
date: 2022-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -187,6 +187,7 @@ files:
|
|
187
187
|
- lib/rspec-openhab-scripting.rb
|
188
188
|
- lib/rspec/openhab/actions.rb
|
189
189
|
- lib/rspec/openhab/api.rb
|
190
|
+
- lib/rspec/openhab/configuration.rb
|
190
191
|
- lib/rspec/openhab/core/item_proxy.rb
|
191
192
|
- lib/rspec/openhab/core/logger.rb
|
192
193
|
- lib/rspec/openhab/core/mocks/bundle_install_support.rb
|
@@ -197,6 +198,7 @@ files:
|
|
197
198
|
- lib/rspec/openhab/core/mocks/thing_handler.rb
|
198
199
|
- lib/rspec/openhab/core/openhab_setup.rb
|
199
200
|
- lib/rspec/openhab/dsl/rules/triggers/watch.rb
|
201
|
+
- lib/rspec/openhab/dsl/things/thing.rb
|
200
202
|
- lib/rspec/openhab/dsl/timers/timer.rb
|
201
203
|
- lib/rspec/openhab/helpers.rb
|
202
204
|
- lib/rspec/openhab/hooks.rb
|