sproutcore 1.5.0.pre.4 → 1.5.0.pre.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (174) hide show
  1. data/CHANGELOG +6 -0
  2. data/VERSION.yml +1 -1
  3. data/lib/Buildfile +1 -1
  4. data/lib/buildtasks/build.rake +14 -6
  5. data/lib/buildtasks/manifest.rake +171 -72
  6. data/lib/frameworks/sproutcore/Buildfile +3 -5
  7. data/lib/frameworks/sproutcore/CHANGELOG.md +9 -0
  8. data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +2 -1
  9. data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +7 -17
  10. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +7 -1
  11. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +14 -1
  12. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +0 -2
  13. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +1 -1
  14. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +14 -3
  15. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +1 -1
  16. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +2 -2
  17. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +6 -0
  18. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +1 -1
  19. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
  20. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +49 -4
  21. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +8 -0
  22. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +46 -1
  23. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +32 -5
  24. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +32 -6
  25. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +31 -3
  26. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +15 -3
  27. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +28 -7
  28. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -1
  29. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +20 -1
  30. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +2 -4
  31. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +40 -34
  32. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +35 -0
  33. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +43 -0
  34. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +47 -0
  35. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +6 -16
  36. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +21 -0
  37. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +41 -1
  38. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +128 -0
  39. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +93 -3
  40. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +13 -1
  41. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +28 -0
  42. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +47 -0
  43. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +51 -0
  44. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/method.js +33 -0
  45. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +29 -0
  46. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +28 -0
  47. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +9 -1
  48. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +148 -134
  49. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +18 -0
  50. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +30 -3
  51. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +9 -0
  52. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +52 -4
  53. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +2 -1
  54. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +36 -3
  55. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +1 -1
  56. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +9 -1
  57. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +15 -4
  58. data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +1 -6
  59. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +4 -2
  60. data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +7 -0
  61. data/lib/frameworks/sproutcore/frameworks/desktop/views/well.js +1 -2
  62. data/lib/frameworks/sproutcore/frameworks/forms/views/form.js +3 -1
  63. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +1 -1
  64. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -9
  65. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
  66. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +2 -0
  67. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
  68. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +25 -1
  69. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +64 -0
  70. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +34 -27
  71. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +42 -0
  72. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +62 -0
  73. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +0 -8
  74. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +12 -0
  75. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +48 -1
  76. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +19 -0
  77. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +2 -0
  78. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +11 -5
  79. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +152 -74
  80. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +12 -9
  81. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +1476 -176
  82. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +0 -2
  83. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +227 -32
  84. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +11 -11
  85. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +1 -1
  86. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +10 -0
  87. data/lib/frameworks/sproutcore/lib/index.rhtml +30 -8
  88. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +4 -4
  89. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +4 -4
  90. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +4 -4
  91. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +4 -4
  92. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +4 -0
  93. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +5 -1
  94. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.js +11 -3
  95. data/lib/frameworks/sproutcore/themes/ace/resources/well/well.css +7 -8
  96. data/lib/frameworks/sproutcore/themes/ace/resources/well/well.js +2 -4
  97. data/lib/gen/app/templates/apps/@target_name@/Buildfile +14 -0
  98. data/lib/gen/app/templates/apps/@target_name@/theme.js +27 -0
  99. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +4 -0
  100. data/lib/gen/project/templates/@filename@/Buildfile +7 -2
  101. data/lib/gen/theme/templates/themes/@target_name@/Buildfile +3 -0
  102. data/lib/gen/theme/templates/themes/@target_name@/theme.js +23 -0
  103. data/lib/sproutcore/builders.rb +2 -0
  104. data/lib/sproutcore/builders/chance.rb +64 -0
  105. data/lib/sproutcore/builders/chance_file.rb +59 -0
  106. data/lib/sproutcore/builders/combine.rb +0 -45
  107. data/lib/sproutcore/builders/html.rb +1 -1
  108. data/lib/sproutcore/builders/minify.rb +5 -17
  109. data/lib/sproutcore/builders/module.rb +2 -2
  110. data/lib/sproutcore/builders/string_wrapper.rb +13 -15
  111. data/lib/sproutcore/helpers.rb +1 -1
  112. data/lib/sproutcore/helpers/minifier.rb +56 -0
  113. data/lib/sproutcore/helpers/static_helper.rb +86 -40
  114. data/lib/sproutcore/models/generator.rb +16 -0
  115. data/lib/sproutcore/models/manifest_entry.rb +8 -1
  116. data/lib/sproutcore/models/target.rb +101 -33
  117. data/lib/sproutcore/tools.rb +0 -7
  118. data/lib/sproutcore/tools/build.rb +2 -37
  119. data/spec/buildtasks/manifest/prepare_build_tasks/chance_spec.rb +100 -0
  120. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +86 -9
  121. data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +1 -1
  122. data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +1 -1
  123. data/spec/buildtasks/manifest/prepare_build_tasks/module_info_spec.rb +96 -0
  124. data/spec/buildtasks/manifest/prepare_build_tasks/module_spec.rb +83 -0
  125. data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +37 -4
  126. data/spec/buildtasks/manifest/spec_helper.rb +4 -0
  127. data/spec/fixtures/builder_tests/Buildfile +11 -9
  128. data/spec/fixtures/builder_tests/apps/chance_test/Buildfile +14 -0
  129. data/spec/fixtures/builder_tests/apps/chance_test/core.js +27 -0
  130. data/spec/fixtures/builder_tests/apps/chance_test/main.js +30 -0
  131. data/spec/fixtures/builder_tests/apps/chance_test/resources/demo.css +6 -0
  132. data/spec/fixtures/builder_tests/apps/chance_test/resources/last_file.css +7 -0
  133. data/spec/fixtures/builder_tests/apps/chance_test/resources/loading.rhtml +9 -0
  134. data/spec/fixtures/builder_tests/apps/chance_test/resources/main_page.js +24 -0
  135. data/spec/fixtures/builder_tests/apps/chance_test/resources/z_first_file.css +6 -0
  136. data/spec/fixtures/builder_tests/apps/chance_test/theme.js +27 -0
  137. data/spec/fixtures/builder_tests/apps/module_test/module.js +1 -0
  138. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/req_style_2.css +0 -0
  139. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/test.rhtml +1 -0
  140. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/javascript.js +1 -0
  141. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/lib/alt_layout.rhtml +0 -0
  142. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/req_js_2.js +0 -0
  143. data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/dynamic_req_js_1.js +0 -0
  144. data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/english.lproj/dynamic_req_style_1.css +0 -0
  145. data/spec/fixtures/builder_tests/apps/module_test/modules/inlined_module/README +0 -0
  146. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/req_style_1.css +0 -0
  147. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/strings.js +4 -0
  148. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/test.rhtml +1 -0
  149. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/req_js_1.js +0 -0
  150. data/spec/fixtures/helper_tests/apps/minifier_test/core.js +8 -0
  151. data/spec/fixtures/real_world/Buildfile +11 -1
  152. data/spec/fixtures/real_world/apps/account/modules/preferences/README +0 -0
  153. data/spec/fixtures/real_world/apps/calendar/modules/preferences/README +0 -0
  154. data/spec/fixtures/real_world/apps/contacts/modules/preferences/README +0 -0
  155. data/spec/fixtures/real_world/apps/contacts/modules/printing/README +0 -0
  156. data/spec/fixtures/real_world/apps/mail/modules/preferences/README +0 -0
  157. data/spec/fixtures/real_world/apps/mail/modules/printing/README +0 -0
  158. data/spec/fixtures/real_world/apps/photos/modules/email/README +0 -0
  159. data/spec/fixtures/real_world/apps/photos/modules/preferences/README +0 -0
  160. data/spec/lib/builders/chance_file_spec.rb +63 -0
  161. data/spec/lib/builders/chance_spec.rb +81 -0
  162. data/spec/lib/builders/module_spec.rb +133 -0
  163. data/spec/lib/helpers/minifier.rb +31 -0
  164. data/spec/lib/models/project/find_targets_for_spec.rb +1 -1
  165. data/vendor/chance/lib/chance/imagers/data_url.rb +68 -17
  166. data/vendor/chance/lib/chance/instance.rb +55 -30
  167. data/vendor/chance/lib/chance/parser.rb +1 -1
  168. data/vendor/chance/lib/chance/slicing.rb +39 -3
  169. metadata +52 -7
  170. data/lib/frameworks/sproutcore/frameworks/foundation/system/logger.js +0 -163
  171. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/logger.js +0 -44
  172. data/spec/buildtasks/manifest/prepare_build_tasks/bundle_spec.rb +0 -254
  173. data/spec/fixtures/builder_tests/apps/bundle_test/bundle.js +0 -1
  174. data/spec/lib/builders/bundle_spec.rb +0 -295
