forked from rails/sprockets
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_rake_task.rb
114 lines (86 loc) · 2.88 KB
/
test_rake_task.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# frozen_string_literal: true
require 'sprockets_test'
require 'rake/sprocketstask'
require 'rake'
class TestRakeTask < Sprockets::TestCase
def setup
@rake = Rake::Application.new
Rake.application = @rake
@env = Sprockets::Environment.new(".") do |env|
env.append_path(fixture_path('default'))
end
@dir = Dir.mktmpdir
FileUtils.mkdir_p(@dir)
@manifest_custom_dir = Sprockets::Manifest.new(@env, @dir)
@manifest_custom_path = Sprockets::Manifest.new(@env, @dir, File.join(@dir, 'manifest.json'))
Rake::SprocketsTask.new do |t|
t.environment = @env
t.output = @dir
t.assets = ['application.js']
t.log_level = :fatal
end
end
def teardown
Rake.application = nil
FileUtils.remove_entry_secure(@dir) if File.exist?(@dir)
assert Dir["#{@dir}/*"].empty?
end
test "assets" do
digest_path = @env['application.js'].digest_path
assert !File.exist?("#{@dir}/#{digest_path}")
@rake[:assets].invoke
assert Dir["#{@dir}/.sprockets-manifest-*.json"].first
assert File.exist?("#{@dir}/#{digest_path}")
end
test "clobber" do
digest_path = @env['application.js'].digest_path
@rake[:assets].invoke
assert File.exist?("#{@dir}/#{digest_path}")
# set a cache key
result = @env.cache.set('foo', 'bar')
assert_equal result, @env.cache.get('foo')
@rake[:clobber_assets].invoke
assert !File.exist?("#{@dir}/#{digest_path}")
# verify the cache key was cleared
assert_nil @env.cache.get('foo')
end
test "custom manifest directory" do
Rake::SprocketsTask.new do |t|
t.environment = nil
t.manifest = @manifest_custom_dir
t.assets = ['application.js']
t.log_level = :fatal
end
digest_path = @env['application.js'].digest_path
assert !File.exist?("#{@dir}/#{digest_path}")
@rake[:assets].invoke
assert Dir["#{@dir}/.sprockets-manifest-*.json"].first
assert File.exist?("#{@dir}/#{digest_path}")
end
test "custom manifest path" do
Rake::SprocketsTask.new do |t|
t.environment = nil
t.manifest = @manifest_custom_path
t.assets = ['application.js']
t.log_level = :fatal
end
digest_path = @env['application.js'].digest_path
assert !File.exist?("#{@dir}/#{digest_path}")
@rake[:assets].invoke
assert Dir["#{@dir}/manifest.json"].first
assert File.exist?("#{@dir}/#{digest_path}")
end
test "lazy custom manifest" do
Rake::SprocketsTask.new do |t|
t.environment = nil
t.manifest = lambda { @manifest_custom_dir }
t.assets = ['application.js']
t.log_level = :fatal
end
digest_path = @env['application.js'].digest_path
assert !File.exist?("#{@dir}/#{digest_path}")
@rake[:assets].invoke
assert Dir["#{@dir}/.sprockets-manifest-*.json"].first
assert File.exist?("#{@dir}/#{digest_path}")
end
end