roku_builder 3.12.8 → 3.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -2
  3. data/CHANGELOG +9 -0
  4. data/Gemfile.lock +17 -11
  5. data/bin/roku +4 -8
  6. data/lib/roku_builder.rb +16 -24
  7. data/lib/roku_builder/config.rb +213 -0
  8. data/lib/roku_builder/config_parser.rb +304 -267
  9. data/lib/roku_builder/config_validator.rb +149 -126
  10. data/lib/roku_builder/controller.rb +34 -184
  11. data/lib/roku_builder/controller_commands.rb +85 -79
  12. data/lib/roku_builder/error_handler.rb +0 -11
  13. data/lib/roku_builder/errors.rb +12 -0
  14. data/lib/roku_builder/inspector.rb +6 -4
  15. data/lib/roku_builder/keyer.rb +1 -1
  16. data/lib/roku_builder/loader.rb +1 -1
  17. data/lib/roku_builder/logger.rb +32 -0
  18. data/lib/roku_builder/manifest_manager.rb +2 -2
  19. data/lib/roku_builder/monitor.rb +1 -1
  20. data/lib/roku_builder/options.rb +113 -0
  21. data/lib/roku_builder/stager.rb +2 -2
  22. data/lib/roku_builder/tester.rb +57 -11
  23. data/lib/roku_builder/util.rb +3 -4
  24. data/lib/roku_builder/version.rb +1 -1
  25. data/roku_builder.gemspec +2 -1
  26. data/test/roku_builder/test_config.rb +168 -0
  27. data/test/roku_builder/test_config_parser.rb +347 -394
  28. data/test/roku_builder/test_config_validator.rb +193 -190
  29. data/test/roku_builder/test_controller.rb +59 -178
  30. data/test/roku_builder/test_controller_commands.rb +407 -394
  31. data/test/roku_builder/test_error_handler.rb +67 -69
  32. data/test/roku_builder/test_files/config_test/bad.json +2 -0
  33. data/test/roku_builder/test_files/config_test/child.json +11 -0
  34. data/test/roku_builder/test_files/config_test/config.json +29 -0
  35. data/test/roku_builder/test_files/config_test/non_json.json +1 -0
  36. data/test/roku_builder/test_files/config_test/parent.json +21 -0
  37. data/test/roku_builder/test_files/config_test/parent_projects.json +35 -0
  38. data/test/roku_builder/test_files/manifest_manager_test/manifest_template_2 +1 -1
  39. data/test/roku_builder/test_helper.rb +55 -45
  40. data/test/roku_builder/test_inspector.rb +278 -213
  41. data/test/roku_builder/test_keyer.rb +144 -147
  42. data/test/roku_builder/test_linker.rb +91 -95
  43. data/test/roku_builder/test_loader.rb +279 -289
  44. data/test/roku_builder/test_logger.rb +47 -0
  45. data/test/roku_builder/test_manifest_manager.rb +92 -94
  46. data/test/roku_builder/test_monitor.rb +101 -103
  47. data/test/roku_builder/test_navigator.rb +240 -245
  48. data/test/roku_builder/test_options.rb +156 -0
  49. data/test/roku_builder/test_packager.rb +108 -108
  50. data/test/roku_builder/test_profiler.rb +20 -19
  51. data/test/roku_builder/test_scripter.rb +83 -81
  52. data/test/roku_builder/test_stager.rb +299 -311
  53. data/test/roku_builder/test_tester.rb +112 -115
  54. data/test/roku_builder/test_util.rb +18 -17
  55. metadata +39 -6
  56. data/lib/roku_builder/config_manager.rb +0 -161
  57. data/test/roku_builder/test_config_manager.rb +0 -372
@@ -2,283 +2,278 @@
2
2
 
3
3
  require_relative "test_helper.rb"
4
4
 