@@ -37,7 +37,6 @@ module SC
37
37
  class_option "logfile", :type => :string
38
38
  class_option "build", :type => :string
39
39
  class_option "build-targets",:type => :string
40
- class_option "no-chance", :type => :boolean
41
40
  class_option "yui-minification", :type => :boolean
42
41
  class_option "dont-minify", :type => :boolean
43
42
  class_option "verbose", :type => :boolean, :aliases => "-v"
@@ -123,12 +122,6 @@ module SC
123
122
  else
124
123
  SC.env[:build_targets] = ''
125
124
  end
126
-
127
- if options[:'no-chance']
128
- SC.env[:no_chance] = true
129
- else
130
- SC.env[:no_chance] = false
131
- end
132
125
  end
133
126
 
134
127
  def yui_minification!
@@ -8,7 +8,6 @@
8
8
  require "sproutcore/tools/manifest"
9
9
  require 'pathname'
10
10
 
11
- $to_minify = []
12
11
  $to_html5_manifest = []
13
12
  $to_html5_manifest_networks = []
14
13
 
@@ -79,6 +78,8 @@ module SC
79
78
  info " #{entry.filename} -> #{dst}"
80
79
  entry.build!
81
80
  end
81
+
82
+ SC::Helpers::Minifier.minify_queue! unless SC.env[:no_minify]
82
83
  end
