rspec-openhab-scripting 0.0.1-java → 0.0.4-java
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/lib/rspec/openhab/api.rb +1 -1
- data/lib/rspec/openhab/core/logger.rb +30 -3
- data/lib/rspec/openhab/dsl/imports.rb +10 -2
- data/lib/rspec/openhab/dsl/rules/rspec.rb +14 -0
- data/lib/rspec/openhab/items.rb +47 -0
- data/lib/rspec/openhab/state.rb +9 -0
- data/lib/rspec/openhab/trigger.rb +17 -0
- data/lib/rspec/openhab/version.rb +1 -1
- data/lib/rspec/openhab/wait.rb +21 -0
- data/lib/rspec-openhab-scripting.rb +8 -33
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29dc9d000dc362c190a0bc94a93157b62d82ca884ab9294ebae673c3e83606ad
|
4
|
+
data.tar.gz: c60c6ee40ba4cc183a5e73bb97140738e3af52b10661bb4aa86f8d519f385903
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5d10546a4617918135c998db4e26d51a03519ac0ab48e41367c4da6064b2e771986af4aad1e5f2dcc757e152fa3a7791494517f58bd9de76faba22a6035395c
|
7
|
+
data.tar.gz: d7eafd0592fe84c0dfd8753a783cf9639eeb28cd803a80237a15ec70e49f23afe00934ff65a63691b8c50d1ad07b2aff1f3085ea890f4b8f042436dbb50f1924
|
data/lib/rspec/openhab/api.rb
CHANGED
@@ -15,10 +15,37 @@ module OpenHAB
|
|
15
15
|
levels.each { |level| const_set(level, ch.qos.logback.classic.Level.const_get(level)) }
|
16
16
|
|
17
17
|
extend Forwardable
|
18
|
-
delegate %i[level
|
18
|
+
delegate %i[level] => :@sl4fj_logger
|
19
|
+
|
20
|
+
def level=(level)
|
21
|
+
if level.is_a?(String) || level.is_a?(Symbol)
|
22
|
+
level = ch.qos.logback.classic.Level.const_get(level.to_s.upcase, false)
|
23
|
+
end
|
24
|
+
@sl4fj_logger.level = level
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
module Log
|
30
|
+
class << self
|
31
|
+
def root
|
32
|
+
logger(org.slf4j.Logger::ROOT_LOGGER_NAME)
|
33
|
+
end
|
34
|
+
|
35
|
+
def events
|
36
|
+
logger("openhab.event")
|
37
|
+
end
|
38
|
+
|
39
|
+
def logger(object)
|
40
|
+
logger_name = case object
|
41
|
+
when String then object
|
42
|
+
else logger_name(object)
|
43
|
+
end
|
44
|
+
@loggers[logger_name] ||= Core::Logger.new(logger_name)
|
45
|
+
end
|
19
46
|
end
|
20
47
|
end
|
21
48
|
end
|
22
49
|
|
23
|
-
|
24
|
-
|
50
|
+
OpenHAB::Log.root.level = :info
|
51
|
+
OpenHAB::Log.events.level = :warn
|
@@ -129,12 +129,15 @@ module OpenHAB
|
|
129
129
|
ep = org.openhab.core.internal.events.OSGiEventPublisher.new(ea)
|
130
130
|
|
131
131
|
# the registries!
|
132
|
+
ss = VolatileStorageService.new
|
132
133
|
mr = org.openhab.core.internal.items.MetadataRegistryImpl.new
|
133
134
|
OpenHAB::Core::OSGI.register_service("org.openhab.core.items.MetadataRegistry", mr)
|
135
|
+
mr.managed_provider = mmp = org.openhab.core.internal.items.ManagedMetadataProviderImpl.new(ss)
|
136
|
+
mr.add_provider(mmp)
|
134
137
|
ir = org.openhab.core.internal.items.ItemRegistryImpl.new(mr)
|
135
|
-
ss = VolatileStorageService.new
|
136
138
|
ir.managed_provider = mip = org.openhab.core.items.ManagedItemProvider.new(ss, nil)
|
137
139
|
ir.add_provider(mip)
|
140
|
+
ir.event_publisher = ep
|
138
141
|
tr = org.openhab.core.thing.internal.ThingRegistryImpl.new
|
139
142
|
mtr = org.openhab.core.automation.internal.type.ModuleTypeRegistryImpl.new
|
140
143
|
rr = org.openhab.core.automation.internal.RuleRegistryImpl.new
|
@@ -221,7 +224,12 @@ module OpenHAB
|
|
221
224
|
re.add_module_handler_factory(cmhf)
|
222
225
|
re.add_module_handler_factory(scmhf)
|
223
226
|
re.add_module_handler_factory(spmhf)
|
224
|
-
re.
|
227
|
+
re.on_ready_marker_added(nil)
|
228
|
+
|
229
|
+
# enable event logging
|
230
|
+
el = org.openhab.core.io.monitor.internal.EventLogger.new(rs)
|
231
|
+
em.add_event_subscriber(el)
|
232
|
+
el.on_ready_marker_added(nil)
|
225
233
|
end
|
226
234
|
end
|
227
235
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RSpec
|
4
|
+
module OpenHAB
|
5
|
+
module Items
|
6
|
+
module_function
|
7
|
+
|
8
|
+
# rubocop:disable Style/GlobalVars
|
9
|
+
def populate_items_from_api(api)
|
10
|
+
all_items = api.items
|
11
|
+
all_items.each do |item_json|
|
12
|
+
type, _dimension = item_json["type"].split(":")
|
13
|
+
if type == "Group"
|
14
|
+
if item_json["groupType"]
|
15
|
+
type, _dimension = item_json["groupType"].split(":")
|
16
|
+
klass = ::OpenHAB::DSL::Items.const_get(:"#{type}Item")
|
17
|
+
base_item = klass.new(item_json["name"])
|
18
|
+
end
|
19
|
+
# TODO: create group function
|
20
|
+
item = GroupItem.new(item_json["name"], base_item)
|
21
|
+
else
|
22
|
+
klass = ::OpenHAB::DSL::Items.const_get(:"#{type}Item")
|
23
|
+
item = klass.new(item_json["name"])
|
24
|
+
end
|
25
|
+
|
26
|
+
item.label = item_json["label"]
|
27
|
+
item_json["tags"].each do |tag|
|
28
|
+
item.add_tag(tag)
|
29
|
+
end
|
30
|
+
item_json["metadata"]&.each do |key, config|
|
31
|
+
item.meta[key] = config["value"], config["config"]
|
32
|
+
end
|
33
|
+
|
34
|
+
$ir.add(item)
|
35
|
+
end
|
36
|
+
all_items.each do |item_json| # rubocop:disable Style/CombinableLoops
|
37
|
+
item_json["groupNames"].each do |group_name|
|
38
|
+
next unless (group = $ir.get(group_name))
|
39
|
+
|
40
|
+
group.add_member($ir.get(item_json["name"]))
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
# rubocop:enable Style/GlobalVars
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RSpec
|
4
|
+
module OpenHAB
|
5
|
+
module Trigger
|
6
|
+
def trigger_rule(rule_name, event = nil)
|
7
|
+
@rules ||= ::OpenHAB::DSL::Rules::Rule.script_rules.each_with_object({}) { |r, obj| obj[r.name] = r }
|
8
|
+
|
9
|
+
@rules.fetch(rule_name).execute(nil, { "event" => event })
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
RSpec.configure do |config|
|
16
|
+
config.include RSpec::OpenHAB::Trigger
|
17
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RSpec
|
4
|
+
module OpenHAB
|
5
|
+
module Wait
|
6
|
+
def wait_for_rules
|
7
|
+
loop do
|
8
|
+
sleep(0.1)
|
9
|
+
break if java.lang.Thread.all_stack_traces.keys.all? do |t|
|
10
|
+
!t.name.match?(/^OH-rule-/) ||
|
11
|
+
[java.lang.Thread::State::WAITING, java.lang.Thread::State::TIMED_WAITING].include?(t.state)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
RSpec.configure do |config|
|
20
|
+
config.include RSpec::OpenHAB::Wait
|
21
|
+
end
|
@@ -38,6 +38,7 @@ maven_require do
|
|
38
38
|
require "jar org.openhab.core.bundles, org.openhab.core.automation, #{openhab_version}"
|
39
39
|
require "jar org.openhab.core.bundles, org.openhab.core.automation.module.script, #{openhab_version}"
|
40
40
|
require "jar org.openhab.core.bundles, org.openhab.core.automation.module.script.rulesupport, #{openhab_version}"
|
41
|
+
require "jar org.openhab.core.bundles, org.openhab.core.io.monitor, #{openhab_version}"
|
41
42
|
require "jar org.openhab.core.bundles, org.openhab.core.model.core, #{openhab_version}"
|
42
43
|
require "jar org.openhab.core.bundles, org.openhab.core.model.script, #{openhab_version}"
|
43
44
|
require "jar org.openhab.core.bundles, org.openhab.core.semantics, #{openhab_version}"
|
@@ -68,40 +69,14 @@ require "rspec/openhab/core/cron_scheduler"
|
|
68
69
|
OpenHAB::DSL.send(:remove_const, :Timer)
|
69
70
|
require_relative "rspec/openhab/dsl/timers/timer"
|
70
71
|
|
71
|
-
#
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
if type == "Group"
|
78
|
-
if item_json["groupType"]
|
79
|
-
type, _dimension = item_json["groupType"].split(":")
|
80
|
-
klass = OpenHAB::DSL::Items.const_get(:"#{type}Item")
|
81
|
-
base_item = klass.new(item_json["name"])
|
82
|
-
end
|
83
|
-
# TODO: create group function
|
84
|
-
item = GroupItem.new(item_json["name"], base_item)
|
85
|
-
else
|
86
|
-
klass = OpenHAB::DSL::Items.const_get(:"#{type}Item")
|
87
|
-
item = klass.new(item_json["name"])
|
88
|
-
end
|
89
|
-
|
90
|
-
item.label = item_json["label"]
|
91
|
-
item_json["tags"].each do |tag|
|
92
|
-
item.add_tag(tag)
|
93
|
-
end
|
94
|
-
$ir.add(item)
|
95
|
-
end
|
96
|
-
all_items.each do |item_json| # rubocop:disable Style/CombinableLoops
|
97
|
-
item_json["groupNames"].each do |group_name|
|
98
|
-
next unless (group = $ir.get(group_name))
|
99
|
-
|
100
|
-
group.add_member($ir.get(item_json["name"]))
|
101
|
-
end
|
102
|
-
end
|
72
|
+
# RSpec additions
|
73
|
+
require "rspec/openhab/dsl/rules/rspec"
|
74
|
+
require "rspec/openhab/state"
|
75
|
+
require "rspec/openhab/trigger"
|
76
|
+
require "rspec/openhab/wait"
|
77
|
+
require "rspec/openhab/items"
|
103
78
|
|
104
|
-
|
79
|
+
RSpec::OpenHAB::Items.populate_items_from_api(api)
|
105
80
|
|
106
81
|
# load rules files
|
107
82
|
OPENHAB_AUTOMATION_PATH = "#{org.openhab.core.OpenHAB.config_folder}/automation/jsr223/ruby/personal"
|
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: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -167,8 +167,13 @@ files:
|
|
167
167
|
- lib/rspec/openhab/core/osgi.rb
|
168
168
|
- lib/rspec/openhab/core/script_handling.rb
|
169
169
|
- lib/rspec/openhab/dsl/imports.rb
|
170
|
+
- lib/rspec/openhab/dsl/rules/rspec.rb
|
170
171
|
- lib/rspec/openhab/dsl/timers/timer.rb
|
172
|
+
- lib/rspec/openhab/items.rb
|
173
|
+
- lib/rspec/openhab/state.rb
|
174
|
+
- lib/rspec/openhab/trigger.rb
|
171
175
|
- lib/rspec/openhab/version.rb
|
176
|
+
- lib/rspec/openhab/wait.rb
|
172
177
|
- vendor/gems/jar-dependencies-1.0.0/lib/jar-dependencies.rb
|
173
178
|
- vendor/gems/jar-dependencies-1.0.0/lib/jar_dependencies.rb
|
174
179
|
- vendor/gems/jar-dependencies-1.0.0/lib/jar_install_post_install_hook.rb
|