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,19 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::Buildfile::Commands, 'build_task' do
|
4
|
+
|
5
|
+
it "should add a new task to the buildfile" do
|
6
|
+
b = SC::Buildfile.define do
|
7
|
+
build_task :task1
|
8
|
+
end
|
9
|
+
b.task_defined?(:task1).should_not be_nil
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should add a new task with class BuilTask" do
|
13
|
+
b = SC::Buildfile.define do
|
14
|
+
build_task :task1
|
15
|
+
end
|
16
|
+
b.lookup(:task1).class.should eql(SC::Buildfile::BuildTask)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
|
+
|
3
|
+
# The config helper can be used in a Buildfile to specify config options
|
4
|
+
# targeted at specific bundle names.
|
5
|
+
#
|
6
|
+
# -- Note that we use the Buildfile.define() method to prepare these tests
|
7
|
+
# but you can also use these in Buildfiles using the Buildfile.load() method.
|
8
|
+
# The tests for those two method ensure that both approaches are identical.
|
9
|
+
#
|
10
|
+
describe SC::Buildfile::Commands, 'config' do
|
11
|
+
|
12
|
+
it "should add the named config to the default mode when first defined" do
|
13
|
+
a = SC::Buildfile.define do
|
14
|
+
config :test1, :foo => :bar
|
15
|
+
end
|
16
|
+
|
17
|
+
configs = a.configs
|
18
|
+
|
19
|
+
configs.all['/test1'].should_not be_nil
|
20
|
+
configs.all['/test1'].foo.should eql(:bar)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should merge options when same config is named mode than once" do
|
24
|
+
a = SC::Buildfile.define do
|
25
|
+
config :test1, :test1 => :foo, :test2 => :foo
|
26
|
+
config :test1, :test1 => :bar
|
27
|
+
end
|
28
|
+
|
29
|
+
configs = a.configs
|
30
|
+
configs.all['/test1'].test1.should eql(:bar)
|
31
|
+
configs.all['/test1'].test2.should eql(:foo)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should both accept an options hash, accept a block, or both" do
|
35
|
+
a = SC::Buildfile.define do
|
36
|
+
config :test1, :foo => :bar
|
37
|
+
end
|
38
|
+
|
39
|
+
b = SC::Buildfile.define do
|
40
|
+
config :test1 do |c|
|
41
|
+
c[:foo] = :bar
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
c = SC::Buildfile.define do
|
46
|
+
config :test1, :test1 => :foo, :test2 => :foo do |c|
|
47
|
+
c[:test1] = :bar
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
a.configs.all['/test1'].foo.should eql(:bar)
|
52
|
+
b.configs.all['/test1'].foo.should eql(:bar)
|
53
|
+
c.configs.all['/test1'].test1.should eql(:bar)
|
54
|
+
c.configs.all['/test1'].test2.should eql(:foo)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should allow OpenStruct-style setting of configs when passed to block" do
|
58
|
+
a = SC::Buildfile.define do
|
59
|
+
config :test1 do |c|
|
60
|
+
c.foo = :bar
|
61
|
+
end
|
62
|
+
end
|
63
|
+
a.configs.all['/test1'].foo.should eql(:bar)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should merge configs on top of a base buildfile configs without changing the root config" do
|
67
|
+
a = SC::Buildfile.define do
|
68
|
+
config :bundle, :test1 => :foo, :test2 => :foo
|
69
|
+
end
|
70
|
+
|
71
|
+
b = a.dup.define! do
|
72
|
+
config :bundle, :test1 => :bar
|
73
|
+
end
|
74
|
+
|
75
|
+
b.configs.all['/bundle'].test1.should eql(:bar)
|
76
|
+
b.configs.all['/bundle'].test2.should eql(:foo)
|
77
|
+
|
78
|
+
a.configs.all['/bundle'].test1.should eql(:foo)
|
79
|
+
a.configs.all['/bundle'].test2.should eql(:foo)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should store configs inside of a specific mode when specified" do
|
83
|
+
a = SC::Buildfile.define do
|
84
|
+
mode :debug do
|
85
|
+
config :bundle, :foo => :foo
|
86
|
+
end
|
87
|
+
config :bundle, :bar => :bar
|
88
|
+
end
|
89
|
+
|
90
|
+
a.configs.all['/bundle'].bar.should eql(:bar)
|
91
|
+
a.configs.all['/bundle'].foo.should be_nil
|
92
|
+
|
93
|
+
a.configs.debug['/bundle'].bar.should be_nil
|
94
|
+
a.configs.debug['/bundle'].foo.should eql(:foo)
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::Buildfile::Commands, 'import' do
|
4
|
+
|
5
|
+
include SC::SpecHelpers
|
6
|
+
|
7
|
+
it "should import any tasks defined by the import" do
|
8
|
+
buildfile1_path = fixture_path('buildfiles', 'installed', 'Buildfile')
|
9
|
+
buildfile2_path = fixture_path('buildfiles', 'installed', 'Buildfile2')
|
10
|
+
b = SC::Buildfile.define do
|
11
|
+
import buildfile1_path, buildfile2_path
|
12
|
+
end
|
13
|
+
b.task_defined?(:installed_task).should be_true
|
14
|
+
b.task_defined?(:installed_task2).should be_true
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::Buildfile::Commands, 'namespace' do
|
4
|
+
|
5
|
+
it "should define tasks as part of namespace" do
|
6
|
+
b = SC::Buildfile.define do
|
7
|
+
namespace :foo do
|
8
|
+
task :task1
|
9
|
+
end
|
10
|
+
|
11
|
+
task :task2
|
12
|
+
end
|
13
|
+
b.task_defined?('foo:task1').should be_true
|
14
|
+
b.task_defined?(:task2).should be_true
|
15
|
+
b.task_defined?('foo:task2').should be_false
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
|
+
|
3
|
+
# The proxy helper defines proxy settings that can be used with sc-server
|
4
|
+
describe SC::Buildfile::Commands, 'proxy' do
|
5
|
+
|
6
|
+
it "should save the opts for a new proxy" do
|
7
|
+
b = SC::Buildfile.define do
|
8
|
+
proxy '/url', :foo => :bar
|
9
|
+
end
|
10
|
+
b.proxies['/url'].foo.should eql(:bar)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should save the REPLACE opts for multiple calls to proxy" do
|
14
|
+
b = SC::Buildfile.define do
|
15
|
+
proxy '/url', :test1 => :foo, :test2 => :foo
|
16
|
+
proxy '/url', :test1 => :bar
|
17
|
+
end
|
18
|
+
b.proxies['/url'].test1.should eql(:bar)
|
19
|
+
b.proxies['/url'].test2.should be_nil
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should merge multiple proxy urls and REPLACE opts for chained files" do
|
23
|
+
a = SC::Buildfile.define do
|
24
|
+
proxy '/url1', :test1 => :foo, :test2 => :foo
|
25
|
+
proxy '/url2', :test1 => :foo
|
26
|
+
end
|
27
|
+
|
28
|
+
b = a.dup.define! do
|
29
|
+
proxy '/url1', :test1 => :bar
|
30
|
+
end
|
31
|
+
|
32
|
+
b.proxies['/url1'].test1.should eql(:bar)
|
33
|
+
b.proxies['/url1'].test2.should be_nil
|
34
|
+
b.proxies['/url2'].test1.should eql(:foo)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::Buildfile::Commands, 'task' do
|
4
|
+
|
5
|
+
it "should add a new task to the buildfile" do
|
6
|
+
b = SC::Buildfile.define do
|
7
|
+
replace_task :task1
|
8
|
+
end
|
9
|
+
b.task_defined?(:task1).should_not be_nil
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should replace an existing task completely if defined" do
|
13
|
+
results = {}
|
14
|
+
b = SC::Buildfile.define do
|
15
|
+
task :task1 do
|
16
|
+
RESULTS[:foo] = :original
|
17
|
+
end
|
18
|
+
|
19
|
+
replace_task :task1 do
|
20
|
+
RESULTS[:foo] = :replaced
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
b.invoke :task1, :results => results
|
25
|
+
|
26
|
+
results[:foo].should eql(:replaced)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::Buildfile::Commands, 'task' do
|
4
|
+
|
5
|
+
it "should add a new task to the buildfile" do
|
6
|
+
b = SC::Buildfile.define do
|
7
|
+
task :task1
|
8
|
+
end
|
9
|
+
b.task_defined?(:task1).should_not be_nil
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should add a new task with a dependency if specified" do
|
13
|
+
b = SC::Buildfile.define do
|
14
|
+
task :task1 => :task2
|
15
|
+
end
|
16
|
+
b.lookup(:task1).prerequisites.first.should eql('task2')
|
17
|
+
end
|
18
|
+
|
19
|
+
it "extend an existing task by adding the second action if defined" do
|
20
|
+
results = {}
|
21
|
+
b = SC::Buildfile.define do
|
22
|
+
task :task1 do
|
23
|
+
RESULTS[:foo] = true
|
24
|
+
end
|
25
|
+
|
26
|
+
task :task1 do
|
27
|
+
RESULTS[:bar] = true
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
b.invoke :task1, :results => results
|
32
|
+
results[:foo].should be_true
|
33
|
+
results[:bar].should be_true
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::Target, 'pack optimize !!!' do
|
4
|
+
|
5
|
+
include SC::SpecHelpers
|
6
|
+
|
7
|
+
before do
|
8
|
+
@project = temp_project :real_world
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
it "Returns two arrays: targets that should be loaded packed, Targets that should be loaded but not packed. In this case it should return one packed and 0 unpacked" do
|
13
|
+
target = @project.target_for 'sproutcore/application'
|
14
|
+
packed, unpacked = SC::Helpers::PackedOptimizer.optimize(target.required_targets)
|
15
|
+
(packed.size + unpacked.size).should eql(1)
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
it "Returns two arrays: targets that should be loaded packed, Targets that should be loaded but not packed. In this case there shouln't be any packed target" do
|
20
|
+
target = @project.target_for 'sproutcore'
|
21
|
+
packed, unpacked = SC::Helpers::PackedOptimizer.optimize(target.required_targets)
|
22
|
+
unpacked.size.should eql(1)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::HashStruct, 'deep_clone' do
|
4
|
+
|
5
|
+
it "should deep_clone any objects that respond to deep_clone" do
|
6
|
+
a = SC::HashStruct.new
|
7
|
+
a[:b] = SC::HashStruct.new :c => :d
|
8
|
+
|
9
|
+
e = a.deep_clone
|
10
|
+
e[:b][:c] = :f
|
11
|
+
|
12
|
+
e[:b][:c].should eql(:f)
|
13
|
+
a[:b][:c].should eql(:d)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should clone any objects that respond to clone" do
|
17
|
+
a = SC::HashStruct.new
|
18
|
+
a[:b] = [1,2,3]
|
19
|
+
|
20
|
+
b = a.deep_clone
|
21
|
+
b[:b][0] = 4
|
22
|
+
|
23
|
+
a[:b][0].should eql(1)
|
24
|
+
b[:b][0].should eql(4)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::HashStruct, 'has_options?' do
|
4
|
+
|
5
|
+
include SC::SpecHelpers
|
6
|
+
|
7
|
+
before do
|
8
|
+
@hash = SC::HashStruct.new :foo => :foo, :bar => :bar
|
9
|
+
end
|
10
|
+
|
11
|
+
it "always returns true if passed match is empty or nil" do
|
12
|
+
@hash.has_options?.should be_true
|
13
|
+
@hash.has_options?({}).should be_true
|
14
|
+
end
|
15
|
+
|
16
|
+
it "returns true if every key/value pair in passed value set matches" do
|
17
|
+
@hash.has_options?(:foo => :foo, :bar => :bar).should be_true
|
18
|
+
end
|
19
|
+
|
20
|
+
it "returns false if any key/value pair in passed value set does not match" do
|
21
|
+
@hash.has_options?(:foo => :foo, :bar => :no_match).should be_false
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns false if any key/value pair does not exist in hash" do
|
25
|
+
@hash.has_options?(:imaginary => true).should be_false
|
26
|
+
end
|
27
|
+
|
28
|
+
it "returns treats strings + symbols the same for keys" do
|
29
|
+
@hash.has_options?('foo' => :foo, 'bar' => :bar).should be_true
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::HashStruct, 'hash operations' do
|
4
|
+
|
5
|
+
include SC::SpecHelpers
|
6
|
+
|
7
|
+
it "should allow arbitrary keys to be set/read using hash methods" do
|
8
|
+
e = SC::HashStruct.new
|
9
|
+
e[:foo] = :bar
|
10
|
+
e[:foo].should eql(:bar)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should set any hash options passed to new" do
|
14
|
+
e = SC::HashStruct.new :foo => :bar
|
15
|
+
e[:foo].should eql(:bar)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should read any missing methods from the hash" do
|
19
|
+
e = SC::HashStruct.new :foo => :bar
|
20
|
+
e.foo.should eql(:bar)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should write missing methods ending in = to the hash" do
|
24
|
+
e = SC::HashStruct.new
|
25
|
+
e.foo = :bar
|
26
|
+
e[:foo].should eql(:bar)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should treat string and hash keys as the same" do
|
30
|
+
e = SC::HashStruct.new
|
31
|
+
e['foo'] = :bar
|
32
|
+
e[:foo].should eql(:bar)
|
33
|
+
|
34
|
+
e[:foo2] = :bar
|
35
|
+
e['foo2'].should eql(:bar)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should convert all keys to symbols (i.e. if you get keys, they will always be symbols)" do
|
39
|
+
e = SC::HashStruct.new
|
40
|
+
e['string'] = :foo
|
41
|
+
e[:symbol] = :foo
|
42
|
+
|
43
|
+
expected = [:string, :symbol]
|
44
|
+
idx=0
|
45
|
+
e.keys.sort { |a,b| a.to_s <=> b.to_s }.each do |k|
|
46
|
+
k.should eql(expected[idx])
|
47
|
+
idx += 1
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should raise error if key cannot be converted to symbol" do
|
52
|
+
a = SC::HashStruct.new
|
53
|
+
|
54
|
+
# numbers respond to to_sym but return nil
|
55
|
+
lambda { a[1] = :foo }.should raise_error
|
56
|
+
lambda { a[1] }.should raise_error
|
57
|
+
|
58
|
+
# Object does not respond to to_sym
|
59
|
+
lambda { a[Object.new] = :foo }.should raise_error
|
60
|
+
lambda { a[Object.new] }.should raise_error
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. .. spec_helper])
|
2
|
+
|
3
|
+
describe SC::HashStruct, 'merge!' do
|
4
|
+
|
5
|
+
it "should convert all keys to symbols - if symbol and string is passed, they will overrwite" do
|
6
|
+
a = SC::HashStruct.new
|
7
|
+
a.merge! :foo => :bar1, 'foo' => :bar2
|
8
|
+
a.keys.size.should eql(1)
|
9
|
+
a.keys.first.should eql(:foo)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should do nothing if we merge self!" do
|
13
|
+
a = SC::HashStruct.new :foo => :bar
|
14
|
+
a.merge! a
|
15
|
+
a[:foo].should eql(:bar)
|
16
|
+
a.keys.size.should eql(1)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should do nothing if we merge nil" do
|
20
|
+
a = SC::HashStruct.new :foo => :bar
|
21
|
+
lambda { a.merge! nil }.should_not raise_error
|
22
|
+
a[:foo].should eql(:bar)
|
23
|
+
a.keys.size.should eql(1)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|