83
84
  end
84
85
 
@@ -87,43 +88,7 @@ module SC
87
88
  SC::Helpers::HTML5Manifest.new.build(entry)
88
89
  end
89
90
  end
90
- $to_minify.uniq!
91
- if $to_minify.length > 0 and !SC.env[:dont_minify]
92
- yui_root = File.expand_path("../../../../vendor/sproutcore", __FILE__)
93
- jar_path = File.join(yui_root, 'SCCompiler.jar')
94
- if SC.env[:yui_minification]
95
- filecompress = "java -Xmx256m -jar \"" + jar_path + "\" -yuionly \"" + $to_minify * "\" \"" + "\" 2>&1"
96
- else
97
- filecompress = "java -Xmx256m -jar \"" + jar_path + "\" \"" + $to_minify * "\" \"" + "\" 2>&1"
98
- end
99
- SC.logger.info 'Minifying...'
100
- SC.logger.info filecompress
101
-
102
- output = `#{filecompress}` # It'd be nice to just read STDERR, but
103
- # I can't find a reasonable, commonly-
104
- # installed, works-on-all-OSes solution.
105
- SC.logger.info output
106
- if $?.exitstatus != 0
107
- SC.logger.fatal(output)
108
- SC.logger.fatal("!!!!Minifying failed, please check that your js code is valid")
109
- SC.logger.fatal("!!!!Failed compiling ... "+ $to_minify.join(','))
110
- exit(1)
111
- end
112
91
 
113
- paths = $to_minify.join(',')
114
- paths = paths.gsub("javascript-packed.js","javascript.js")
115
- paths = paths.gsub("stylesheet-packed.css","stylesheet.css")
116
- puts "Removing unnecessary files..."
117
- paths_array = paths.split(",")
118
- paths_array.each do |entry|
119
- # We won't have tests unless :load_tests => true in Buildfile in which case we want to keep them
120
- next if entry.include?("index.html") || entry.include?("tests")
121
- if File.exist?(entry)
122
- puts "Deleting "+entry
123
- File.delete(entry)
124
- end
125
- end
126
- end
127
92
  t2 = Time.now
