sproutcore 1.6.0.beta.3-x86-mingw32 → 1.6.0.rc.1-x86-mingw32

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 (280) hide show
  1. data/CHANGELOG +33 -0
  2. data/Rakefile +213 -10
  3. data/VERSION.yml +1 -1
  4. data/lib/Buildfile +5 -1
  5. data/lib/buildtasks/manifest.rake +7 -1
  6. data/lib/frameworks/sproutcore/Buildfile +3 -2
  7. data/lib/frameworks/sproutcore/CHANGELOG.md +154 -1
  8. data/lib/frameworks/sproutcore/README.md +1 -1
  9. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.css +9 -0
  10. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +254 -207
  11. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +243 -172
  12. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +29 -0
  13. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +5 -0
  14. data/lib/frameworks/sproutcore/frameworks/core_foundation/controls/button.js +6 -2
  15. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/bind.js +36 -14
  16. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/collection.js +3 -3
  17. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +14 -15
  18. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +14 -14
  19. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/application.js +2 -7
  20. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +3 -3
  21. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +2 -2
  22. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
  23. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +20 -12
  24. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +61 -0
  25. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +20 -6
  26. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +42 -0
  27. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controls/button.js +39 -57
  28. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +5 -3
  29. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +32 -0
  30. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js +25 -0
  31. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +28 -17
  32. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +396 -0
  33. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view.js +1 -1
  34. data/lib/frameworks/sproutcore/frameworks/core_foundation/{system → views}/bindable_span.js +2 -1
  35. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template_collection.js +78 -51
  36. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +4 -3
  37. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +2 -1
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +233 -67
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +3 -1
  40. data/lib/frameworks/sproutcore/frameworks/core_tools/core.js +8 -2
  41. data/lib/frameworks/sproutcore/frameworks/core_tools/data_source.js +1 -1
  42. data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +1 -1
  43. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +15 -8
  44. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +2 -2
  45. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +1 -0
  46. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +3 -2
  47. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +66 -55
  48. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/data_source.js +190 -0
  49. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +21 -0
  50. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +15 -1
  51. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +0 -1
  52. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +212 -182
  53. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +14 -16
  54. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
  55. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +23 -11
  56. data/lib/frameworks/sproutcore/frameworks/desktop/resources/alert.css +49 -0
  57. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/a_sample_image.jpg +0 -0
  58. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/apple-logo1.jpeg +0 -0
  59. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/iframe.html +0 -0
  60. data/lib/frameworks/sproutcore/frameworks/desktop/resources/disclosure.css +20 -0
  61. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/drag.css +1 -1
  62. data/lib/frameworks/sproutcore/frameworks/desktop/resources/icons.css +214 -0
  63. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/cap.png +0 -0
  64. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/downbutton.png +0 -0
  65. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-16.png +0 -0
  66. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-24.png +0 -0
  67. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-48.png +0 -0
  68. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-bookmark-16.png +0 -0
  69. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-bookmark-24.png +0 -0
  70. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-cancel-24.png +0 -0
  71. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-document-16.png +0 -0
  72. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-document-24.png +0 -0
  73. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-down-24.png +0 -0
  74. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
  75. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-favorite-16.png +0 -0
  76. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-favorite-24.png +0 -0
  77. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-folder-16.png +0 -0
  78. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-folder-24.png +0 -0
  79. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-group-16.png +0 -0
  80. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-group-24.png +0 -0
  81. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-help-16.png +0 -0
  82. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-help-24.png +0 -0
  83. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-16.png +0 -0
  84. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-24.png +0 -0
  85. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-48.png +0 -0
  86. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-left-24.png +0 -0
  87. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-options-16.png +0 -0
  88. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-options-24.png +0 -0
  89. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-redo-24.png +0 -0
  90. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-right-24.png +0 -0
  91. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-tools-24.png +0 -0
  92. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-trash-16.png +0 -0
  93. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-trash-24.png +0 -0
  94. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-undo-24.png +0 -0
  95. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-up-24.png +0 -0
  96. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-user-16.png +0 -0
  97. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-user-24.png +0 -0
  98. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-bottom.png +0 -0
  99. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-center.png +0 -0
  100. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-top.png +0 -0
  101. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/track.png +0 -0
  102. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/upbutton.png +0 -0
  103. data/lib/frameworks/sproutcore/frameworks/desktop/resources/list_item.css +145 -0
  104. data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu.css +10 -0
  105. data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu_item_view.css +88 -0
  106. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/modal.css +3 -4
  107. data/lib/frameworks/sproutcore/frameworks/desktop/resources/panel.css +91 -0
  108. data/lib/frameworks/sproutcore/frameworks/desktop/resources/picker.css +37 -0
  109. data/lib/frameworks/sproutcore/frameworks/desktop/resources/progress.css +29 -0
  110. data/lib/frameworks/sproutcore/frameworks/desktop/resources/radio.css +11 -0
  111. data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +121 -0
  112. data/lib/frameworks/sproutcore/frameworks/desktop/resources/separator.css +20 -0
  113. data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +34 -0
  114. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/split.css +0 -0
  115. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/split_divider.css +0 -0
  116. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/tab.css +0 -0
  117. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/toolbar.css +0 -0
  118. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/touch-scroller.css +13 -13
  119. data/lib/frameworks/sproutcore/frameworks/desktop/resources/well.css +65 -0
  120. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +114 -103
  121. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/static_content.js +3 -2
  122. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +7 -6
  123. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +18 -0
  124. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +4 -7
  125. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +9 -2
  126. data/lib/frameworks/sproutcore/frameworks/desktop/{panes → views}/select_button.js +43 -0
  127. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +35 -33
  128. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +2 -2
  129. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +15 -8
  130. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +4 -7
  131. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +55 -13
  132. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +3 -1
  133. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +7 -7
  134. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/benchmark.css +0 -0
  135. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/blank.gif +0 -0
  136. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/bootstrap.rhtml +0 -0
  137. data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +36 -0
  138. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/checkbox_view.css +0 -0
  139. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/debug/control-test-pane.css +0 -0
  140. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/favicon.ico +0 -0
  141. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-logo.png +0 -0
  142. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-landscape.jpg +0 -0
  143. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-landscape.png +0 -0
  144. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-portrait.jpg +0 -0
  145. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-portrait.png +0 -0
  146. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup.png +0 -0
  147. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore.png +0 -0
  148. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/inline_editor.css +0 -0
  149. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +47 -0
  150. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/radio_view.css +0 -0
  151. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/static_layout.css +1 -1
  152. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +130 -0
  153. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +5 -1
  154. data/lib/frameworks/sproutcore/frameworks/foundation/system/string.js +0 -43
  155. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +5 -2
  156. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +4 -4
  157. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +4 -5
  158. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +1 -1
  159. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +5 -5
  160. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +6 -3
  161. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +11 -0
  162. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +2 -2
  163. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +2 -2
  164. data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +2 -2
  165. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +1 -1
  166. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +2 -2
  167. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +2 -2
  168. data/lib/frameworks/sproutcore/frameworks/statechart/debug/monitor.js +4 -73
  169. data/lib/frameworks/sproutcore/frameworks/statechart/debug/sequence_matcher.js +189 -0
  170. data/lib/frameworks/sproutcore/frameworks/statechart/ext/function.js +122 -0
  171. data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +88 -0
  172. data/lib/frameworks/sproutcore/frameworks/statechart/system/empty_state.js +34 -0
  173. data/lib/frameworks/sproutcore/frameworks/statechart/system/history_state.js +97 -0
  174. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +7 -189
  175. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +14 -78
  176. data/lib/frameworks/sproutcore/frameworks/statechart/tests/debug/sequence_matcher.js +464 -0
  177. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +31 -11
  178. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/async/with_concurrent_states.js +6 -4
  179. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/advanced.js +40 -6
  180. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/basic.js +22 -2
  181. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/intermediate.js +44 -3
  182. data/lib/frameworks/sproutcore/frameworks/testing/core.js +61 -9
  183. data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/additions.css +0 -0
  184. data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/runner.css +11 -2
  185. data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/testsuite.css +0 -0
  186. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +66 -27
  187. data/lib/frameworks/sproutcore/frameworks/testing/tests/spy_on.js +41 -0
  188. data/lib/frameworks/sproutcore/frameworks/testing/tests/stub_method.js +9 -0
  189. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/core.css +24 -0
  190. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/fonts.css +39 -0
  191. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +126 -0
  192. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +57 -0
  193. data/lib/frameworks/sproutcore/lib/index.rhtml +7 -4
  194. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked.png +0 -0
  195. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked_active.png +0 -0
  196. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed.png +0 -0
  197. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed_active.png +0 -0
  198. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked.png +0 -0
  199. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked_active.png +0 -0
  200. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked.png +0 -0
  201. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked_active.png +0 -0
  202. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed.png +0 -0
  203. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed_active.png +0 -0
  204. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked.png +0 -0
  205. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked_active.png +0 -0
  206. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +13 -4
  207. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +16 -14
  208. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu_item.png +0 -0
  209. data/lib/gen/app/templates/apps/@target_name@/Buildfile +1 -4
  210. data/lib/gen/app/templates/apps/@target_name@/core.js +1 -4
  211. data/lib/gen/app/templates/apps/@target_name@/main.js +1 -4
  212. data/lib/gen/app/templates/apps/@target_name@/resources/main_page.js +1 -4
  213. data/lib/gen/app/templates/apps/@target_name@/theme.js +1 -4
  214. data/lib/gen/controller/templates/controllers/{@filename@.js → @filename@_controller.js} +1 -4
  215. data/lib/gen/controller/templates/tests/controllers/{@filename@.js → @filename@_test.js} +1 -4
  216. data/lib/gen/data-source/templates/data_sources/{@filename@.js → @filename@_data_source.js} +1 -4
  217. data/lib/gen/design/templates/resources/@filename@.js +1 -4
  218. data/lib/gen/framework/templates/frameworks/@target_name@/core.js +1 -4
  219. data/lib/gen/framework/templates/frameworks/@target_name@/english.lproj/strings.js +1 -4
  220. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +1 -4
  221. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +2 -0
  222. data/lib/gen/html_project/templates/@filename@/Buildfile +1 -4
  223. data/lib/gen/html_project/templates/@filename@/README +1 -4
  224. data/lib/gen/language/templates/@filename@/strings.js +1 -4
  225. data/lib/gen/model/templates/fixtures/{@filename@.js → @filename@_fixtures.js} +2 -5
  226. data/lib/gen/model/templates/models/{@filename@.js → @filename@_model.js} +1 -4
  227. data/lib/gen/model/templates/tests/models/{@filename@.js → @filename@_test.js} +1 -4
  228. data/lib/gen/page/templates/pages/@target_name@/Buildfile +1 -4
  229. data/lib/gen/page/templates/pages/@target_name@/core.js +1 -4
  230. data/lib/gen/page/templates/pages/@target_name@/en.lproj/strings.js +1 -4
  231. data/lib/gen/page/templates/pages/@target_name@/resources/body.css +3 -1
  232. data/lib/gen/project/templates/@filename@/Buildfile +1 -4
  233. data/lib/gen/project/templates/@filename@/README +1 -5
  234. data/lib/gen/responder/templates/states/{@filename@.js → @filename@_state.js} +1 -4
  235. data/lib/gen/test/templates/tests/{@filename@.js → @filename@_test.js} +1 -4
  236. data/lib/gen/theme/templates/themes/@target_name@/resources/theme_styles.css +1 -5
  237. data/lib/gen/theme/templates/themes/@target_name@/theme.js +1 -4
  238. data/lib/gen/view/templates/tests/views/{@filename@.js → @filename@_test.js} +1 -4
  239. data/lib/gen/view/templates/views/{@filename@.js → @filename@_view.js} +1 -4
  240. data/lib/sproutcore.rb +4 -1
  241. data/lib/sproutcore/builders/handlebars.rb +1 -1
  242. data/lib/sproutcore/builders/module.rb +2 -2
  243. data/lib/sproutcore/helpers/static_helper.rb +4 -2
  244. data/lib/sproutcore/models/generator.rb +22 -0
  245. data/lib/sproutcore/models/manifest_entry.rb +1 -0
  246. data/lib/sproutcore/models/target.rb +4 -1
  247. data/lib/sproutcore/rack/builder.rb +3 -0
  248. data/lib/sproutcore/tools.rb +11 -11
  249. data/lib/sproutcore/tools/init.rb +10 -22
  250. data/lib/sproutcore/tools/manifest.rb +21 -22
  251. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +21 -1
  252. data/spec/fixtures/ordered_entries/apps/template_style/a.js +0 -0
  253. data/spec/fixtures/ordered_entries/apps/template_style/template_style.js +0 -0
  254. data/spec/lib/buildfile_commands/build_task_spec.rb +1 -1
  255. data/spec/lib/tools/manifest_spec.rb +11 -0
  256. data/sproutcore.gemspec +2 -2
  257. data/vendor/chance/lib/chance/instance.rb +3 -1
  258. metadata +150 -106
  259. data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/core.css +0 -378
  260. data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/view.css +0 -57
  261. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +0 -56
  262. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +0 -73
  263. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +0 -916
  264. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/shared.png +0 -0
  265. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +0 -185
  266. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -12
  267. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +0 -101
  268. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +0 -91
  269. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/picker.css +0 -35
  270. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/progress.css +0 -33
  271. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/radio.css +0 -10
  272. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +0 -132
  273. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/separator.css +0 -19
  274. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +0 -69
  275. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/strings.js +0 -14
  276. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/well.css +0 -71
  277. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +0 -40
  278. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +0 -47
  279. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/text_field.css +0 -146
  280. data/lib/frameworks/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +0 -69
