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
@@ -4,6 +4,9 @@ require_relative "test_helper.rb"
4
4
 
5
5
  module RokuBuilder
6
6
  class ConfigTest < Minitest::Test
7
+ def setup
8
+ Logger.set_testing
9
+ end
7
10
 
8
11
  def test_config_init
9
12
  options = build_options({config: File.join(test_files_path(ConfigTest), "config.json"), validate: true})
@@ -59,7 +62,7 @@ module RokuBuilder
59
62
  assert_equal :p1, config.raw[:projects][:default]
60
63
  end
61
64
 
62
- def test_config_read_parent
65
+ def test_config_read_parent_child_part
63
66
  options = build_options({config: File.join(test_files_path(ConfigTest), "child.json"), validate: true})
64
67
  config = Config.new(options: options)
65
68
  config.load
@@ -67,7 +70,7 @@ module RokuBuilder
67
70
  assert_equal :p1, config.raw[:projects][:default]
68
71
  end
69
72
 
70
- def test_config_read_parent
73
+ def test_config_read_parent_parent_part
71
74
  options = build_options({config: File.join(test_files_path(ConfigTest), "parent_projects.json"), validate: true})
72
75
  config = Config.new(options: options)
73
76
  config.load
@@ -89,38 +92,6 @@ module RokuBuilder
89
92
  FileUtils.rm(tmp)
90
93
  end
91
94
 
92
- def test_config_update_package
93
- options = build_options({config: File.join(test_files_path(ConfigTest), "config.json"), package: true, stage: :production, set_stage: true})
94
- config = Config.new(options: options)
95
- config.load
96
- config.parse
97
- options[:build_version] = "BUILDVERSION"
98
- config.update
99
- assert_equal "app - production - BUILDVERSION", config.parsed[:package_config][:app_name_version]
100
- assert_equal "/tmp/app_production_BUILDVERSION", config.parsed[:package_config][:out_file]
101
- assert_equal "/tmp/app_production_BUILDVERSION", config.parsed[:inspect_config][:pkg]
102
- end
103
-
104
- def test_config_update_build
105
- options = build_options({config: File.join(test_files_path(ConfigTest), "config.json"), build: true, stage: :production, set_stage: true})
106
- config = Config.new(options: options)
107
- config.load
108
- config.parse
109
- options[:build_version] = "BUILDVERSION"
110
- config.update
111
- assert_equal "/tmp/app_production_BUILDVERSION", config.parsed[:build_config][:out_file]
112
- end
113
-
114
- def test_config_update_sideload
115
- options = build_options({config: File.join(test_files_path(ConfigTest), "config.json"), sideload: true, stage: :production, set_stage: true, out: "/tmp2"})
116
- config = Config.new(options: options)
117
- config.load
118
- config.parse
119
- options[:build_version] = "BUILDVERSION"
120
- config.update
121
- assert_equal "/tmp2/app_production_BUILDVERSION", config.parsed[:sideload_config][:out_file]
122
- end
123
-
124
95
  def test_config_configure_creation
125
96
  target_config = File.join(test_files_path(ConfigTest), "configure_test.json")
126
97
  options = build_options({config: target_config, configure: true})
@@ -148,7 +119,7 @@ module RokuBuilder
148
119
  File.delete(target_config) if File.exist?(target_config)
149
120
  end
150
121
 
151
- def test_config_configure_edit_params
122
+ def test_config_configure_edit_params_default
152
123
  target_config = File.join(test_files_path(ConfigTest), "configure_test.json")