128
93
  seconds = t2-t1
129
94
  minutes = seconds/60
@@ -0,0 +1,100 @@
1
+ require "buildtasks/manifest/spec_helper"
2
+
3
+ describe "manifest:prepare_build_tasks:chance" do
4
+ include SC::SpecHelpers
5
+ include SC::ManifestSpecHelpers
6
+
7
+ before do
8
+ std_before
9
+ end
10
+
11
+ def run_task
12
+ @manifest.prepare!
13
+ super('manifest:prepare_build_tasks:chance')
14
+ end
15
+
16
+ it "should run manifest:prepare_build_tasks:setup as prereq" do
17
+ should_run('manifest:prepare_build_tasks:setup') { run_task }
18
+ end
19
+
20
+
21
+ def have_entry(name)
22
+ entry = @manifest.entry_for name
23
+ entry.should_not be_nil
24
+ end
25
+
26
+ it "generates @2x for each resource" do
27
+ run_task
28
+
29
+ resources = {}
30
+
31
+ originals = @manifest.entries(:hidden=>true).select {|entry|
32
+ entry.entry_type == :css and not entry.combined and not entry[:resource].nil?
33
+ }
34
+ originals.size.should > 0
35
+
36
+ originals.each do |entry|
37
+ next if entry[:resource].nil?
38
+
39
+ resources[entry[:resource]] ||= []
40
+ resources[entry[:resource]] << entry
41
+ end
42
+
43
+ resources.each do |name, entries|
44
+ have_entry(name + ".css")
45
+ have_entry(name + "@2x.css")
46
+
47
+ # check that transforms are created
48
+ entries.each {|entry|
49
+ entry.should be_transform
50
+ entry.source_entry.should_not be_nil
51
+ originals.should include(entry)
52
+ originals.delete(entry)
53
+ }
54
+
55
+ x2_entry = entry_for(name + "@2x.css")
56
+ x2_entry[:chance_file].should == "chance@2x.css"
57
+ x2_entry[:chance_entry].should == entry_for(name + ".css")
58
+ end
59
+ originals.size.should == 0
60
+ end
61
+
62
+ it "generates js, and mhtml entries" do
63
+ run_task
64
+
65
+ have_entry('stylesheet.css')
66
+ have_entry('stylesheet@2x.css')
67
+ have_entry('__sc_chance.js')
68
+ have_entry('__sc_chance_mhtml.txt')
69
+
70
+ stylesheet = entry_for('stylesheet.css')
71
+ end
72
+
73
+ it "provides all chance entries to the mhtml and js entries" do
74
+ run_task
75
+
76
+ js_entry = entry_for('__sc_chance.js')
77
+ mhtml_entry = entry_for('__sc_chance_mhtml.txt')
78
+
79
+ resources = {}
80
+
81
+ originals = @manifest.entries(:hidden=>true).select {|entry|
82
+ entry.entry_type == :css and not entry.combined and not entry[:resource].nil?
83
+ }
84
+ originals.size.should > 0
85
+
86
+ originals.each do |entry|
87
+ next if entry[:resource].nil?
88
+
89
+ resources[entry[:resource]] ||= []
90
+ resources[entry[:resource]] << entry
91
+ end
92
+
93
+ resources.each do |name, entries|
94
+ chance_entry = entry_for(name + ".css")
95
+ js_entry.chance_entries.should include(chance_entry)
96
+ mhtml_entry.chance_entries.should include(chance_entry)
97
+ end
98
+
99
+ end
100
+ end
@@ -18,8 +18,8 @@ describe "manifest:prepare_build_tasks:combine" do
18
18
  }
19
19
  end
20
20
 
