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.
- data/CHANGELOG +6 -0
- data/VERSION.yml +1 -1
- data/lib/Buildfile +1 -1
- data/lib/buildtasks/build.rake +14 -6
- data/lib/buildtasks/manifest.rake +171 -72
- data/lib/frameworks/sproutcore/Buildfile +3 -5
- data/lib/frameworks/sproutcore/CHANGELOG.md +9 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +2 -1
- data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +7 -17
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +7 -1
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +14 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +14 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +49 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +46 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +32 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +32 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +31 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +15 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +28 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +20 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +2 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +40 -34
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +43 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +47 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +6 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +41 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +128 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +93 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +13 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +47 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +51 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/method.js +33 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +29 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +9 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +148 -134
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +30 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +9 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +52 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +36 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +9 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +15 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +1 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/well.js +1 -2
- data/lib/frameworks/sproutcore/frameworks/forms/views/form.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +25 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +34 -27
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +42 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +62 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +48 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +19 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +11 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +152 -74
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +12 -9
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +1476 -176
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +227 -32
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +10 -0
- data/lib/frameworks/sproutcore/lib/index.rhtml +30 -8
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +4 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +4 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +4 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +4 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +4 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +5 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.js +11 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/well/well.css +7 -8
- data/lib/frameworks/sproutcore/themes/ace/resources/well/well.js +2 -4
- data/lib/gen/app/templates/apps/@target_name@/Buildfile +14 -0
- data/lib/gen/app/templates/apps/@target_name@/theme.js +27 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +4 -0
- data/lib/gen/project/templates/@filename@/Buildfile +7 -2
- data/lib/gen/theme/templates/themes/@target_name@/Buildfile +3 -0
- data/lib/gen/theme/templates/themes/@target_name@/theme.js +23 -0
- data/lib/sproutcore/builders.rb +2 -0
- data/lib/sproutcore/builders/chance.rb +64 -0
- data/lib/sproutcore/builders/chance_file.rb +59 -0
- data/lib/sproutcore/builders/combine.rb +0 -45
- data/lib/sproutcore/builders/html.rb +1 -1
- data/lib/sproutcore/builders/minify.rb +5 -17
- data/lib/sproutcore/builders/module.rb +2 -2
- data/lib/sproutcore/builders/string_wrapper.rb +13 -15
- data/lib/sproutcore/helpers.rb +1 -1
- data/lib/sproutcore/helpers/minifier.rb +56 -0
- data/lib/sproutcore/helpers/static_helper.rb +86 -40
- data/lib/sproutcore/models/generator.rb +16 -0
- data/lib/sproutcore/models/manifest_entry.rb +8 -1
- data/lib/sproutcore/models/target.rb +101 -33
- data/lib/sproutcore/tools.rb +0 -7
- data/lib/sproutcore/tools/build.rb +2 -37
- data/spec/buildtasks/manifest/prepare_build_tasks/chance_spec.rb +100 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +86 -9
- data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +1 -1
- data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +1 -1
- data/spec/buildtasks/manifest/prepare_build_tasks/module_info_spec.rb +96 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/module_spec.rb +83 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +37 -4
- data/spec/buildtasks/manifest/spec_helper.rb +4 -0
- data/spec/fixtures/builder_tests/Buildfile +11 -9
- data/spec/fixtures/builder_tests/apps/chance_test/Buildfile +14 -0
- data/spec/fixtures/builder_tests/apps/chance_test/core.js +27 -0
- data/spec/fixtures/builder_tests/apps/chance_test/main.js +30 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/demo.css +6 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/last_file.css +7 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/loading.rhtml +9 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/main_page.js +24 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/z_first_file.css +6 -0
- data/spec/fixtures/builder_tests/apps/chance_test/theme.js +27 -0
- data/spec/fixtures/builder_tests/apps/module_test/module.js +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/req_style_2.css +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/test.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/javascript.js +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/lib/alt_layout.rhtml +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/req_js_2.js +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/dynamic_req_js_1.js +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/english.lproj/dynamic_req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/inlined_module/README +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/strings.js +4 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/test.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/req_js_1.js +0 -0
- data/spec/fixtures/helper_tests/apps/minifier_test/core.js +8 -0
- data/spec/fixtures/real_world/Buildfile +11 -1
- data/spec/fixtures/real_world/apps/account/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/calendar/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/contacts/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/contacts/modules/printing/README +0 -0
- data/spec/fixtures/real_world/apps/mail/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/mail/modules/printing/README +0 -0
- data/spec/fixtures/real_world/apps/photos/modules/email/README +0 -0
- data/spec/fixtures/real_world/apps/photos/modules/preferences/README +0 -0
- data/spec/lib/builders/chance_file_spec.rb +63 -0
- data/spec/lib/builders/chance_spec.rb +81 -0
- data/spec/lib/builders/module_spec.rb +133 -0
- data/spec/lib/helpers/minifier.rb +31 -0
- data/spec/lib/models/project/find_targets_for_spec.rb +1 -1
- data/vendor/chance/lib/chance/imagers/data_url.rb +68 -17
- data/vendor/chance/lib/chance/instance.rb +55 -30
- data/vendor/chance/lib/chance/parser.rb +1 -1
- data/vendor/chance/lib/chance/slicing.rb +39 -3
- metadata +52 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/system/logger.js +0 -163
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/logger.js +0 -44
- data/spec/buildtasks/manifest/prepare_build_tasks/bundle_spec.rb +0 -254
- data/spec/fixtures/builder_tests/apps/bundle_test/bundle.js +0 -1
- data/spec/lib/builders/bundle_spec.rb +0 -295
data/lib/sproutcore/tools.rb
CHANGED
@@ -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,
|
22
|
-
%w(setup javascript css sass
|
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 "
|
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:
|
64
|
-
entry_for('stylesheet.css').build_task.should == 'build:
|
65
|
-
entry_for('bar.css').build_task.should == 'build:
|
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(
|
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(
|
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
|
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
|