cup 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +0 -1
- data/.pryrc +9 -0
- data/.rdebugrc +0 -0
- data/.rspec +2 -0
- data/Gemfile.lock +115 -0
- data/README.md +82 -2
- data/Rakefile +1 -3
- data/TODO +13 -0
- data/bin/cup +2 -17
- data/cup.gemspec +27 -11
- data/js/extra_matchers.js +29 -0
- data/lib/cup/builder.rb +127 -0
- data/lib/cup/command_line.rb +225 -0
- data/lib/cup/cupfile.rb +116 -0
- data/lib/cup/directory.rb +96 -0
- data/lib/cup/noop_shell.rb +12 -0
- data/lib/cup/server/app.rb +138 -0
- data/lib/cup/server/middleware.rb +27 -0
- data/lib/cup/server/view_scope.rb +108 -0
- data/lib/cup/server/visual_specs.rb +33 -0
- data/lib/cup/version.rb +3 -0
- data/lib/cup.rb +54 -2
- data/spec/cup/builder_spec.rb +164 -0
- data/spec/cup/command_line_spec.rb +182 -0
- data/spec/cup/cupfile_spec.rb +228 -0
- data/spec/cup/directory_spec.rb +223 -0
- data/spec/cup/server/app_spec.rb +63 -0
- data/spec/cup/server/visual_specs_spec.rb +30 -0
- data/spec/env.rb +2 -0
- data/spec/spec_helper.rb +28 -1
- data/spec/support/javascript_load_order_acceptor.rb +63 -0
- data/spec/support/javascripts_matchers.rb +22 -0
- data/spec/support/macros.rb +74 -0
- data/spec/support/stub_helpers.rb +30 -0
- data/views/blank.slim +9 -0
- data/views/cup.coffee +4 -0
- data/views/cup.sass +167 -0
- data/views/layout.slim +53 -0
- data/views/not_found.slim +3 -0
- data/views/root.slim +42 -0
- data/views/spec.slim +5 -0
- data/views/visual.slim +13 -0
- metadata +197 -22
- data/.versionify +0 -1
- data/spec/cup_cli.spec.rb +0 -12
@@ -0,0 +1,164 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Cup::Builder do
|
4
|
+
|
5
|
+
let(:directory) {Cup::Directory.current}
|
6
|
+
let(:builder) {Cup::Builder.new(directory)}
|
7
|
+
let(:options){Hash.new}
|
8
|
+
|
9
|
+
describe '#build' do
|
10
|
+
|
11
|
+
def build
|
12
|
+
builder.build options
|
13
|
+
end
|
14
|
+
|
15
|
+
share_examples_for :building do
|
16
|
+
it 'should call the before_build hook before building' do
|
17
|
+
directory.cupfile.before_build.should_receive(:call)
|
18
|
+
build
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should call the after_build after the build' do
|
22
|
+
directory.cupfile.after_build.should_receive(:call)
|
23
|
+
build
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should call the concatentate_variant' do
|
27
|
+
builder.should_receive(concatentate_variant)
|
28
|
+
build
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should call the minify_variant' do
|
32
|
+
builder.should_receive(minify_variant)
|
33
|
+
build
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should return a Hash with the results of both minification and concatenation' do
|
37
|
+
result = build
|
38
|
+
result[:concatenated].should be_instance_of Hash
|
39
|
+
result[:minified].should be_instance_of Hash
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'when suppressing errors' do
|
44
|
+
def build
|
45
|
+
builder.build options
|
46
|
+
end
|
47
|
+
let(:concatentate_variant){:concatenate}
|
48
|
+
let(:minify_variant){:minify}
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'when not suppressing errors' do
|
52
|
+
def build
|
53
|
+
builder.build! options
|
54
|
+
end
|
55
|
+
let(:concatentate_variant){:concatenate!}
|
56
|
+
let(:minify_variant){:minify!}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
share_examples_for 'javascript processing' do
|
61
|
+
|
62
|
+
it 'should create and write an output file by default' do
|
63
|
+
process_scripts!
|
64
|
+
File.should exist(output_file)
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'when a license file is specified' do
|
68
|
+
|
69
|
+
let(:license){"\n\nLICENSE\nFILE\nCONTENT\n\n\n"}
|
70
|
+
let(:license_comment) {"/*\n" + license + "\n*/"}
|
71
|
+
|
72
|
+
before :each do
|
73
|
+
cupfile = directory.cupfile
|
74
|
+
cupfile.stub(:license).and_return('license.txt')
|
75
|
+
File.should_receive(:read).with(/.*license\.txt$/).and_return(license)
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'should prepend the license unaltered to the output' do
|
79
|
+
process_scripts!
|
80
|
+
File.read(output_file).start_with?(license_comment).should be_true
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context 'when not suppressing exceptions' do
|
85
|
+
|
86
|
+
it 'should throw an exception if something goes wrong' do
|
87
|
+
File.stub(:read).and_raise
|
88
|
+
|
89
|
+
expect {
|
90
|
+
process_scripts!
|
91
|
+
}.to raise_error
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'should return the output' do
|
96
|
+
process_scripts!.should_not be_nil
|
97
|
+
process_scripts!.length.should_not == 0
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
context 'when supressing exceptions' do
|
102
|
+
|
103
|
+
context 'and there are errors' do
|
104
|
+
|
105
|
+
before :each do
|
106
|
+
builder.stub(:process).and_raise 'and_raise ERROR'
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'should return a Hash with failed status and an exception message' do
|
110
|
+
process_scripts[:status].should == :failed
|
111
|
+
process_scripts[:exception].should_not be_nil
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
context 'and there are no errors' do
|
116
|
+
it 'should return a Hash with ok status output and no exception message' do
|
117
|
+
process_scripts[:status].should == :ok
|
118
|
+
process_scripts[:exception].should be_nil
|
119
|
+
process_scripts[:output].should_not be_nil
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
context 'when a cli is specified' do
|
125
|
+
it 'should report to the cli' do
|
126
|
+
cli = stub
|
127
|
+
options[:cli] = cli
|
128
|
+
cli.should_receive(:say)
|
129
|
+
process_scripts!
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe 'concatenating' do
|
135
|
+
|
136
|
+
def process_scripts!
|
137
|
+
builder.concatenate!(options)
|
138
|
+
end
|
139
|
+
|
140
|
+
def process_scripts
|
141
|
+
builder.concatenate(options)
|
142
|
+
end
|
143
|
+
|
144
|
+
let(:output_file){directory.concatenated}
|
145
|
+
|
146
|
+
it_behaves_like 'javascript processing'
|
147
|
+
|
148
|
+
end
|
149
|
+
|
150
|
+
describe 'minifying' do
|
151
|
+
|
152
|
+
def process_scripts!
|
153
|
+
builder.minify!(options)
|
154
|
+
end
|
155
|
+
|
156
|
+
def process_scripts
|
157
|
+
builder.minify(options)
|
158
|
+
end
|
159
|
+
|
160
|
+
let(:output_file){directory.minified}
|
161
|
+
|
162
|
+
it_behaves_like 'javascript processing'
|
163
|
+
end
|
164
|
+
end
|
@@ -0,0 +1,182 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'cup/command_line'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
describe Cup::CommandLine do
|
6
|
+
|
7
|
+
before :each do
|
8
|
+
puts "\n"
|
9
|
+
end
|
10
|
+
|
11
|
+
after :each do
|
12
|
+
puts "\n"
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:cli) {Cup::CommandLine.new}
|
16
|
+
let(:test_cup_name) { "test_cup_#{Time.now.utc.to_i}" }
|
17
|
+
let(:test_cup_path) { Pathname.new("test_cup_#{Time.now.utc.to_i}") }
|
18
|
+
|
19
|
+
describe '#create' do
|
20
|
+
|
21
|
+
after :each do
|
22
|
+
FileUtils.rm_r test_cup_name if File.exists? test_cup_name
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should raise an exception if the name is not a valid filename' do
|
26
|
+
expect {
|
27
|
+
cli.create 'invalid/filename'
|
28
|
+
}.to raise_error
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should not create a new cup dir if one of the same name exists' do
|
32
|
+
Dir.stub(:exists?).and_return(true)
|
33
|
+
cli.create test_cup_name
|
34
|
+
Dir.unstub!(:exists?)
|
35
|
+
File.should_not exist(test_cup_name)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should create a new cup dir' do
|
39
|
+
cli.create test_cup_name
|
40
|
+
File.should exist(test_cup_name)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'creates a default Cupfile' do
|
44
|
+
cli.create test_cup_name
|
45
|
+
cupfile_path = "#{test_cup_name}/Cupfile"
|
46
|
+
File.should exist(cupfile_path)
|
47
|
+
File.size(cupfile_path).should be > 0
|
48
|
+
end
|
49
|
+
|
50
|
+
it "creates empty src, lib and spec and spec/visual directories" do
|
51
|
+
cli.create test_cup_name
|
52
|
+
%w(src lib spec spec/visual).each do |dir|
|
53
|
+
dir = test_cup_path + dir
|
54
|
+
File.should exist(dir)
|
55
|
+
|
56
|
+
File.should be_directory(dir)
|
57
|
+
|
58
|
+
if dir == test_cup_path + 'spec'
|
59
|
+
Dir["#{dir}/*"].count.should == 1
|
60
|
+
else
|
61
|
+
Dir["#{dir}/*"].should be_empty
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
it "it downloads jquery into the vendor directory by default" do
|
67
|
+
cli.create test_cup_name
|
68
|
+
File.should exist("#{test_cup_name}/vendor/jquery.min.js")
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'should not raise an error if jquery fails to download' do
|
72
|
+
|
73
|
+
Cup::CommandLine::Helper.module_eval do
|
74
|
+
def get_jquery
|
75
|
+
nil
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
expect {
|
80
|
+
cli.create test_cup_name
|
81
|
+
}.to_not raise_error
|
82
|
+
|
83
|
+
stub_create_helper_downloaders
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'should not raise an error if jasmine fails to download/unpack' do
|
87
|
+
|
88
|
+
Cup::CommandLine::Helper.module_eval do
|
89
|
+
def download_jasmine
|
90
|
+
false
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
expect {
|
95
|
+
cli.create test_cup_name
|
96
|
+
}.to_not raise_error
|
97
|
+
|
98
|
+
stub_create_helper_downloaders
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'should download jasmine into vendor' do
|
102
|
+
cli.create test_cup_name
|
103
|
+
path = Pathname.new(test_cup_name)
|
104
|
+
|
105
|
+
File.should exist(path + 'vendor' + 'jasmine-html.js')
|
106
|
+
File.should exist(path + 'vendor' + 'jasmine.js')
|
107
|
+
File.should exist(path + 'vendor' + 'jasmine.css')
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'should copy extra_matchers.js from the gem into vendor' do
|
111
|
+
cli.create test_cup_name
|
112
|
+
path = Pathname.new(test_cup_name)
|
113
|
+
File.should exist(path + 'vendor' + 'extra_matchers.js')
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'should create a license file populated with the year and user as author' do
|
117
|
+
cli.create test_cup_name
|
118
|
+
path = "#{test_cup_name}/license.txt"
|
119
|
+
File.should exist(path)
|
120
|
+
license = File.read path
|
121
|
+
license.should include Time.now.year.to_s
|
122
|
+
license.should include ENV['USER']
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe '#rackup' do
|
127
|
+
|
128
|
+
let(:config_ru_path){(Cup::Directory.current.path + "config.ru").to_s}
|
129
|
+
|
130
|
+
it 'should output a config.ru to the current directory' do
|
131
|
+
cli.rackup
|
132
|
+
File.should exist(config_ru_path)
|
133
|
+
File.delete(config_ru_path)
|
134
|
+
end
|
135
|
+
|
136
|
+
context 'when there is no cupfile in the directory' do
|
137
|
+
|
138
|
+
before :each do
|
139
|
+
helper = stub
|
140
|
+
helper.stub(:cupfile?).and_return(false)
|
141
|
+
cli.stub(:pwd_helper).and_return(helper)
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'should not output a config.ru to the current directory' do
|
145
|
+
cli.rackup
|
146
|
+
File.should_not exist(config_ru_path)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
describe '#build' do
|
152
|
+
it 'creates a minified and concatenated version of lib+src in build/' do
|
153
|
+
Cup.should_receive(:build!)
|
154
|
+
cli.build
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe 'stdout output' do
|
159
|
+
|
160
|
+
before :each do
|
161
|
+
@stdout = $stdout
|
162
|
+
$stdout = StringIO.new
|
163
|
+
end
|
164
|
+
|
165
|
+
after :each do
|
166
|
+
$stdout = @stdout
|
167
|
+
end
|
168
|
+
|
169
|
+
describe '#concatenate' do
|
170
|
+
it 'should output concatenated version' do
|
171
|
+
cli.concatenate
|
172
|
+
$stdout.pos.should be > 0
|
173
|
+
end
|
174
|
+
end
|
175
|
+
describe '#minify' do
|
176
|
+
it 'should output minified version' do
|
177
|
+
cli.minify
|
178
|
+
$stdout.pos.should be > 0
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
@@ -0,0 +1,228 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'cup'
|
3
|
+
|
4
|
+
describe Cup::Cupfile do
|
5
|
+
|
6
|
+
let(:cupfile) do
|
7
|
+
Cup::Directory.current.cupfile
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '.new' do
|
11
|
+
|
12
|
+
it 'should raise an error if the specified path is a directory' do
|
13
|
+
expect do
|
14
|
+
Cup::Cupfile.new('/')
|
15
|
+
end.to raise_error
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should raise an error if the specified path does not exist' do
|
19
|
+
expect do
|
20
|
+
Cup::Cupfile.new('non/existing/path')
|
21
|
+
end.to raise_error
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
describe 'validations' do
|
27
|
+
|
28
|
+
before(:each){ cupfile.should be_valid }
|
29
|
+
|
30
|
+
it '{ should validate_presence_of :name }' do
|
31
|
+
cupfile.instance_variable_set :@name, nil
|
32
|
+
cupfile.should_not be_valid
|
33
|
+
end
|
34
|
+
|
35
|
+
it '{ should validate_presence_of :version }' do
|
36
|
+
cupfile.instance_variable_set :@version, nil
|
37
|
+
cupfile.should_not be_valid
|
38
|
+
end
|
39
|
+
|
40
|
+
it '{ should validate_presence_of :path }' do
|
41
|
+
cupfile.instance_variable_set :@path, nil
|
42
|
+
cupfile.should_not be_valid
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should be invalid if the license file is specified but does not exist' do
|
46
|
+
cupfile.instance_variable_set :@license, 'path/that/is/not/there.txt'
|
47
|
+
cupfile.should_not be_valid
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#uglifier_options' do
|
52
|
+
it 'returns an empty hash by default' do
|
53
|
+
cupfile.uglifier_options.should be_instance_of Hash
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '#before_build' do
|
58
|
+
it 'should be a noop by default' do
|
59
|
+
cupfile.before_build.should be_instance_of Proc
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#after_build' do
|
64
|
+
it 'should be a noop by default' do
|
65
|
+
cupfile.after_build.should be_instance_of Proc
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe '#javascripts' do
|
70
|
+
it 'should return a hash from dir for array for vendor, spec, lib and src' do
|
71
|
+
|
72
|
+
cupfile.javascripts.should be_instance_of(Hash)
|
73
|
+
|
74
|
+
%w{vendor spec lib src}.each do |dir|
|
75
|
+
cupfile.javascripts[dir.to_sym].should be_instance_of Array
|
76
|
+
cupfile.javascripts[dir.to_sym].should_not be_empty
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe '#set_javascript_patterns_for' do
|
82
|
+
|
83
|
+
let(:cupfile) { Cup::Directory.current.cupfile }
|
84
|
+
|
85
|
+
def set_patterns dir, *patterns
|
86
|
+
cupfile.send :set_javascript_patterns_for, dir, *patterns
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'should not assign nil to javascripts key' do
|
90
|
+
set_patterns :spec, nil
|
91
|
+
cupfile.javascripts[:spec].should_not be_nil
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'should return a match-all pattern for vendor,spec,lib,src by default' do
|
95
|
+
%w{vendor spec lib src}.each do |dir|
|
96
|
+
cupfile.javascripts[dir.to_sym].should_not be_empty
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should allow the pattern to be an empty array' do
|
101
|
+
set_patterns :src, []
|
102
|
+
cupfile.javascripts[:src].should == []
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'should expand paths to within their key directory' do
|
106
|
+
filelist = FileList["#{File.expand_path(test_example_cup_path.to_s)}/lib/**/*.js"]
|
107
|
+
set_patterns :lib, '**/*.js'
|
108
|
+
cupfile.javascripts[:lib].should == filelist
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'should turn :* into a match-all pattern' do
|
112
|
+
filelist = FileList["#{File.expand_path(test_example_cup_path.to_s)}/lib/**/*.js"]
|
113
|
+
|
114
|
+
set_patterns :lib, :*
|
115
|
+
cupfile.javascripts[:lib].should == filelist
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'should not match-all javascripts within visual spec directory' do
|
119
|
+
cupfile.javascripts[:spec].should_not include_javascripts_from_load_paths 'spec/visual'
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'should not allow none javascripts files to be included' do
|
123
|
+
set_patterns :lib, '1.css'
|
124
|
+
cupfile.javascripts[:lib].should be_empty
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe '#path' do
|
129
|
+
|
130
|
+
it 'should return the path that the cupfile was initialized with' do
|
131
|
+
path = test_example_cup_path + 'Cupfile'
|
132
|
+
cupfile = Cup::Cupfile.new(path)
|
133
|
+
cupfile.path.should == path
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'should allow a version to be set' do
|
138
|
+
|
139
|
+
Cup::Cupfile::DSL.interpret cupfile do
|
140
|
+
version '1.0.3'
|
141
|
+
end
|
142
|
+
|
143
|
+
cupfile.version.should == '1.0.3'
|
144
|
+
end
|
145
|
+
|
146
|
+
it 'should allow a name to be set' do
|
147
|
+
|
148
|
+
Cup::Cupfile::DSL.interpret cupfile do
|
149
|
+
name 'mycup'
|
150
|
+
end
|
151
|
+
|
152
|
+
cupfile.name.should == 'mycup'
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'should allow a license file to be set' do
|
156
|
+
|
157
|
+
Cup::Cupfile::DSL.interpret cupfile do
|
158
|
+
license 'license.txt'
|
159
|
+
end
|
160
|
+
|
161
|
+
cupfile.license.should == 'license.txt'
|
162
|
+
end
|
163
|
+
|
164
|
+
it 'should allow a before_build block to be set' do
|
165
|
+
|
166
|
+
proc = lambda {}
|
167
|
+
|
168
|
+
Cup::Cupfile::DSL.interpret cupfile do
|
169
|
+
before_build &proc
|
170
|
+
end
|
171
|
+
|
172
|
+
cupfile.before_build.should equal proc
|
173
|
+
end
|
174
|
+
|
175
|
+
it 'should allow a after_build block to be set' do
|
176
|
+
|
177
|
+
proc = lambda {}
|
178
|
+
|
179
|
+
Cup::Cupfile::DSL.interpret cupfile do
|
180
|
+
after_build &proc
|
181
|
+
end
|
182
|
+
|
183
|
+
cupfile.after_build.should equal proc
|
184
|
+
end
|
185
|
+
|
186
|
+
it 'should allow uglifier options to be specified' do
|
187
|
+
|
188
|
+
uglifier_opts = Hash.new
|
189
|
+
|
190
|
+
Cup::Cupfile::DSL.interpret cupfile do
|
191
|
+
uglifier_options uglifier_opts
|
192
|
+
end
|
193
|
+
|
194
|
+
cupfile.uglifier_options.should equal uglifier_opts
|
195
|
+
end
|
196
|
+
|
197
|
+
describe Cup::Cupfile::DSL do
|
198
|
+
describe Cup::Cupfile::DSL::JavascriptsDSL do
|
199
|
+
|
200
|
+
let(:cupfile){Cup::Directory.current.cupfile}
|
201
|
+
|
202
|
+
def interpret &block
|
203
|
+
Cup::Cupfile::DSL::JavascriptsDSL.interpret cupfile, &block
|
204
|
+
cupfile
|
205
|
+
end
|
206
|
+
|
207
|
+
it 'should allow lists of arguments' do
|
208
|
+
patterns = ['1.js', 'subdir/*.js']
|
209
|
+
cupfile.should_receive(:set_javascript_patterns_for).with(:spec, *patterns)
|
210
|
+
|
211
|
+
interpret do
|
212
|
+
spec *patterns
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
it 'should allow an array of patterns' do
|
217
|
+
|
218
|
+
patterns = ['1.js', 'subdir/*.js']
|
219
|
+
cupfile.should_receive(:set_javascript_patterns_for).with(:vendor, *patterns)
|
220
|
+
|
221
|
+
interpret do
|
222
|
+
vendor patterns
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|