21
- it "should run setup, javascript, css, sass, scss & less as prereq" do
22
- %w(setup javascript css sass scss less).each do |task_name|
21
+ it "should run setup, javascript, css, sass, & less as prereq" do
22
+ %w(setup javascript css sass less).each do |task_name|
23
23
  should_run("manifest:prepare_build_tasks:#{task_name}") { run_task }
24
24
  end
25
25
  end
@@ -27,7 +27,7 @@ describe "manifest:prepare_build_tasks:combine" do
27
27
  #######################################
28
28
  # stylesheet.css support
29
29
  #
30
- describe "whem CONFIG.combine_stylesheets = true" do
30
+ describe "when CONFIG.combine_stylesheets = true" do
31
31
 
32
32
  before do
33
33
  @config.combine_stylesheets = true
@@ -60,15 +60,15 @@ describe "manifest:prepare_build_tasks:combine" do
60
60
  entry.source_entries.should include(expected)
61
61
  end
62
62
 
63
- it "entries have a build_task = build:combine:css" do
64
- entry_for('stylesheet.css').build_task.should == 'build:combine'
65
- entry_for('bar.css').build_task.should == 'build:combine'
63
+ it "entries have a build_task = build:chance" do
64
+ entry_for('stylesheet.css').build_task.should == 'build:chance'
65
+ entry_for('bar.css').build_task.should == 'build:chance'
66
66
  end
67
67
 
68
68
  it "hides source entries" do
69
69
  %w(stylesheet.css bar.css).each do |filename|
70
70
  entry_for(filename).source_entries.each do |entry|
71
- entry.should be_hidden
71
+ entry.should be_hidden if entry[:entry_type] == :css
72
72
  end
73
73
  end
74
74
  end
@@ -201,7 +201,7 @@ describe "manifest:prepare_build_tasks:combine" do
201
201
 
202
202
  # get the expected set of ordered entries...based on contents of
203
203
  # project...
204
- expected = %w(bundle_info.js source/lproj/strings.js source/core.js source/utils.js source/1.js source/a.js source/a/a.js source/a/b.js source/B.js source/b/a.js source/c.js source/t.js source/resources/main_page.js source/main.js)
204
+ expected = %w(source/lproj/strings.js source/core.js source/utils.js __sc_chance.js source/1.js source/a.js source/a/a.js source/a/b.js source/B.js source/b/a.js source/c.js source/t.js source/resources/main_page.js source/main.js)
205
205
 
206
206
  entry.ordered_entries.should_not be_nil
207
207
  filenames = entry.ordered_entries.map { |e| e.filename }
@@ -221,7 +221,7 @@ describe "manifest:prepare_build_tasks:combine" do
221
221
 
222
222
  # get the expected set of ordered entries...based on contents of
223
223
  # project... note that we require 'd', which should match 'lproj/d'
224
- expected = %w(bundle_info.js source/c.js source/a.js source/lproj/d.js source/b.js)
224
+ expected = %w(__sc_chance.js source/c.js source/a.js source/lproj/d.js source/b.js)
225
225
 
226
226
  entry.ordered_entries.should_not be_nil
227
227
  filenames = entry.ordered_entries.map { |e| e.filename }
@@ -251,4 +251,81 @@ describe "manifest:prepare_build_tasks:combine" do
251
251
  end
252
252
  end
253
253
 
