roku_builder 3.13.0 → 4.0.0

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.
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,39 +0,0 @@
1
- # ********** Copyright Viacom, Inc. Apache 2.0 **********
2
-
3
- module RokuBuilder
4
-
5
- # Helper for extending for scripting
6
- class Scripter
7
-
8
- # Prints attributes from config or project to allow scripting
9
- # @param attribute [Symbol] attribute to print
10
- # @param configs [Hash] Parsed config hash
11
- def self.print(attribute:, configs:)
12
- attributes = [
13
- :title, :build_version, :app_version, :root_dir, :app_name
14
- ]
15
-
16
- unless attributes.include? attribute
17
- return BAD_PRINT_ATTRIBUTE
18
- end
19
-
20
- read_config = {root_dir: configs[:project_config][:directory]}
21
-
22
- case attribute
23
- when :root_dir
24
- printf "%s", configs[:project_config][:directory]
25
- when :app_name
26
- printf "%s", configs[:project_config][:app_name]
27
- when :title
28
- printf "%s", ManifestManager.read_manifest(**read_config)[:title]
29
- when :build_version
30
- printf "%s", ManifestManager.read_manifest(**read_config)[:build_version]
31
- when :app_version
32
- major = ManifestManager.read_manifest(**read_config)[:major_version]
33
- minor = ManifestManager.read_manifest(**read_config)[:minor_version]
34
- printf "%s.%s", major, minor
35
- end
36
- SUCCESS
37
- end
38
- end
39
- end
@@ -1,70 +0,0 @@
1
- # ********** Copyright Viacom, Inc. Apache 2.0 **********
2
-
3
- require_relative "test_helper.rb"
4
- module RokuBuilder
5
- class ControllerTest < Minitest::Test
6
- def test_controller_check_devices
7
- ping = Minitest::Mock.new
8
- options = build_options({sideload: true, device_given: false, working: true})
9
- raw = {
10
- devices: {
11
- a: {ip: "2.2.2.2"},
12
- b: {ip: "3.3.3.3"}
13
- }
14
- }
15
- parsed = {
16
- device_config: {ip: "1.1.1.1"}
17
- }
18
- config = Config.new(options: options)
19
- config.instance_variable_set(:@config, raw)
20
- config.instance_variable_set(:@parsed, parsed)
21
-
22
- Net::Ping::External.stub(:new, ping) do
23
-
24
- ping.expect(:ping?, true, [parsed[:device_config][:ip], 1, 0.2, 1])
25
- code, ret = Controller.send(:check_devices, {options: options, config: config})
26
- assert_equal GOOD_DEVICE, code
27
-
28
- ping.expect(:ping?, false, [parsed[:device_config][:ip], 1, 0.2, 1])
29
- ping.expect(:ping?, false, [raw[:devices][:a][:ip], 1, 0.2, 1])
30
- ping.expect(:ping?, false, [raw[:devices][:b][:ip], 1, 0.2, 1])
31
- code = Controller.send(:check_devices, {options: options, config: config})
32
- assert_equal NO_DEVICES, code
33
-
34
- ping.expect(:ping?, false, [parsed[:device_config][:ip], 1, 0.2, 1])
35
- ping.expect(:ping?, true, [raw[:devices][:a][:ip], 1, 0.2, 1])
36
- code = Controller.send(:check_devices, {options: options, config: config})
37
- assert_equal CHANGED_DEVICE, code
38
- assert_equal raw[:devices][:a][:ip], config.parsed[:device_config][:ip]
39
-
40
- options[:device_given] = true
41
- ping.expect(:ping?, false, [parsed[:device_config][:ip], 1, 0.2, 1])
42
- code = Controller.send(:check_devices, {options: options, config: config})
43
- assert_equal BAD_DEVICE, code
44
-
45
- options = build_options({build: true, device_given: false, working: true})
46
- code = Controller.send(:check_devices, {options: options, config: config})
47
- assert_equal GOOD_DEVICE, code
48
- end
49
- end
50
-
51
- def test_controller_run_debug
52
- tests = [
53
- {options: {debug: true}, method: :set_debug},
54
- {options: {verbose: true}, method: :set_info},
55
- {options: {}, method: :set_warn}
56
- ]
57
- tests.each do |test|
58
- logger = Minitest::Mock.new
59
- logger.expect(:call, nil)
60
-
61
- Logger.stub(test[:method], logger) do
62
- Controller.initialize_logger(options: test[:options])
63
- end
64
-
65
- logger.verify
66
- end
67
- end
68
- end
69
- end
70
-
@@ -1,465 +0,0 @@
1
- # ********** Copyright Viacom, Inc. Apache 2.0 **********
2
-
3
- require_relative "test_helper.rb"
4
- module RokuBuilder
5
- class ControllerCommandsTest < Minitest::Test
6
-
7
- def test_controller_commands_validate
8
- logger = Minitest::Mock.new
9
- Logger.class_variable_set(:@@instance, logger)
10
- logger.expect(:info, nil, ["Config validated"])
11
- code = ControllerCommands.validate()
12
- assert_equal SUCCESS, code
13
- logger.verify
14
- Logger.set_testing
15
- end
16
- def test_controller_commands_sideload
17
- loader = Minitest::Mock.new
18
- stager = Minitest::Mock.new
19
-
20
- options = build_options({sideload: true, config: "~/.roku_config.rb", working: true})
21
- config = Config.new(options: options)
22
- config.instance_variable_set(:@config, good_config)
23
- config.parse
24
- # Test Success
25
- loader.expect(:sideload, [SUCCESS, "build_version"], [config.parsed[:sideload_config]])
26
- stager.expect(:stage, true)
27
- stager.expect(:unstage, true)
28
- stager.expect(:method, :git)
29
-
30
- code = nil
31
- Loader.stub(:new, loader) do
32
- Stager.stub(:new, stager) do
33
- code = Controller.send(:execute_commands, {options: options, config: config})
34
- end
35
- end
36
- assert_equal SUCCESS, code
37
-
38
- stager.expect(:stage, true)
39
- stager.expect(:unstage, true)
40
-
41
- # Test Failure
42
- loader.expect(:sideload, [FAILED_SIDELOAD, "build_version"], [config.parsed[:sideload_config]])
43
- Loader.stub(:new, loader) do
44
- Stager.stub(:new, stager) do
45
- code = Controller.send(:execute_commands, {options: options, config: config})
46
- end
47
- end
48
- assert_equal FAILED_SIDELOAD, code
49
-
50
- loader.verify
51
- stager.verify
52
- end
53
-
54
- def test_controller_commands_package
55
- keyer = Minitest::Mock.new
56
- loader = Minitest::Mock.new
57
- stager = Minitest::Mock.new
58
- packager = Minitest::Mock.new
59
- inspector = Minitest::Mock.new
60
-
61
- options = build_options({package: true, inspect: true, out_folder: "/tmp", config: "~/.roku_config.json", set_stage: true})
62
- config = Config.new(options: options)
63
- config.instance_variable_set(:@config, good_config)
64
- config.parse
65
- info = {app_name: "app", dev_id: "id", creation_date: "date", dev_zip: ""}
66
-
67
- loader.expect(:sideload, [SUCCESS, "build_version"], [config.parsed[:sideload_config]])
68
- keyer.expect(:rekey, true, [config.parsed[:key]])
69
- packager.expect(:package, true, [config.parsed[:package_config]])
70
- inspector.expect(:inspect, info, [config.parsed[:inspect_config]])
71
- stager.expect(:stage, true)
72
- stager.expect(:unstage, true)
73
- stager.expect(:method, :git)
74
-
75
- code = nil
76
- Keyer.stub(:new, keyer) do
77
- Loader.stub(:new, loader) do
78
- Packager.stub(:new, packager) do
79
- Inspector.stub(:new, inspector) do
80
- Stager.stub(:new, stager) do
81
- ::Logger.stub(:new, ::Logger.new("/dev/null")) do
82
- code = Controller.send(:execute_commands, {options: options, config: config})
83
- end
84
- end
85
- end
86
- end
87
- end
88
- end
89
- assert_equal SUCCESS, code
90
-
91
- keyer.verify
92
- loader.verify
93
- stager.verify
94
- packager.verify
95
- inspector.verify
96
- end
97
-
98
- def test_controller_commands_package_outfile
99
- keyer = Minitest::Mock.new
100
- loader = Minitest::Mock.new
101
- stager = Minitest::Mock.new
102
- packager = Minitest::Mock.new
103
- inspector = Minitest::Mock.new
104
-
105
- options = build_options({package: true, inspect: true, out: "/tmp/out.pkg", config: "~/.roku_config.json", set_stage: true})
106
- config = Config.new(options: options)
107
- config.instance_variable_set(:@config, good_config)
108
- config.parse
109
- info = {app_name: "app", dev_id: "id", creation_date: "date", dev_zip: ""}
110
-
111
- loader.expect(:sideload, [SUCCESS, "build_version"], [config.parsed[:sideload_config]])
112
- keyer.expect(:rekey, true, [config.parsed[:key]])
113
- packager.expect(:package, true, [config.parsed[:package_config]])
114
- inspector.expect(:inspect, info, [config.parsed[:inspect_config]])
115
- stager.expect(:stage, true)
116
- stager.expect(:unstage, true)
117
- stager.expect(:method, :git)
118
-
119
- code = nil
120
- Keyer.stub(:new, keyer) do
121
- Loader.stub(:new, loader) do
122
- Packager.stub(:new, packager) do
123
- Inspector.stub(:new, inspector) do
124
- Stager.stub(:new, stager) do
125
- ::Logger.stub(:new, ::Logger.new("/dev/null")) do
126
- code = Controller.send(:execute_commands, {options: options, config: config})
127
- end
128
- end
129
- end
130
- end
131
- end
132
- end
133
- assert_equal SUCCESS, code
134
-
135
- keyer.verify
136
- loader.verify
137
- stager.verify
138
- packager.verify
139
- inspector.verify
140
- end
141
-
142
- def test_controller_commands_build
143
- loader = Minitest::Mock.new
144
- stager = Minitest::Mock.new
145
-
146
- code = nil
147
- options = build_options({build: true, out_folder: "/tmp", config: "~/.roku_config.json", working: true})
148
- config = Config.new(options: options)
149
- config.instance_variable_set(:@config, good_config)
150
- config.parse
151
- loader.expect(:build, "/tmp/build", [config.parsed[:build_config]])
152
- stager.expect(:stage, true)
153
- stager.expect(:unstage, true)
154
- stager.expect(:method, :git)
155
-
156
- Loader.stub(:new, loader) do
157
- ManifestManager.stub(:build_version, "1") do
158
- Stager.stub(:new, stager) do
159
- code = Controller.send(:execute_commands, {options: options, config: config})
160
- end
161
- end
162
- end
163
- assert_equal SUCCESS, code
164
- loader.verify
165
- stager.verify
166
- end
167
- def test_controller_commands_update
168
- mock = Minitest::Mock.new
169
- stager = Minitest::Mock.new
170
-
171
- code = nil
172
- options = build_options({update: true, out_folder: "/tmp", config: "~/.roku_config.json", working: true})
173
- config = Config.new(options: options)
174
- config.instance_variable_set(:@config, good_config)
175
- config.parse
176
- mock.expect(:call, "1", [config.parsed[:manifest_config]])
177
- mock.expect(:call, "2", [config.parsed[:manifest_config]])
178
- stager.expect(:stage, true)
179
- stager.expect(:unstage, true)
180
-
181
- ManifestManager.stub(:build_version, mock) do
182
- ManifestManager.stub(:update_build, mock) do
183
- Stager.stub(:new, stager) do
184
- code = Controller.send(:execute_commands, {options: options, config: config})
185
- end
186
- end
187
- end
188
- mock.verify
189
- stager.verify
190
- assert_equal SUCCESS, code
191
- end
192
-
193
- def test_controller_commands_deeplink
194
- mock = Minitest::Mock.new
195
-
196
- code = nil
197
- options = build_options({deeplink: true, deeplink_options: "a:b", config: "~/.roku_config.json"})
198
- config = Config.new(options: options)
199
- config.instance_variable_set(:@config, good_config)
200
- config.parse
201
- mock.expect(:launch, "true", [config.parsed[:deeplink_config]])
202
- Linker.stub(:new, mock) do
203
- code = Controller.send(:execute_commands, {options: options, config: config})
204
- end
205
- mock.verify
206
- assert_equal SUCCESS, code
207
- end
208
- def test_controller_commands_deeplink_sideload
209
- mock = Minitest::Mock.new
210
-
211
- ran_sideload = false
212
-
213
- sideload = Proc.new {|a, b, c| ran_sideload = true}
214
-
215
- code = nil
216
- options = build_options({deeplink: true, set_stage: true, deeplink_options: "a:b", config: "~/.roku_config.json"})
217
- config = Config.new(options: options)
218
- config.instance_variable_set(:@config, good_config)
219
- config.parse
220
- mock.expect(:launch, "true", [config.parsed[:deeplink_config]])
221
- Linker.stub(:new, mock) do
222
- ControllerCommands.stub(:sideload, sideload) do
223
- code = Controller.send(:execute_commands, {options: options, config: config})
224
- end
225
- end
226
- mock.verify
227
- assert_equal SUCCESS, code
228
- assert ran_sideload
229
- end
230
- def test_controller_commands_deeplink_fail
231
- mock = Minitest::Mock.new
232
- stager = Minitest::Mock.new
233
-
234
- code = nil
235
- options = build_options({deeplink: true, deeplink_options: "a:b", config: "~/.roku_config.json"})
236
- config = Config.new(options: options)
237
- config.instance_variable_set(:@config, good_config)
238
- config.parse
239
- mock.expect(:launch, false, [config.parsed[:deeplink_config]])
240
- stager.expect(:stage, true)
241
- stager.expect(:unstage, true)
242
- Linker.stub(:new, mock) do
243
- Stager.stub(:new, stager) do
244
- code = Controller.send(:execute_commands, {options: options, config: config})
245
- end
246
- end
247
- mock.verify
248
- assert_equal FAILED_DEEPLINKING, code
249
- end
250
- def test_controller_commands_delete
251
- loader = Minitest::Mock.new
252
-
253
- options = build_options({delete: true, config: "~/.roku_config.json"})
254
- config = Config.new(options: options)
255
- config.instance_variable_set(:@config, good_config)
256
- config.parse
257
- loader.expect(:unload, nil)
258
- code = nil
259
- Loader.stub(:new, loader) do
260
- ManifestManager.stub(:build_version, "1") do
261
- code = Controller.send(:execute_commands, {options: options, config: config})
262
- end
263
- end
264
- assert_equal SUCCESS, code
265
- loader.verify
266
- end
267
- def test_controller_commands_monitor
268
- monitor = Minitest::Mock.new
269
-
270
- options = build_options({monitor: "main", config: "~/.roku_config.json"})
271
- config = Config.new(options: options)
272
- config.instance_variable_set(:@config, good_config)
273
- config.parse
274
- monitor.expect(:monitor, nil, [config.parsed[:monitor_config]])
275
- code = nil
276
- Monitor.stub(:new, monitor) do
277
- ManifestManager.stub(:build_version, "1") do
278
- code = Controller.send(:execute_commands, {options: options, config: config})
279
- end
280
- end
281
- assert_equal SUCCESS, code
282
- monitor.verify
283
- end
284
- def test_controller_commands_navigate
285
- navigator = Minitest::Mock.new
286
-
287
- options = build_options({navigate: "up", config: "~/.roku_config.json"})
288
- config = Config.new(options: options)
289
- config.instance_variable_set(:@config, good_config)
290
- config.parse
291
- navigator.expect(:nav, true, [config.parsed[:navigate_config]])
292
- code = nil
293
- Navigator.stub(:new, navigator) do
294
- code = Controller.send(:execute_commands, {options: options, config: config})
295
- end
296
- assert_equal SUCCESS, code
297
- navigator.verify
298
- end
299
- def test_controller_commands_navigate_fail
300
- navigator = Minitest::Mock.new
301
-
302
- options = build_options({navigate: "up", config: ":execute_commands,/.roku_config.json"})
303
- config = Config.new(options: options)
304
- config.instance_variable_set(:@config, good_config)
305
- config.parse
306
- navigator.expect(:nav, nil, [config.parsed[:navigate_config]])
307
- code = nil
308
- Navigator.stub(:new, navigator) do
309
- code = Controller.send(:execute_commands, {options: options, config: config})
310
- end
311
- assert_equal FAILED_NAVIGATING, code
312
- navigator.verify
313
- end
314
- def test_controller_commands_screen
315
- navigator = Minitest::Mock.new
316
-
317
- options = build_options({screen: "secret", config: "~/.roku_config.json"})
318
- config = Config.new(options: options)
319
- config.instance_variable_set(:@config, good_config)
320
- config.parse
321
- navigator.expect(:screen, true, [config.parsed[:screen_config]])
322
- code = nil
323
- Navigator.stub(:new, navigator) do
324
- code = Controller.send(:execute_commands, {options: options, config: config})
325
- end
326
- assert_equal SUCCESS, code
327
- navigator.verify
328
- end
329
- def test_controller_commands_screens
330
- navigator = Minitest::Mock.new
331
-
332
- options = build_options({screens: true, config: "~/.roku_config.json"})
333
- config = Config.new(options: options)
334
- config.instance_variable_set(:@config, good_config)
335
- config.parse
336
- navigator.expect(:screens, true)
337
- code = nil
338
- Navigator.stub(:new, navigator) do
339
- code = Controller.send(:execute_commands, {options: options, config: config})
340
- end
341
- assert_equal SUCCESS, code
342
- navigator.verify
343
- end
344
- def test_controller_commands_text
345
- navigator = Minitest::Mock.new
346
-
347
- options = build_options({text: "text string", config: "~/.roku_config.json"})
348
- config = Config.new(options: options)
349
- config.instance_variable_set(:@config, good_config)
350
- config.parse
351
- navigator.expect(:type, true, [config.parsed[:text_config]])
352
- code = nil
353
- Navigator.stub(:new, navigator) do
354
- code = Controller.send(:execute_commands, {options: options, config: config})
355
- end
356
- assert_equal SUCCESS, code
357
- navigator.verify
358
- end
359
- def test_controller_commands_test
360
- tester = Minitest::Mock.new
361
- stager = Minitest::Mock.new
362
-
363
- options = build_options({test: true, config: "~/.roku_config.json", working: true})
364
- config = Config.new(options: options)
365
- config.instance_variable_set(:@config, good_config)
366
- config.parse
367
- tester.expect(:run_tests, true, [config.parsed[:test_config]])
368
- stager.expect(:stage, true)
369
- stager.expect(:unstage, true)
370
- code = nil
371
-
372
- Stager.stub(:new, stager) do
373
- Tester.stub(:new, tester) do
374
- code = Controller.send(:execute_commands, {options: options, config: config})
375
- end
376
- end
377
- assert_equal SUCCESS, code
378
- tester.verify
379
- stager.verify
380
- end
381
- def test_controller_commands_screencapture
382
- inspector = Minitest::Mock.new
383
-
384
- options = build_options({screencapture: true, out: "/tmp/capture.jpg", config: "~/.roku_config.json"})
385
- config = Config.new(options: options)
386
- config.instance_variable_set(:@config, good_config)
387
- config.parse
388
- inspector.expect(:screencapture, true, [config.parsed[:screencapture_config]])
389
- code = nil
390
- Inspector.stub(:new, inspector) do
391
- code = Controller.send(:execute_commands, {options: options, config: config})
392
- end
393
- assert_equal SUCCESS, code
394
- inspector.verify
395
- end
396
- def test_controller_commands_screencapture_fail
397
- inspector = Minitest::Mock.new
398
-
399
- options = build_options({screencapture: true, out: "/tmp", config: "~/.roku_config.json"})
400
- config = Config.new(options: options)
401
- config.instance_variable_set(:@config, good_config)
402
- config.parse
403
- inspector.expect(:screencapture, false, [config.parsed[:screencapture_config]])
404
- code = nil
405
- Inspector.stub(:new, inspector) do
406
- code = Controller.send(:execute_commands, {options: options, config: config })
407
- end
408
- assert_equal FAILED_SCREENCAPTURE, code
409
- inspector.verify
410
- end
411
- def test_controller_commands_print
412
- stager = Minitest::Mock.new
413
-
414
- options = build_options({print: 'title', config: "~/.roku_config.json", working: true})
415
- configs = {stage_config: {}}
416
- config = Config.new(options: options)
417
- config.instance_variable_set(:@parsed, configs)
418
- code = nil
419
- scripter_config = {attribute: :title, configs: configs}
420
- print_check = lambda {|print_config| SUCCESS if print_config == scripter_config }
421
- stager.expect(:stage, true)
422
- stager.expect(:unstage, true)
423
-
424
- Stager.stub(:new, stager) do
425
- Scripter.stub(:print, print_check) do
426
- code = Controller.send(:execute_commands, {options: options, config: config})
427
- end
428
- end
429
- assert_equal SUCCESS, code
430
- stager.verify
431
- end
432
- def test_controller_commands_dostage
433
- stager = Minitest::Mock.new
434
-
435
- options = build_options({dostage: true, config: "~/.roku_config.json"})
436
- config = Config.new(options: options)
437
- config.instance_variable_set(:@parsed, {stage_config: {}})
438
- code = nil
439
- stager.expect(:stage, true)
440
-
441
- Stager.stub(:new, stager) do
442
- code = Controller.send(:execute_commands, {options: options, config: config})
443
- end
444
- assert_equal true, code
445
- stager.verify
446
- end
447
-
448
- def test_controller_commands_dounstage
449
- stager = Minitest::Mock.new
450
-
451
- options = build_options({dounstage: true, config: "~/.roku_config.json"})
452
- configs = {stage_config: {}}
453
- config = Config.new(options: options)
454
- config.instance_variable_set(:@parsed, configs)
455
- code = nil
456
- stager.expect(:unstage, true)
457
-
458
- Stager.stub(:new, stager) do
459
- code = Controller.send(:execute_commands, {options: options, config: config})
460
- end
461
- assert_equal true, code
462
- stager.verify
463
- end
464
- end
465
- end