sproutit-sproutcore 1.0.0.20090407205609

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 (382) hide show
  1. data/Buildfile +115 -0
  2. data/History.txt +7 -0
  3. data/README.txt +102 -0
  4. data/Rakefile +54 -0
  5. data/Todo.txt +1 -0
  6. data/bin/sc-build +13 -0
  7. data/bin/sc-build-number +13 -0
  8. data/bin/sc-gen +13 -0
  9. data/bin/sc-init +13 -0
  10. data/bin/sc-manifest +13 -0
  11. data/bin/sc-server +13 -0
  12. data/bin/sproutcore +14 -0
  13. data/buildtasks/build.rake +73 -0
  14. data/buildtasks/entry.rake +59 -0
  15. data/buildtasks/manifest.rake +469 -0
  16. data/buildtasks/render.rake +21 -0
  17. data/buildtasks/target.rake +42 -0
  18. data/gen/Buildfile +16 -0
  19. data/gen/app/Buildfile +36 -0
  20. data/gen/app/README +1 -0
  21. data/gen/app/USAGE +13 -0
  22. data/gen/app/templates/apps/{target_name}/core.js +27 -0
  23. data/gen/app/templates/apps/{target_name}/english.lproj/loading.rhtml +9 -0
  24. data/gen/app/templates/apps/{target_name}/english.lproj/main_page.js +22 -0
  25. data/gen/app/templates/apps/{target_name}/english.lproj/strings.js +15 -0
  26. data/gen/app/templates/apps/{target_name}/main.js +30 -0
  27. data/gen/controller/Buildfile +18 -0
  28. data/gen/controller/README +1 -0
  29. data/gen/controller/USAGE +13 -0
  30. data/gen/controller/templates/controllers/{filename}.js +18 -0
  31. data/gen/controller/templates/tests/controllers/{filename}.js +15 -0
  32. data/gen/framework/Buildfile +36 -0
  33. data/gen/framework/README +1 -0
  34. data/gen/framework/USAGE +13 -0
  35. data/gen/framework/templates/frameworks/{target_name}/core.js +21 -0
  36. data/gen/framework/templates/frameworks/{target_name}/english.lproj/strings.js +15 -0
  37. data/gen/language/Buildfile +26 -0
  38. data/gen/language/README +1 -0
  39. data/gen/language/USAGE +13 -0
  40. data/gen/language/templates/{filename}/strings.js +14 -0
  41. data/gen/model/Buildfile +16 -0
  42. data/gen/model/README +1 -0
  43. data/gen/model/USAGE +15 -0
  44. data/gen/model/templates/fixtures/{filename}.js +35 -0
  45. data/gen/model/templates/models/{filename}.js +19 -0
  46. data/gen/model/templates/tests/models/{filename}.js +15 -0
  47. data/gen/project/Buildfile +45 -0
  48. data/gen/project/INIT +3 -0
  49. data/gen/project/README +1 -0
  50. data/gen/project/USAGE +2 -0
  51. data/gen/project/templates/{filename}/Buildfile +7 -0
  52. data/gen/project/templates/{filename}/README +7 -0
  53. data/gen/test/Buildfile +25 -0
  54. data/gen/test/README +1 -0
  55. data/gen/test/USAGE +12 -0
  56. data/gen/test/templates/tests/{filename}.js +15 -0
  57. data/gen/theme/Buildfile +36 -0
  58. data/gen/theme/README +1 -0
  59. data/gen/theme/USAGE +13 -0
  60. data/gen/theme/templates/themes/{target_name}/english.lproj/strings.js +15 -0
  61. data/gen/view/Buildfile +18 -0
  62. data/gen/view/README +1 -0
  63. data/gen/view/USAGE +13 -0
  64. data/gen/view/templates/tests/views/{filename}.js +15 -0
  65. data/gen/view/templates/views/{filename}.js +18 -0
  66. data/lib/sproutcore.rb +130 -0
  67. data/lib/sproutcore/builders/base.rb +79 -0
  68. data/lib/sproutcore/builders/combine.rb +37 -0
  69. data/lib/sproutcore/builders/html.rb +177 -0
  70. data/lib/sproutcore/builders/javascript.rb +55 -0
  71. data/lib/sproutcore/builders/minify.rb +67 -0
  72. data/lib/sproutcore/builders/sass.rb +55 -0
  73. data/lib/sproutcore/builders/strings.rb +44 -0
  74. data/lib/sproutcore/builders/stylesheet.rb +40 -0
  75. data/lib/sproutcore/builders/test.rb +58 -0
  76. data/lib/sproutcore/builders/test_index.rb +26 -0
  77. data/lib/sproutcore/buildfile.rb +483 -0
  78. data/lib/sproutcore/buildfile/build_task.rb +33 -0
  79. data/lib/sproutcore/buildfile/buildfile_dsl.rb +162 -0
  80. data/lib/sproutcore/buildfile/cloneable.rb +34 -0
  81. data/lib/sproutcore/buildfile/early_time.rb +29 -0
  82. data/lib/sproutcore/buildfile/invocation_chain.rb +64 -0
  83. data/lib/sproutcore/buildfile/namespace.rb +33 -0
  84. data/lib/sproutcore/buildfile/string_ext.rb +198 -0
  85. data/lib/sproutcore/buildfile/task.rb +304 -0
  86. data/lib/sproutcore/buildfile/task_arguments.rb +86 -0
  87. data/lib/sproutcore/buildfile/task_manager.rb +193 -0
  88. data/lib/sproutcore/deprecated/view_helper.rb +662 -0
  89. data/lib/sproutcore/helpers/capture_helper.rb +30 -0
  90. data/lib/sproutcore/helpers/cssmin.rb +202 -0
  91. data/lib/sproutcore/helpers/dom_id_helper.rb +21 -0
  92. data/lib/sproutcore/helpers/entry_sorter.rb +105 -0
  93. data/lib/sproutcore/helpers/packed_optimizer.rb +102 -0
  94. data/lib/sproutcore/helpers/static_helper.rb +268 -0
  95. data/lib/sproutcore/helpers/tag_helper.rb +117 -0
  96. data/lib/sproutcore/helpers/text_helper.rb +303 -0
  97. data/lib/sproutcore/models/generator.rb +493 -0
  98. data/lib/sproutcore/models/hash_struct.rb +109 -0
  99. data/lib/sproutcore/models/manifest.rb +342 -0
  100. data/lib/sproutcore/models/manifest_entry.rb +232 -0
  101. data/lib/sproutcore/models/project.rb +270 -0
  102. data/lib/sproutcore/models/target.rb +403 -0
  103. data/lib/sproutcore/rack/builder.rb +269 -0
  104. data/lib/sproutcore/rack/dev.rb +51 -0
  105. data/lib/sproutcore/rack/docs.rb +24 -0
  106. data/lib/sproutcore/rack/proxy.rb +92 -0
  107. data/lib/sproutcore/rack/service.rb +141 -0
  108. data/lib/sproutcore/rack/test_runner.rb +24 -0
  109. data/lib/sproutcore/render_engines/erubis.rb +55 -0
  110. data/lib/sproutcore/render_engines/haml.rb +39 -0
  111. data/lib/sproutcore/tools.rb +311 -0
  112. data/lib/sproutcore/tools/build.rb +80 -0
  113. data/lib/sproutcore/tools/build_number.rb +23 -0
  114. data/lib/sproutcore/tools/gen.rb +99 -0
  115. data/lib/sproutcore/tools/init.rb +40 -0
  116. data/lib/sproutcore/tools/manifest.rb +84 -0
  117. data/lib/sproutcore/tools/server.rb +45 -0
  118. data/spec/buildtasks/build/copy_spec.rb +60 -0
  119. data/spec/buildtasks/build/spec_helper.rb +36 -0
  120. data/spec/buildtasks/manifest/catalog_spec.rb +48 -0
  121. data/spec/buildtasks/manifest/hide_buildfiles_spec.rb +125 -0
  122. data/spec/buildtasks/manifest/localize_spec.rb +97 -0
  123. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +246 -0
  124. data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +87 -0
  125. data/spec/buildtasks/manifest/prepare_build_tasks/html_spec.rb +175 -0
  126. data/spec/buildtasks/manifest/prepare_build_tasks/javascript_spec.rb +65 -0
  127. data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +70 -0
  128. data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +152 -0
  129. data/spec/buildtasks/manifest/prepare_build_tasks/sass_spec.rb +98 -0
  130. data/spec/buildtasks/manifest/prepare_build_tasks/strings_spec.rb +64 -0
  131. data/spec/buildtasks/manifest/prepare_build_tasks/tests_spec.rb +163 -0
  132. data/spec/buildtasks/manifest/prepare_spec.rb +43 -0
  133. data/spec/buildtasks/manifest/spec_helper.rb +35 -0
  134. data/spec/buildtasks/target_spec.rb +214 -0
  135. data/spec/fixtures/builder_tests/Buildfile +15 -0
  136. data/spec/fixtures/builder_tests/apps/combine_test/a.js +1 -0
  137. data/spec/fixtures/builder_tests/apps/combine_test/b.js +1 -0
  138. data/spec/fixtures/builder_tests/apps/combine_test/c.js +1 -0
  139. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/a.css +1 -0
  140. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/b.css +1 -0
  141. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/c.css +1 -0
  142. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/bar1_sample.rhtml +2 -0
  143. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/erb_sample.html.erb +1 -0
  144. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/icons/image.png +0 -0
  145. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/image.jpg +0 -0
  146. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/rhtml_sample.rhtml +1 -0
  147. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/strings.js +4 -0
  148. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/style.css +0 -0
  149. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/french-icons/fr.png +0 -0
  150. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/strings.js +4 -0
  151. data/spec/fixtures/builder_tests/apps/html_test/lib/layout_template.rhtml +1 -0
  152. data/spec/fixtures/builder_tests/apps/html_test/scripts.js +0 -0
  153. data/spec/fixtures/builder_tests/apps/javascript_test/sc_static.js +15 -0
  154. data/spec/fixtures/builder_tests/apps/javascript_test/sc_super.js +4 -0
  155. data/spec/fixtures/builder_tests/apps/javascript_test/strings.js +7 -0
  156. data/spec/fixtures/builder_tests/apps/sass_test/sample.sass +3 -0
  157. data/spec/fixtures/builder_tests/apps/strings_test/lproj/strings.js +8 -0
  158. data/spec/fixtures/builder_tests/apps/stylesheet_test/build_directives.css +9 -0
  159. data/spec/fixtures/builder_tests/apps/stylesheet_test/sc_static.css +12 -0
  160. data/spec/fixtures/builder_tests/apps/test_test/lib/alt_layout.rhtml +1 -0
  161. data/spec/fixtures/builder_tests/apps/test_test/lib/test_layout.rhtml +3 -0
  162. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test.js +1 -0
  163. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test2.js +1 -0
  164. data/spec/fixtures/builder_tests/apps/test_test/tests/rhtml_test.rhtml +4 -0
  165. data/spec/fixtures/builder_tests/frameworks/debug/core.js +0 -0
  166. data/spec/fixtures/builder_tests/frameworks/debug/english.lproj/dummy.css +0 -0
  167. data/spec/fixtures/builder_tests/frameworks/qunit/core.js +0 -0
  168. data/spec/fixtures/builder_tests/frameworks/qunit/english.lproj/dummy.css +0 -0
  169. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/req_style_1.css +0 -0
  170. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/strings.js +4 -0
  171. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/test.rhtml +1 -0
  172. data/spec/fixtures/builder_tests/frameworks/req_target_1/req_js_1.js +0 -0
  173. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/req_style_2.css +0 -0
  174. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/test.rhtml +1 -0
  175. data/spec/fixtures/builder_tests/frameworks/req_target_2/javascript.js +1 -0
  176. data/spec/fixtures/builder_tests/frameworks/req_target_2/lib/alt_layout.rhtml +0 -0
  177. data/spec/fixtures/builder_tests/frameworks/req_target_2/req_js_2.js +0 -0
  178. data/spec/fixtures/builder_tests/themes/sample_theme/Buildfile +1 -0
  179. data/spec/fixtures/buildfiles/basic/Buildfile +16 -0
  180. data/spec/fixtures/buildfiles/basic/task_module.rake +6 -0
  181. data/spec/fixtures/buildfiles/installed/Buildfile +7 -0
  182. data/spec/fixtures/buildfiles/installed/Buildfile2 +5 -0
  183. data/spec/fixtures/buildfiles/project_test/Buildfile +4 -0
  184. data/spec/fixtures/buildfiles/project_test/not_project/Buildfile +2 -0
  185. data/spec/fixtures/buildfiles/project_test/not_project/child/PLACEHOLDER +0 -0
  186. data/spec/fixtures/entry_for_project/Buildfile +1 -0
  187. data/spec/fixtures/entry_for_project/apps/test_app/entry.txt +0 -0
  188. data/spec/fixtures/entry_for_project/apps/test_app/frameworks/nested/PLACEHOLDER +0 -0
  189. data/spec/fixtures/entry_for_project/frameworks/shared/PLACEHOLDER +0 -0
  190. data/spec/fixtures/find_targets/custom/Buildfile +8 -0
  191. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar1/PLACEHOLDER +0 -0
  192. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar2/PLACEHOLDER +0 -0
  193. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo1/PLACEHOLDER +0 -0
  194. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo2/PLACEHOLDER +0 -0
  195. data/spec/fixtures/find_targets/custom/foos/custom_foos/Buildfile +5 -0
  196. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo1/PLACEHOLDER +0 -0
  197. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo2/PLACEHOLDER +0 -0
  198. data/spec/fixtures/find_targets/custom/foos/custom_foos/foos/not_foo1/PLACEHOLDER +0 -0
  199. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar1/PLACEHOLDER +0 -0
  200. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar2/PLACEHOLDER +0 -0
  201. data/spec/fixtures/find_targets/nested/Buildfile +8 -0
  202. data/spec/fixtures/find_targets/nested/apps/app1/Buildfile +1 -0
  203. data/spec/fixtures/find_targets/nested/apps/app1/apps/nested_app/PLACEHOLDER +0 -0
  204. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework1/PLACEHOLDER +0 -0
  205. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework2/PLACEHOLDER +0 -0
  206. data/spec/fixtures/find_targets/standard/clients/client1/PLACEHOLDER +0 -0
  207. data/spec/fixtures/find_targets/standard/frameworks/framework1/frameworks/framework1/PLACEHOLDER +0 -0
  208. data/spec/fixtures/find_targets/standard/frameworks/framework2/PLACEHOLDER +0 -0
  209. data/spec/fixtures/find_targets/standard/themes/theme1/PLACEHOLDER +0 -0
  210. data/spec/fixtures/find_targets/standard/themes/theme2/PLACEHOLDER +0 -0
  211. data/spec/fixtures/languages/apps/caps_long_names/English.lproj/PLACEHOLDER +0 -0
  212. data/spec/fixtures/languages/apps/caps_long_names/FreNCH.lproj/PLACEHOLDER +0 -0
  213. data/spec/fixtures/languages/apps/caps_long_names/UnknOWN.lproj/PLACEHOLDER +0 -0
  214. data/spec/fixtures/languages/apps/long_names/english.lproj/PLACEHOLDER +0 -0
  215. data/spec/fixtures/languages/apps/long_names/french.lproj/PLACEHOLDER +0 -0
  216. data/spec/fixtures/languages/apps/long_names/german.lproj/PLACEHOLDER +0 -0
  217. data/spec/fixtures/languages/apps/long_names/italian.lproj/PLACEHOLDER +0 -0
  218. data/spec/fixtures/languages/apps/long_names/japanese.lproj/PLACEHOLDER +0 -0
  219. data/spec/fixtures/languages/apps/long_names/spanish.lproj/PLACEHOLDER +0 -0
  220. data/spec/fixtures/languages/apps/long_names/unknown.lproj/PLACEHOLDER +0 -0
  221. data/spec/fixtures/languages/apps/no_names/PLACEHOLDER +0 -0
  222. data/spec/fixtures/languages/apps/short_names/de.lproj/PLACEHOLDER +0 -0
  223. data/spec/fixtures/languages/apps/short_names/en-CA.lproj/PLACEHOLDER +0 -0
  224. data/spec/fixtures/languages/apps/short_names/en-GB.lproj/PLACEHOLDER +0 -0
  225. data/spec/fixtures/languages/apps/short_names/en-US.lproj/PLACEHOLDER +0 -0
  226. data/spec/fixtures/languages/apps/short_names/en.lproj/PLACEHOLDER +0 -0
  227. data/spec/fixtures/languages/apps/short_names/es.lproj/PLACEHOLDER +0 -0
  228. data/spec/fixtures/languages/apps/short_names/foo.lproj/PLACEHOLDER +0 -0
  229. data/spec/fixtures/languages/apps/short_names/fr.lproj/PLACEHOLDER +0 -0
  230. data/spec/fixtures/languages/apps/short_names/it.lproj/PLACEHOLDER +0 -0
  231. data/spec/fixtures/languages/apps/short_names/ja.lproj/PLACEHOLDER +0 -0
  232. data/spec/fixtures/ordered_entries/apps/no_requires/1.js +1 -0
  233. data/spec/fixtures/ordered_entries/apps/no_requires/B.js +1 -0
  234. data/spec/fixtures/ordered_entries/apps/no_requires/a.js +1 -0
  235. data/spec/fixtures/ordered_entries/apps/no_requires/a/a.js +1 -0
  236. data/spec/fixtures/ordered_entries/apps/no_requires/a/b.js +1 -0
  237. data/spec/fixtures/ordered_entries/apps/no_requires/b/a.js +1 -0
  238. data/spec/fixtures/ordered_entries/apps/no_requires/c.js +1 -0
  239. data/spec/fixtures/ordered_entries/apps/no_requires/core.js +1 -0
  240. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/B.css +0 -0
  241. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a.css +0 -0
  242. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/a.css +0 -0
  243. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/b.css +0 -0
  244. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/b/a.css +0 -0
  245. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/c.css +0 -0
  246. data/spec/fixtures/ordered_entries/apps/no_requires/lproj/strings.js +1 -0
  247. data/spec/fixtures/ordered_entries/apps/no_requires/utils.js +1 -0
  248. data/spec/fixtures/ordered_entries/apps/with_requires/a.js +2 -0
  249. data/spec/fixtures/ordered_entries/apps/with_requires/b.js +3 -0
  250. data/spec/fixtures/ordered_entries/apps/with_requires/c.js +2 -0
  251. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/a.css +2 -0
  252. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/b.css +2 -0
  253. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/c.css +2 -0
  254. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/d.js +1 -0
  255. data/spec/fixtures/real_world/Buildfile +12 -0
  256. data/spec/fixtures/real_world/apps/account/README +1 -0
  257. data/spec/fixtures/real_world/apps/calendar/README +1 -0
  258. data/spec/fixtures/real_world/apps/contacts/README_BEFORE_EDITING +1 -0
  259. data/spec/fixtures/real_world/apps/files/README +1 -0
  260. data/spec/fixtures/real_world/apps/mail/README +1 -0
  261. data/spec/fixtures/real_world/apps/mobile_photos/README +1 -0
  262. data/spec/fixtures/real_world/apps/photos/README +1 -0
  263. data/spec/fixtures/real_world/apps/uploader/README +1 -0
  264. data/spec/fixtures/real_world/frameworks/core_files/PLACEHOLDER +0 -0
  265. data/spec/fixtures/real_world/frameworks/core_photos/PLACEHOLDER +0 -0
  266. data/spec/fixtures/real_world/frameworks/shared/PLACEHOLDER +0 -0
  267. data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +26 -0
  268. data/spec/fixtures/real_world/frameworks/sproutcore/README +1 -0
  269. data/spec/fixtures/real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER +0 -0
  270. data/spec/fixtures/real_world/frameworks/sproutcore/apps/test_runner/PLACEHOLDER +0 -0
  271. data/spec/fixtures/real_world/frameworks/sproutcore/core.js +0 -0
  272. data/spec/fixtures/real_world/frameworks/sproutcore/debug/debug-resource.html +0 -0
  273. data/spec/fixtures/real_world/frameworks/sproutcore/debug/sample_debug.js +0 -0
  274. data/spec/fixtures/real_world/frameworks/sproutcore/demo2.js +0 -0
  275. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/debug/sample_debug-loc.js +0 -0
  276. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.css +4 -0
  277. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.html +1 -0
  278. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo2.sass +0 -0
  279. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.haml +0 -0
  280. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.html.erb +1 -0
  281. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.rhtml +0 -0
  282. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/fixtures/sample_fixtures-loc.js +0 -0
  283. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/has_require.css +4 -0
  284. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_require.css +1 -0
  285. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_sc_resource.rhtml +1 -0
  286. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/protocols/sample-loc.js +0 -0
  287. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.css +6 -0
  288. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.rhtml +3 -0
  289. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/strings.js +1 -0
  290. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/tests/sample-loc.js +0 -0
  291. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample-json-fixture.json +1 -0
  292. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample_fixtures.js +0 -0
  293. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/application/PLACEHOLDER +0 -0
  294. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/costello/core.js +0 -0
  295. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/data_store/PLACEHOLDER +0 -0
  296. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/debug/PLACEHOLDER +0 -0
  297. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/desktop/PLACEHOLDER +0 -0
  298. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/empty_theme/PLACEHOLDER +0 -0
  299. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/foundation/PLACEHOLDER +0 -0
  300. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/mobile/PLACEHOLDER +0 -0
  301. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/qunit/PLACEHOLDER +0 -0
  302. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/uploader/PLACEHOLDER +0 -0
  303. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/french-resource.js +0 -0
  304. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/strings.js +1 -0
  305. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/german-resource.js +0 -0
  306. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/strings.js +0 -0
  307. data/spec/fixtures/real_world/frameworks/sproutcore/has_require.js +4 -0
  308. data/spec/fixtures/real_world/frameworks/sproutcore/lib/index.html +1 -0
  309. data/spec/fixtures/real_world/frameworks/sproutcore/no_require.js +1 -0
  310. data/spec/fixtures/real_world/frameworks/sproutcore/protocols/sample.js +0 -0
  311. data/spec/fixtures/real_world/frameworks/sproutcore/sc_resource.js +6 -0
  312. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample1.js +0 -0
  313. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample2.js +0 -0
  314. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.js +0 -0
  315. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.rhtml +1 -0
  316. data/spec/fixtures/real_world/frameworks/sproutcore/themes/standard_theme/README +0 -0
  317. data/spec/fixtures/real_world/frameworks/sproutcore/views/view.js +1 -0
  318. data/spec/fixtures/real_world/generators/sample_custom/Buildfile +0 -0
  319. data/spec/fixtures/real_world/generators/sample_custom/templates/{filename}.js +1 -0
  320. data/spec/fixtures/recursive_project/Buildfile +8 -0
  321. data/spec/fixtures/recursive_project/frameworks/sproutcore/frameworks/costello/PLACEHOLDER +0 -0
  322. data/spec/lib/builders/combine_spec.rb +67 -0
  323. data/spec/lib/builders/html_spec.rb +577 -0
  324. data/spec/lib/builders/javascript_spec.rb +81 -0
  325. data/spec/lib/builders/sass_spec.rb +43 -0
  326. data/spec/lib/builders/spec_helper.rb +30 -0
  327. data/spec/lib/builders/strings_spec.rb +52 -0
  328. data/spec/lib/builders/stylesheet_spec.rb +63 -0
  329. data/spec/lib/builders/test_index_spec.rb +44 -0
  330. data/spec/lib/builders/test_spec.rb +135 -0
  331. data/spec/lib/buildfile/config_for_spec.rb +81 -0
  332. data/spec/lib/buildfile/define_spec.rb +59 -0
  333. data/spec/lib/buildfile/dup_spec.rb +65 -0
  334. data/spec/lib/buildfile/invoke_spec.rb +130 -0
  335. data/spec/lib/buildfile/load_spec.rb +49 -0
  336. data/spec/lib/buildfile/task/dup_spec.rb +55 -0
  337. data/spec/lib/buildfile/task_defined_spec.rb +17 -0
  338. data/spec/lib/buildfile_commands/build_task_spec.rb +19 -0
  339. data/spec/lib/buildfile_commands/config_spec.rb +97 -0
  340. data/spec/lib/buildfile_commands/import_spec.rb +17 -0
  341. data/spec/lib/buildfile_commands/namespace_spec.rb +18 -0
  342. data/spec/lib/buildfile_commands/proxies_spec.rb +38 -0
  343. data/spec/lib/buildfile_commands/replace_task_spec.rb +29 -0
  344. data/spec/lib/buildfile_commands/task_spec.rb +36 -0
  345. data/spec/lib/helpers/packing_optimizer/optimize_spec.rb +26 -0
  346. data/spec/lib/models/hash_struct/deep_clone_spec.rb +27 -0
  347. data/spec/lib/models/hash_struct/has_options_spec.rb +32 -0
  348. data/spec/lib/models/hash_struct/hash_spec.rb +64 -0
  349. data/spec/lib/models/hash_struct/merge_spec.rb +26 -0
  350. data/spec/lib/models/hash_struct/method_missing.rb +41 -0
  351. data/spec/lib/models/manifest/add_entry_spec.rb +36 -0
  352. data/spec/lib/models/manifest/add_transform_spec.rb +90 -0
  353. data/spec/lib/models/manifest/build_spec.rb +78 -0
  354. data/spec/lib/models/manifest/entry_for_spec.rb +94 -0
  355. data/spec/lib/models/manifest/find_entry.rb +84 -0
  356. data/spec/lib/models/manifest/prepare_spec.rb +62 -0
  357. data/spec/lib/models/manifest_entry/cacheable_url_spec.rb +31 -0
  358. data/spec/lib/models/manifest_entry/prepare_spec.rb +54 -0
  359. data/spec/lib/models/project/add_target_spec.rb +44 -0
  360. data/spec/lib/models/project/buildfile_spec.rb +35 -0
  361. data/spec/lib/models/project/find_targets_for_spec.rb +77 -0
  362. data/spec/lib/models/project/load_nearest_project_spec.rb +23 -0
  363. data/spec/lib/models/project/target_for_spec.rb +33 -0
  364. data/spec/lib/models/project/targets_spec.rb +62 -0
  365. data/spec/lib/models/target/compute_build_number_spec.rb +125 -0
  366. data/spec/lib/models/target/config_spec.rb +30 -0
  367. data/spec/lib/models/target/expand_required_targets_spec.rb +48 -0
  368. data/spec/lib/models/target/installed_languages_spec.rb +47 -0
  369. data/spec/lib/models/target/lproj_for_spec.rb +38 -0
  370. data/spec/lib/models/target/manifest_for_spec.rb +42 -0
  371. data/spec/lib/models/target/parent_target_spec.rb +21 -0
  372. data/spec/lib/models/target/prepare_spec.rb +53 -0
  373. data/spec/lib/models/target/required_targets_spec.rb +119 -0
  374. data/spec/lib/models/target/target_for_spec.rb +56 -0
  375. data/spec/lib/tools/build_number_spec.rb +28 -0
  376. data/spec/lib/tools/gen_spec.rb +207 -0
  377. data/spec/lib/tools/tools_spec.rb +78 -0
  378. data/spec/spec_helper.rb +138 -0
  379. data/sproutcore.gemspec +47 -0
  380. data/vendor/github_gem_lint.rb +22 -0
  381. data/vendor/yui-compressor/yuicompressor-2.4.2.jar +0 -0
  382. metadata +1084 -0