5
- class NavigatorTest < Minitest::Test
6
- def test_navigator_nav
7
- commands = {
8
- up: "Up",
9
- down: "Down",
10
- right: "Right",
11
- left: "Left",
12
- select: "Select",
13
- back: "Back",
14
- home: "Home",
15
- rew: "Rev",
16
- ff: "Fwd",
17
- play: "Play",
18
- replay: "InstantReplay"
19
- }
20
- commands.each {|k,v|
21
- path = "/keypress/#{v}"
22
- navigator_test(path: path, input: k, type: :nav)
23
- }
24
- end
5
+ module RokuBuilder
6
+ class NavigatorTest < Minitest::Test
7
+ def test_navigator_nav
8
+ commands = {
9
+ up: "Up",
10
+ down: "Down",
11
+ right: "Right",
12
+ left: "Left",
13
+ select: "Select",
14
+ back: "Back",
15
+ home: "Home",
16
+ rew: "Rev",
17
+ ff: "Fwd",
18
+ play: "Play",
19
+ replay: "InstantReplay"
20
+ }
21
+ commands.each {|k,v|
22
+ path = "/keypress/#{v}"
23
+ navigator_test(path: path, input: k, type: :nav)
24
+ }
25
+ end
25
26
 
26
- def test_navigator_nav_fail
27
- path = ""
28
- navigator_test(path: path, input: :bad, type: :nav, success: false)
29
- end
27
+ def test_navigator_nav_fail
28
+ path = ""
29
+ navigator_test(path: path, input: :bad, type: :nav, success: false)
30
+ end
30
31
 
31
- def test_navigator_type
32
- path = "keypress/LIT_"
33
- navigator_test(path: path, input: "Type", type: :text)
34
- end
32
+ def test_navigator_type
33
+ path = "keypress/LIT_"
34
+ navigator_test(path: path, input: "Type", type: :text)
35
+ end
35
36
 
