more 0.1.0 → 0.1.1
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/rails/init.rb +1 -1
- data/test/controller_test.rb +26 -0
- data/test/more_test.rb +183 -72
- data/test/test_helper.rb +69 -4
- metadata +27 -11
- data/lib/controller_extension.rb +0 -8
data/rails/init.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', 'lib', 'controller_extension') if RAILS_ENV == 'development'
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'lib', 'less', 'controller_extension') if RAILS_ENV == 'development'
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ExampleController < ActionController::Base
|
4
|
+
def test
|
5
|
+
render :text => 'OK'
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class ControllerTest < ActionController::TestCase
|
10
|
+
def setup
|
11
|
+
@controller = ExampleController.new
|
12
|
+
@request = ActionController::TestRequest.new
|
13
|
+
@response = ActionController::TestResponse.new
|
14
|
+
setup_for_generate_test
|
15
|
+
end
|
16
|
+
|
17
|
+
def teardown
|
18
|
+
teardown_for_generate_test
|
19
|
+
end
|
20
|
+
|
21
|
+
should "generate less files" do
|
22
|
+
write_less 'xxx.less', 'a{color:red}'
|
23
|
+
get :test
|
24
|
+
assert_equal 'a { color: red; }', read_css('xxx.css').strip
|
25
|
+
end
|
26
|
+
end
|
data/test/more_test.rb
CHANGED
@@ -1,102 +1,213 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class MoreTest <
|
4
|
-
|
3
|
+
class MoreTest < ActiveSupport::TestCase
|
4
|
+
setup do
|
5
5
|
[:compression, :header, :destination_path, :source_path].each do |variable|
|
6
6
|
Less::More.send("#{variable}=", nil)
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
context :header do
|
11
|
+
should "be true by default" do
|
12
|
+
assert_equal Less::More.header, true
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
-
|
15
|
+
should "be overwriteable" do
|
16
|
+
Less::More.header = false
|
17
|
+
assert_equal false, Less::More.header
|
18
|
+
end
|
16
19
|
end
|
17
20
|
|
18
|
-
|
19
|
-
"
|
20
|
-
|
21
|
+
context :source_path do
|
22
|
+
should "be app/stylesheets by default" do
|
23
|
+
assert_equal 'app/stylesheets', Less::More.source_path
|
24
|
+
end
|
21
25
|
|
22
|
-
|
23
|
-
|
26
|
+
should "be overwritteable" do
|
27
|
+
Less::More.source_path = 'xxx'
|
28
|
+
assert_equal 'xxx', Less::More.source_path
|
29
|
+
end
|
24
30
|
end
|
25
31
|
|
26
|
-
|
27
|
-
|
28
|
-
|
32
|
+
context :destination_path do
|
33
|
+
should "be public/stylesheets by default" do
|
34
|
+
assert_equal 'stylesheets', Less::More.destination_path
|
35
|
+
end
|
29
36
|
|
30
|
-
|
31
|
-
|
32
|
-
|
37
|
+
should "be overwritteable" do
|
38
|
+
Less::More.destination_path = 'xxx'
|
39
|
+
assert_equal 'xxx', Less::More.destination_path
|
40
|
+
end
|
33
41
|
end
|
34
42
|
|
35
|
-
|
36
|
-
|
37
|
-
|
43
|
+
context :compression do
|
44
|
+
should "be off by default" do
|
45
|
+
assert_equal nil, Less::More.compression
|
46
|
+
end
|
38
47
|
|
39
|
-
|
40
|
-
|
41
|
-
|
48
|
+
should "be overwritteable" do
|
49
|
+
Less::More.compression = true
|
50
|
+
assert_equal true, Less::More.compression
|
51
|
+
end
|
42
52
|
end
|
43
53
|
|
44
|
-
|
45
|
-
|
46
|
-
|
54
|
+
context :generate do
|
55
|
+
setup do
|
56
|
+
setup_for_generate_test
|
57
|
+
end
|
47
58
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
59
|
+
teardown do
|
60
|
+
teardown_for_generate_test
|
61
|
+
end
|
52
62
|
|
53
|
-
|
54
|
-
|
55
|
-
|
63
|
+
should 'generate css from .less files' do
|
64
|
+
write_less 'test.less', "a{color:red}"
|
65
|
+
Less::More.generate_all
|
66
|
+
assert_include 'a { color: red; }', read_css('test.css')
|
67
|
+
end
|
56
68
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
69
|
+
should 'generate css from .lss files' do
|
70
|
+
write_less 'test.lss', "a{color:red}"
|
71
|
+
Less::More.generate_all
|
72
|
+
assert_include 'a { color: red; }', read_css('test.css')
|
73
|
+
end
|
61
74
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
body { color: #222222; }
|
68
|
-
form {
|
69
|
-
font-size: 110%;
|
70
|
-
color: #ffffff;
|
71
|
-
}")
|
72
|
-
end
|
75
|
+
should 'generate for files in subfolders' do
|
76
|
+
write_less 'xxx/test.less', "a{color:red}"
|
77
|
+
Less::More.generate_all
|
78
|
+
assert_include 'a { color: red; }', read_css('xxx/test.css')
|
79
|
+
end
|
73
80
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
81
|
+
should "include imported partials" do
|
82
|
+
write_less 'test.less', "@import '_partial';\nb{color:blue}"
|
83
|
+
write_less '_partial.less', 'a{color:red}'
|
84
|
+
Less::More.generate_all
|
85
|
+
assert_include 'a { color: red; }', read_css('test.css')
|
86
|
+
end
|
80
87
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
assert_match /^\/\*/, css # starts with comment -> header
|
87
|
-
end
|
88
|
+
should "not generate css from partials" do
|
89
|
+
write_less '_partial.less', 'a{color:red}'
|
90
|
+
Less::More.generate_all
|
91
|
+
assert_equal '', `ls #{css_path}`.strip
|
92
|
+
end
|
88
93
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
94
|
+
should "not parse css" do
|
95
|
+
write_less 'test.css', 'a{color:red}'
|
96
|
+
Less::More.generate_all
|
97
|
+
assert_equal 'a{color:red}', read_css('test.css')
|
98
|
+
end
|
99
|
+
|
100
|
+
should "add disclaimer-header when active" do
|
101
|
+
write_less 'test.less', 'a{color:red}'
|
102
|
+
Less::More.header = true
|
103
|
+
Less::More.generate_all
|
104
|
+
assert_match /^\/\*/, read_css('test.css')
|
105
|
+
end
|
106
|
+
|
107
|
+
should "not include header when not set" do
|
108
|
+
write_less 'test.less', 'a{color:red}'
|
109
|
+
Less::More.header = false
|
110
|
+
Less::More.generate_all
|
111
|
+
assert_not_include '/*', read_css('test.css')
|
112
|
+
end
|
113
|
+
|
114
|
+
should "fail with current file when encountering an error" do
|
115
|
+
write_less 'test.less', 'import xxxx;;;;;'
|
116
|
+
content = begin
|
117
|
+
Less::More.generate_all
|
118
|
+
'!no exception!'
|
119
|
+
rescue Exception => e
|
120
|
+
e.message
|
121
|
+
end
|
122
|
+
assert_include '/test.less', content
|
123
|
+
end
|
124
|
+
|
125
|
+
context 'mtime' do
|
126
|
+
should "generate for outdated less files" do
|
127
|
+
write_less 'test.less', "a{color:red}"
|
128
|
+
Less::More.generate_all
|
129
|
+
|
130
|
+
write_css 'test.css', 'im updated!'
|
131
|
+
sleep 1 # or mtime will be still the same ...
|
132
|
+
write_less 'test.less', "a{color:blue}"
|
133
|
+
Less::More.generate_all
|
134
|
+
|
135
|
+
assert_equal 'a { color: blue; }', read_css('test.css').strip
|
136
|
+
end
|
137
|
+
|
138
|
+
should "not generate for up-to-date less files" do
|
139
|
+
write_less 'test.less', "a{color:red}"
|
140
|
+
Less::More.generate_all
|
141
|
+
|
142
|
+
write_css 'test.css', 'im updated!'
|
143
|
+
Less::More.generate_all
|
144
|
+
|
145
|
+
assert_equal 'im updated!', read_css('test.css')
|
146
|
+
end
|
147
|
+
|
148
|
+
should "not generate for files with up-to-date partials" do
|
149
|
+
write_less 'test.less', "@import 'xxx/_test.less';"
|
150
|
+
write_less 'xxx/_test.less', "a{color:red}"
|
151
|
+
Less::More.generate_all
|
152
|
+
|
153
|
+
write_css 'test.css', 'im updated!'
|
154
|
+
Less::More.generate_all
|
155
|
+
|
156
|
+
assert_equal 'im updated!', read_css('test.css')
|
157
|
+
end
|
158
|
+
|
159
|
+
should "generate for files with outdated partials" do
|
160
|
+
write_less 'test.less', "@import 'xxx/_test.less';"
|
161
|
+
write_less 'xxx/_test.less', "a{color:red}"
|
162
|
+
Less::More.generate_all
|
163
|
+
|
164
|
+
write_css 'test.css', 'im updated!'
|
165
|
+
sleep 1 # or mtime will be still the same ...
|
166
|
+
write_less 'xxx/_test.less', "a{color:blue}"
|
167
|
+
Less::More.generate_all
|
168
|
+
|
169
|
+
assert_equal 'a { color: blue; }', read_css('test.css').strip
|
170
|
+
end
|
171
|
+
|
172
|
+
should "generate for files with outdated partials that are not named .less" do
|
173
|
+
write_less 'test.less', "@import 'xxx/_test';"
|
174
|
+
write_less 'xxx/_test.less', "a{color:red}"
|
175
|
+
Less::More.generate_all
|
176
|
+
|
177
|
+
write_css 'test.css', 'im updated!'
|
178
|
+
sleep 1 # or mtime will be still the same ...
|
179
|
+
write_less 'xxx/_test.less', "a{color:blue}"
|
180
|
+
Less::More.generate_all
|
181
|
+
|
182
|
+
assert_equal 'a { color: blue; }', read_css('test.css').strip
|
183
|
+
end
|
184
|
+
end
|
95
185
|
end
|
96
186
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
187
|
+
context :remove_all_generated do
|
188
|
+
setup do
|
189
|
+
setup_for_generate_test
|
190
|
+
end
|
191
|
+
|
192
|
+
teardown do
|
193
|
+
teardown_for_generate_test
|
194
|
+
end
|
195
|
+
|
196
|
+
should "remove all generated css" do
|
197
|
+
write_less 'xxx.less', 'a{color:red}'
|
198
|
+
write_less 'yyy.css', 'a{color:red}'
|
199
|
+
write_less 'xxx/yyy.css', 'a{color:red}'
|
200
|
+
Less::More.generate_all
|
201
|
+
Less::More.remove_all_generated
|
202
|
+
# should be '' ideally, but an empty folder is no thread :)
|
203
|
+
assert_equal 'xxx', `ls #{css_path}`.strip
|
204
|
+
end
|
205
|
+
|
206
|
+
should "not remove other files" do
|
207
|
+
write_css 'xxx.css', 'a{color:red}'
|
208
|
+
Less::More.generate_all
|
209
|
+
Less::More.remove_all_generated
|
210
|
+
assert_equal 'xxx.css', `ls #{css_path}`.strip
|
211
|
+
end
|
101
212
|
end
|
102
213
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,14 +1,79 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# fake Rails with loaded plugin
|
3
2
|
require 'rubygems'
|
4
3
|
require 'active_support'
|
4
|
+
require 'action_pack'
|
5
|
+
require 'action_controller'
|
5
6
|
|
6
|
-
|
7
|
+
module Rails
|
7
8
|
def self.root
|
8
9
|
File.expand_path(File.dirname(__FILE__))
|
9
10
|
end
|
11
|
+
|
12
|
+
def self.backtrace_cleaner
|
13
|
+
ActiveSupport::BacktraceCleaner.new
|
14
|
+
end
|
10
15
|
end
|
11
16
|
|
17
|
+
RAILS_ENV = 'development'
|
18
|
+
|
19
|
+
# load plugin
|
12
20
|
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
21
|
+
require 'less/more'
|
22
|
+
load 'init.rb'
|
23
|
+
|
24
|
+
# load testing libs
|
25
|
+
require 'test/unit'
|
26
|
+
require 'active_support/test_case'
|
27
|
+
begin; require 'redgreen'; rescue LoadError; end
|
28
|
+
require 'shoulda'
|
29
|
+
|
30
|
+
# setup controller testing
|
31
|
+
require 'action_controller/test_process'
|
32
|
+
ActionController::Base.logger = nil
|
33
|
+
ActionController::Routing::Routes.reload rescue nil
|
34
|
+
|
35
|
+
# test helpers
|
36
|
+
def css_path
|
37
|
+
"#{Rails.root}/public/css"
|
38
|
+
end
|
39
|
+
|
40
|
+
def less_path
|
41
|
+
"#{Rails.root}/less_files"
|
42
|
+
end
|
43
|
+
|
44
|
+
def write_less file, content
|
45
|
+
write_content File.join(less_path, file), content
|
46
|
+
end
|
47
|
+
|
48
|
+
def write_css file, content
|
49
|
+
write_content File.join(css_path, file), content
|
50
|
+
end
|
51
|
+
|
52
|
+
def write_content file, content
|
53
|
+
`mkdir -p #{File.dirname(file)}`
|
54
|
+
File.open(file,'w'){|f| f.print content }
|
55
|
+
end
|
56
|
+
|
57
|
+
def read_css(file)
|
58
|
+
File.read(File.join(css_path, file)) rescue nil
|
59
|
+
end
|
60
|
+
|
61
|
+
def assert_include(item, obj)
|
62
|
+
assert_block("#{obj.inspect}\ndoes not include\n#{item.inspect}."){ obj.include? item }
|
63
|
+
end
|
64
|
+
|
65
|
+
def assert_not_include(item, obj)
|
66
|
+
assert_block("#{obj.inspect}\ndoes include\n#{item.inspect}."){ !obj.include? item }
|
67
|
+
end
|
68
|
+
|
69
|
+
def setup_for_generate_test
|
70
|
+
Less::More.source_path = 'less_files'
|
71
|
+
Less::More.destination_path = 'css'
|
72
|
+
Less::More.header = false
|
73
|
+
`mkdir -p #{css_path}`
|
74
|
+
end
|
13
75
|
|
14
|
-
|
76
|
+
def teardown_for_generate_test
|
77
|
+
`rm -rf #{css_path}`
|
78
|
+
`rm -rf #{less_path}`
|
79
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: more
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 25
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- August Lilleaas
|
@@ -10,19 +16,23 @@ autorequire:
|
|
10
16
|
bindir: bin
|
11
17
|
cert_chain: []
|
12
18
|
|
13
|
-
date: 2010-
|
19
|
+
date: 2010-06-10 00:00:00 +02:00
|
14
20
|
default_executable:
|
15
21
|
dependencies:
|
16
22
|
- !ruby/object:Gem::Dependency
|
17
23
|
name: less
|
18
|
-
|
19
|
-
|
20
|
-
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
21
27
|
requirements:
|
22
28
|
- - ">="
|
23
29
|
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
31
|
+
segments:
|
32
|
+
- 0
|
24
33
|
version: "0"
|
25
|
-
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
26
36
|
description: " More is a plugin for Ruby on Rails applications. It automatically\n parses your applications .less files through LESS and outputs CSS files.\n"
|
27
37
|
email:
|
28
38
|
executables: []
|
@@ -36,11 +46,11 @@ files:
|
|
36
46
|
- MIT-LICENSE
|
37
47
|
- Rakefile
|
38
48
|
- init.rb
|
39
|
-
- lib/controller_extension.rb
|
40
49
|
- rails/init.rb
|
41
50
|
- tasks/more_tasks.rake
|
42
|
-
- test/more_test.rb
|
43
51
|
- test/test_helper.rb
|
52
|
+
- test/controller_test.rb
|
53
|
+
- test/more_test.rb
|
44
54
|
has_rdoc: true
|
45
55
|
homepage: http://github.com/cloudhead/more
|
46
56
|
licenses: []
|
@@ -51,21 +61,27 @@ rdoc_options: []
|
|
51
61
|
require_paths:
|
52
62
|
- lib
|
53
63
|
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
54
65
|
requirements:
|
55
66
|
- - ">="
|
56
67
|
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
69
|
+
segments:
|
70
|
+
- 0
|
57
71
|
version: "0"
|
58
|
-
version:
|
59
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
60
74
|
requirements:
|
61
75
|
- - ">="
|
62
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
78
|
+
segments:
|
79
|
+
- 0
|
63
80
|
version: "0"
|
64
|
-
version:
|
65
81
|
requirements: []
|
66
82
|
|
67
83
|
rubyforge_project:
|
68
|
-
rubygems_version: 1.3.
|
84
|
+
rubygems_version: 1.3.7
|
69
85
|
signing_key:
|
70
86
|
specification_version: 3
|
71
87
|
summary: LESS on Rails
|