@@ -0,0 +1,48 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe "manifest:catalog" do
4
+
5
+ include SC::SpecHelpers
6
+ include SC::ManifestSpecHelpers
7
+
8
+ before do
9
+ std_before
10
+ end
11
+
12
+ def run_task
13
+ @manifest.prepare! # this should be run first...
14
+ super('manifest:catalog')
15
+ end
16
+
17
+ it "create an entry for each item in the target regardless of language with the relative path as filename" do
18
+ run_task
19
+
20
+ # collect filenames from target dir...
21
+ filenames = Dir.glob(File.join(@target.source_root, '**','*'))
22
+ filenames.reject! { |f| File.directory?(f) }
23
+ filenames.map! { |f| f.sub(@target.source_root + '/', '') }
24
+ filenames.reject! { |f| f =~ /^(apps|frameworks|themes)/ }
25
+
26
+ entries = @manifest.entries.dup # get entries to test...
27
+ filenames.each do |filename|
28
+ entry = entries.find { |e| e.filename == filename }
29
+ if entry.nil?
30
+ nil.should == filename # oops! not found...
31
+ else
32
+ entry.filename.should == filename
33
+ entry.build_task.should == 'build:copy'
34
+ entry.build_path.should == File.join(@manifest.build_root, filename)
35
+ entry.staging_path.should == File.join(@manifest.source_root, filename)
36
+ entry.source_path.should == entry.staging_path
37
+ entry.url.should == [@manifest.url_root, filename] * '/'
38
+ entry.should_not be_hidden
39
+ entry.original?.should be_true # mark as original entry
40
+ end
41
+
42
+ (entry.nil? ? nil : entry.filename).should == filename
43
+ entries.delete entry
44
+ end
45
+ entries.size.should == 0
46
+ end
47
+
48
+ end
@@ -0,0 +1,125 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe "manifest:hide_buildfiles" do
4
+
5
+ include SC::SpecHelpers
6
+ include SC::ManifestSpecHelpers
7
+
8
+ before do
9
+ std_before
10
+ end
11
+
12
+
13
+ def run_task
14
+ @manifest.prepare!
15
+ super('manifest:hide_buildfiles')
16
+ end
17
+
18
+ it "should run manifest:catalog first" do
19
+ should_run('manifest:catalog') { run_task }
20
+ end
21
+
22
+ it "should hide any Buildfile, sc-config, or sc-config.rb" do
23
+ run_task
24
+ entry_for('Buildfile').hidden?.should be_true
25
+ end
26
+
27
+ it "should hide any non .js file outside of .lproj, test, fixture, & debug dirs" do
28
+ run_task
29
+ entry_for('README').hidden?.should be_true
30
+ entry_for('lib/index.html').hidden?.should be_true
31
+
32
+ entry_for('tests/sample.rhtml').hidden?.should be_false
33
+ entry_for('english.lproj/demo.html').hidden?.should be_false
34
+ entry_for('fixtures/sample-json-fixture.json').hidden?.should be_false
35
+ entry_for('debug/debug-resource.html').hidden?.should be_false
36
+ end
37
+
38
+ it "should NOT hide non-js files inslide lproj dirs" do
39
+ run_task
40
+ entry = entry_for('english.lproj/demo.html')
41
+ entry.should_not be_hidden
42
+ end
43
+
44
+ describe "CONFIG.load_fixtures" do
45
+
46
+ it "should hide files in /fixtures and /*.lproj/fixtures if CONFIG.load_fixtures is false" do
47
+ @target.config.load_fixtures = false
48
+ run_task
49
+ entry = entry_for('fixtures/sample_fixtures.js')
50
+ entry.should be_hidden
51
+ entry = entry_for('english.lproj/fixtures/sample_fixtures-loc.js')
52
+ entry.should be_hidden
53
+ end
54
+
55
+ it "should NOT hide files in /fixtures and /*.lproj/fixtures if CONFIG.load_fixtures is true" do
56
+ @target.config.load_fixtures = true
57
+ run_task
58
+ entry = entry_for('fixtures/sample_fixtures.js')
59
+ entry.should_not be_hidden
60
+ entry = entry_for('english.lproj/fixtures/sample_fixtures-loc.js')
61
+ entry.should_not be_hidden
62
+ end
63
+ end
64
+
65
+ describe "CONFIG.load_debug" do
66
+ it "should hide files in /debug and /*.lproj/debug if CONFIG.load_debug is false" do
67
+ @target.config.load_debug = false
68
+ run_task
69
+ entry = entry_for('debug/sample_debug.js')
70
+ entry.should be_hidden
71
+ entry = entry_for('english.lproj/debug/sample_debug-loc.js')
72
+ entry.should be_hidden
73
+ end
74
+
75
+ it "should NOT hide files in /debug and /*.lproj/debug if CONFIG.load_fixtures is true" do
76
+ @target.config.load_debug = true
77
+ run_task
78
+ entry = entry_for('debug/sample_debug.js')
79
+ entry.should_not be_hidden
80
+ entry = entry_for('english.lproj/debug/sample_debug-loc.js')
81
+ entry.should_not be_hidden
82
+ end
83
+ end
84
+
85
+ describe "CONFIG.load_tests" do
86
+ it "should hide files in /tests and /*.lproj/tests if CONFIG.load_tests is false" do
87
+ @target.config.load_tests = false
88
+ run_task
89
+ entry = entry_for('tests/sample.js')
90
+ entry.should be_hidden
91
+ entry = entry_for('english.lproj/tests/sample-loc.js')
92
+ entry.should be_hidden
93
+ end
94
+
95
+ it "should NOT hide files in /tests and /*.lproj/tests if CONFIG.load_tests is true" do
96
+ @target.config.load_tests = true
97
+ run_task
98
+ entry = entry_for('tests/sample.js')
99
+ entry.should_not be_hidden
100
+ entry = entry_for('english.lproj/tests/sample-loc.js')
101
+ entry.should_not be_hidden
102
+ end
103
+ end
104
+
105
+ describe "CONFIG.load_protocols" do
106
+ it "should hide files in /protocols and /*.lproj/protocols if config is false" do
107
+ @target.config.load_protocols = false
108
+ run_task
109
+ entry = entry_for('protocols/sample.js')
110
+ entry.should be_hidden
111
+ entry = entry_for('english.lproj/protocols/sample-loc.js')
112
+ entry.should be_hidden
113
+ end
114
+
115
+ it "should NOT hide files in /protocols and /*.lproj/protocols if config is true" do
116
+ @target.config.load_protocols = true
117
+ run_task
118
+ entry = entry_for('protocols/sample.js')
119
+ entry.should_not be_hidden
120
+ entry = entry_for('english.lproj/protocols/sample-loc.js')
121
+ entry.should_not be_hidden
122
+ end
123
+ end
124
+
125
+ end
@@ -0,0 +1,97 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe "manifest:localize" do
4
+
5
+ include SC::SpecHelpers
6
+ include SC::ManifestSpecHelpers
7
+
8
+ before do
9
+ std_before
10
+ end
11
+
12
+ def run_task
13
+ @manifest.prepare!
14
+ super('manifest:localize')
15
+ end
16
+
17
+ it "should run manifest:catalog && hide_buildfiles as prereq" do
18
+ should_run('manifest:catalog') { run_task }
19
+ should_run('manifest:hide_buildfiles') { run_task }
20
+ end
21
+
22
+ it "should not alter non-localized files" do
23
+ run_task
24
+ entry = entry_for('core.js')
25
+ entry.should_not be_nil
26
+ entry.should_not be_hidden
27
+ end
28
+
29
+ it "should mark all entries with localized? = true" do
30
+ run_task
31
+ @manifest.entries.each do |entry|
32
+ if entry.source_path =~ /\.lproj/
33
+ entry.localized?.should be_true
34
+ else
35
+ entry.localized?.should_not be_true
36
+ end
37
+ end
38
+ end
39
+
40
+ it "should remove foo.lproj from filename, build_path, and url of localized except for css and js files, which get 'lproj' instead" do
41
+ run_task
42
+ @manifest.entries.each do |entry|
43
+ next unless entry.localized?
44
+ new_filename = entry.source_path.match(/\.lproj\/(.+)$/).to_a[1]
45
+ if entry.ext == 'js'
46
+ new_filename = "lproj/#{new_filename}"
47
+ end
48
+
49
+ entry.filename.should eql(new_filename)
50
+ entry.build_path = File.join(@manifest.build_root, new_filename.split('/'))
51
+ entry.url = [@manifest.url_root, new_filename.split('/')].flatten.join('/')
52
+ end
53
+ end
54
+
55
+ it "should assign language to localized entries" do
56
+ run_task
57
+ # we just test this by spot checking to make sure any entry in the
58
+ # french.lproj actually has a french language code assigned...
59
+ @manifest.entries.each do |entry|
60
+ next unless entry.localize? && (entry.source_path =~ /french\.lproj/)
61
+ entry.language.should eql(:fr)
62
+ end
63
+ end
64
+
65
+ it "should not hide resources in current language" do
66
+ run_task
67
+ entry = entry_for('lproj/french-resource.js')
68
+ entry.localized?.should be_true
69
+ entry.should_not be_hidden
70
+ entry.language.should eql(:fr)
71
+ end
72
+
73
+ it "should not hide resource in preferred language that are not also found in current language" do
74
+ run_task
75
+ entry = entry_for('demo.html')
76
+ entry.localized?.should be_true
77
+ entry.language.should eql(:en)
78
+ entry.should_not be_hidden
79
+ end
80
+
81
+ it "should prefer resource in current language over those in preferred language" do
82
+ run_task
83
+ # a 'strings.js' is defined in english.lproj, french.lproj, & german
84
+ # this should use the french version since that one is current
85
+ entry = @manifest.entry_for('lproj/strings.js')
86
+ entry.localized?.should be_true
87
+ entry.should_not be_hidden
88
+ entry.language.should eql(:fr)
89
+ end
90
+
91
+ it "should hide resources in languages not part of current language or preferred language" do
92
+ run_task
93
+ entry = entry_for('lproj/german-resource.js')
94
+ entry.should be_hidden
95
+ end
96
+
97
+ end
@@ -0,0 +1,246 @@
1
+ require File.join(File.dirname(__FILE__), %w(.. spec_helper))
2
+
3
+ # Creates combined entries for javascript & css
4
+ describe "manifest:prepare_build_tasks:combine" do
5
+
6
+ include SC::SpecHelpers
7
+ include SC::ManifestSpecHelpers
8
+
9
+ before do
10
+ std_before
11
+ end
12
+
13
+ def run_task
14
+ # capture any log warnings...
15
+ @msg = capture('stderr') {
16
+ @manifest.prepare!
17
+ super('manifest:prepare_build_tasks:combine')
18
+ }
19
+ end
20
+
21
+ it "should run setup, javascript, css, & sass as prereq" do
22
+ %w(setup javascript css sass).each do |task_name|
23
+ should_run("manifest:prepare_build_tasks:#{task_name}") { run_task }
24
+ end
25
+ end
26
+
27
+ #######################################
28
+ # stylesheet.css support
29
+ #
30
+ describe "whem CONFIG.combine_stylesheets = true" do
31
+
32
+ before do
33
+ @config.combine_stylesheets = true
34
+ run_task
35
+ end
36
+
37
+ it "creates a combined stylesheet entry for each resource named in files" do
38
+ # spot check...
39
+ entry = entry_for 'stylesheet.css'
40
+ expected = entry_for('source/has_require.css', :entry_type => :css)
41
+ entry.source_entries.should include(expected)
42
+
43
+ expected = entry_for('source/no_require.css', :entry_type => :css)
44
+ entry.source_entries.should include(expected)
45
+
46
+ # Test that sass file is included...
47
+ expected = entry_for('source/demo2.css', :entry_type => :css)
48
+ entry.source_entries.should include(expected)
49
+
50
+ entry = entry_for 'bar.css'
51
+ expected = entry_for('source/sc_resource.css', :entry_type => :css)
52
+ entry.source_entries.should include(expected)
53
+ end
54
+
55
+ it "entries have a build_task = build:combine:css" do
56
+ entry_for('stylesheet.css').build_task.should == 'build:combine'
57
+ entry_for('bar.css').build_task.should == 'build:combine'
58
+ end
59
+
60
+ it "hides source entries" do
61
+ %w(stylesheet.css bar.css).each do |filename|
62
+ entry_for(filename).source_entries.each do |entry|
63
+ entry.should be_hidden
64
+ end
65
+ end
66
+ end
67
+
68
+
69
+ describe "adds ENTRY.ordered_entries propery with entries following load order" do
70
+
71
+ before do
72
+ @project = fixture_project :ordered_entries
73
+ end
74
+
75
+ it "orders entries as lproj/strings -> core -> utils -> others alphabetically without requires" do
76
+
77
+ @target = @project.target_for :no_requires
78
+ @buildfile = @target.buildfile
79
+ @config = @target.config
80
+ @manifest = @target.manifest_for(:language => :en)
81
+ @target.prepare! # make sure its ready for the manifest...
82
+
83
+ run_task
84
+ entry = @manifest.entry_for('stylesheet.css')
85
+
86
+ # get the expected set of ordered entries...based on contents of
87
+ # project...
88
+ expected = %w(source/a.css source/a/a.css source/a/b.css source/B.css source/b/a.css source/c.css)
89
+
90
+ entry.ordered_entries.should_not be_nil
91
+ filenames = entry.ordered_entries.map { |e| e.filename }
92
+ filenames.should eql(expected)
93
+ end
94
+
95
+ it "will override default order respecting ENTRY.required" do
96
+
97
+ @target = @project.target_for :with_requires
98
+ @buildfile = @target.buildfile
99
+ @config = @target.config
100
+ @manifest = @target.manifest_for(:language => :en)
101
+ @target.prepare! # make sure its ready for the manifest...
102
+
103
+ run_task
104
+ entry = @manifest.entry_for('stylesheet.css')
105
+
106
+ # get the expected set of ordered entries...based on contents of
107
+ # project...
108
+ expected = %w(source/c.css source/a.css source/b.css)
109
+
110
+ entry.ordered_entries.should_not be_nil
111
+ filenames = entry.ordered_entries.map { |e| e.filename }
112
+ filenames.should eql(expected)
113
+ end
114
+
115
+ end
116
+
117
+ end
118
+
119
+ describe "when CONFIG.combine_stylesheets = false" do
120
+
121
+ before do
122
+ @config.combine_stylesheets = false
123
+ run_task
124
+ end
125
+
126
+ it "still creates combined CSS entry" do
127
+ entry = entry_for('stylesheet.css')
128
+ entry.should_not be_nil
129
+ end
130
+
131
+ it "does not hide source CSS entries" do
132
+ entry = entry_for('stylesheet.css')
133
+ entry.should_not be_nil
134
+ entry.source_entries.each { |entry| entry.should_not be_hidden }
135
+ end
136
+ end
137
+
138
+ #######################################
139
+ # javascript.js support
140
+ #
141
+
142
+ describe "whem CONFIG.combine_javascript = true" do
143
+
144
+ before do
145
+ @config.combine_javascript = true
146
+ run_task
147
+ end
148
+
149
+ it "creates a combined JS entry for each resource named in files" do
150
+ # spot check...
151
+ entry = entry_for 'javascript.js'
152
+ expected = entry_for('source/has_require.js', :entry_type => :javascript)
153
+ entry.source_entries.should include(expected)
154
+
155
+ expected = entry_for('source/no_require.js', :entry_type => :javascript)
156
+ entry.source_entries.should include(expected)
157
+
158
+ entry = entry_for 'bar.js'
159
+ expected = entry_for('source/sc_resource.js', :entry_type => :javascript)
160
+ entry.source_entries.should include(expected)
161
+ end
162
+
163
+ it "entries have a build_task = build:combine:javascript" do
164
+ %w(javascript.js bar.js).each do |filename|
165
+ entry_for(filename).build_task.should == 'build:combine'
166
+ end
167
+ end
168
+
169
+ it "hides source entries" do
170
+ %w(javascript.js bar.js).each do |filename|
171
+ entry_for(filename).source_entries.each do |entry|
172
+ entry.should be_hidden
173
+ end
174
+ end
175
+ end
176
+
177
+ describe "adds ENTRY.ordered_entries propery with entries following load order" do
178
+
179
+ before do
180
+ @project = fixture_project :ordered_entries
181
+ end
182
+
183
+ it "orders entries as lproj/strings -> core -> utils -> others alphabetically without requires" do
184
+
185
+ @target = @project.target_for :no_requires
186
+ @buildfile = @target.buildfile
187
+ @config = @target.config
188
+ @manifest = @target.manifest_for(:language => :en)
189
+ @target.prepare! # make sure its ready for the manifest...
190
+
191
+ run_task
192
+ entry = @manifest.entry_for('javascript.js')
193
+
194
+ # get the expected set of ordered entries...based on contents of
195
+ # project...
196
+ expected = %w(source/lproj/strings.js source/core.js source/utils.js source/1.js source/a.js source/a/a.js source/a/b.js source/B.js source/b/a.js source/c.js)
197
+
198
+ entry.ordered_entries.should_not be_nil
199
+ filenames = entry.ordered_entries.map { |e| e.filename }
200
+ filenames.should eql(expected)
201
+ end
202
+
203
+ it "will override default order respecting ENTRY.required" do
204
+
205
+ @target = @project.target_for :with_requires
206
+ @buildfile = @target.buildfile
207
+ @config = @target.config
208
+ @manifest = @target.manifest_for(:language => :en)
209
+ @target.prepare! # make sure its ready for the manifest...
210
+
211
+ run_task
212
+ entry = @manifest.entry_for('javascript.js')
213
+
214
+ # get the expected set of ordered entries...based on contents of
215
+ # project... note that we require 'd', which should match 'lproj/d'
216
+ expected = %w(source/c.js source/a.js source/lproj/d.js source/b.js)
217
+
218
+ entry.ordered_entries.should_not be_nil
219
+ filenames = entry.ordered_entries.map { |e| e.filename }
220
+ filenames.should eql(expected)
221
+ end
222
+
223
+ end
224
+
225
+ end
226
+
227
+ describe "when CONFIG.combine_javascript = false" do
228
+
229
+ before do
230
+ @config.combine_javascript = false
231
+ run_task
232
+ end
233
+
234
+ it "still creates combined JS entry" do
235
+ entry = entry_for('javascript.js')
236
+ entry.should_not be_nil
237
+ end
238
+
239
+ it "does not hide source JS entries" do
240
+ entry = entry_for('javascript.js')
241
+ entry.should_not be_nil
242
+ entry.source_entries.each { |entry| entry.should_not be_hidden }
243
+ end
244
+ end
245
+
246
+ end