36
- def navigator_test(path:, input:, type:, success: true)
37
- connection = Minitest::Mock.new
38
- faraday = Minitest::Mock.new
39
- io = Minitest::Mock.new
40
- response = Minitest::Mock.new
41
-
42
- device_config = {
43
- ip: "111.222.333",
44
- user: "user",
45
- password: "password",
46
- logger: Logger.new("/dev/null"),
47
- init_params: {mappings: {}}
48
- }
49
- if success
50
- if type == :nav
51
- connection.expect(:post, response, [path])
52
- response.expect(:success?, true)
53
- elsif type == :text
54
- input.split(//).each do |c|
55
- path = "/keypress/LIT_#{CGI::escape(c)}"
37
+ def navigator_test(path:, input:, type:, success: true)
38
+ connection = Minitest::Mock.new
39
+ faraday = Minitest::Mock.new
40
+ io = Minitest::Mock.new
41
+ response = Minitest::Mock.new
42
+
43
+ device_config = {
44
+ ip: "111.222.333",
45
+ user: "user",
46
+ password: "password",
47
+ init_params: {mappings: {}}
48
+ }
49
+ if success
50
+ if type == :nav
56
51
  connection.expect(:post, response, [path])
57
52
  response.expect(:success?, true)
53
+ elsif type == :text
54
+ input.split(//).each do |c|
55
+ path = "/keypress/LIT_#{CGI::escape(c)}"
56
+ connection.expect(:post, response, [path])
57
+ response.expect(:success?, true)
58
+ end
59
+ end
60
+ faraday.expect(:headers, {})
61
+ faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
62
+ faraday.expect(:request, nil, [:multipart])
63
+ faraday.expect(:request, nil, [:url_encoded])
64
+ faraday.expect(:adapter, nil, [Faraday.default_adapter])
65
+ end if
66
+
67
+ navigator = Navigator.new(**device_config)
68
+ result = nil
69
+ Faraday.stub(:new, connection, faraday) do
70
+ if type == :nav
71
+ result = navigator.nav(commands: [input])
72
+ elsif type == :text
73
+ result = navigator.type(text: input)
58
74
  end
59
75
  end
60
- faraday.expect(:headers, {})
61
- faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
62
- faraday.expect(:request, nil, [:multipart])
63
- faraday.expect(:request, nil, [:url_encoded])
64
- faraday.expect(:adapter, nil, [Faraday.default_adapter])
65
- end if
66
-
67
- navigator = RokuBuilder::Navigator.new(**device_config)
68
- result = nil
69
- Faraday.stub(:new, connection, faraday) do
70
- if type == :nav
71
- result = navigator.nav(commands: [input])
72
- elsif type == :text
73
- result = navigator.type(text: input)
74
- end
75
- end
76
76
 
77
- assert_equal success, result
77
+ assert_equal success, result
78
78
 
79
- connection.verify
80
- faraday.verify
81
- io.verify
82
- response.verify
83
- end
84
-
85
- def test_navigator_screen
86
- logger = Minitest::Mock.new
87
- device_config = {
88
- ip: "111.222.333",
89
- user: "user",
90
- password: "password",
91
- logger: logger,
92
- init_params: {mappings: {}}
93
- }
94
- navigator = RokuBuilder::Navigator.new(**device_config)
95
-
96
- logger.expect(:info, nil, ["Home x 5, Fwd x 3, Rev x 2,"])
97
- logger.expect(:unknown, nil, ["Cannot run command automatically"])
98
- logger.expect(:unknown, nil, ["Home x 5, Up, Rev x 2, Fwd x 2,"])
99
-
100
- navigator.stub(:nav, nil) do
101
- navigator.screen(type: :secret)
102
- navigator.screen(type: :reboot)
79
+ connection.verify
80
+ faraday.verify
81
+ io.verify
82
+ response.verify
103
83
  end
104
84
 
105
- logger.verify
106
- end
85
+ def test_navigator_screen
86
+ logger = Minitest::Mock.new
87
+ device_config = {
88
+ ip: "111.222.333",
89
+ user: "user",
90
+ password: "password",
91
+ init_params: {mappings: {}}
92
+ }
93
+ Logger.class_variable_set(:@@instance, logger)
94
+ navigator = Navigator.new(**device_config)
95
+
96
+ logger.expect(:info, nil, ["Home x 5, Fwd x 3, Rev x 2,"])
97
+ logger.expect(:unknown, nil, ["Cannot run command automatically"])
98
+ logger.expect(:unknown, nil, ["Home x 5, Up, Rev x 2, Fwd x 2,"])
99
+
100
+ navigator.stub(:nav, nil) do
101
+ navigator.screen(type: :secret)
102
+ navigator.screen(type: :reboot)
103
+ end
107
104
 
108
- def test_navigator_screen_fail
109
- logger = Minitest::Mock.new
110
- device_config = {
111
- ip: "111.222.333",
112
- user: "user",
113
- password: "password",
114
- logger: logger,
115
- init_params: {mappings: {}}
116
- }
117
- navigator = RokuBuilder::Navigator.new(**device_config)
105
+ logger.verify
106
+ Logger.set_testing
107
+ end
118
108
 
119
- assert !navigator.screen(type: :bad)
109
+ def test_navigator_screen_fail
110
+ device_config = {
111
+ ip: "111.222.333",
112
+ user: "user",
113
+ password: "password",
114
+ init_params: {mappings: {}}
115
+ }
116
+ navigator = Navigator.new(**device_config)
120
117
 
121
- logger.verify
122
- end
118
+ assert !navigator.screen(type: :bad)
123
119
 
124
- def test_navigator_screens
125
- logger = Minitest::Mock.new
126
- device_config = {
127
- ip: "111.222.333",
128
- user: "user",
129
- password: "password",
130
- logger: logger,
131
- init_params: {mappings: {}}
132
- }
133
- navigator = RokuBuilder::Navigator.new(**device_config)
134
-
135
- navigator.instance_variable_get("@screens").each_key do |key|
136
- logger.expect(:unknown, nil, [key])
137
120
  end
138
121
 
139
- navigator.screens
122
+ def test_navigator_screens
123
+ logger = Minitest::Mock.new
124
+ device_config = {
125
+ ip: "111.222.333",
126
+ user: "user",
127
+ password: "password",
128
+ init_params: {mappings: {}}
129
+ }
130
+ Logger.class_variable_set(:@@instance, logger)
131
+ navigator = Navigator.new(**device_config)
132
+
133
+ navigator.instance_variable_get("@screens").each_key do |key|
134
+ logger.expect(:unknown, nil, [key])
135
+ end
140
136
 
141
- logger.verify
142
- end
137
+ navigator.screens
143
138
 
144
- def test_navigator_read_char
145
- getc = Minitest::Mock.new
146
- chr = Minitest::Mock.new
147
-
148
- getc.expect(:call, chr)
149
- chr.expect(:chr, "a")
150
-
151
- device_config = {
152
- ip: "111.222.333",
153
- user: "user",
154
- password: "password",
155
- logger: Logger.new("/dev/null"),
156
- init_params: {mappings: {}}
157
- }
158
-
159
- navigator = RokuBuilder::Navigator.new(**device_config)
160
- STDIN.stub(:echo=, nil) do
161
- STDIN.stub(:raw!, nil) do
162
- STDIN.stub(:getc, getc) do
163
- assert_equal "a", navigator.read_char
164
- end
165
- end
139
+ logger.verify
140
+ Logger.set_testing
166
141
  end
167
- getc.verify
168
- chr.verify
169
- end
170
142
 
171
- def test_navigator_read_char_multichar
172
- getc = Minitest::Mock.new
173
- chr = Minitest::Mock.new
174
- read_nonblock = Minitest::Mock.new
175
-
176
- getc.expect(:call, chr)
177
- chr.expect(:chr, "\e")
178
- read_nonblock.expect(:call, "a", [3])
179
- read_nonblock.expect(:call, "b", [2])
180
-
181
- device_config = {
182
- ip: "111.222.333",
183
- user: "user",
184
- password: "password",
185
- logger: Logger.new("/dev/null"),
186
- init_params: {mappings: {}}
187
- }
188
-
189
- navigator = RokuBuilder::Navigator.new(**device_config)
190
- STDIN.stub(:echo=, nil) do
191
- STDIN.stub(:raw!, nil) do
192
- STDIN.stub(:getc, getc) do
193
- STDIN.stub(:read_nonblock, read_nonblock) do
194
- assert_equal "\eab", navigator.read_char
143
+ def test_navigator_read_char
144
+ getc = Minitest::Mock.new
145
+ chr = Minitest::Mock.new
146
+
147
+ getc.expect(:call, chr)
148
+ chr.expect(:chr, "a")
149
+
150
+ device_config = {
151
+ ip: "111.222.333",
152
+ user: "user",
153
+ password: "password",
154
+ init_params: {mappings: {}}
155
+ }
156
+
157
+ navigator = Navigator.new(**device_config)
158
+ STDIN.stub(:echo=, nil) do
159
+ STDIN.stub(:raw!, nil) do
160
+ STDIN.stub(:getc, getc) do
161
+ assert_equal "a", navigator.read_char
195
162
  end
196
163
  end
197
164
  end
165
+ getc.verify
166
+ chr.verify
198
167
  end
199
- getc.verify
200
- chr.verify
201
- end
202
-
203
- def test_navigator_interactive
204
- device_config = {
205
- ip: "111.222.333",
206
- user: "user",
207
- password: "password",
208
- logger: Logger.new("/dev/null"),
209
- init_params: {mappings: {}}
210
- }
211
- navigator = RokuBuilder::Navigator.new(**device_config)
212
- navigator.stub(:read_char, "\u0003") do
213
- navigator.interactive
214
- end
215
- end
216
168
 
217
- def test_navigator_interactive_nav
218
-
219
- device_config = {
220
- ip: "111.222.333",
221
- user: "user",
222
- password: "password",
223
- logger: Logger.new("/dev/null"),
224
- init_params: {mappings: {}}
225
- }
226
-
227
- read_char = lambda {
228
- @i ||= 0
229
- char = nil
230
- case(@i)
231
- when 0
232
- char = "<"
233
- when 1
234
- char = "\u0003"
169
+ def test_navigator_read_char_multichar
170
+ getc = Minitest::Mock.new
171
+ chr = Minitest::Mock.new
172
+ read_nonblock = Minitest::Mock.new
173
+
174
+ getc.expect(:call, chr)
175
+ chr.expect(:chr, "\e")
176
+ read_nonblock.expect(:call, "a", [3])
177
+ read_nonblock.expect(:call, "b", [2])
178
+
179
+ device_config = {
180
+ ip: "111.222.333",
181
+ user: "user",
182
+ password: "password",
183
+ init_params: {mappings: {}}
184
+ }
185
+
186
+ navigator = Navigator.new(**device_config)
187
+ STDIN.stub(:echo=, nil) do
188
+ STDIN.stub(:raw!, nil) do
189
+ STDIN.stub(:getc, getc) do
190
+ STDIN.stub(:read_nonblock, read_nonblock) do
191
+ assert_equal "\eab", navigator.read_char
192
+ end
193
+ end
194
+ end
235
195
  end
236
- @i += 1
237
- char
238
- }
239
-
240
- nav = lambda { |args|
241
- assert_equal :rev, args[:commands][0]
242
- }
196
+ getc.verify
197
+ chr.verify
198
+ end
243
199
 
244
- navigator = RokuBuilder::Navigator.new(**device_config)
245
- navigator.stub(:read_char, read_char) do
246
- navigator.stub(:nav, nav) do
200
+ def test_navigator_interactive
201
+ device_config = {
202
+ ip: "111.222.333",
203
+ user: "user",
204
+ password: "password",
205
+ init_params: {mappings: {}}
206
+ }
207
+ navigator = Navigator.new(**device_config)
208
+ navigator.stub(:read_char, "\u0003") do
247
209
  navigator.interactive
248
210
  end
249
211
  end
250
- end
251
- def test_navigator_interactive_text
252
-
253
- device_config = {
254
- ip: "111.222.333",
255
- user: "user",
256
- password: "password",
257
- logger: Logger.new("/dev/null"),
258
- init_params: {mappings: {}}
259
- }
260
-
261
- read_char = lambda {
262
- @i ||= 0
263
- char = nil
264
- case(@i)
265
- when 0
266
- char = "a"
267
- when 1
268
- char = "\u0003"
269
- end
270
- @i += 1
271
- char
272
- }
273
-
274
- type = lambda { |args|
275
- assert_equal "a", args[:text]
276
- }
277
212
 
278
- navigator = RokuBuilder::Navigator.new(**device_config)
279
- navigator.stub(:read_char, read_char) do
280
- navigator.stub(:type, type) do
281
- navigator.interactive
213
+ def test_navigator_interactive_nav
214
+
215
+ device_config = {
216
+ ip: "111.222.333",
217
+ user: "user",
218
+ password: "password",
219
+ init_params: {mappings: {}}
220
+ }
221
+
222
+ read_char = lambda {
223
+ @i ||= 0
224
+ char = nil
225
+ case(@i)
226
+ when 0
227
+ char = "<"
228
+ when 1
229
+ char = "\u0003"
230
+ end
231
+ @i += 1
232
+ char
233
+ }
234
+
235
+ nav = lambda { |args|
236
+ assert_equal :rev, args[:commands][0]
237
+ }
238
+
239
+ navigator = Navigator.new(**device_config)
240
+ navigator.stub(:read_char, read_char) do
241
+ navigator.stub(:nav, nav) do
242
+ navigator.interactive
243
+ end
244
+ end
245
+ end
246
+ def test_navigator_interactive_text
247
+
248
+ device_config = {
249
+ ip: "111.222.333",
250
+ user: "user",
251
+ password: "password",
252
+ init_params: {mappings: {}}
253
+ }
254
+
255
+ read_char = lambda {
256
+ @i ||= 0
257
+ char = nil
258
+ case(@i)
259
+ when 0
260
+ char = "a"
261
+ when 1
262
+ char = "\u0003"
263
+ end
264
+ @i += 1
265
+ char
266
+ }
267
+
268
+ type = lambda { |args|
269
+ assert_equal "a", args[:text]
270
+ }
271
+
272
+ navigator = Navigator.new(**device_config)
273
+ navigator.stub(:read_char, read_char) do
274
+ navigator.stub(:type, type) do
275
+ navigator.interactive
276
+ end
282
277
  end
283
278
  end
284
279
  end