roku_builder 3.13.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (226) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG +12 -0
  4. data/Gemfile.lock +22 -7
  5. data/Guardfile +3 -3
  6. data/README.md +22 -398
  7. data/bin/roku +1 -194
  8. data/config.json.example +1 -1
  9. data/intergration/roku_builder/test_core.rb +52 -0
  10. data/intergration/roku_builder/test_files/core_intergration_test/manifest_template +7 -0
  11. data/intergration/roku_builder/test_files/core_intergration_test/test.pkg +0 -0
  12. data/intergration/roku_builder/test_files/inspector_intergration_test/components/rectanglescene.xml +28 -0
  13. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  14. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  15. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_splash_fhd.jpg +0 -0
  16. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_splash_hd.jpg +0 -0
  17. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rde_splash_sd.jpg +0 -0
  18. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  19. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  20. data/intergration/roku_builder/test_files/inspector_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  21. data/intergration/roku_builder/test_files/inspector_intergration_test/manifest +21 -0
  22. data/intergration/roku_builder/test_files/inspector_intergration_test/source/main.brs +23 -0
  23. data/intergration/roku_builder/test_files/inspector_intergration_test/test.pkg +0 -0
  24. data/intergration/roku_builder/test_files/linker_intergration_test/components/rectanglescene.xml +29 -0
  25. data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  26. data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  27. data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_splash_fhd.jpg +0 -0
  28. data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_splash_hd.jpg +0 -0
  29. data/intergration/roku_builder/test_files/linker_intergration_test/images/rde_splash_sd.jpg +0 -0
  30. data/intergration/roku_builder/test_files/linker_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  31. data/intergration/roku_builder/test_files/linker_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  32. data/intergration/roku_builder/test_files/linker_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  33. data/intergration/roku_builder/test_files/linker_intergration_test/manifest +21 -0
  34. data/intergration/roku_builder/test_files/linker_intergration_test/source/main.brs +21 -0
  35. data/intergration/roku_builder/test_files/linker_intergration_test/test.pkg +0 -0
  36. data/intergration/roku_builder/test_files/loader_intergration_test/components/rectanglescene.xml +29 -0
  37. data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  38. data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  39. data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_splash_fhd.jpg +0 -0
  40. data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_splash_hd.jpg +0 -0
  41. data/intergration/roku_builder/test_files/loader_intergration_test/images/rde_splash_sd.jpg +0 -0
  42. data/intergration/roku_builder/test_files/loader_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  43. data/intergration/roku_builder/test_files/loader_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  44. data/intergration/roku_builder/test_files/loader_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  45. data/intergration/roku_builder/test_files/loader_intergration_test/manifest +21 -0
  46. data/intergration/roku_builder/test_files/loader_intergration_test/source/main.brs +21 -0
  47. data/intergration/roku_builder/test_files/loader_intergration_test/test.pkg +0 -0
  48. data/intergration/roku_builder/test_files/monitor_intergration_test/components/rectanglescene.xml +29 -0
  49. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  50. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  51. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_splash_fhd.jpg +0 -0
  52. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_splash_hd.jpg +0 -0
  53. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rde_splash_sd.jpg +0 -0
  54. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  55. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  56. data/intergration/roku_builder/test_files/monitor_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  57. data/intergration/roku_builder/test_files/monitor_intergration_test/manifest +21 -0
  58. data/intergration/roku_builder/test_files/monitor_intergration_test/source/main.brs +21 -0
  59. data/intergration/roku_builder/test_files/monitor_intergration_test/test.pkg +0 -0
  60. data/intergration/roku_builder/test_files/navigator_intergration_test/components/rectanglescene.xml +29 -0
  61. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  62. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  63. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_splash_fhd.jpg +0 -0
  64. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_splash_hd.jpg +0 -0
  65. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rde_splash_sd.jpg +0 -0
  66. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  67. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  68. data/intergration/roku_builder/test_files/navigator_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  69. data/intergration/roku_builder/test_files/navigator_intergration_test/manifest +21 -0
  70. data/intergration/roku_builder/test_files/navigator_intergration_test/source/main.brs +21 -0
  71. data/intergration/roku_builder/test_files/navigator_intergration_test/test.pkg +0 -0
  72. data/intergration/roku_builder/test_files/packager_intergration_test/components/rectanglescene.xml +29 -0
  73. data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  74. data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  75. data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_splash_fhd.jpg +0 -0
  76. data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_splash_hd.jpg +0 -0
  77. data/intergration/roku_builder/test_files/packager_intergration_test/images/rde_splash_sd.jpg +0 -0
  78. data/intergration/roku_builder/test_files/packager_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  79. data/intergration/roku_builder/test_files/packager_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  80. data/intergration/roku_builder/test_files/packager_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  81. data/intergration/roku_builder/test_files/packager_intergration_test/manifest +21 -0
  82. data/intergration/roku_builder/test_files/packager_intergration_test/source/main.brs +21 -0
  83. data/intergration/roku_builder/test_files/packager_intergration_test/test.pkg +0 -0
  84. data/intergration/roku_builder/test_files/profiler_intergration_test/components/rectanglescene.xml +29 -0
  85. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  86. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  87. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_splash_fhd.jpg +0 -0
  88. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_splash_hd.jpg +0 -0
  89. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rde_splash_sd.jpg +0 -0
  90. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  91. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  92. data/intergration/roku_builder/test_files/profiler_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  93. data/intergration/roku_builder/test_files/profiler_intergration_test/manifest +21 -0
  94. data/intergration/roku_builder/test_files/profiler_intergration_test/source/main.brs +21 -0
  95. data/intergration/roku_builder/test_files/profiler_intergration_test/test.pkg +0 -0
  96. data/intergration/roku_builder/test_files/scripter_intergration_test/components/rectanglescene.xml +29 -0
  97. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  98. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  99. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_splash_fhd.jpg +0 -0
  100. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_splash_hd.jpg +0 -0
  101. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rde_splash_sd.jpg +0 -0
  102. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  103. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  104. data/intergration/roku_builder/test_files/scripter_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  105. data/intergration/roku_builder/test_files/scripter_intergration_test/manifest +21 -0
  106. data/intergration/roku_builder/test_files/scripter_intergration_test/source/main.brs +21 -0
  107. data/intergration/roku_builder/test_files/scripter_intergration_test/test.pkg +0 -0
  108. data/intergration/roku_builder/test_files/tester_intergration_test/components/rectanglescene.xml +29 -0
  109. data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_mm_focus_hd.jpg +0 -0
  110. data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_mm_focus_sd.jpg +0 -0
  111. data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_splash_fhd.jpg +0 -0
  112. data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_splash_hd.jpg +0 -0
  113. data/intergration/roku_builder/test_files/tester_intergration_test/images/rde_splash_sd.jpg +0 -0
  114. data/intergration/roku_builder/test_files/tester_intergration_test/images/rsgde_bg_hd.jpg +0 -0
  115. data/intergration/roku_builder/test_files/tester_intergration_test/images/rsgde_mm_focus_hd.jpg +0 -0
  116. data/intergration/roku_builder/test_files/tester_intergration_test/images/rsgde_splash_hd.jpg +0 -0
  117. data/intergration/roku_builder/test_files/tester_intergration_test/manifest +21 -0
  118. data/intergration/roku_builder/test_files/tester_intergration_test/source/main.brs +21 -0
  119. data/intergration/roku_builder/test_files/tester_intergration_test/test.pkg +0 -0
  120. data/intergration/roku_builder/test_helper.rb +138 -0
  121. data/intergration/roku_builder/test_inspector.rb +35 -0
  122. data/intergration/roku_builder/test_linker.rb +32 -0
  123. data/intergration/roku_builder/test_loader.rb +38 -0
  124. data/intergration/roku_builder/test_monitor.rb +21 -0
  125. data/intergration/roku_builder/test_navigator.rb +34 -0
  126. data/intergration/roku_builder/test_packager.rb +41 -0
  127. data/intergration/roku_builder/test_profiler.rb +48 -0
  128. data/intergration/roku_builder/test_scripter.rb +38 -0
  129. data/intergration/roku_builder/test_tester.rb +21 -0
  130. data/lib/roku_builder.rb +143 -154
  131. data/lib/roku_builder/config.rb +17 -40
  132. data/lib/roku_builder/config_parser.rb +49 -200
  133. data/lib/roku_builder/config_validator.rb +1 -1
  134. data/lib/roku_builder/errors.rb +12 -0
  135. data/lib/roku_builder/git.rb +28 -0
  136. data/lib/roku_builder/hash.rb +8 -0
  137. data/lib/roku_builder/manifest.rb +121 -0
  138. data/lib/roku_builder/options.rb +68 -29
  139. data/lib/roku_builder/plugin.rb +30 -0
  140. data/lib/roku_builder/plugins/core.rb +117 -0
  141. data/lib/roku_builder/plugins/inspector.rb +104 -0
  142. data/lib/roku_builder/{linker.rb → plugins/linker.rb} +38 -12
  143. data/lib/roku_builder/plugins/loader.rb +152 -0
  144. data/lib/roku_builder/{monitor.rb → plugins/monitor.rb} +20 -9
  145. data/lib/roku_builder/{navigator.rb → plugins/navigator.rb} +136 -88
  146. data/lib/roku_builder/plugins/packager.rb +194 -0
  147. data/lib/roku_builder/plugins/profiler.rb +135 -0
  148. data/lib/roku_builder/plugins/scripter.rb +53 -0
  149. data/lib/roku_builder/{tester.rb → plugins/tester.rb} +28 -19
  150. data/lib/roku_builder/stager.rb +48 -12
  151. data/lib/roku_builder/string.rb +20 -0
  152. data/lib/roku_builder/util.rb +10 -34
  153. data/lib/roku_builder/version.rb +1 -1
  154. data/rakefile +5 -1
  155. data/roku_builder.gemspec +2 -0
  156. data/test/roku_builder/plugins/test_core.rb +112 -0
  157. data/test/roku_builder/plugins/test_inspector.rb +165 -0
  158. data/test/roku_builder/plugins/test_linker.rb +123 -0
  159. data/test/roku_builder/plugins/test_loader.rb +115 -0
  160. data/test/roku_builder/plugins/test_monitor.rb +141 -0
  161. data/test/roku_builder/plugins/test_navigator.rb +274 -0
  162. data/test/roku_builder/plugins/test_packager.rb +202 -0
  163. data/test/roku_builder/plugins/test_profiler.rb +127 -0
  164. data/test/roku_builder/plugins/test_scripter.rb +110 -0
  165. data/test/roku_builder/plugins/test_tester.rb +109 -0
  166. data/test/roku_builder/test_config.rb +51 -35
  167. data/test/roku_builder/test_config_parser.rb +76 -154
  168. data/test/roku_builder/test_config_validator.rb +18 -1
  169. data/test/roku_builder/test_files/{loader_test/manifest → config_parser_test/test.pkg} +0 -0
  170. data/test/roku_builder/test_files/config_test/config.json +3 -0
  171. data/test/roku_builder/test_files/controller_commands_test/manifest_template +7 -0
  172. data/test/roku_builder/test_files/core_test/manifest_template +7 -0
  173. data/test/roku_builder/test_files/core_test/test.pkg +0 -0
  174. data/test/roku_builder/test_files/inspector_test/manifest +6 -0
  175. data/test/roku_builder/test_files/inspector_test/test.pkg +0 -0
  176. data/test/roku_builder/test_files/linker_test/manifest +6 -0
  177. data/test/roku_builder/test_files/linker_test/test.pkg +0 -0
  178. data/test/roku_builder/test_files/loader_test/manifest_template +6 -0
  179. data/test/roku_builder/test_files/loader_test/test.pkg +0 -0
  180. data/test/roku_builder/test_files/loader_test/test.zip +0 -0
  181. data/test/roku_builder/test_files/manifest_test/manifest_comments +6 -0
  182. data/test/roku_builder/test_files/manifest_test/manifest_template +7 -0
  183. data/test/roku_builder/test_files/manifest_test/test.zip +0 -0
  184. data/test/roku_builder/test_files/packager_test/manifest +6 -0
  185. data/test/roku_builder/test_files/packager_test/scripter_test/manifest +6 -0
  186. data/test/roku_builder/test_files/packager_test/test.pkg +0 -0
  187. data/test/roku_builder/test_files/roku_builder_test/config.json +32 -0
  188. data/test/roku_builder/test_files/scripter_test/manifest +6 -0
  189. data/test/roku_builder/test_files/scripter_test/test.pkg +0 -0
  190. data/test/roku_builder/test_files/stager_test/test.pkg +0 -0
  191. data/test/roku_builder/test_files/tester_test/manifest +6 -0
  192. data/test/roku_builder/test_files/tester_test/test.pkg +0 -0
  193. data/test/roku_builder/test_helper.rb +44 -11
  194. data/test/roku_builder/test_logger.rb +1 -0
  195. data/test/roku_builder/test_manifest.rb +99 -0
  196. data/test/roku_builder/test_options.rb +106 -77
  197. data/test/roku_builder/test_options_plugins.rb +111 -0
  198. data/test/roku_builder/test_plugin.rb +48 -0
  199. data/test/roku_builder/test_roku_builder.rb +239 -0
  200. data/test/roku_builder/test_stager.rb +49 -101
  201. data/test/roku_builder/test_util.rb +19 -4
  202. metadata +241 -47
  203. data/lib/roku_builder/controller.rb +0 -98
  204. data/lib/roku_builder/controller_commands.rb +0 -224
  205. data/lib/roku_builder/error_handler.rb +0 -142
  206. data/lib/roku_builder/inspector.rb +0 -82
  207. data/lib/roku_builder/keyer.rb +0 -106
  208. data/lib/roku_builder/loader.rb +0 -131
  209. data/lib/roku_builder/manifest_manager.rb +0 -126
  210. data/lib/roku_builder/packager.rb +0 -43
  211. data/lib/roku_builder/profiler.rb +0 -96
  212. data/lib/roku_builder/scripter.rb +0 -39
  213. data/test/roku_builder/test_controller.rb +0 -70
  214. data/test/roku_builder/test_controller_commands.rb +0 -465
  215. data/test/roku_builder/test_error_handler.rb +0 -90
  216. data/test/roku_builder/test_inspector.rb +0 -298
  217. data/test/roku_builder/test_keyer.rb +0 -176
  218. data/test/roku_builder/test_linker.rb +0 -110
  219. data/test/roku_builder/test_loader.rb +0 -337
  220. data/test/roku_builder/test_manifest_manager.rb +0 -103
  221. data/test/roku_builder/test_monitor.rb +0 -137
  222. data/test/roku_builder/test_navigator.rb +0 -280
  223. data/test/roku_builder/test_packager.rb +0 -127
  224. data/test/roku_builder/test_profiler.rb +0 -35
  225. data/test/roku_builder/test_scripter.rb +0 -102
  226. data/test/roku_builder/test_tester.rb +0 -130