@@ -113,10 +113,17 @@ test("send event eventB", function() {
113
113
  equals(statechart.stateIsCurrentState('f'), true, 'current state should be f');
114
114
 
115
115
  equals(monitor.get('length'), 4, 'state sequence should be of length 4');
116
- equals(monitor.matchSequence()
117
- .begin()
118
- .exited('c').entered('d')
119
- .exited('e').entered('f')
116
+ equals(monitor.matchSequence().begin()
117
+ .beginConcurrent()
118
+ .beginSequence()
119
+ .exited('c')
120
+ .entered('d')
121
+ .endSequence()
122
+ .beginSequence()
123
+ .exited('e')
124
+ .entered('f')
125
+ .endSequence()
126
+ .endConcurrent()
120
127
  .end(),
121
128
  true, 'sequence should be exited[c], entered[d], exited[e], entered[f]');
122
129
  });
@@ -137,10 +144,15 @@ test("send event eventB then eventC", function() {
137
144
  equals(statechart.stateIsCurrentState('e'), true, 'current state should be e');
138
145
 
139
146
  equals(monitor.get('length'), 4, 'state sequence should be of length 4');
140
- equals(monitor.matchSequence()
141
- .begin()
142
- .exited('d').entered('c')
143
- .exited('f').entered('e')
147
+ equals(monitor.matchSequence().begin()
148
+ .beginConcurrent()
149
+ .beginSequence()
150
+ .exited('d').entered('c')
151
+ .endSequence()
152
+ .beginSequence()
153
+ .exited('f').entered('e')
154
+ .endSequence()
155
+ .endConcurrent()
144
156
  .end(),
145
157
  true, 'sequence should be exited[d], entered[c], exited[f], entered[e]');
146
158
  });
@@ -156,9 +168,17 @@ test("send event eventD", function() {
156
168
  statechart.sendEvent('eventD');
157
169
 
158
170
  equals(monitor.get('length'), 6, 'state sequence should be of length 6');
159
- equals(monitor.matchSequence()
160
- .begin()
161
- .exited('c', 'a', 'e', 'b', 'x').entered('y')
171
+ equals(monitor.matchSequence().begin()
172
+ .beginConcurrent()
173
+ .beginSequence()
174
+ .exited('c', 'a')
175
+ .endSequence()
176
+ .beginSequence()
177
+ .exited('e', 'b')
178
+ .endSequence()
179
+ .endConcurrent()
180
+ .exited('x')
181
+ .entered('y')
162
182
  .end(),
163
183
  true, 'sequence should be exited[c, a, e, b, x], entered[y]');
164
184
 
@@ -79,10 +79,12 @@ test("go to state b", function() {
79
79
  equals(statechart.get('gotoStateActive'), NO, "statechart should not have active gotoState");
80
80
  equals(statechart.get('gotoStateSuspended'), NO, "statechart should not have active gotoState suspended");
81
81
 
82
- equals(monitor.matchSequence()
83
- .begin()
84
- .exited('a')
85
- .entered('b', 'c', 'd')
82
+ equals(monitor.matchSequence().begin()
83
+ .exited('a')
84
+ .entered('b')
85
+ .beginConcurrent()
86
+ .entered('c', 'd')
87
+ .endConcurrent()
86
88
  .end(),
87
89
  true, 'sequence should be exited[a], entered[b, c, d]');
88
90
  equals(statechart.get('currentStateCount'), 2, 'current state count should be 2');
@@ -112,8 +112,27 @@ module("SC.Statechart: With Concurrent States - Goto State Advanced Tests", {
112
112
 
113
113
  test("check statechart initialization", function() {
114
114
  equals(monitor.get('length'), 10, 'initial state sequence should be of length 10');
115
- equals(monitor.matchSequence().begin().entered(root, 'a', 'b', 'd', 'c', 'f', 'h', 'l', 'i', 'n').end(), true,
116
- 'initial sequence should be entered[ROOT, a, b, d, c, f, h, l, i, n]');
115
+ equals(monitor.matchSequence().begin()
116
+ .entered(root, 'a')
117
+ .beginConcurrent()
118
+ .beginSequence()
119
+ .entered('b', 'd')
120
+ .endSequence()
121
+ .beginSequence()
122
+ .entered('c', 'f')
123
+ .beginConcurrent()
124
+ .beginSequence()
125
+ .entered('h', 'l')
126
+ .endSequence()
127
+ .beginSequence()
128
+ .entered('i', 'n')
129
+ .endSequence()
130
+ .endConcurrent()
131
+ .endSequence()
132
+ .endConcurrent()
133
+ .entered()
134
+ .end(),
135
+ true, 'initial sequence should be entered[ROOT, a, b, d, c, f, h, l, i, n]');
117
136
 
118
137
  equals(statechart.get('currentStateCount'), 3, 'current state count should be 3');
119
138
  equals(statechart.stateIsCurrentState('d'), true, 'current state should be d');
@@ -150,10 +169,25 @@ test("from state l, go to state g", function() {
150
169
  stateL.gotoState('g');
151
170
 
152
171
  equals(monitor.get('length'), 10, 'initial state sequence should be of length 10');
153
- equals(monitor.matchSequence()
154
- .begin()
155
- .exited('l', 'h', 'n', 'i', 'f')
156
- .entered('g', 'j', 'p', 'k', 'r')
172
+ equals(monitor.matchSequence().begin()
173
+ .beginConcurrent()
174
+ .beginSequence()
175
+ .exited('l', 'h')
176
+ .endSequence()
177
+ .beginSequence()
178
+ .exited('n', 'i')
179
+ .endSequence()
180
+ .endConcurrent()
181
+ .exited('f')
182
+ .entered('g')
183
+ .beginConcurrent()
184
+ .beginSequence()
185
+ .entered('j', 'p')
186
+ .endSequence()
187
+ .beginSequence()
188
+ .entered('k', 'r')
189
+ .endSequence()
190
+ .endConcurrent()
157
191
  .end(),
158
192
  true, 'initial sequence should be exited[l, h, n, i, f], entered[g, j, p, k, r]');
159
193
 
@@ -52,8 +52,28 @@ module("SC.Statechart: With Concurrent States - Goto State Basic Tests", {
52
52
 
53
53
  test("check statechart initialization", function() {
54
54
  equals(monitor.get('length'), 5, 'initial state sequence should be of length 5');
55
- equals(monitor.matchSequence().begin().entered(root, 'a', 'c', 'b', 'e').end(), true, 'initial sequence should be entered[ROOT, a, c, b, e]');
56
- equals(monitor.matchSequence().begin().entered(root, 'a', 'b', 'c', 'e').end(), false, 'initial sequence should not be entered[ROOT, a, b, c, e]');
55
+ equals(monitor.matchSequence().begin()
56
+ .entered(root)
57
+ .beginConcurrent()
58
+ .beginSequence()
59
+ .entered('a', 'c')
60
+ .endSequence()
61
+ .beginSequence()
62
+ .entered('b', 'e')
63
+ .endSequence()
64
+ .endConcurrent()
65
+ .end(),
66
+ true, 'initial sequence should be entered[ROOT, a, c, b, e]');
67
+ equals(monitor.matchSequence().begin()
68
+ .entered(root)
69
+ .beginConcurrent()
70
+ .entered('a', 'b')
71
+ .endConcurrent()
72
+ .beginConcurrent()
73
+ .entered('c', 'e')
74
+ .endConcurrent()
75
+ .end(),
76
+ false, 'initial sequence should not be entered[ROOT, a, b, c, e]');
57
77
 
58
78
  equals(statechart.get('currentStateCount'), 2, 'current state count should be 2');
59
79
 
@@ -60,7 +60,20 @@ module("SC.Statechart: With Concurrent States - Goto State Intermediate Tests",
60
60
 
61
61
  test("check statechart initialization", function() {
62
62
  equals(monitor.get('length'), 6, 'initial state sequence should be of length 5');
63
- equals(monitor.matchSequence().begin().entered(root, 'a', 'b', 'd', 'c', 'f').end(), true, 'initial sequence should be entered[ROOT, a, b, d, c, f]');
63
+
64
+ equals(monitor.matchSequence().begin()
65
+ .entered(root, 'a')
66
+ .beginConcurrent()
67
+ .beginSequence()
68
+ .entered('b', 'd')
69
+ .endSequence()
70
+ .beginSequence()
71
+ .entered('c', 'f')
72
+ .endSequence()
73
+ .endConcurrent()
74
+ .end(),
75
+ true, 'initial sequence should be entered[ROOT, a, b, d, c, f]');
76
+
64
77
  equals(statechart.get('currentStateCount'), 2, 'current state count should be 2');
65
78
  equals(statechart.stateIsCurrentState('d'), true, 'current state should be d');
66
79
  equals(statechart.stateIsCurrentState('f'), true, 'current state should be f');
@@ -98,7 +111,21 @@ test("from state a, go to state z and then back to state a", function() {
98
111
  stateA.gotoState('z');
99
112
 
100
113
  equals(monitor.get('length'), 6, 'initial state sequence should be of length 6');
101
- equals(monitor.matchSequence().begin().exited('d', 'b', 'f', 'c', 'a').entered('z').end(), true, 'sequence should be exited[d, b, f, c, a], entered[z]');
114
+
115
+ equals(monitor.matchSequence().begin()
116
+ .beginConcurrent()
117
+ .beginSequence()
118
+ .exited('d', 'b')
119
+ .endSequence()
120
+ .beginSequence()
121
+ .exited('f', 'c')
122
+ .endSequence()
123
+ .endConcurrent()
124
+ .exited('a')
125
+ .entered('z')
126
+ .end(),
127
+ true, 'sequence should be exited[d, b, f, c, a], entered[z]');
128
+
102
129
  equals(statechart.get('currentStateCount'), 1, 'current state count should be 1');
103
130
  equals(statechart.stateIsCurrentState('z'), true, 'current state should be z');
104
131
 
@@ -106,7 +133,21 @@ test("from state a, go to state z and then back to state a", function() {
106
133
  stateZ.gotoState('a');
107
134
 
108
135
  equals(monitor.get('length'), 6, 'initial state sequence should be of length 6');
109
- equals(monitor.matchSequence().begin().exited('z').entered('a', 'b', 'd', 'c', 'f').end(), true, 'sequence should be exited[z], entered[a, b, d, c, f]');
136
+
137
+ equals(monitor.matchSequence().begin()
138
+ .exited('z')
139
+ .entered('a')
140
+ .beginConcurrent()
141
+ .beginSequence()
142
+ .entered('b', 'd')
143
+ .endSequence()
144
+ .beginSequence()
145
+ .entered('c', 'f')
146
+ .endSequence()
147
+ .endConcurrent()
148
+ .end(),
149
+ true, 'sequence should be exited[z], entered[a, b, d, c, f]');
150
+
110
151
  equals(statechart.get('currentStateCount'), 2, 'current state count should be 1');
111
152
  equals(statechart.stateIsCurrentState('d'), true, 'current state should be d');
112
153
  equals(statechart.stateIsCurrentState('f'), true, 'current state should be f');
@@ -178,22 +178,74 @@ CoreTest = {
178
178
 
179
179
  return ret ;
180
180
  },
181
-
182
181
 
183
182
  /** Test is OK */
184
183
  OK: 'passed',
185
-
184
+
186
185
  /** Test failed */
187
186
  FAIL: 'failed',
188
-
187
+
189
188
  /** Test raised exception */
190
189
  ERROR: 'errors',
191
-
190
+
192
191
  /** Test raised warning */
193
192
  WARN: 'warnings',
194
-
195
- showUI : false
196
-
197
-
198
-
193
+
194
+ showUI : false,
195
+
196
+ spyOn: function(object, method) {
197
+ if(!object) throw new Error('ERROR: Attempted to spy upon an invalid object');
198
+ if(!object[method]) throw new Error('ERROR: The requested method does not exist on the given object');
199
+
200
+ var spy = new CoreTest.Spy;
201
+ object[method] = function() { spy.call(CoreTest.argumentsArray(arguments)) };
202
+ return spy;
203
+ },
204
+
205
+ stubMethod: function(object, method) {
206
+ if(!object) throw new Error('ERROR: Attempted to spy upon an invalid object');
207
+ if(!object[method]) throw new Error('ERROR: The requested method does not exist on the given object');
208
+
209
+ var stub = new CoreTest.Stub;
210
+ object[method] = function() { return stub.call() };
211
+ return stub;
212
+ }
213
+ };
214
+
215
+ CoreTest.Spy = function() {
216
+ this.wasCalled = false;
217
+ };
218
+
219
+ CoreTest.Spy.prototype.call = function(args) {
220
+ this.wasCalledWithArguments = args;
221
+ this.wasCalled = true;
222
+ };
223
+
224
+ CoreTest.Spy.prototype.wasCalledWith = function() {
225
+ return CoreTest._isIdenticalArray(this.wasCalledWithArguments,CoreTest.argumentsArray(arguments));
226
+ };
227
+
228
+ CoreTest.Stub = function() {
229
+ };
230
+
231
+ CoreTest.Stub.prototype.andReturn = function(value) {
232
+ this.stubbedValue = value;
233
+ };
234
+
235
+ CoreTest.Stub.prototype.call = function() {
236
+ if(this.stubbedValue === undefined) throw new Error('ERROR: You never specified what value the stub should return');
237
+ return this.stubbedValue;
238
+ };
239
+
240
+ CoreTest.argumentsArray = function(args) {
241
+ var arrayOfArgs = [];
242
+ for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]);
243
+ return arrayOfArgs;
244
+ };
245
+
246
+ CoreTest._isIdenticalArray = function(array1, array2) {
247
+ if(array1.length !== array2.length) return false;
248
+ for(var i = 0; i < array1.length; i++)
249
+ if(array1[i] !== array2[i]) return false;
250
+ return true;
199
251
  };
@@ -27,7 +27,7 @@
27
27
  position: relative;
28
28
  }
29
29
 
30
- .testresult label.hide-passed {
30
+ .testresult label.hide-passed, .testresult label.show-progress {
31
31
  position: absolute;
32
32
  display: block;
33
33
  margin: 0;
@@ -38,10 +38,14 @@
38
38
  margin-top: -8px;
39
39
  }
40
40
 
41
- .testresult label.hide-passed.disabled {
41
+ .testresult label.hide-passed.disabled, .testresult label.show-progress.disabled {
42
42
  color: #aaa;
43
43
  }
44
44
 
45
+ .testresult label.show-progress {
46
+ left: 200px;
47
+ }
48
+
45
49
  .testresult em {
46
50
  display: block;
47
51
  font-weight: normal;
@@ -67,6 +71,7 @@
67
71
  .core-test table {
68
72
  background: #000;
69
73
  border-spacing: 1px;
74
+ border-collapse: separate;
70
75
  width: 100%;
71
76
  }
72
77
 
@@ -80,6 +85,10 @@
80
85
  padding: 4px;
81
86
  }
82
87
 
88
+ .core-test table th {
89
+ font-weight: bold;
90
+ }
91
+
83
92
  .core-test tbody td {
84
93
  text-align: center;
85
94
  padding: 8px;
@@ -25,7 +25,9 @@ CoreTest.Runner = {
25
25
  */
26
26
  plan: null,
27
27
  errors: null,
28
-
28
+
29
+ showProgress: false,
30
+
29
31
  create: function() {
30
32
  var len = arguments.length,
31
33
  ret = CoreTest.beget(this),
@@ -46,41 +48,63 @@ CoreTest.Runner = {
46
48
 
47
49
  planDidBegin: function(plan) {
48
50
  // setup the report DOM element.
49
- this.report = Q$(['<div class="core-test">',
50
- '<div class="useragent">UserAgent</div>',
51
- '<div class="testresult">',
52
- '<label class="hide-passed">',
53
- '<input type="checkbox" checked="checked" /> Hide passed tests',
54
- '</label>',
55
- '<span class="status">Running...</span>',
56
- '</div>',
57
- '<div class="detail">',
58
- '<table>',
59
- '<thead><tr>',
60
- '<th class="desc">Test</th><th>Result</th>',
61
- '</tr></thead>',
62
- '<tbody><tr></tr></tbody>',
63
- '</table>',
64
- '</div>',
65
- '</div>'].join(''));
66
-
67
-
51
+ var str = [
52
+ '<div class="core-test">',
53
+ '<div class="useragent">UserAgent</div>',
54
+ '<div class="testresult">',
55
+ '<label class="hide-passed">',
56
+ '<input type="checkbox" checked="checked" /> Hide passed tests',
57
+ '</label>'
58
+ ];
59
+
60
+ if (navigator.userAgent.indexOf('MSIE')==-1) {
61
+ str.push(
62
+ '<label class="show-progress">',
63
+ '<input type="checkbox"'+(this.showProgress?' checked="checked"':'')+'" /> Show progess (slower)',
64
+ '</label>'
65
+ );
66
+ }
67
+
68
+ str.push(
69
+ '<label class="show-progress">',
70
+ '<input type="checkbox"'+(this.showProgress?' checked="checked"':'')+'" /> Show progess (slower)',
71
+ '</label>',
72
+ '<span class="status">Running...</span>',
73
+ '</div>',
74
+ '<div class="detail">',
75
+ '<table>',
76
+ '<thead><tr>',
77
+ '<th class="desc">Test</th><th>Result</th>',
78
+ '</tr></thead>',
79
+ '<tbody><tr></tr></tbody>',
80
+ '</table>',
81
+ '</div>',
82
+ '</div>'
83
+ );
84
+
85
+ this.report = Q$(str.join(''));
86
+
68
87
  this.report.find('.useragent').html(navigator.userAgent);
69
88
  this.logq = this.report.find('tbody');
70
89
  this.testCount = 0 ;
71
90
 
72
91
  // listen to change event
73
92
  var runner = this;
74
- this.checkbox = this.report.find('.hide-passed input');
75
- this.checkbox.change(function() {
93
+ this.hidePassedCheckbox = this.report.find('.hide-passed input');
94
+ this.hidePassedCheckbox.change(function() {
76
95
  runner.hidePassedTestsDidChange();
77
96
  });
78
-
97
+
98
+ this.showProgressCheckbox = this.report.find('.show-progress input');
99
+ this.showProgressCheckbox.change(function() {
100
+ runner.showProgressCheckboxDidChange();
101
+ });
102
+
79
103
  Q$('body').append(this.report);
80
104
  },
81
105
 
82
106
  hidePassedTestsDidChange: function() {
83
- var checked = !!this.checkbox.val();
107
+ var checked = this.hidePassedCheckbox.is(':checked');
84
108
 
85
109
  if (checked) {
86
110
  this.logq.addClass('hide-clean');
@@ -88,7 +112,12 @@ CoreTest.Runner = {
88
112
  this.logq.removeClass('hide-clean');
89
113
  }
90
114
  },
91
-
115
+
116
+ showProgressCheckboxDidChange: function(){
117
+ this.showProgress = this.showProgressCheckbox.is(':checked');
118
+ if (this.showProgress) { this.flush(); }
119
+ },
120
+
92
121
  planDidFinish: function(plan, r) {
93
122
  this.flush();
94
123
 
@@ -128,9 +157,11 @@ CoreTest.Runner = {
128
157
  if(CoreTest.showUI) Q$('.core-test').css("right", "360px");
129
158
  result.html(str);
130
159
 
160
+ CoreTest.finished = true;
161
+
131
162
  if (this.errors) CoreTest.errors=this.errors.join('');
132
163
 
133
-
164
+
134
165
  // Unload the SproutCore event system so that the user can select the text
135
166
  // of the various events. (It is handy when looking at failed tests.)
136
167
  if (SC && SC.Event && SC.Event.unload) {
@@ -201,7 +232,15 @@ CoreTest.Runner = {
201
232
 
202
233
  // called when the plan takes a break. Good time to flush HTML output.
203
234
  planDidPause: function(plan) {
204
- if(navigator.userAgent.indexOf('MSIE')==-1) this.flush();
235
+ if(!this._cacheResultSelector){
236
+ this._cacheResultSelector = this.report.find('.testresult .status');
237
+ }
238
+ var result = this._cacheResultSelector;
239
+
240
+ if (this.resultStr && navigator.userAgent.indexOf('MSIE')==-1) result.html(this.resultStr);
241
+ this.resultStr = null ;
242
+
243
+ if (this.showProgress) { this.flush(); }
205
244
  },
206
245
 
207
246
  // flush any pending HTML changes...