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.
- data/Buildfile +115 -0
- data/History.txt +7 -0
- data/README.txt +102 -0
- data/Rakefile +54 -0
- data/Todo.txt +1 -0
- data/bin/sc-build +13 -0
- data/bin/sc-build-number +13 -0
- data/bin/sc-gen +13 -0
- data/bin/sc-init +13 -0
- data/bin/sc-manifest +13 -0
- data/bin/sc-server +13 -0
- data/bin/sproutcore +14 -0
- data/buildtasks/build.rake +73 -0
- data/buildtasks/entry.rake +59 -0
- data/buildtasks/manifest.rake +469 -0
- data/buildtasks/render.rake +21 -0
- data/buildtasks/target.rake +42 -0
- data/gen/Buildfile +16 -0
- data/gen/app/Buildfile +36 -0
- data/gen/app/README +1 -0
- data/gen/app/USAGE +13 -0
- data/gen/app/templates/apps/{target_name}/core.js +27 -0
- data/gen/app/templates/apps/{target_name}/english.lproj/loading.rhtml +9 -0
- data/gen/app/templates/apps/{target_name}/english.lproj/main_page.js +22 -0
- data/gen/app/templates/apps/{target_name}/english.lproj/strings.js +15 -0
- data/gen/app/templates/apps/{target_name}/main.js +30 -0
- data/gen/controller/Buildfile +18 -0
- data/gen/controller/README +1 -0
- data/gen/controller/USAGE +13 -0
- data/gen/controller/templates/controllers/{filename}.js +18 -0
- data/gen/controller/templates/tests/controllers/{filename}.js +15 -0
- data/gen/framework/Buildfile +36 -0
- data/gen/framework/README +1 -0
- data/gen/framework/USAGE +13 -0
- data/gen/framework/templates/frameworks/{target_name}/core.js +21 -0
- data/gen/framework/templates/frameworks/{target_name}/english.lproj/strings.js +15 -0
- data/gen/language/Buildfile +26 -0
- data/gen/language/README +1 -0
- data/gen/language/USAGE +13 -0
- data/gen/language/templates/{filename}/strings.js +14 -0
- data/gen/model/Buildfile +16 -0
- data/gen/model/README +1 -0
- data/gen/model/USAGE +15 -0
- data/gen/model/templates/fixtures/{filename}.js +35 -0
- data/gen/model/templates/models/{filename}.js +19 -0
- data/gen/model/templates/tests/models/{filename}.js +15 -0
- data/gen/project/Buildfile +45 -0
- data/gen/project/INIT +3 -0
- data/gen/project/README +1 -0
- data/gen/project/USAGE +2 -0
- data/gen/project/templates/{filename}/Buildfile +7 -0
- data/gen/project/templates/{filename}/README +7 -0
- data/gen/test/Buildfile +25 -0
- data/gen/test/README +1 -0
- data/gen/test/USAGE +12 -0
- data/gen/test/templates/tests/{filename}.js +15 -0
- data/gen/theme/Buildfile +36 -0
- data/gen/theme/README +1 -0
- data/gen/theme/USAGE +13 -0
- data/gen/theme/templates/themes/{target_name}/english.lproj/strings.js +15 -0
- data/gen/view/Buildfile +18 -0
- data/gen/view/README +1 -0
- data/gen/view/USAGE +13 -0
- data/gen/view/templates/tests/views/{filename}.js +15 -0
- data/gen/view/templates/views/{filename}.js +18 -0
- data/lib/sproutcore.rb +130 -0
- data/lib/sproutcore/builders/base.rb +79 -0
- data/lib/sproutcore/builders/combine.rb +37 -0
- data/lib/sproutcore/builders/html.rb +177 -0
- data/lib/sproutcore/builders/javascript.rb +55 -0
- data/lib/sproutcore/builders/minify.rb +67 -0
- data/lib/sproutcore/builders/sass.rb +55 -0
- data/lib/sproutcore/builders/strings.rb +44 -0
- data/lib/sproutcore/builders/stylesheet.rb +40 -0
- data/lib/sproutcore/builders/test.rb +58 -0
- data/lib/sproutcore/builders/test_index.rb +26 -0
- data/lib/sproutcore/buildfile.rb +483 -0
- data/lib/sproutcore/buildfile/build_task.rb +33 -0
- data/lib/sproutcore/buildfile/buildfile_dsl.rb +162 -0
- data/lib/sproutcore/buildfile/cloneable.rb +34 -0
- data/lib/sproutcore/buildfile/early_time.rb +29 -0
- data/lib/sproutcore/buildfile/invocation_chain.rb +64 -0
- data/lib/sproutcore/buildfile/namespace.rb +33 -0
- data/lib/sproutcore/buildfile/string_ext.rb +198 -0
- data/lib/sproutcore/buildfile/task.rb +304 -0
- data/lib/sproutcore/buildfile/task_arguments.rb +86 -0
- data/lib/sproutcore/buildfile/task_manager.rb +193 -0
- data/lib/sproutcore/deprecated/view_helper.rb +662 -0
- data/lib/sproutcore/helpers/capture_helper.rb +30 -0
- data/lib/sproutcore/helpers/cssmin.rb +202 -0
- data/lib/sproutcore/helpers/dom_id_helper.rb +21 -0
- data/lib/sproutcore/helpers/entry_sorter.rb +105 -0
- data/lib/sproutcore/helpers/packed_optimizer.rb +102 -0
- data/lib/sproutcore/helpers/static_helper.rb +268 -0
- data/lib/sproutcore/helpers/tag_helper.rb +117 -0
- data/lib/sproutcore/helpers/text_helper.rb +303 -0
- data/lib/sproutcore/models/generator.rb +493 -0
- data/lib/sproutcore/models/hash_struct.rb +109 -0
- data/lib/sproutcore/models/manifest.rb +342 -0
- data/lib/sproutcore/models/manifest_entry.rb +232 -0
- data/lib/sproutcore/models/project.rb +270 -0
- data/lib/sproutcore/models/target.rb +403 -0
- data/lib/sproutcore/rack/builder.rb +269 -0
- data/lib/sproutcore/rack/dev.rb +51 -0
- data/lib/sproutcore/rack/docs.rb +24 -0
- data/lib/sproutcore/rack/proxy.rb +92 -0
- data/lib/sproutcore/rack/service.rb +141 -0
- data/lib/sproutcore/rack/test_runner.rb +24 -0
- data/lib/sproutcore/render_engines/erubis.rb +55 -0
- data/lib/sproutcore/render_engines/haml.rb +39 -0
- data/lib/sproutcore/tools.rb +311 -0
- data/lib/sproutcore/tools/build.rb +80 -0
- data/lib/sproutcore/tools/build_number.rb +23 -0
- data/lib/sproutcore/tools/gen.rb +99 -0
- data/lib/sproutcore/tools/init.rb +40 -0
- data/lib/sproutcore/tools/manifest.rb +84 -0
- data/lib/sproutcore/tools/server.rb +45 -0
- data/spec/buildtasks/build/copy_spec.rb +60 -0
- data/spec/buildtasks/build/spec_helper.rb +36 -0
- data/spec/buildtasks/manifest/catalog_spec.rb +48 -0
- data/spec/buildtasks/manifest/hide_buildfiles_spec.rb +125 -0
- data/spec/buildtasks/manifest/localize_spec.rb +97 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +246 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +87 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/html_spec.rb +175 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/javascript_spec.rb +65 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +70 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +152 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/sass_spec.rb +98 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/strings_spec.rb +64 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/tests_spec.rb +163 -0
- data/spec/buildtasks/manifest/prepare_spec.rb +43 -0
- data/spec/buildtasks/manifest/spec_helper.rb +35 -0
- data/spec/buildtasks/target_spec.rb +214 -0
- data/spec/fixtures/builder_tests/Buildfile +15 -0
- data/spec/fixtures/builder_tests/apps/combine_test/a.js +1 -0
- data/spec/fixtures/builder_tests/apps/combine_test/b.js +1 -0
- data/spec/fixtures/builder_tests/apps/combine_test/c.js +1 -0
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/a.css +1 -0
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/b.css +1 -0
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/c.css +1 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/bar1_sample.rhtml +2 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/erb_sample.html.erb +1 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/icons/image.png +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/image.jpg +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/rhtml_sample.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/strings.js +4 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/style.css +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/french.lproj/french-icons/fr.png +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/french.lproj/strings.js +4 -0
- data/spec/fixtures/builder_tests/apps/html_test/lib/layout_template.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/html_test/scripts.js +0 -0
- data/spec/fixtures/builder_tests/apps/javascript_test/sc_static.js +15 -0
- data/spec/fixtures/builder_tests/apps/javascript_test/sc_super.js +4 -0
- data/spec/fixtures/builder_tests/apps/javascript_test/strings.js +7 -0
- data/spec/fixtures/builder_tests/apps/sass_test/sample.sass +3 -0
- data/spec/fixtures/builder_tests/apps/strings_test/lproj/strings.js +8 -0
- data/spec/fixtures/builder_tests/apps/stylesheet_test/build_directives.css +9 -0
- data/spec/fixtures/builder_tests/apps/stylesheet_test/sc_static.css +12 -0
- data/spec/fixtures/builder_tests/apps/test_test/lib/alt_layout.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/test_test/lib/test_layout.rhtml +3 -0
- data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test.js +1 -0
- data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test2.js +1 -0
- data/spec/fixtures/builder_tests/apps/test_test/tests/rhtml_test.rhtml +4 -0
- data/spec/fixtures/builder_tests/frameworks/debug/core.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/debug/english.lproj/dummy.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/qunit/core.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/qunit/english.lproj/dummy.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/strings.js +4 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/test.rhtml +1 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/req_js_1.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/req_style_2.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/test.rhtml +1 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/javascript.js +1 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/lib/alt_layout.rhtml +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/req_js_2.js +0 -0
- data/spec/fixtures/builder_tests/themes/sample_theme/Buildfile +1 -0
- data/spec/fixtures/buildfiles/basic/Buildfile +16 -0
- data/spec/fixtures/buildfiles/basic/task_module.rake +6 -0
- data/spec/fixtures/buildfiles/installed/Buildfile +7 -0
- data/spec/fixtures/buildfiles/installed/Buildfile2 +5 -0
- data/spec/fixtures/buildfiles/project_test/Buildfile +4 -0
- data/spec/fixtures/buildfiles/project_test/not_project/Buildfile +2 -0
- data/spec/fixtures/buildfiles/project_test/not_project/child/PLACEHOLDER +0 -0
- data/spec/fixtures/entry_for_project/Buildfile +1 -0
- data/spec/fixtures/entry_for_project/apps/test_app/entry.txt +0 -0
- data/spec/fixtures/entry_for_project/apps/test_app/frameworks/nested/PLACEHOLDER +0 -0
- data/spec/fixtures/entry_for_project/frameworks/shared/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/Buildfile +8 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/Buildfile +5 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/foos/not_foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/nested/Buildfile +8 -0
- data/spec/fixtures/find_targets/nested/apps/app1/Buildfile +1 -0
- data/spec/fixtures/find_targets/nested/apps/app1/apps/nested_app/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/clients/client1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/frameworks/framework1/frameworks/framework1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/frameworks/framework2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/themes/theme1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/themes/theme2/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/English.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/FreNCH.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/UnknOWN.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/english.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/french.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/german.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/italian.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/japanese.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/spanish.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/unknown.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/no_names/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/de.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-CA.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-GB.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-US.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/es.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/foo.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/fr.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/it.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/ja.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/1.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/B.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/a.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/a/a.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/a/b.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/b/a.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/c.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/core.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/B.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/b.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/b/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/c.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/lproj/strings.js +1 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/utils.js +1 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/a.js +2 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/b.js +3 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/c.js +2 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/a.css +2 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/b.css +2 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/c.css +2 -0
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/d.js +1 -0
- data/spec/fixtures/real_world/Buildfile +12 -0
- data/spec/fixtures/real_world/apps/account/README +1 -0
- data/spec/fixtures/real_world/apps/calendar/README +1 -0
- data/spec/fixtures/real_world/apps/contacts/README_BEFORE_EDITING +1 -0
- data/spec/fixtures/real_world/apps/files/README +1 -0
- data/spec/fixtures/real_world/apps/mail/README +1 -0
- data/spec/fixtures/real_world/apps/mobile_photos/README +1 -0
- data/spec/fixtures/real_world/apps/photos/README +1 -0
- data/spec/fixtures/real_world/apps/uploader/README +1 -0
- data/spec/fixtures/real_world/frameworks/core_files/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/core_photos/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/shared/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +26 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/README +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/apps/test_runner/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/core.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/debug/debug-resource.html +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/debug/sample_debug.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/demo2.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/debug/sample_debug-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.css +4 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.html +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo2.sass +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.haml +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.html.erb +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.rhtml +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/fixtures/sample_fixtures-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/has_require.css +4 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_require.css +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_sc_resource.rhtml +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/protocols/sample-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.css +6 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.rhtml +3 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/strings.js +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/tests/sample-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample-json-fixture.json +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample_fixtures.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/application/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/costello/core.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/data_store/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/debug/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/desktop/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/empty_theme/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/foundation/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/mobile/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/qunit/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/uploader/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/french-resource.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/strings.js +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/german-resource.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/strings.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/has_require.js +4 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/lib/index.html +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/no_require.js +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/protocols/sample.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/sc_resource.js +6 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample1.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample2.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.rhtml +1 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/themes/standard_theme/README +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/views/view.js +1 -0
- data/spec/fixtures/real_world/generators/sample_custom/Buildfile +0 -0
- data/spec/fixtures/real_world/generators/sample_custom/templates/{filename}.js +1 -0
- data/spec/fixtures/recursive_project/Buildfile +8 -0
- data/spec/fixtures/recursive_project/frameworks/sproutcore/frameworks/costello/PLACEHOLDER +0 -0
- data/spec/lib/builders/combine_spec.rb +67 -0
- data/spec/lib/builders/html_spec.rb +577 -0
- data/spec/lib/builders/javascript_spec.rb +81 -0
- data/spec/lib/builders/sass_spec.rb +43 -0
- data/spec/lib/builders/spec_helper.rb +30 -0
- data/spec/lib/builders/strings_spec.rb +52 -0
- data/spec/lib/builders/stylesheet_spec.rb +63 -0
- data/spec/lib/builders/test_index_spec.rb +44 -0
- data/spec/lib/builders/test_spec.rb +135 -0
- data/spec/lib/buildfile/config_for_spec.rb +81 -0
- data/spec/lib/buildfile/define_spec.rb +59 -0
- data/spec/lib/buildfile/dup_spec.rb +65 -0
- data/spec/lib/buildfile/invoke_spec.rb +130 -0
- data/spec/lib/buildfile/load_spec.rb +49 -0
- data/spec/lib/buildfile/task/dup_spec.rb +55 -0
- data/spec/lib/buildfile/task_defined_spec.rb +17 -0
- data/spec/lib/buildfile_commands/build_task_spec.rb +19 -0
- data/spec/lib/buildfile_commands/config_spec.rb +97 -0
- data/spec/lib/buildfile_commands/import_spec.rb +17 -0
- data/spec/lib/buildfile_commands/namespace_spec.rb +18 -0
- data/spec/lib/buildfile_commands/proxies_spec.rb +38 -0
- data/spec/lib/buildfile_commands/replace_task_spec.rb +29 -0
- data/spec/lib/buildfile_commands/task_spec.rb +36 -0
- data/spec/lib/helpers/packing_optimizer/optimize_spec.rb +26 -0
- data/spec/lib/models/hash_struct/deep_clone_spec.rb +27 -0
- data/spec/lib/models/hash_struct/has_options_spec.rb +32 -0
- data/spec/lib/models/hash_struct/hash_spec.rb +64 -0
- data/spec/lib/models/hash_struct/merge_spec.rb +26 -0
- data/spec/lib/models/hash_struct/method_missing.rb +41 -0
- data/spec/lib/models/manifest/add_entry_spec.rb +36 -0
- data/spec/lib/models/manifest/add_transform_spec.rb +90 -0
- data/spec/lib/models/manifest/build_spec.rb +78 -0
- data/spec/lib/models/manifest/entry_for_spec.rb +94 -0
- data/spec/lib/models/manifest/find_entry.rb +84 -0
- data/spec/lib/models/manifest/prepare_spec.rb +62 -0
- data/spec/lib/models/manifest_entry/cacheable_url_spec.rb +31 -0
- data/spec/lib/models/manifest_entry/prepare_spec.rb +54 -0
- data/spec/lib/models/project/add_target_spec.rb +44 -0
- data/spec/lib/models/project/buildfile_spec.rb +35 -0
- data/spec/lib/models/project/find_targets_for_spec.rb +77 -0
- data/spec/lib/models/project/load_nearest_project_spec.rb +23 -0
- data/spec/lib/models/project/target_for_spec.rb +33 -0
- data/spec/lib/models/project/targets_spec.rb +62 -0
- data/spec/lib/models/target/compute_build_number_spec.rb +125 -0
- data/spec/lib/models/target/config_spec.rb +30 -0
- data/spec/lib/models/target/expand_required_targets_spec.rb +48 -0
- data/spec/lib/models/target/installed_languages_spec.rb +47 -0
- data/spec/lib/models/target/lproj_for_spec.rb +38 -0
- data/spec/lib/models/target/manifest_for_spec.rb +42 -0
- data/spec/lib/models/target/parent_target_spec.rb +21 -0
- data/spec/lib/models/target/prepare_spec.rb +53 -0
- data/spec/lib/models/target/required_targets_spec.rb +119 -0
- data/spec/lib/models/target/target_for_spec.rb +56 -0
- data/spec/lib/tools/build_number_spec.rb +28 -0
- data/spec/lib/tools/gen_spec.rb +207 -0
- data/spec/lib/tools/tools_spec.rb +78 -0
- data/spec/spec_helper.rb +138 -0
- data/sproutcore.gemspec +47 -0
- data/vendor/github_gem_lint.rb +22 -0
- data/vendor/yui-compressor/yuicompressor-2.4.2.jar +0 -0
- metadata +1084 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::ManifestEntry, 'timestamp_url' do
|
4
|
+
|
5
|
+
include SC::SpecHelpers
|
6
|
+
|
7
|
+
before do
|
8
|
+
@project = fixture_project(:real_world)
|
9
|
+
@target = @project.target_for :contacts
|
10
|
+
@manifest = @target.manifest_for(:language => :en)
|
11
|
+
|
12
|
+
# create entry manually to avoid calling prepare
|
13
|
+
@entry = SC::ManifestEntry.new @manifest,
|
14
|
+
:filename => "filename",
|
15
|
+
:url => "foo",
|
16
|
+
:source_path => "imaginary" / "path"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should return url itself if timestamp_url config is false" do
|
20
|
+
@target.config.timestamp_urls = false # preconditon
|
21
|
+
@entry.cacheable_url.should == 'foo'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should return url with timestamp token appended as query string if timestamp_url is true" do
|
25
|
+
@target.config.timestamp_urls = true # preconditon
|
26
|
+
@entry.timestamp.should_not be_blank # preconditon
|
27
|
+
@entry.cacheable_url.should == "foo?#{@entry.timestamp}"
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::ManifestEntry, 'prepare!' do
|
4
|
+
|
5
|
+
include SC::SpecHelpers
|
6
|
+
|
7
|
+
before do
|
8
|
+
@project = fixture_project(:real_world)
|
9
|
+
@target = @project.target_for :contacts
|
10
|
+
|
11
|
+
@target.buildfile.define! do
|
12
|
+
replace_task 'entry:prepare' do
|
13
|
+
ENTRY.task_did_run = (ENTRY.task_did_run || 0) + 1
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
@manifest = @target.manifest_for(:language => :en)
|
18
|
+
|
19
|
+
# create entry manually to avoid calling prepare
|
20
|
+
@entry = SC::ManifestEntry.new(@manifest, :filename => "filename")
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return self" do
|
24
|
+
@entry.prepare!.should eql(@entry)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should execute entry:prepare if defined" do
|
28
|
+
@entry.prepared?.should be_false # check precondition
|
29
|
+
@entry.prepare!
|
30
|
+
@entry.prepared?.should be_true
|
31
|
+
@entry.task_did_run.should eql(1) # ran?
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should do nothing if entry:prepare is not defined" do
|
35
|
+
|
36
|
+
# get an empty project with no build tasks...
|
37
|
+
project = empty_project
|
38
|
+
project.add_target '/default', :default, :source_root => project.project_root
|
39
|
+
target = project.targets['/default']
|
40
|
+
target.buildfile.lookup('entry:prepare').should be_nil
|
41
|
+
manifest = target.manifest_for :language => :en
|
42
|
+
entry = SC::ManifestEntry.new(manifest, :filename => 'filename')
|
43
|
+
lambda { entry.prepare! }.should_not raise_error
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should execute entry:prepare only once" do
|
48
|
+
@entry.prepared?.should be_false # check precondition
|
49
|
+
@entry.prepare!.prepare!.prepare!
|
50
|
+
@entry.prepared?.should be_true
|
51
|
+
@entry.task_did_run.should eql(1) # ran only once?
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::Project, 'add_target' do
|
4
|
+
|
5
|
+
include SC::SpecHelpers
|
6
|
+
|
7
|
+
before do
|
8
|
+
@project = SC::Project.new fixture_path('buildfiles', 'empty_project')
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should add a target with the passed name" do
|
12
|
+
@project.add_target :target_name, :target_type
|
13
|
+
target = @project.targets[:target_name]
|
14
|
+
target.should_not be_nil
|
15
|
+
target.target_name.should eql(:target_name)
|
16
|
+
target.target_type.should eql(:target_type)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should set the target.project automatically" do
|
20
|
+
@project.add_target :target_name, :target_type
|
21
|
+
@project.targets[:target_name].project.should eql(@project)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should set any other passed options on the target itself" do
|
25
|
+
@project.add_target :target_name, :target_type, :foo => :foo, :bar => :bar
|
26
|
+
target = @project.targets[:target_name]
|
27
|
+
|
28
|
+
target.should_not be_nil
|
29
|
+
target.foo.should eql(:foo)
|
30
|
+
target.bar.should eql(:bar)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should replace an existing target if defined" do
|
34
|
+
@project.add_target :test1, :dummy
|
35
|
+
target1 = @project.targets[:test1]
|
36
|
+
|
37
|
+
@project.add_target :test1, :dummy2
|
38
|
+
target2 = @project.targets[:test1]
|
39
|
+
|
40
|
+
target2.should_not eql(target1)
|
41
|
+
target2.target_type.should eql(:dummy2)
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::Project, 'buildfile' do
|
4
|
+
|
5
|
+
include SC::SpecHelpers
|
6
|
+
|
7
|
+
it "should return a new, empty buildfile if no Buildfile can be found in the project" do
|
8
|
+
project = SC::Project.new fixture_path('buildfiles', 'empty_project')
|
9
|
+
puts project.buildfile.loaded_paths
|
10
|
+
project.buildfile.loaded_paths.size.should eql(0)
|
11
|
+
project.buildfile.tasks.size.should eql(0)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should load a buildfile if one is found in project_root" do
|
15
|
+
project = SC::Project.new fixture_path('buildfiles', 'installed')
|
16
|
+
project.buildfile.loaded_paths.size.should eql(1)
|
17
|
+
project.buildfile.tasks.size.should eql(2)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should load all files matching SC.env.buildfile_names" do
|
21
|
+
SC.env.buildfile_names = ['Buildfile', 'Buildfile2']
|
22
|
+
project = SC::Project.new fixture_path('buildfiles', 'installed')
|
23
|
+
project.buildfile.loaded_paths.size.should eql(2)
|
24
|
+
SC.env.delete :buildfile_names
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should merge over top of a parent project buildfile if there is one" do
|
28
|
+
installed = SC::Project.new fixture_path('buildfiles', 'installed')
|
29
|
+
basic = SC::Project.new fixture_path('buildfiles', 'basic'), :parent => installed
|
30
|
+
basic.buildfile.lookup(:installed_task).should_not be_nil
|
31
|
+
basic.buildfile.lookup(:test_task1).should_not be_nil
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::Project, 'find_targets_for' do
|
4
|
+
|
5
|
+
include SC::SpecHelpers
|
6
|
+
|
7
|
+
# path for a target inside fixtures for this test
|
8
|
+
def target_path(*args)
|
9
|
+
fixture_path(*args.unshift('find_targets'))
|
10
|
+
end
|
11
|
+
|
12
|
+
# Should be a hash of target type -> array of expected target names
|
13
|
+
def expect_targets(targets, expected_targets = {})
|
14
|
+
known_targets = targets.keys
|
15
|
+
expected_targets.each do | target_type, expected |
|
16
|
+
expected.each do |target_name|
|
17
|
+
target_name = target_name.to_sym
|
18
|
+
known_targets.should include(target_name)
|
19
|
+
targets[target_name].target_type.should eql(target_type)
|
20
|
+
known_targets.delete target_name
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should search recursively for apps, clients, themes, and frameworks dirs with standard options -- also should ignore CaSeOfDir" do
|
26
|
+
|
27
|
+
project = SC::Project.new(target_path('standard'), :parent => builtin_project)
|
28
|
+
|
29
|
+
# verify preconditions
|
30
|
+
target_types = project.config.target_types
|
31
|
+
target_types.size.should eql(4)
|
32
|
+
target_types[:apps].should eql(:app)
|
33
|
+
target_types[:clients].should eql(:app)
|
34
|
+
target_types[:frameworks].should eql(:framework)
|
35
|
+
target_types[:themes].should eql(:theme)
|
36
|
+
project.config.allow_nested_targets.should be_true
|
37
|
+
|
38
|
+
# Note, this expectation assumes the fixtures in find_targets/standard has
|
39
|
+
# the following:
|
40
|
+
# - different cases (see Apps + apps dirs)
|
41
|
+
# - an apps, clients, and frameworks directory
|
42
|
+
# - multiple targets in same dir (see framework1, framework2)
|
43
|
+
# - nesting one type inside another (see app1/framework1, app1/fmwk2)
|
44
|
+
# - nesting same type inside another (see framework1/framework1)
|
45
|
+
#
|
46
|
+
expect_targets project.targets,
|
47
|
+
:app => %w(/app1 /client1),
|
48
|
+
:framework => %w(/framework1 /framework2 /app1/framework1 /app1/framework2 /framework1/framework1),
|
49
|
+
:theme => %w(/theme1 /theme2)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should find targets based on target_types hash, including overrides in target Buildfiles" do
|
53
|
+
|
54
|
+
project = SC::Project.new(target_path('custom'))
|
55
|
+
|
56
|
+
# NOTE: find_targets_spec/custom/Buildfile defines foo & bar types
|
57
|
+
# custom/foos/custom_foos/Buildfiels overrides.
|
58
|
+
expect_targets project.targets,
|
59
|
+
:foo => %w(/foo1 /custom_foos /custom_foos/foo1 /custom_foos/foo2 /bar1/foo1 /bar1/foo2),
|
60
|
+
:bar => %w(/bar1 /bar1/bar1 /bar1/bar2 /foo1/bar1 /foo1/bar2)
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should recursively find targets unless allows_nested_targets = false; should respect overrides in Buildfiles" do
|
65
|
+
|
66
|
+
project = SC::Project.new(target_path('nested'))
|
67
|
+
|
68
|
+
# NOTE: find_targets_spec/custom/Buildfile defines foo & bar types
|
69
|
+
# custom/foos/custom_foos/Buildfiels overrides.
|
70
|
+
expect_targets project.targets,
|
71
|
+
:app => %w(/app1)
|
72
|
+
project.targets['/app1/nested_app'].should be_nil
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
end
|
77
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::Project, 'load_nearest_project' do
|
4
|
+
|
5
|
+
include SC::SpecHelpers
|
6
|
+
|
7
|
+
it "should find the highest-level directory with a Buildfile" do
|
8
|
+
# Note: since the fixtures live INSIDE the source directory and the
|
9
|
+
# source directory contains a Buildfile, the _proper_ result here is to
|
10
|
+
# actually return the top-level directory...
|
11
|
+
project = SC::Project.load_nearest_project fixture_path('buildfiles', 'basic')
|
12
|
+
project.project_root.should eql(fixture_path('..', '..'))
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should stop if it finds a Buildfile with project! set" do
|
16
|
+
project = SC::Project.load_nearest_project fixture_path('buildfiles', 'project_test', 'not_project', 'child')
|
17
|
+
|
18
|
+
# The Buildfile at project_test indicates that it is a project -- so it
|
19
|
+
# should stop searching here...
|
20
|
+
project.project_root.should eql(fixture_path('buildfiles', 'project_test'))
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::Project, 'target_for' do
|
4
|
+
|
5
|
+
include SC::SpecHelpers
|
6
|
+
|
7
|
+
before do
|
8
|
+
@project = fixture_project(:real_world)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should lookup absolute target names (/foo) from the top" do
|
12
|
+
target = @project.target_for('/sproutcore')
|
13
|
+
target.should_not be_nil
|
14
|
+
target.target_name.to_s.should eql('/sproutcore')
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should lookup relative target names from the top (like absolute)" do
|
18
|
+
target = @project.target_for(:sproutcore)
|
19
|
+
target.should_not be_nil
|
20
|
+
target.target_name.to_s.should eql('/sproutcore')
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return nil if no matching target could be found" do
|
24
|
+
target = @project.target_for(:does_not_exist)
|
25
|
+
target.should be_nil
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should NOT call prepare! on new targets" do
|
29
|
+
target = @project.target_for(:contacts)
|
30
|
+
target.prepared?.should be_false
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::Project, 'targets' do
|
4
|
+
|
5
|
+
include SC::SpecHelpers
|
6
|
+
|
7
|
+
it "should clone targets from a parent project" do
|
8
|
+
|
9
|
+
# Generate a dummy class to manually add a target. This way we isolate
|
10
|
+
# the tests for merging from tests of finding targets...
|
11
|
+
test_project = Class.new(SC::Project) do
|
12
|
+
def find_targets_for(root_path, root_name, config)
|
13
|
+
self.add_target :base1, :dummy_type, { :source_root => "foo" }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
parent = test_project.new fixture_path('buildfiles', 'empty_project')
|
17
|
+
|
18
|
+
# Now generate a real project with an empty path. This should clone
|
19
|
+
# targets from the parent...
|
20
|
+
project = SC::Project.new fixture_path('buildfiles', 'empty_project'), :parent => parent
|
21
|
+
project.targets.size.should eql(1)
|
22
|
+
|
23
|
+
t = project.targets['base1']
|
24
|
+
t.target_name.should == :base1
|
25
|
+
t.target_type.should == :dummy_type
|
26
|
+
t.source_root.should == "foo"
|
27
|
+
end
|
28
|
+
|
29
|
+
# We want to test this because find_targets_for() is a callback we expect
|
30
|
+
# people who customize the build tools to override.
|
31
|
+
it "should invoke the find_targets_for method on itself" do
|
32
|
+
|
33
|
+
# Generate dummy class with custom find_targets_for.
|
34
|
+
test_project = Class.new(SC::Project) do
|
35
|
+
|
36
|
+
attr_reader :did_call_find_targets_for
|
37
|
+
attr_reader :passed_root_path
|
38
|
+
attr_reader :passed_root_name
|
39
|
+
attr_reader :passed_config
|
40
|
+
|
41
|
+
def find_targets_for(root_path, root_name, config)
|
42
|
+
@did_call_find_targets_for = true
|
43
|
+
@passed_root_path = root_path
|
44
|
+
@passed_root_name = root_name
|
45
|
+
@passed_config = config
|
46
|
+
return self
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# create project & get targets
|
51
|
+
project = test_project.new fixture_path('buildfiles', 'empty_project')
|
52
|
+
project.targets.size.should eql(0)
|
53
|
+
|
54
|
+
# verify that callback method was run
|
55
|
+
project.did_call_find_targets_for.should be_true
|
56
|
+
project.passed_root_path.should eql(project.project_root)
|
57
|
+
project.passed_root_name.should be_nil
|
58
|
+
project.passed_config.should eql(project.config)
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
@@ -0,0 +1,125 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
require 'tempfile'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
describe SC::Target, 'compute_build_number' do
|
6
|
+
|
7
|
+
include SC::SpecHelpers
|
8
|
+
|
9
|
+
before do
|
10
|
+
@project = temp_project(:real_world)
|
11
|
+
end
|
12
|
+
|
13
|
+
after do
|
14
|
+
@project.cleanup
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_dummyfile(project)
|
18
|
+
file = File.new(File.join(project.source_root, 'dummyfile'), 'w')
|
19
|
+
file.write "TEST!"
|
20
|
+
file.close
|
21
|
+
end
|
22
|
+
|
23
|
+
it "uses the config.build_number if specified for the target" do
|
24
|
+
# add build number for target to general buildfile
|
25
|
+
@project.buildfile.define! do
|
26
|
+
config :sproutcore, :build_number => 'foo'
|
27
|
+
end
|
28
|
+
target = @project.target_for(:sproutcore)
|
29
|
+
target.compute_build_number.should eql('foo')
|
30
|
+
end
|
31
|
+
|
32
|
+
it "uses the config.build_numbers.target_name if specified" do
|
33
|
+
# add a build_numbers hash
|
34
|
+
@project.buildfile.define! do
|
35
|
+
config :all, :build_numbers => { '/sproutcore' => 'foo' }
|
36
|
+
end
|
37
|
+
target = @project.target_for(:sproutcore)
|
38
|
+
target.compute_build_number.should eql('foo')
|
39
|
+
end
|
40
|
+
|
41
|
+
it "uses config.build_numbers.target_name, even if specified with symbols" do
|
42
|
+
@project.buildfile.define! do
|
43
|
+
config :all, :build_numbers => { :'/sproutcore' => :foo }
|
44
|
+
end
|
45
|
+
target = @project.target_for(:sproutcore)
|
46
|
+
target.compute_build_number.should eql('foo')
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
describe "accurate method to compute build number" do
|
51
|
+
|
52
|
+
before do
|
53
|
+
@target = @project.target_for(:sproutcore)
|
54
|
+
@target.config.build_numbers = nil #precondition
|
55
|
+
@target.config.build_number = nil #precondition
|
56
|
+
end
|
57
|
+
|
58
|
+
it "generates a unique build number based on content if nothing is explicitly set" do
|
59
|
+
@target.compute_build_number.should_not be_nil
|
60
|
+
end
|
61
|
+
|
62
|
+
it "changes its generated build number if contents of source files change" do
|
63
|
+
old_build_number = @target.compute_build_number
|
64
|
+
|
65
|
+
# write an extra file into target for testing
|
66
|
+
add_dummyfile(@target)
|
67
|
+
|
68
|
+
# get new build number
|
69
|
+
new_build_number = @target.compute_build_number
|
70
|
+
new_build_number.should_not eql(old_build_number)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
it "changes generated build number if build number for a required target changes" do
|
75
|
+
target = @project.target_for(:sproutcore)
|
76
|
+
target.should_not be_nil
|
77
|
+
|
78
|
+
required = target.target_for(:desktop)
|
79
|
+
required.should_not be_nil
|
80
|
+
required.config.build_numbers = nil #precondition
|
81
|
+
required.config.build_number = nil #precondition
|
82
|
+
|
83
|
+
target.config.build_numbers = nil #precondition
|
84
|
+
target.config.build_number = nil #precondition
|
85
|
+
target.required_targets.should include(required) #precondition
|
86
|
+
|
87
|
+
old_build_number = target.compute_build_number
|
88
|
+
|
89
|
+
# write an extra file into required target for testing -- changes number
|
90
|
+
add_dummyfile(required)
|
91
|
+
|
92
|
+
# get new build number
|
93
|
+
new_build_number = target.compute_build_number
|
94
|
+
new_build_number.should_not eql(old_build_number)
|
95
|
+
end
|
96
|
+
|
97
|
+
it "does not change generated build number if a nested target that is not required by target changes" do
|
98
|
+
target = @project.target_for(:sproutcore)
|
99
|
+
target.should_not be_nil
|
100
|
+
|
101
|
+
not_required = target.target_for(:mobile)
|
102
|
+
not_required.should_not be_nil
|
103
|
+
|
104
|
+
#precondition
|
105
|
+
target.expand_required_targets.should_not include(not_required)
|
106
|
+
|
107
|
+
target = @project.target_for(:sproutcore)
|
108
|
+
old_build_number = target.compute_build_number
|
109
|
+
|
110
|
+
# write an extra file into required target for testing -- changes number
|
111
|
+
add_dummyfile(not_required)
|
112
|
+
|
113
|
+
# get new build number
|
114
|
+
new_build_number = target.compute_build_number
|
115
|
+
new_build_number.should eql(old_build_number)
|
116
|
+
end
|
117
|
+
|
118
|
+
it "recursively required project should not cause an error" do
|
119
|
+
recursive = fixture_project(:recursive_project)
|
120
|
+
target = recursive.target_for :sproutcore
|
121
|
+
lambda { target.compute_build_number }.should_not raise_error
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
125
|
+
|