254
+ describe "when no modules are specified for an app" do
255
+
256
+ before do
257
+ run_task
258
+ end
259
+
260
+ it "contains all modules as requirements" do
261
+ target = target_for('calendar')
262
+ requirements = target.required_targets
263
+
264
+ preferences_modules = target_for('calendar/preferences')
265
+ requirements.should include(preferences_modules)
266
+ end
267
+ end
268
+
269
+ describe "when a subset of modules are specified " do
270
+
271
+ before do
272
+ run_task
273
+ end
274
+
275
+ it "does not require any modules in its requried_targets" do
276
+ target = target_for('contacts')
277
+ requirements = target.required_targets
278
+
279
+ modules = requirements.select{ |target| target[:target_type] == :module }
280
+
281
+ modules.should be_empty
282
+ end
283
+
284
+ it "contains only the specified modules" do
285
+ target = target_for('contacts')
286
+ modules = target.modules
287
+
288
+ preferences_module = target_for('contacts/preferences')
289
+ printing_module = target_for('contacts/printing')
290
+
291
+ modules.should include(preferences_module)
292
+ modules.should_not include(printing_module)
293
+ end
294
+ end
295
+
296
+ describe "when a deferred modules requires another module " do
297
+ before do
298
+ run_task
299
+ end
300
+
301
+ it "the deferred module should list the required module in its requirements" do
302
+ target = target_for('mail')
303
+ target_requirements = target.required_targets
304
+
305
+ preferences_module = target.target_for('mail/preferences')
306
+ printing_module = target.target_for('mail/printing')
307
+
308
+ preferences_requirements = preferences_module.required_targets
309
+
310
+ target_requirements.should_not include(preferences_module)
311
+ preferences_requirements.should include(printing_module)
312
+ end
313
+ end
314
+
315
+ describe "when an inline_module is defined" do
316
+ before do
317
+ run_task
318
+ end
319
+
320
+ it " should be included in the requirements" do
321
+ target = target_for('photos')
322
+ target_requirements = target.required_targets
323
+
324
+ preferences_module = target.target_for('photos/preferences')
325
+ email_module = target.target_for('photos/email')
326
+
327
+ target_requirements.should include(preferences_module)
328
+ target_requirements.should_not include(email_module)
329
+ end
330
+ end
254
331
  end
@@ -41,7 +41,7 @@ describe "manifest:prepare_build_tasks:css" do
41
41
  originals.size.should > 0 # precondition
42
42
 
43
43
  # transformed entries
44
- entries = @manifest.entries.select { |e| e.entry_type == :css }
44
+ entries = @manifest.entries.select { |e| e.entry_type == :css and not e.from_scss }
45
45
  entries.size.should == originals.size #precondition
46
46
 
47
47
  # one transformed entry should exist for each original entry.
@@ -15,7 +15,7 @@ describe "manifest:prepare_build_tasks:minify" do
15
15
  end
16
16
 
17
17
  it "should run setup, javascript, css, and combine as prereq" do
18
- %w(setup javascript css sass scss less combine).each do |task_name|
18
+ %w(setup javascript css sass less combine).each do |task_name|
19
19
  should_run("manifest:prepare_build_tasks:#{task_name}") { run_task }
20
20
  end
21
21
  end