@@ -1,137 +0,0 @@
1
- # ********** Copyright Viacom, Inc. Apache 2.0 **********
2
-
3
- require_relative "test_helper.rb"
4
-
5
- module RokuBuilder
6
- class MonitorTest < Minitest::Test
7
- def test_monitor_monit
8
- connection = Minitest::Mock.new
9
- device_config = {
10
- ip: "111.222.333",
11
- user: "user",
12
- password: "password"
13
- }
14
- monitor = Monitor.new(**device_config)
15
-
16
- connection.expect(:waitfor, nil) do |config|
17
- assert_equal(/./, config['Match'])
18
- assert_equal(false, config['Timeout'])
19
- end
20
-
21
- readline = proc {
22
- sleep(0.1)
23
- "q"
24
- }
25
-
26
- Readline.stub(:readline, readline) do
27
- Net::Telnet.stub(:new, connection) do
28
- monitor.monitor(type: :main)
29
- end
30
- end
31
-
32
- connection.verify
33
- end
34
-
35
- def test_monitor_monit_and_manage
36
- connection = Minitest::Mock.new
37
- device_config = {
38
- ip: "111.222.333",
39
- user: "user",
40
- password: "password"
41
- }
42
- monitor = Monitor.new(**device_config)
43
- monitor.instance_variable_set(:@show_prompt, true)
44
-
45
- connection.expect(:waitfor, nil) do |config, &blk|
46
- assert_equal(/./, config['Match'])
47
- assert_equal(false, config['Timeout'])
48
- txt = "Fake Text"
49
- blk.call(txt) == ""
50
- end
51
-
52
- readline = proc {
53
- sleep(0.1)
54
- "q"
55
- }
56
-
57
- Readline.stub(:readline, readline) do
58
- Net::Telnet.stub(:new, connection) do
59
- monitor.stub(:manage_text, "") do
60
- monitor.monitor(type: :main)
61
- end
62
- end
63
- end
64
-
65
- connection.verify
66
- end
67
-
68
- def test_monitor_monit_input
69
- connection = Minitest::Mock.new
70
- device_config = {
71
- ip: "111.222.333",
72
- user: "user",
73
- password: "password"
74
- }
75
- monitor = Monitor.new(**device_config)
76
- monitor.instance_variable_set(:@show_prompt, true)
77
-
78
- connection.expect(:waitfor, nil) do |config|
79
- assert_equal(/./, config['Match'])
80
- assert_equal(false, config['Timeout'])
81
- end
82
- connection.expect(:puts, nil) do |text|
83
- assert_equal("text", text)
84
- monitor.instance_variable_set(:@show_prompt, true)
85
- end
86
-
87
-
88
- readline = proc {
89
- @count ||= 0
90
- sleep(0.1)
91
- case @count
92
- when 0
93
- @count += 1
94
- "text"
95
- else
96
- "q"
97
- end
98
- }
99
-
100
- Readline.stub(:readline, readline) do
101
- Net::Telnet.stub(:new, connection) do
102
- monitor.monitor(type: :main)
103
- end
104
- end
105
-
106
- connection.verify
107
- end
108
-
109
- def test_monitor_manage_text
110
- mock = Minitest::Mock.new
111
- device_config = {
112
- ip: "111.222.333",
113
- user: "user",
114
- password: "password"
115
- }
116
- monitor = Monitor.new(**device_config)
117
- monitor.instance_variable_set(:@show_prompt, true)
118
- monitor.instance_variable_set(:@mock, mock)
119
-
120
- def monitor.puts(input)
121
- @mock.puts(input)
122
- end
123
-
124
- mock.expect(:puts, nil, ["midline split\n"])
125
-
126
- all_text = "midline "
127
- txt = "split\nBrightScript Debugger> "
128
-
129
- result = monitor.send(:manage_text, {all_text: all_text, txt: txt})
130
-
131
- assert_equal "", result
132
-
133
- mock.verify
134
-
135
- end
136
- end
137
- end
@@ -1,280 +0,0 @@
1
- # ********** Copyright Viacom, Inc. Apache 2.0 **********
2
-
3
- require_relative "test_helper.rb"
4
-
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
26
-
27
- def test_navigator_nav_fail
28
- path = ""
29
- navigator_test(path: path, input: :bad, type: :nav, success: false)
30
- end
31
-
32
- def test_navigator_type
33
- path = "keypress/LIT_"
34
- navigator_test(path: path, input: "Type", type: :text)
35
- end
36
-
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
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)}"
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)
74
- end
75
- end
76
-
77
- assert_equal success, result
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
- 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
104
-
105
- logger.verify
106
- Logger.set_testing
107
- end
108
-
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)
117
-
118
- assert !navigator.screen(type: :bad)
119
-
120
- end
121
-
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
136
-
137
- navigator.screens
138
-
139
- logger.verify
140
- Logger.set_testing
141
- end
142
-
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
162
- end
163
- end
164
- end
165
- getc.verify
166
- chr.verify
167
- end
168
-
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
195
- end
196
- getc.verify
197
- chr.verify
198
- end
199
-
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
209
- navigator.interactive
210
- end
211
- end
212
-
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
277
- end
278
- end
279
- end
280
- end
@@ -1,127 +0,0 @@
1
- # ********** Copyright Viacom, Inc. Apache 2.0 **********
2
-
3
- require_relative "test_helper.rb"
4
-
5
- module RokuBuilder
6
- class PackagerTest < Minitest::Test
7
- def test_packager_package_failed
8
- connection = Minitest::Mock.new
9
- faraday = Minitest::Mock.new
10
- response = Minitest::Mock.new
11
-
12
- device_config = {
13
- ip: "111.222.333",
14
- user: "user",
15
- password: "password"
16
- }
17
- payload = {
18
- mysubmit: "Package",
19
- app_name: "app_name",
20
- passwd: "password",
21
- pkg_time: 0
22
- }
23
- package_config ={
24
- app_name_version: "app_name",
25
- out_file: "out_file",
26
- password: "password"
27
- }
28
- path = "/plugin_package"
29
-
30
- faraday.expect(:headers, {})
31
- faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
32
- faraday.expect(:request, nil, [:multipart])
33
- faraday.expect(:request, nil, [:url_encoded])
34
- faraday.expect(:adapter, nil, [Faraday.default_adapter])
35
- connection.expect(:post, response) do |arg1, arg2|
36
- assert_equal path, arg1
37
- assert_equal payload[:mysubmit], arg2[:mysubmit]
38
- assert_equal payload[:app_name], arg2[:app_name]
39
- assert_equal payload[:passwd], arg2[:passwd]
40
- assert_equal payload[:pkg_time], arg2[:pkg_time]
41
- end
42
- response.expect(:body, "Failed: Error.")
43
-
44
- packager = Packager.new(**device_config)
45
- result = nil
46
- Faraday.stub(:new, connection, faraday) do
47
- Time.stub(:now, Time.at(0)) do
48
- result = packager.package(**package_config)
49
- end
50
- end
51
-
52
- assert_equal "Failed: Error.", result
53
-
54
- connection.verify
55
- faraday.verify
56
- response.verify
57
- end
58
-
59
- def test_packager_package
60
- connection = Minitest::Mock.new
61
- faraday = Minitest::Mock.new
62
- response = Minitest::Mock.new
63
- io = Minitest::Mock.new
64
-
65
- device_config = {
66
- ip: "111.222.333",
67
- user: "user",
68
- password: "password"
69
- }
70
- payload = {
71
- mysubmit: "Package",
72
- app_name: "app_name",
73
- passwd: "password",
74
- pkg_time: 0
75
- }
76
- package_config ={
77
- app_name_version: "app_name",
78
- out_file: "out_file",
79
- password: "password"
80
- }
81
- path = "/plugin_package"
82
-
83
- faraday.expect(:headers, {})
84
- faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
85
- faraday.expect(:request, nil, [:multipart])
86
- faraday.expect(:request, nil, [:url_encoded])
87
- faraday.expect(:adapter, nil, [Faraday.default_adapter])
88
-
89
- faraday.expect(:request, nil, [:digest, device_config[:user], device_config[:password]])
90
- faraday.expect(:adapter, nil, [Faraday.default_adapter])
91
-
92
- connection.expect(:post, response) do |arg1, arg2|
93
- assert_equal path, arg1
94
- assert_equal payload[:mysubmit], arg2[:mysubmit]
95
- assert_equal payload[:app_name], arg2[:app_name]
96
- assert_equal payload[:passwd], arg2[:passwd]
97
- assert_equal payload[:pkg_time], arg2[:pkg_time]
98
- end
99
- connection.expect(:get, response, ["/pkgs/pkg_url"])
100
-
101
- response.expect(:body, "<a href=\"pkgs\">pkg_url</a>")
102
- response.expect(:body, "<a href=\"pkgs\">pkg_url</a>")
103
-
104
- response.expect(:status, 200)
105
- response.expect(:body, "package_body")
106
-
107
- io.expect(:write, nil, ["package_body"])
108
-
109
- packager = Packager.new(**device_config)
110
- result = nil
111
- Faraday.stub(:new, connection, faraday) do
112
- Time.stub(:now, Time.at(0)) do
113
- File.stub(:open, nil, io) do
114
- result = packager.package(**package_config)
115
- end
116
- end
117
- end
118
-
119
- assert_equal true, result
120
-
121
- connection.verify
122
- faraday.verify
123
- response.verify
124
- io.verify
125
- end
126
- end
127
- end