cup 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.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,223 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'cup/directory'
|
3
|
+
require 'cup'
|
4
|
+
|
5
|
+
describe Cup::Directory do
|
6
|
+
|
7
|
+
let(:directory){ Cup::Directory.current }
|
8
|
+
|
9
|
+
describe '.__current__' do
|
10
|
+
it 'should return a Cup::Directory for the current working directory' do
|
11
|
+
Cup::Directory.__current__.path.should == Pathname.new('.').expand_path
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#cupfile' do
|
16
|
+
it 'should return a cupfile for the current directory' do
|
17
|
+
directory.cupfile.path.should == directory.path + 'Cupfile'
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should raise a CupfileError if the current directories cupfile is invalid' do
|
21
|
+
|
22
|
+
cupfile = directory.cupfile
|
23
|
+
cupfile.instance_variable_set :@name, nil
|
24
|
+
cupfile.should_not be_valid
|
25
|
+
|
26
|
+
directory.instance_variable_set :@cupfile, cupfile
|
27
|
+
|
28
|
+
expect {
|
29
|
+
directory.cupfile
|
30
|
+
}.to raise_error Cup::Cupfile::CupfileError
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#path' do
|
35
|
+
it 'should return the full path to the javascript cup directory' do
|
36
|
+
directory.path.should == Pathname.new(test_example_cup_name).expand_path
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#name' do
|
41
|
+
it 'should be the directory name of the project' do
|
42
|
+
directory.name.should == test_example_cup_name
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#concatenated' do
|
47
|
+
|
48
|
+
it 'should be absolute path to <cup_name>-<version>.js' do
|
49
|
+
directory.concatenated.should == File.expand_path("#{directory.path}/build/#{directory.cupfile.name}-#{Cup.version}.js")
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should give a path relative to the directory if :relative => true is passed' do
|
53
|
+
directory.concatenated(:relative => true).should == "build/#{directory.cupfile.name}-#{Cup.version}.js"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '#minified' do
|
58
|
+
|
59
|
+
it 'should be absolute path to <cup_name>-<version>.min.js' do
|
60
|
+
directory.minified.should == File.expand_path("#{directory.path}/build/#{directory.cupfile.name}-#{Cup.version}.min.js")
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'should give a path relative to the directory if :relative => true is passed' do
|
64
|
+
directory.minified(:relative => true).should == "build/#{directory.cupfile.name}-#{Cup.version}.min.js"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '#license' do
|
69
|
+
|
70
|
+
it 'should be absolute path to license.txt' do
|
71
|
+
directory.license.should == File.expand_path("#{directory.path}/license.txt")
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should give a path relative to the license if :relative => true is passed' do
|
75
|
+
directory.license(:relative => true).should == "license.txt"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe '#stylesheets' do
|
80
|
+
it 'returns an array with Pathname objects to all stylesheets' do
|
81
|
+
directory.stylesheets.count.should be >= 20
|
82
|
+
directory.stylesheets.each do |css|
|
83
|
+
css.should be_instance_of Pathname
|
84
|
+
css.to_s.downcase.should match /.*\.css$/
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe '#javascripts' do
|
90
|
+
|
91
|
+
share_examples_for :all_schemes do
|
92
|
+
|
93
|
+
it 'should not be empty' do
|
94
|
+
javascripts.empty?.should be_false
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'should only include javascripts' do
|
98
|
+
javascripts.each do |js|
|
99
|
+
js.should match /(.*)\.js$/
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'should not contain duplicates' do
|
104
|
+
javascripts.length.should == javascripts.uniq.length
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should return scripts from the load paths in the correct order" do
|
108
|
+
|
109
|
+
acceptor = JavascriptLoadOrderAcceptor.new
|
110
|
+
acceptor.accepts?(javascripts).should be_true
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'when a cupfile specifies an order of patterns' do
|
114
|
+
|
115
|
+
let(:directory){Cup::Directory.current}
|
116
|
+
let(:cupfile){directory.cupfile}
|
117
|
+
|
118
|
+
def set_patterns &block
|
119
|
+
Cup::Cupfile::DSL::JavascriptsDSL.interpret cupfile, &block
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'should include files in that order' do
|
123
|
+
|
124
|
+
set_patterns do
|
125
|
+
spec 'subdir/spec2.js', 'spec3.js', :*
|
126
|
+
vendor [:*, 'vendor2.js']
|
127
|
+
end
|
128
|
+
|
129
|
+
cupfile.javascripts[:spec][0].should == "#{directory.path}/spec/subdir/spec2.js"
|
130
|
+
cupfile.javascripts[:spec][1].should == "#{directory.path}/spec/spec3.js"
|
131
|
+
cupfile.javascripts[:spec].count.should be > 2
|
132
|
+
|
133
|
+
cupfile.javascripts[:vendor][-1].should == "#{directory.path}/vendor/vendor2.js"
|
134
|
+
cupfile.javascripts[:vendor].count.should be > 1
|
135
|
+
end
|
136
|
+
|
137
|
+
# because this is the one that matters when including javascripts in dependent order
|
138
|
+
it 'should include the item in its first position when there are duplicates' do
|
139
|
+
set_patterns do
|
140
|
+
lib 'lib3.js', :*, 'lib3.js'
|
141
|
+
end
|
142
|
+
|
143
|
+
cupfile.javascripts[:lib][0].should == "#{directory.path}/lib/lib3.js"
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
share_examples_for :build_input_schemes do
|
149
|
+
it 'should include exactly ONE build output' do
|
150
|
+
remains = javascripts.reject {|js| ! (js =~ /(.\/)?(build)(\/)/)}
|
151
|
+
remains.length.should == 1
|
152
|
+
end
|
153
|
+
it 'should not include src or lib' do
|
154
|
+
javascripts.should_not include_javascripts_from_load_paths(:src, :lib)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
share_examples_for :non_build_input_scheme do
|
159
|
+
it 'should include lib and src' do
|
160
|
+
javascripts.should include_javascripts_from_load_paths(:lib, :src)
|
161
|
+
end
|
162
|
+
it 'should not include build output' do
|
163
|
+
javascripts.should_not include_javascripts_from_load_paths(:build)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
context 'when calling with :build_input' do
|
168
|
+
|
169
|
+
let(:javascripts){directory.javascripts(:build_input)}
|
170
|
+
|
171
|
+
it_behaves_like :all_schemes
|
172
|
+
it_behaves_like :non_build_input_scheme
|
173
|
+
|
174
|
+
it 'should not include vendor build or specs' do
|
175
|
+
javascripts.should_not include_javascripts_from_load_paths(:vendor, :build, :spec)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
context 'when calling with :spec' do
|
180
|
+
|
181
|
+
let(:javascripts){directory.javascripts(:spec)}
|
182
|
+
|
183
|
+
it_behaves_like :all_schemes
|
184
|
+
it_behaves_like :non_build_input_scheme
|
185
|
+
end
|
186
|
+
|
187
|
+
context 'when calling with :spec_concatenated' do
|
188
|
+
|
189
|
+
let(:javascripts){directory.javascripts(:spec_concatenated)}
|
190
|
+
|
191
|
+
it_behaves_like :all_schemes
|
192
|
+
it_behaves_like :build_input_schemes
|
193
|
+
|
194
|
+
it 'should include the build output' do
|
195
|
+
javascripts.should include directory.concatenated
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
context 'when calling with :spec_minified' do
|
200
|
+
|
201
|
+
let(:javascripts){directory.javascripts(:spec_minified)}
|
202
|
+
|
203
|
+
it_behaves_like :all_schemes
|
204
|
+
it_behaves_like :build_input_schemes
|
205
|
+
|
206
|
+
it 'should include the minified output' do
|
207
|
+
javascripts.should include directory.minified
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
context 'when calling with :debug' do
|
212
|
+
|
213
|
+
let(:javascripts){directory.javascripts(:debug)}
|
214
|
+
|
215
|
+
it_behaves_like :all_schemes
|
216
|
+
it_behaves_like :non_build_input_scheme
|
217
|
+
|
218
|
+
it 'should not include specs' do
|
219
|
+
javascripts.should_not include_javascripts_from_load_paths(:spec)
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'cup/server/app'
|
3
|
+
|
4
|
+
describe Cup::Server::App do
|
5
|
+
def app
|
6
|
+
Cup::Server::App
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should serve public from the cup directory' do
|
10
|
+
app.settings.public_folder.should == Cup::Directory.current.path.to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should serve views and public from the cup/views directory' do
|
14
|
+
app.settings.views.should == File.expand_path('../../../../views', __FILE__)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should render concatenated output at /concatenate" do
|
18
|
+
get '/concatenate'
|
19
|
+
last_response.should be_ok
|
20
|
+
last_response.content_type.should include 'text/javascript'
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should render concatenated output at /minify" do
|
24
|
+
get '/minify'
|
25
|
+
last_response.should be_ok
|
26
|
+
last_response.content_type.should include 'text/javascript'
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should render /" do
|
30
|
+
get '/'
|
31
|
+
last_response.should be_ok
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should render /debug" do
|
35
|
+
get '/debug'
|
36
|
+
last_response.should be_ok
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should render /empty" do
|
40
|
+
get '/empty'
|
41
|
+
last_response.should be_ok
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should render /spec" do
|
45
|
+
get '/spec'
|
46
|
+
last_response.should be_ok
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should render /spec/concatenated" do
|
50
|
+
get '/spec/concatenated'
|
51
|
+
last_response.should be_ok
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should render /spec/minified" do
|
55
|
+
get '/spec/minified'
|
56
|
+
last_response.should be_ok
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should render /spec/visual" do
|
60
|
+
get '/spec/visual'
|
61
|
+
last_response.should be_ok
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'cup/server/visual_specs'
|
3
|
+
|
4
|
+
describe Cup::Server::VisualSpecs, '.get' do
|
5
|
+
|
6
|
+
subject { Cup::Server::VisualSpecs.get }
|
7
|
+
|
8
|
+
it { subject.should be_instance_of Hash }
|
9
|
+
|
10
|
+
# should match the number of generated valid visual specs
|
11
|
+
it { subject.values.count.should == 6 }
|
12
|
+
|
13
|
+
context 'hrefs' do
|
14
|
+
subject { Cup::Server::VisualSpecs.get.values.map{|vs| vs.href } }
|
15
|
+
|
16
|
+
it { should include '/spec/visual/visual2'}
|
17
|
+
it { should include '/spec/visual/visual1'}
|
18
|
+
it { should include '/spec/visual/subdir/visual1'}
|
19
|
+
it { should include '/spec/visual/subdir/visual2'}
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'names' do
|
23
|
+
subject { Cup::Server::VisualSpecs.get.values.map{|vs| vs.name } }
|
24
|
+
|
25
|
+
it { should include 'visual2'}
|
26
|
+
it { should include 'visual1'}
|
27
|
+
it { should include 'subdir/visual1'}
|
28
|
+
it { should include 'subdir/visual2'}
|
29
|
+
end
|
30
|
+
end
|
data/spec/env.rb
ADDED
data/spec/spec_helper.rb
CHANGED
@@ -1 +1,28 @@
|
|
1
|
-
|
1
|
+
require 'env'
|
2
|
+
|
3
|
+
require 'rspec'
|
4
|
+
require 'shoulda'
|
5
|
+
require 'rack/test'
|
6
|
+
require 'ruby-debug'
|
7
|
+
require 'support/macros'
|
8
|
+
require 'support/stub_helpers'
|
9
|
+
require 'support/javascript_load_order_acceptor'
|
10
|
+
require 'support/javascripts_matchers'
|
11
|
+
|
12
|
+
require 'cup/directory'
|
13
|
+
stub_current_directory
|
14
|
+
require 'cup/command_line'
|
15
|
+
stub_create_helper_downloaders
|
16
|
+
|
17
|
+
RSpec.configure do |config|
|
18
|
+
|
19
|
+
config.include Rack::Test::Methods
|
20
|
+
config.include Support::Macros
|
21
|
+
|
22
|
+
config.before(:all) do
|
23
|
+
remove_test_example
|
24
|
+
generate_test_example
|
25
|
+
end
|
26
|
+
|
27
|
+
config.after(:all) { remove_test_example }
|
28
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'statemachine'
|
2
|
+
# a state machine for checking the include order of javascripts
|
3
|
+
class JavascriptLoadOrderAcceptor
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@sm = Statemachine.build do
|
7
|
+
|
8
|
+
trans :vendor, :build, :build
|
9
|
+
trans :vendor, :vendor, :vendor
|
10
|
+
trans :vendor, :spec, :spec
|
11
|
+
trans :vendor, :lib, :lib
|
12
|
+
trans :vendor, :src, :src
|
13
|
+
|
14
|
+
trans :spec, :build, :build
|
15
|
+
trans :spec, :vendor, :error
|
16
|
+
trans :spec, :spec, :spec
|
17
|
+
trans :spec, :lib, :lib
|
18
|
+
trans :spec, :src, :src
|
19
|
+
|
20
|
+
trans :lib, :vendor, :error
|
21
|
+
trans :lib, :build, :error
|
22
|
+
trans :lib, :spec, :error
|
23
|
+
trans :lib, :lib, :lib
|
24
|
+
trans :lib, :src, :src
|
25
|
+
|
26
|
+
trans :src, :vendor, :error
|
27
|
+
trans :src, :build, :error
|
28
|
+
trans :src, :spec, :error
|
29
|
+
trans :src, :lib, :error
|
30
|
+
trans :src, :src, :src
|
31
|
+
|
32
|
+
trans :build, :vendor, :error
|
33
|
+
trans :build, :build, :error
|
34
|
+
trans :build, :spec, :error
|
35
|
+
trans :build, :lib, :error
|
36
|
+
trans :build, :src, :error
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def accepts? javascripts
|
42
|
+
javascripts.each{ |javascript_path| input javascript_path }
|
43
|
+
|
44
|
+
accept = @sm.state != :error
|
45
|
+
@sm.reset
|
46
|
+
|
47
|
+
accept
|
48
|
+
end
|
49
|
+
|
50
|
+
def input javascript_path
|
51
|
+
|
52
|
+
regex = /(.\/)?([^\/]+)(\/)/
|
53
|
+
matches = regex.match(javascript_path)
|
54
|
+
dir = matches[2] if matches
|
55
|
+
|
56
|
+
begin
|
57
|
+
@sm.process_event dir.to_sym
|
58
|
+
rescue Statemachine::TransitionMissingException => e
|
59
|
+
end
|
60
|
+
|
61
|
+
nil
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
RSpec::Matchers.define :include_javascripts_from_load_paths do |*expected|
|
2
|
+
|
3
|
+
match do |actual|
|
4
|
+
expected.all? do |e|
|
5
|
+
actual.any? do |a|
|
6
|
+
/(\.\/)?(#{e})\// =~ a
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
failure_message_for_should do |actual|
|
12
|
+
"expected that #{actual} would include files from #{expected}"
|
13
|
+
end
|
14
|
+
|
15
|
+
failure_message_for_should_not do |actual|
|
16
|
+
"expected that #{actual} would not include files from #{expected}"
|
17
|
+
end
|
18
|
+
|
19
|
+
description do
|
20
|
+
"include files from #{expected}"
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
module Support
|
5
|
+
module Macros
|
6
|
+
include RakeFileUtils
|
7
|
+
RakeFileUtils.verbose_flag = false
|
8
|
+
|
9
|
+
def test_example_cup_name
|
10
|
+
'cup_test_example'
|
11
|
+
end
|
12
|
+
|
13
|
+
def cup_directory
|
14
|
+
Cup::Directory.new test_example_cup_path
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_example_cup_path
|
18
|
+
Pathname.new test_example_cup_name
|
19
|
+
end
|
20
|
+
|
21
|
+
def generate_test_example
|
22
|
+
require 'cup/command_line'
|
23
|
+
|
24
|
+
cli = Cup::CommandLine.new
|
25
|
+
cli.create(test_example_cup_name)
|
26
|
+
|
27
|
+
build_dir = "#{test_example_cup_name}/build"
|
28
|
+
mkdir build_dir
|
29
|
+
|
30
|
+
touch "#{test_example_cup_name}/build/#{test_example_cup_name}.js"
|
31
|
+
touch "#{test_example_cup_name}/build/#{test_example_cup_name}.min.js"
|
32
|
+
touch "#{test_example_cup_name}/license.txt"
|
33
|
+
|
34
|
+
%w[vendor lib spec src].each do |dir|
|
35
|
+
path = "#{test_example_cup_name}/#{dir}"
|
36
|
+
subdir = "#{path}/subdir"
|
37
|
+
mkdir_p subdir
|
38
|
+
|
39
|
+
touch "#{path}/README"
|
40
|
+
touch "#{path}/image.jpg"
|
41
|
+
|
42
|
+
name = dir.gsub('/', '_')
|
43
|
+
|
44
|
+
3.times do |i|
|
45
|
+
touch "#{path}/#{name}#{i}.js"
|
46
|
+
touch "#{path}/#{name}#{i}.css"
|
47
|
+
2.times do |j|
|
48
|
+
touch "#{subdir}/#{name}#{j}.js"
|
49
|
+
touch "#{subdir}/#{name}#{j}.css"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
visuals_path = test_example_cup_path + 'spec' + 'visual'
|
55
|
+
visuals_subdir_path = visuals_path + 'subdir'
|
56
|
+
|
57
|
+
mkdir_p visuals_subdir_path
|
58
|
+
|
59
|
+
3.times do |i|
|
60
|
+
touch visuals_path + "visual#{i}.slim"
|
61
|
+
touch visuals_path + "visual#{i}.js"
|
62
|
+
touch visuals_subdir_path + "visual#{i}.js"
|
63
|
+
touch visuals_subdir_path + "visual#{i}.slim"
|
64
|
+
end
|
65
|
+
|
66
|
+
test_example_cup_name
|
67
|
+
end
|
68
|
+
|
69
|
+
def remove_test_example
|
70
|
+
rm_r test_example_cup_name if Dir.exists? test_example_cup_name
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
# to speed up specs and ensure specs work offline
|
3
|
+
def stub_create_helper_downloaders
|
4
|
+
Cup::CommandLine::Helper.module_eval do
|
5
|
+
|
6
|
+
def get_jquery
|
7
|
+
"\"#{__FILE__} mocked download of http://code.jquery.com/jquery.min.js\""
|
8
|
+
end
|
9
|
+
|
10
|
+
def download_jasmine
|
11
|
+
%x{
|
12
|
+
touch #{root + 'vendor/jasmine.js'}
|
13
|
+
touch #{root + 'vendor/jasmine-html.js'}
|
14
|
+
touch #{root + 'vendor/jasmine.css'}
|
15
|
+
}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def stub_current_directory
|
21
|
+
Cup::Directory.instance_eval do
|
22
|
+
|
23
|
+
# ordinarily this would be the current working directory
|
24
|
+
# for testing we must test within a generated directory
|
25
|
+
def current
|
26
|
+
extend Support::Macros
|
27
|
+
Cup::Directory.new(test_example_cup_path)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/views/blank.slim
ADDED
data/views/cup.coffee
ADDED