153
124
  options = build_options({
154
125
  config: target_config,
@@ -164,5 +135,50 @@ module RokuBuilder
164
135
  end
165
136
  File.delete(target_config) if File.exist?(target_config)
166
137
  end
138
+
139
+ def test_config_set_root_dir
140
+ options = build_options({config: File.join(test_files_path(ConfigTest), "config.json"), validate: true})
141
+ config = Config.new(options: options)
142
+ config.load
143
+ config.parse
144
+ config.root_dir = "new/dir"
145
+ assert_equal "new/dir", config.root_dir
146
+ end
147
+
148
+ def test_config_set_in
149
+ options = build_options({config: File.join(test_files_path(ConfigTest), "config.json"), validate: true})
150
+ config = Config.new(options: options)
151
+ config.load
152
+ config.parse
153
+ config.in = "new/dir"
154
+ assert_equal "new/dir", config.in
155
+ end
156
+
157
+ def test_config_set_out
158
+ options = build_options({config: File.join(test_files_path(ConfigTest), "config.json"), validate: true})
159
+ config = Config.new(options: options)
160
+ config.load
161
+ config.parse
162
+ config.out = "new/dir"
163
+ assert_equal "new/dir", config.out
164
+ end
165
+
166
+ def test_config_dont_set_params
167
+ options = build_options({config: File.join(test_files_path(ConfigTest), "config.json"), validate: true})
168
+ config = Config.new(options: options)
169
+ config.load
170
+ config.parse
171
+ assert_raises StandardError do
172
+ config.param = "value"
173
+ end
174
+ end
175
+ def test_config_input_mappings
176
+ options = build_options({config: File.join(test_files_path(ConfigTest), "config.json"), validate: true})
177
+ config = Config.new(options: options)
178
+ config.load
179
+ config.parse
180
+ refute_nil config.input_mappings
181
+ assert_equal ["home", "Home"], config.input_mappings[:a]
182
+ end
167
183
  end
168
184
  end
@@ -4,51 +4,54 @@ require_relative "test_helper.rb"
4
4
 
5
5
  module RokuBuilder
6
6
  class ConfigParserTest < Minitest::Test
7
+ def setup
8
+ Logger.set_testing
9
+ end
7
10
  def test_manifest_config
8
11
  options = build_options({
9
- sideload: true,
12
+ validate: true,
10
13
  working: true
11
14
  })
12
- config = good_config
15
+ options.define_singleton_method(:source_commands){[:validate]}
16
+ config = good_config(ConfigParserTest)
13
17
  configs = ConfigParser.parse(options: options, config: config)
14
18
 
15
19
  assert_equal Hash, config.class
16
- assert_equal "/tmp", configs[:manifest_config][:root_dir]
20
+ assert_equal test_files_path(ConfigParserTest), configs[:root_dir]
17
21
  end
18
22
 
19
23
  def test_manifest_config_in
20
24
  options = build_options({
21
25
  in: "/dev/null/infile",
22
- sideload: true
26
+ validate: true
23
27
  })
24
- config = good_config
28
+ config = good_config(ConfigParserTest)
25
29
  configs = ConfigParser.parse(options: options, config: config)
26
30
 
27
31
  assert_equal Hash, config.class
28
- assert_equal "/dev/null/infile", configs[:manifest_config][:root_dir]
29
- assert_equal :in, configs[:stage_config][:method]
32
+ assert_equal "/dev/null/infile", configs[:root_dir]
30
33
  end
31
34
 
32
35
  def test_manifest_config_in_expand
33
36
  options = build_options({
34
37
  in: "./infile",
35
- sideload: true
38
+ validate: true
36
39
  })
37
- config = good_config
40
+ config = good_config(ConfigParserTest)
38
41
  configs = ConfigParser.parse(options: options, config: config)
39
42
 
40
43
  assert_equal Hash, config.class
41
- assert_equal File.join(Dir.pwd, "infile"), configs[:manifest_config][:root_dir]
42
- assert_equal :in, configs[:stage_config][:method]
44
+ assert_equal File.join(Dir.pwd, "infile"), configs[:root_dir]
43
45
  end
44
46
 
45
47
  def test_manifest_config_current
46
48
  options = build_options({
47
49
  current: true,
48
- sideload: true
50
+ validate: true
49
51
  })
52
+ options.define_singleton_method(:source_commands){[:validate]}
50
53
  configs = nil
51
- config = good_config
54
+ config = good_config(ConfigParserTest)
52
55
  Pathname.stub(:pwd, "/dev/null/infile") do
53
56
  File.stub(:exist?, true) do
54
57
  configs = ConfigParser.parse(options: options, config: config)
@@ -56,13 +59,13 @@ module RokuBuilder
56
59
  end
57
60
 
58
61
  assert_equal Hash, config.class
59
- assert_equal "/dev/null/infile", configs[:manifest_config][:root_dir]
60
- assert_equal :current, configs[:stage_config][:method]
62
+ assert_equal "/dev/null/infile", configs[:root_dir]
61
63
  end
62
64
 
63
65
  def test_setup_project_config_bad_project
64
- config = good_config
65
- options = build_options({sideload: true, project: :project3, set_stage: true})
66
+ config = good_config(ConfigParserTest)
67
+ options = build_options({validate: true, project: :project3, stage: "production"})
68
+ options.define_singleton_method(:source_commands) {[:validate]}
66
69
  assert_raises ParseError do
67
70
  File.stub(:exist?, true) do
68
71
  ConfigParser.parse(options: options, config: config)
@@ -71,13 +74,13 @@ module RokuBuilder
71
74
  end
72
75
 
73
76
  def test_setup_project_config_current
74
- options = build_options({ sideload: true, current: true })
75
- config = good_config
77
+ options = build_options({ validate: true, current: true })
78
+ config = good_config(ConfigParserTest)
76
79
  configs = nil
77
80
  File.stub(:exist?, true) do
78
81
  configs = ConfigParser.parse(options: options, config: config)
79
82
  end
80
- project = configs[:project_config]
83
+ project = configs[:project]
81
84
  assert_equal Pathname.pwd.to_s, project[:directory]
82
85
  assert_equal :current, project[:stage_method]
83
86
  assert_nil project[:folders]
@@ -85,17 +88,19 @@ module RokuBuilder
85
88
  end
86
89
 
87
90
  def test_setup_project_config_good_project_dir
88
- config = good_config
89
- options = build_options({sideload: true, project: :project1, set_stage: true})
91
+ config = good_config(ConfigParserTest)
92
+ options = build_options({validate: true, project: :project1, stage: 'production'})
93
+ options.define_singleton_method(:source_commands) {[:validate]}
90
94
  File.stub(:exist?, true) do
91
95
  ConfigParser.parse(options: options, config: config)
92
96
  end
93
97
  end
94
98
 
95
99
  def test_setup_project_config_bad_project_dir
96
- config = good_config
100
+ config = good_config(ConfigParserTest)
97
101
  config[:projects][:project1][:directory] = "/dev/null"
98
- options = build_options({sideload: true, project: :project1, working: true})
102
+ options = build_options({validate: true, project: :project1, working: true})
103
+ options.define_singleton_method(:source_commands){[:validate]}
99
104
  assert_raises ParseError do
100
105
  File.stub(:exist?, true) do
101
106
  ConfigParser.parse(options: options, config: config)
@@ -104,10 +109,11 @@ module RokuBuilder
104
109
  end
105
110
 
106
111
  def test_setup_project_config_bad_child_project_dir
107
- config = good_config
112
+ config = good_config(ConfigParserTest)
108
113
  config[:projects][:project_dir] = "/tmp"
109
114
  config[:projects][:project1][:directory] = "bad"
110
- options = build_options({sideload: true, project: :project1, working: true})
115
+ options = build_options({validate: true, project: :project1, working: true})
116
+ options.define_singleton_method(:source_commands){[:validate]}
111
117
  assert_raises ParseError do
112
118
  File.stub(:exist?, true) do
113
119
  ConfigParser.parse(options: options, config: config)
@@ -116,42 +122,11 @@ module RokuBuilder
116
122
  end
117
123
 
118
124
  def test_setup_project_config_bad_parent_project_dir
119
- config = good_config
125
+ config = good_config(ConfigParserTest)
120
126
  config[:projects][:project_dir] = "/bad"
121
127
  config[:projects][:project1][:directory] = "good"
122
- options = build_options({sideload: true, project: :project1, set_stage: true})
123
- assert_raises ParseError do
124
- File.stub(:exist?, true) do
125
- ConfigParser.parse(options: options, config: config)
126
- end
127
- end
128
- end
129
-
130
- def test_setup_stage_config_bad_stage
131
- config = good_config
132
- options = build_options({sideload: true, project: :project1, stage: :bad, set_stage: true})
133
- assert_raises ParseError do
134
- File.stub(:exist?, true) do
135
- ConfigParser.parse(options: options, config: config)
136
- end
137
- end
138
- end
139
-
140
- def test_setup_stage_config_bad_method
141
- config = good_config
142
- config[:projects][:project1][:stage_method] = :bad
143
- options = build_options({sideload: true, project: :project1, set_stage: true})
144
- assert_raises ParseError do
145
- File.stub(:exist?, true) do
146
- ConfigParser.parse(options: options, config: config)
147
- end
148
- end
149
- end
150
-
151
- def test_setup_stage_config_missing_method
152
- config = good_config
153
- config[:projects][:project1][:stage_method] = nil
154
- options = build_options({sideload: true, project: :project1, set_stage: true})
128
+ options = build_options({validate: true, project: :project1, stage: 'production'})
129
+ options.define_singleton_method(:source_commands){[:validate]}
155
130
  assert_raises ParseError do
156
131
  File.stub(:exist?, true) do
157
132
  ConfigParser.parse(options: options, config: config)
@@ -160,38 +135,34 @@ module RokuBuilder
160
135
  end
161
136
 
162
137
  def test_setup_stage_config_script
163
- config = good_config
138
+ config = good_config(ConfigParserTest)
164
139
  config[:projects][:project1][:stage_method] = :script
165
140
  config[:projects][:project1][:stages][:production][:script] = {stage: "script", unstage: "script"}
166
- options = build_options({stage: "production", sideload: true, set_stage: true})
141
+ options = build_options({stage: "production", validate: true})
142
+ options.define_singleton_method(:source_commands){[:validate]}
167
143
  parsed = ConfigParser.parse(options: options, config: config)
168
- assert_equal parsed[:project_config][:stages][:production][:script], config[:projects][:project1][:stages][:production][:script]
169
- end
170
-
171
- def test_setup_stage_config_git_ref
172
- config = good_config
173
- options = build_options({stage: "production", ref: "git-ref", sideload: true})
174
- parsed = ConfigParser.parse(options: options, config: config)
175
- assert_equal options[:ref], parsed[:stage_config][:key]
144
+ assert_equal parsed[:project][:stages][:production][:script], config[:projects][:project1][:stages][:production][:script]
176
145
  end
177
146
 
178
147
  def test_manifest_config_project_select
179
- options = build_options({ sideload: true, working: true })
180
- config = good_config
148
+ options = build_options({ validate: true, working: true })
149
+ options.define_singleton_method(:source_commands){[:validate]}
150
+ config = good_config(ConfigParserTest)
181
151
  configs = nil
182
152
  Pathname.stub(:pwd, Pathname.new("/dev/nuller")) do
183
153
  configs = ConfigParser.parse(options: options, config: config)
184
154
  end
185
155
  assert_equal Hash, config.class
186
- assert_equal "/tmp", configs[:project_config][:directory]
156
+ assert_equal test_files_path(ConfigParserTest), configs[:project][:directory]
187
157
  end
188
158
 
189
159
  def test_manifest_config_project_directory
190
160
  options = build_options({
191
- sideload: true,
161
+ validate: true,
192
162
  working: true
193
163
  })
194
- config = good_config
164
+ options.define_singleton_method(:source_commands){[:validate]}
165
+ config = good_config(ConfigParserTest)
195
166
  config[:projects][:project_dir] = "/tmp"
196
167
  config[:projects][:project1][:directory] = "project1"
197
168
  config[:projects][:project2][:directory] = "project2"
@@ -203,12 +174,13 @@ module RokuBuilder
203
174
  end
204
175
 
205
176
  assert_equal Hash, config.class
206
- assert_equal "/tmp/project1", configs[:project_config][:directory]
177
+ assert_equal "/tmp/project1", configs[:project][:directory]
207
178
  end
208
179
 
209
180
  def test_manifest_config_project_directory_select
210
- options = build_options({sideload: true, working: true})
211
- config = good_config
181
+ options = build_options({validate: true, working: true})
182
+ options.define_singleton_method(:source_commands){[:validate]}
183
+ config = good_config(ConfigParserTest)
212
184
  config[:projects][:project_dir] = "/tmp"
213
185
  config[:projects][:project1][:directory] = "project1"
214
186
  config[:projects][:project2][:directory] = "project2"
@@ -221,13 +193,14 @@ module RokuBuilder
221
193
  end
222
194
 
223
195
  assert_equal Hash, config.class
224
- assert_equal "/tmp/project2", configs[:project_config][:directory]
196
+ assert_equal "/tmp/project2", configs[:project][:directory]
225
197
  end
226
198
 
227
199
  def test_key_config_key_directory
228
200
  tmp_file = Tempfile.new("pkg")
229
- options = build_options({key: true, project: :project2, set_stage: true})
230
- config = good_config
201
+ options = build_options({validate: true, project: :project2, stage: 'production'})
202
+ options.define_singleton_method(:source_commands){[:validate]}
203
+ config = good_config(ConfigParserTest)
231
204
  config[:keys][:key_dir] = File.dirname(tmp_file.path)
232
205
  config[:keys][:a][:keyed_pkg] = File.basename(tmp_file.path)
233
206
 
@@ -240,8 +213,9 @@ module RokuBuilder
240
213
 
241
214
  def test_key_config_key_directory_bad
242
215
  tmp_file = Tempfile.new("pkg")
243
- options = build_options({key: true, project: :project2, set_stage: true})
244
- config = good_config
216
+ options = build_options({validate: true, project: :project2, stage: 'production'})
217
+ options.define_singleton_method(:source_commands){[:validate]}
218
+ config = good_config(ConfigParserTest)
245
219
  config[:keys][:key_dir] = "/bad"
246
220
  config[:keys][:a][:keyed_pkg] = File.basename(tmp_file.path)
247
221
 
@@ -252,8 +226,9 @@ module RokuBuilder
252
226
 
253
227
  def test_key_config_key_path_bad
254
228
  tmp_file = Tempfile.new("pkg")
255
- options = build_options({key: true, project: :project2, set_stage: true})
256
- config = good_config
229
+ options = build_options({validate: true, project: :project2, stage: 'production'})
230
+ options.define_singleton_method(:source_commands){[:validate]}
231
+ config = good_config(ConfigParserTest)
257
232
  config[:keys][:key_dir] = File.dirname(tmp_file.path)
258
233
  config[:keys][:a][:keyed_pkg] = File.basename(tmp_file.path)+".bad"
259
234
 
@@ -261,72 +236,19 @@ module RokuBuilder
261
236
  ConfigParser.parse(options: options, config: config)
262
237
  end
263
238
  end
264
-
265
239
  def test_key_config_bad_key
266
- options = build_options({key: true, project: :project1, set_stage: true})
267
- config = good_config
240
+ options = build_options({validate: true, project: :project1, stage: 'production', })
241
+ options.define_singleton_method(:source_commands){[:validate]}
242
+ config = good_config(ConfigParserTest)
268
243
  config[:projects][:project1][:stages][:production][:key] = "bad"
269
244
 
270
245
  assert_raises ParseError do
271
246
  ConfigParser.parse(options: options, config: config)
272
247
  end
273
248
  end
274
-
275
- def test_setup_sideload_config
276
- config = good_config
277
- options = build_options({sideload: true, working: true})
278
- parsed = ConfigParser.parse(options: options, config: config)
279
-
280
- refute_nil parsed[:sideload_config]
281
- refute_nil parsed[:sideload_config][:content]
282
- refute_nil parsed[:build_config]
283
- refute_nil parsed[:build_config][:content]
284
- refute_nil parsed[:init_params][:loader]
285
- refute_nil parsed[:init_params][:loader][:root_dir]
286
-
287
- assert_nil parsed[:sideload_config][:content][:excludes]
288
- assert_nil parsed[:sideload_config][:update_manifest]
289
- assert_nil parsed[:sideload_config][:infile]
290
- end
291
- def test_setup_sideload_config_exclude
292
- config = good_config
293
- config[:projects][:project1][:excludes] = []
294
- options = build_options({sideload: true, working: true})
295
- parsed = ConfigParser.parse(options: options, config: config)
296
- assert_nil parsed[:sideload_config][:content][:excludes]
297
-
298
- options = build_options({build: true, working: true})
299
- parsed = ConfigParser.parse(options: options, config: config)
300
- refute_nil parsed[:sideload_config][:content][:excludes]
301
-
302
- options = build_options({package: true, set_stage: true})
303
- parsed = ConfigParser.parse(options: options, config: config)
304
- refute_nil parsed[:sideload_config][:content][:excludes]
305
-
306
- options = build_options({sideload: true, working: true, exclude: true})
307
- parsed = ConfigParser.parse(options: options, config: config)
308
- refute_nil parsed[:sideload_config][:content][:excludes]
309
- end
310
-
311
- def test_deeplink_app_config
312
- config = good_config
313
- options = build_options({deeplink: "a:b", app_id: "xxxxxx"})
314
- parsed = ConfigParser.parse(options: options, config: config)
315
-
316
- assert_equal parsed[:deeplink_config][:options], options[:deeplink]
317
- assert_equal parsed[:deeplink_config][:app_id], options[:app_id]
318
- end
319
-
320
- def test_monitor_config
321
- config = good_config
322
- options = build_options({monitor: "main", regexp: "^A$"})
323
- parsed = ConfigParser.parse(options: options, config: config)
324
- refute_nil parsed[:monitor_config][:regexp]
325
- assert parsed[:monitor_config][:regexp].match("A")
326
- end
327
249
  def test_outfile_config_default
328
- config = good_config
329
- options = build_options({build: true, working: true, out: nil})
250
+ config = good_config(ConfigParserTest)
251
+ options = build_options({validate: true, working: true, out: nil})
330
252
  parsed = ConfigParser.parse(options: options, config: config)
331
253
 
332
254
  refute_nil parsed[:out]
@@ -335,9 +257,9 @@ module RokuBuilder
335
257
  assert_equal "/tmp", parsed[:out][:folder]
336
258
  end
337
259
  def test_outfile_config_folder
338
- config = good_config
339
-
340
- options = build_options({build: true, working: true, out: "/home/user"})
260
+ config = good_config(ConfigParserTest)
261
+ options = build_options({validate: true, working: true, out: "/home/user"})
262
+ options.define_singleton_method(:source_commands){[:validate]}
341
263
  parsed = ConfigParser.parse(options: options, config: config)
342
264
  refute_nil parsed[:out]
343
265
  refute_nil parsed[:out][:folder]
@@ -345,9 +267,9 @@ module RokuBuilder
345
267
  assert_equal "/home/user", parsed[:out][:folder]
346
268
  end
347
269
  def test_outfile_config_pkg
348
- config = good_config
270
+ config = good_config(ConfigParserTest)
349
271
 
350
- options = build_options({build: true, working: true, out: "/home/user/file.pkg"})
272
+ options = build_options({validate: true, working: true, out: "/home/user/file.pkg"})
351
273
  parsed = ConfigParser.parse(options: options, config: config)
352
274
  refute_nil parsed[:out]
353
275
  refute_nil parsed[:out][:folder]
@@ -356,9 +278,9 @@ module RokuBuilder
356
278
  assert_equal "file.pkg", parsed[:out][:file]
357
279
  end
358
280
  def test_outfile_config_zip
359
- config = good_config
281
+ config = good_config(ConfigParserTest)
360
282
 
361
- options = build_options({build: true, working: true, out: "/home/user/file.zip"})
283
+ options = build_options({validate: true, working: true, out: "/home/user/file.zip"})
362
284
  parsed = ConfigParser.parse(options: options, config: config)
363
285
  refute_nil parsed[:out]
364
286
  refute_nil parsed[:out][:folder]
@@ -367,9 +289,9 @@ module RokuBuilder
367
289
  assert_equal "file.zip", parsed[:out][:file]
368
290
  end
369
291
  def test_outfile_config_jpg
370
- config = good_config
292
+ config = good_config(ConfigParserTest)
371
293
 
372
- options = build_options({build: true, working: true, out: "/home/user/file.jpg"})
294
+ options = build_options({validate: true, working: true, out: "/home/user/file.jpg"})
373
295
  parsed = ConfigParser.parse(options: options, config: config)
374
296
  refute_nil parsed[:out]
375
297
  refute_nil parsed[:out][:folder]
@@ -378,9 +300,9 @@ module RokuBuilder
378
300
  assert_equal "file.jpg", parsed[:out][:file]
379
301
  end
380
302
  def test_outfile_config_default_jpg
381
- config = good_config
303
+ config = good_config(ConfigParserTest)
382
304
 
383
- options = build_options({build: true, working: true, out: "file.jpg"})
305
+ options = build_options({validate: true, working: true, out: "file.jpg"})
384
306
  parsed = ConfigParser.parse(options: options, config: config)
385
307
  refute_nil parsed[:out]
386
308
  refute_nil parsed[:out][:folder]