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,81 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+ describe SC::Builder::JavaScript do
3
+
4
+ include SC::SpecHelpers
5
+ include SC::BuilderSpecHelper
6
+
7
+ before do
8
+ std_before :javascript_test
9
+
10
+ # add fake image entry for sc_static tests..
11
+ @manifest.add_entry 'icons/image.png'
12
+ @target.config.timestamp_urls = false
13
+ end
14
+
15
+
16
+ after do
17
+ std_after
18
+ end
19
+
20
+ def run_builder(filename, localize=false)
21
+ super(filename) do |entry, dst_path|
22
+ entry[:localized] = true if localize
23
+ SC::Builder::JavaScript.build(entry, dst_path)
24
+ end
25
+ end
26
+
27
+ it "converts calls to sc_super() => arguments.callee.base.apply()" do
28
+ lines = run_builder 'sc_super.js'
29
+ lines.each do |line|
30
+ next if line.size == 1
31
+ line.should_not =~ /sc_super\(/
32
+ line.should =~ /arguments.callee.base.apply\(this,arguments\)/
33
+ end
34
+ end
35
+
36
+ it "converts static_url() and sc_static() => 'url('foo')' " do
37
+ lines = run_builder 'sc_static.js'
38
+ lines.each do |line|
39
+ next if line.size == 1
40
+ line.should_not =~ /(static_url|sc_static)/
41
+ line.should =~ /'.+'/ # important MUST have some url...
42
+ end
43
+ end
44
+
45
+ it "static_url() and sc_static() respect timestamp_urls" do
46
+ @target.config.timestamp_urls = false
47
+ lines = run_builder 'sc_static.js'
48
+ lines.each do |line|
49
+ next if line.size == 1
50
+ line.should_not =~ /'.+\?.+'/ # important MUST NOT have some url w/ timestamp...
51
+ end
52
+
53
+ @target.config.timestamp_urls = true
54
+ lines = run_builder 'sc_static.js'
55
+ lines.each do |line|
56
+ next if line.size == 1
57
+ line.should =~ /'.+\?.+'/ # important MUST have some url w/ timestamp...
58
+ end
59
+ end
60
+
61
+ it "removes server-side keys from localized strings.js files" do
62
+ lines = run_builder 'strings.js', true
63
+ @entry.should be_localized
64
+ lines.each do |line|
65
+ next if line.size == 1 # skip empty lines
66
+ line.should_not =~ /@@foo/ # make sure key is removed...
67
+ end
68
+ end
69
+
70
+ it "should not remove server-side keys from strings.js files that are not found in an .lproj (i.e. not localized)" do
71
+ lines = run_builder 'strings.js', false # <-- NOT localized.
72
+ @entry.should_not be_localized
73
+ lines.each do |line|
74
+ next if line.size == 1 # skip empty lines
75
+ next if line =~ /\s*\/\// # skip comment lines
76
+ line.should =~ /@@foo/ # make sure key is NOT removed...
77
+ end
78
+ end
79
+
80
+
81
+ end
@@ -0,0 +1,43 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ # If sass is not installed, just skip these.
4
+ has_sass = true
5
+ begin
6
+ require 'sass'
7
+
8
+ rescue Exception => e
9
+ puts "WARNING: Skipping SC::Builder::Sass tests because sass is not installed. Run 'sudo gem install haml' first and try again."
10
+ has_sass = false
11
+ end
12
+
13
+ if has_sass
14
+ describe SC::Builder::Sass do
15
+
16
+ include SC::SpecHelpers
17
+ include SC::BuilderSpecHelper
18
+
19
+ before do
20
+ std_before :sass_test
21
+ end
22
+
23
+
24
+ after do
25
+ std_after
26
+ end
27
+
28
+ def run_builder(filename)
29
+ super do |entry, dst_path|
30
+ SC::Builder::Sass.build(entry, dst_path)
31
+ end
32
+ end
33
+
34
+ it "should build a sass file" do
35
+ lines = run_builder('sample.sass')
36
+ lines = lines.join('').gsub("\n",'') # strip newlines to make compare easy
37
+
38
+ # just verify that output looks like the CSS we expect
39
+ lines.should =~ /\#main\s+p.+\{.+color.+width.+\}/
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,30 @@
1
+ require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
2
+
3
+ module SC::BuilderSpecHelper
4
+
5
+ def std_before(target_name)
6
+ @project = temp_project :builder_tests
7
+ @target = @project.target_for target_name
8
+ @manifest = @target.manifest_for :language => :en
9
+ @manifest.prepare!
10
+ end
11
+
12
+ def std_after
13
+ @project.cleanup
14
+ end
15
+
16
+ def run_builder(filename, &block)
17
+ @entry = @manifest.add_entry filename # basic entry...
18
+ @dst_path = @entry.build_path
19
+ File.exist?(@entry.source_path).should be_true # precondition
20
+
21
+ # Invoke builder
22
+ yield(@entry, @dst_path)
23
+
24
+ lines = File.readlines(@dst_path)
25
+ lines.size.should > 0 # make sure something built
26
+ return lines
27
+ end
28
+
29
+ end
30
+
@@ -0,0 +1,52 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+ describe SC::Builder::Strings do
3
+
4
+ include SC::SpecHelpers
5
+ include SC::BuilderSpecHelper
6
+
7
+ before do
8
+ std_before :strings_test
9
+
10
+ # add fake strings entry
11
+ @source_entry = @manifest.add_entry 'lproj/strings.js',
12
+ :build_task => 'build:copy'
13
+
14
+ @entry = @manifest.add_transform @source_entry,
15
+ :ext => 'yaml',
16
+ :entry_type => :yaml,
17
+ :build_task => 'build:strings'
18
+
19
+ end
20
+
21
+
22
+ after do
23
+ std_after
24
+ end
25
+
26
+ # Note, the string.js fixture file this test loads should stress the
27
+ # builder to make sure it can parse various cases.
28
+ it "generates a yaml file with contents of string.js parsed into a hash" do
29
+ dst_path = @entry.staging_path
30
+ SC::Builder::Strings.build(@entry, dst_path)
31
+ File.exist?(dst_path).should be_true
32
+
33
+ # get YAML
34
+ require 'yaml'
35
+ yaml = YAML.load(File.read(dst_path))
36
+ yaml.should_not be_nil
37
+
38
+ expected = {
39
+ 'test1' => "test1",
40
+ 'test2' => 'test2 "with quotes"',
41
+ 'test3' => "test3",
42
+ "test4" => 'test4'
43
+ }
44
+ yaml.keys.size.should == expected.keys.size
45
+ expected.each do |key, value|
46
+ yaml[key].should == value
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+
@@ -0,0 +1,63 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+ describe SC::Builder::Stylesheet do
3
+
4
+ include SC::SpecHelpers
5
+ include SC::BuilderSpecHelper
6
+
7
+ before do
8
+ std_before :stylesheet_test
9
+
10
+ # add fake image entry for sc_static tests..
11
+ @manifest.add_entry 'icons/image.png'
12
+ @target.config.timestamp_urls = false
13
+ end
14
+
15
+
16
+ after do
17
+ std_after
18
+ end
19
+
20
+ def run_builder(filename)
21
+ super do |entry, dst_path|
22
+ SC::Builder::Stylesheet.build(entry, dst_path)
23
+ end
24
+ end
25
+
26
+ # This test passes a test fixture file through the builder that contains
27
+ # examples of all the different ways these directives might appear in a
28
+ # file to try to trip up the regex. If you find additional examples that
29
+ # cause problems, add them to the fixture file so that this test breaks.
30
+ it "wraps require(), sc_require(), & sc_resource() in comments" do
31
+ lines = run_builder 'build_directives.css'
32
+ lines.each do |line|
33
+ next if line.size == 1
34
+ line.should =~ /\/\*.+(require|sc_require|sc_resource).+\*\//
35
+ end
36
+ end
37
+
38
+ it "converts static_url() and sc_static() => 'url('foo')' " do
39
+ lines = run_builder 'sc_static.css'
40
+ lines.each do |line|
41
+ next if line.size == 1
42
+ line.should_not =~ /(static_url|sc_static)/
43
+ line.should =~ /url\('.+'\)/ # important MUST have some url...
44
+ end
45
+ end
46
+
47
+ it "static_url() and sc_static() respects config.timestamp_urls" do
48
+ @target.config.timestamp_urls = false
49
+ lines = run_builder 'sc_static.css'
50
+ lines.each do |line|
51
+ next if line.size == 1
52
+ line.should_not =~ /url\('.+\?.+'\)/ # important MUST have some url...
53
+ end
54
+
55
+ @target.config.timestamp_urls = true
56
+ lines = run_builder 'sc_static.css'
57
+ lines.each do |line|
58
+ next if line.size == 1
59
+ line.should =~ /url\('.+\?.+'\)/ # important MUST have some url...
60
+ end
61
+ end
62
+
63
+ end
@@ -0,0 +1,44 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+ describe SC::Builder::Test do
3
+
4
+ include SC::SpecHelpers
5
+ include SC::BuilderSpecHelper
6
+
7
+ before do
8
+ std_before :test_test
9
+
10
+ # run std rules to run manifest. Then verify preconditions to make sure
11
+ # no other changes to the build system effect the ability of these tests
12
+ # to run properly.
13
+ @manifest.build!
14
+ @qunit_entry = @manifest.entry_for('tests/qunit_test.html')
15
+ @rhtml_entry = @manifest.entry_for('tests/rhtml_test.html')
16
+ @index_entry = @manifest.entry_for('tests/-index.json')
17
+ end
18
+
19
+ after do
20
+ std_after
21
+ end
22
+
23
+ it "VERIFY PRECONDITIONS" do
24
+ # Verify qunit entry -- should have qunit_test.js entry
25
+ @index_entry.should_not be_nil
26
+ end
27
+
28
+ it "should generate json with entries for both qunit & rhtml entry" do
29
+ dst_path = @index_entry.build_path
30
+ SC::Builder::TestIndex.build(@index_entry, dst_path)
31
+
32
+ require 'json'
33
+ File.exist?(dst_path).should be_true
34
+ result = JSON.parse(File.read(dst_path))
35
+ result.size.should == 3 #qunit_test, rhtml_test, qunit_test2
36
+ result.each do |item|
37
+ next if item['filename'] =~ /qunit_test2/
38
+ entry = (item['filename'] =~ /qunit_test/) ? @qunit_entry : @rhtml_entry
39
+ item['filename'].should == entry.filename.ext('')
40
+ item['url'].should == entry.url
41
+ end
42
+ end
43
+
44
+ end
@@ -0,0 +1,135 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+ describe SC::Builder::Test do
3
+
4
+ include SC::SpecHelpers
5
+ include SC::BuilderSpecHelper
6
+
7
+ before do
8
+ std_before :test_test
9
+
10
+ # run std rules to run manifest. Then verify preconditions to make sure
11
+ # no other changes to the build system effect the ability of these tests
12
+ # to run properly.
13
+ @manifest.build!
14
+ @qunit_entry = @manifest.entry_for('tests/qunit_test.html')
15
+ @rhtml_entry = @manifest.entry_for('tests/rhtml_test.html')
16
+ @summary_entry = @manifest.entry_for('tests.html')
17
+ end
18
+
19
+ after do
20
+ std_after
21
+ end
22
+
23
+ it "VERIFY PRECONDITIONS" do
24
+ # Verify qunit entry -- should have qunit_test.js entry
25
+ @qunit_entry.should_not be_nil
26
+ entry_names = @qunit_entry.source_entries.map { |e| e.filename }.sort
27
+ entry_names.should == %w(tests/qunit_test.js)
28
+
29
+ # Verify bar entry - should have 1 entry
30
+ @rhtml_entry.should_not be_nil
31
+ entry_names = @rhtml_entry.source_entries.map { |e| e.filename }.sort
32
+ entry_names.should == %w(tests/rhtml_test.rhtml)
33
+
34
+ # Verify summary entry - should have both bar & qunit & qunit2
35
+ @summary_entry.should_not be_nil
36
+ entry_names = @summary_entry.source_entries.map { |e| e.filename }.sort
37
+ entry_names.should == %w(tests/qunit_test.js tests/qunit_test2.js tests/rhtml_test.rhtml)
38
+ end
39
+
40
+ describe "adding test_required frameworks urls" do
41
+
42
+ before do
43
+ @builder = SC::Builder::Test.new(@qunit_entry)
44
+ end
45
+
46
+ it "add stylesheets for test" do
47
+ # figure expected urls...
48
+ t = @project.target_for(:qunit)
49
+ url = t.manifest_for(:language => :en).build!.entry_for('stylesheet.css').url
50
+ url = /#{Regexp.escape url}/
51
+
52
+ @target.config.combine_stylesheets = true
53
+ @target.config.load_test = true
54
+ result = @builder.stylesheets_for_client
55
+ result.should =~ url
56
+
57
+ # also works for @import
58
+ result = @builder.stylesheets_for_client(:include_method => :import)
59
+ result.should =~ url
60
+ end
61
+
62
+ it "adds javascript for test" do
63
+ # figure expected urls...
64
+ t = @project.target_for(:qunit)
65
+ url = t.manifest_for(:language => :en).build!.entry_for('javascript.js').url
66
+ url = /#{Regexp.escape url}/
67
+
68
+ @target.config.combine_javascript = true
69
+ @target.config.load_test = true
70
+ result = @builder.javascripts_for_client
71
+ result.should =~ url
72
+ end
73
+ end
74
+
75
+
76
+ describe "layout_path" do
77
+
78
+ before do
79
+ @builder = SC::Builder::Test.new(@qunit_entry)
80
+ end
81
+
82
+ it "initially resolves layout_path using test_layout config for target" do
83
+ # see the Buildfile for the fixture project to see this config.
84
+ @builder.layout_path.should == File.join(@project.project_root, %w(apps test_test lib test_layout.rhtml))
85
+ end
86
+
87
+ it "changes its resolved path if you alter the layout variable" do
88
+ # use helper method...
89
+ @builder.sc_resource(:layout => 'lib/alt_layout.rhtml')
90
+ @builder.layout_path.should == File.join(@project.project_root, %w(apps test_test lib alt_layout.rhtml))
91
+ end
92
+ end
93
+
94
+
95
+
96
+ describe "render a js entry" do
97
+
98
+ it "should render html including JS inside a script tag for final content" do
99
+ result = SC::Builder::Test.new(@qunit_entry).render
100
+ result.should =~ /layout/ # verify rendered layout
101
+ result.should =~ /\<script.*\>.*qunit_test.*\<\/script\>/m # verify js
102
+ end
103
+
104
+ end
105
+
106
+ describe "render a rhtml entry" do
107
+
108
+ it "should render html including final content and resource content" do
109
+ result = SC::Builder::Test.new(@rhtml_entry).render
110
+ result.should =~ /layout/ # verify rendered layout
111
+ result.should =~ /final_test/
112
+ result.should_not =~ /resources_test/ # resources div no longer included
113
+ end
114
+
115
+ end
116
+
117
+ describe "render a summary entry" do
118
+
119
+ it "should render composite with both sets of unit tests" do
120
+ result = SC::Builder::Test.new(@summary_entry).render
121
+ result.should =~ /layout/ # verify rendered layout
122
+ result.should =~ /\<script.*\>.*qunit_test.*\<\/script\>/m # verify js1
123
+ result.should =~ /\<script.*\>.*qunit_test2.*\<\/script\>/m # verify js2
124
+ result.should =~ /final_test/
125
+ result.should_not =~ /resources_test/ # resources div no longer included
126
+ end
127
+
128
+ end
129
+
130
+ it "should import the standard html API" do
131
+ modules = SC::Builder::Test.included_modules
132
+ modules.should include(SC::Helpers::StaticHelper)
133
+ end
134
+
135
+ end