@@ -0,0 +1,96 @@
1
+ require "buildtasks/manifest/spec_helper"
2
+
3
+ describe "manifest:prepare_build_tasks:module_info" do
4
+
5
+ include SC::SpecHelpers
6
+ include SC::ManifestSpecHelpers
7
+
8
+ before do
9
+ std_before :builder_tests, :module_test
10
+
11
+ # run std rules to run manifest. Then verify preconditions to make sure
12
+ # no other changes to the build system effect the ability of these tests
13
+ # to run properly.
14
+ @manifest.build!
15
+
16
+ end
17
+
18
+ describe "when a target defines a deferred module" do
19
+
20
+ it "should include a module_info entry" do
21
+ module_info_entry = @manifest.entry_for('module_info.js')
22
+
23
+ module_info_entry.should_not be nil
24
+ end
25
+
26
+ it "should contain all the modules and their requirements" do
27
+ module_info = @manifest.entry_for('module_info.js')
28
+ targets = module_info[:targets]
29
+
30
+ targets.length.should be 4
31
+ end
32
+
33
+ end
34
+
35
+ describe "when a target defines an inlined module" do
36
+
37
+ it "should include a module_info entry" do
38
+ module_info_entry = @manifest.entry_for('module_info.js')
39
+
40
+ module_info_entry.should_not be nil
41
+ end
42
+
43
+ it "should contain that module" do
44
+ module_info = @manifest.entry_for('module_info.js')
45
+ targets = module_info[:targets]
46
+
47
+ inline_module = target_for('/module_test/inlined_module')
48
+
49
+ targets.should include(inline_module)
50
+ end
51
+
52
+ it "should be marked as an inline module" do
53
+ module_info = @manifest.entry_for('module_info.js')
54
+ targets = module_info[:targets]
55
+
56
+ inline_module = target_for('/module_test/inlined_module')
57
+
58
+ inline_module[:inlined_module].should_not be nil
59
+ end
60
+
61
+ end
62
+
63
+ describe "when a deferred module requires another module but that required module is defined as a prefetched module in the app" do
64
+
65
+ it "it should be a prefetched module" do
66
+ module_info = @manifest.entry_for('module_info.js')
67
+ targets = module_info[:targets]
68
+
69
+ required_target = target_for('/module_test/required_target')
70
+
71
+ required_target[:prefetched_module].should be true
72
+ targets.should include(required_target)
73
+ end
74
+
75
+ it "should be marked as a deferred module" do
76
+ module_info = @manifest.entry_for('module_info.js')
77
+ targets = module_info[:targets]
78
+
79
+ required_target = target_for('/module_test/required_target')
80
+
81
+ required_target[:deferred_module].should be nil
82
+ end
83
+
84
+ end
85
+
86
+ describe "when a deferred module requires another module" do
87
+
88
+ it "it includes its requirements in the module_info entry" do
89
+ module_info = @manifest.entry_for('module_info.js')
90
+ targets = module_info[:targets]
91
+
92
+ targets.should include(target_for('/module_test/dynamic_req_target_1'))
93
+ end
94
+
95
+ end
96
+ end
@@ -0,0 +1,83 @@
1
+ require "buildtasks/manifest/spec_helper"
2
+
3
+ # Creates combined entries for javascript & css
4
+ describe "Target#modules" do
5
+
6
+ include SC::SpecHelpers
7
+ include SC::ManifestSpecHelpers
8
+
9
+ before do
10
+ std_before
11
+ end
12
+
13
+ def run_task
14
+ # capture any log warnings...
15
+ @msg = capture('stderr') {
16
+ @manifest.prepare!
17
+ super('manifest:prepare_build_tasks:combine')
18
+ }
19
+ end
20
+
21
+ describe "when a subset of modules are specified " do
22
+
23
+ before do
24
+ run_task
25
+ end
26
+
27
+ it "does not require any modules in its requried_targets" do
28
+ target = target_for('contacts')
29
+ requirements = target.required_targets
30
+
31
+ modules = requirements.select{ |target| target[:target_type] == :module }
32
+
33
+ modules.should be_empty
34
+ end
35
+
36
+ it "contains only the specified modules" do
37
+ target = target_for('contacts')
38
+ modules = target.modules
39
+
40
+ preferences_module = target_for('contacts/preferences')
41
+ printing_module = target_for('contacts/printing')
42
+
43
+ modules.should include(preferences_module)
44
+ modules.should_not include(printing_module)
45
+ end
46
+ end
47
+
48
+ describe "when a deferred modules requires another module " do
49
+ before do
50
+ run_task
51
+ end
52
+
53
+ it "the deferred module should list the required module in its requirements" do
54
+ target = target_for('mail')
55
+ target_requirements = target.required_targets
56
+
57
+ preferences_module = target.target_for('mail/preferences')
58
+ printing_module = target.target_for('mail/printing')
59
+
60
+ preferences_requirements = preferences_module.required_targets
61
+
62
+ target_requirements.should_not include(preferences_module)
63
+ preferences_requirements.should include(printing_module)
64
+ end
65
+ end
66
+
67
+ describe "when an inline_module is defined" do
68
+ before do
69
+ run_task
70
+ end
71
+
72
+ it "it should be included in the requirements" do
73
+ target = target_for('photos')
74
+ target_requirements = target.required_targets
75
+
76
+ preferences_module = target.target_for('photos/preferences')
77
+ email_module = target.target_for('photos/email')
78
+
79
+ target_requirements.should include(preferences_module)
80
+ target_requirements.should_not include(email_module)
81
+ end
82
+ end
83
+ end