sitefuel 0.0.0a

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.
Files changed (57) hide show
  1. data/README +86 -0
  2. data/RELEASE_NOTES +7 -0
  3. data/bin/sitefuel +162 -0
  4. data/lib/sitefuel/Configuration.rb +35 -0
  5. data/lib/sitefuel/SiteFuelLogger.rb +128 -0
  6. data/lib/sitefuel/SiteFuelRuntime.rb +293 -0
  7. data/lib/sitefuel/extensions/ArrayComparisons.rb +34 -0
  8. data/lib/sitefuel/extensions/DynamicClassMethods.rb +19 -0
  9. data/lib/sitefuel/extensions/FileComparison.rb +24 -0
  10. data/lib/sitefuel/extensions/Silently.rb +27 -0
  11. data/lib/sitefuel/extensions/StringFormatting.rb +75 -0
  12. data/lib/sitefuel/extensions/SymbolComparison.rb +13 -0
  13. data/lib/sitefuel/external/AbstractExternalProgram.rb +616 -0
  14. data/lib/sitefuel/external/ExternalProgramTestCase.rb +67 -0
  15. data/lib/sitefuel/external/GIT.rb +9 -0
  16. data/lib/sitefuel/external/JPEGTran.rb +68 -0
  17. data/lib/sitefuel/external/PNGCrush.rb +66 -0
  18. data/lib/sitefuel/processors/AbstractExternalProgramProcessor.rb +72 -0
  19. data/lib/sitefuel/processors/AbstractProcessor.rb +378 -0
  20. data/lib/sitefuel/processors/AbstractStringBasedProcessor.rb +88 -0
  21. data/lib/sitefuel/processors/CSSProcessor.rb +84 -0
  22. data/lib/sitefuel/processors/HAMLProcessor.rb +52 -0
  23. data/lib/sitefuel/processors/HTMLProcessor.rb +211 -0
  24. data/lib/sitefuel/processors/JavaScriptProcessor.rb +57 -0
  25. data/lib/sitefuel/processors/PHPProcessor.rb +32 -0
  26. data/lib/sitefuel/processors/PNGProcessor.rb +80 -0
  27. data/lib/sitefuel/processors/RHTMLProcessor.rb +25 -0
  28. data/lib/sitefuel/processors/SASSProcessor.rb +50 -0
  29. data/test/processor_listing.rb +28 -0
  30. data/test/test_AbstractExternalProgram.rb +186 -0
  31. data/test/test_AbstractProcessor.rb +237 -0
  32. data/test/test_AbstractStringBasedProcessor.rb +48 -0
  33. data/test/test_AllProcessors.rb +65 -0
  34. data/test/test_ArrayComparisons.rb +32 -0
  35. data/test/test_CSSProcessor.rb +120 -0
  36. data/test/test_FileComparisons.rb +42 -0
  37. data/test/test_HAMLProcessor.rb.rb +60 -0
  38. data/test/test_HTMLProcessor.rb +186 -0
  39. data/test/test_JPEGTran.rb +40 -0
  40. data/test/test_JavaScriptProcessor.rb +63 -0
  41. data/test/test_PHPProcessor.rb +51 -0
  42. data/test/test_PNGCrush.rb +58 -0
  43. data/test/test_PNGProcessor.rb +32 -0
  44. data/test/test_RHTMLProcessor.rb +62 -0
  45. data/test/test_SASSProcessor.rb +68 -0
  46. data/test/test_SiteFuelLogging.rb +79 -0
  47. data/test/test_SiteFuelRuntime.rb +96 -0
  48. data/test/test_StringFormatting.rb +51 -0
  49. data/test/test_SymbolComparison.rb +27 -0
  50. data/test/test_images/sample_jpg01.jpg +0 -0
  51. data/test/test_images/sample_png01.png +0 -0
  52. data/test/test_programs/versioning.rb +26 -0
  53. data/test/test_sites/simplehtml/deployment.yml +22 -0
  54. data/test/test_sites/simplehtml/index.html +66 -0
  55. data/test/test_sites/simplehtml/style.css +40 -0
  56. data/test/ts_all.rb +39 -0
  57. metadata +165 -0
@@ -0,0 +1,42 @@
1
+ #
2
+ # File:: test_FileComparisons.rb
3
+ # Author:: wkm
4
+ # Copyright:: 2009
5
+ # License:: GPL
6
+ #
7
+ # Unit tests for File.equivalent? class method. The method is
8
+ # heuristic based so lots of tests are needed, although perhaps
9
+ # this is a little excessive.
10
+ #
11
+
12
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
13
+
14
+ require 'test/unit'
15
+ require 'sitefuel/extensions/FileComparison'
16
+
17
+ class TestFileComparion < Test::Unit::TestCase
18
+ def test_equivalent
19
+
20
+ # files which are clearly not equivalent
21
+ assert !File.equivalent?('a.rb', 'b.rb')
22
+ assert !File.equivalent?('f/a.rb', 'f/b.rb')
23
+ assert !File.equivalent?('b/a.rb', 'c/a.rb')
24
+ assert !File.equivalent?('c/b/a.rb', 'c/a.rb')
25
+
26
+ # files which are potentially equivalent
27
+ assert File.equivalent?('b/a.rb', 'a.rb')
28
+ assert File.equivalent?('./a.rb', 'b/a.rb')
29
+ assert File.equivalent?('b/a.rb', 'b/a.rb')
30
+ assert File.equivalent?('../a.rb', './a.rb')
31
+ assert File.equivalent?('../../../.././../a.rb', 'a.rb')
32
+
33
+ # trivial, but incorrect, variations on the potentially
34
+ # equivalent files above
35
+ assert !File.equivalent?('./a.rb', 'b/c.rb')
36
+ assert !File.equivalent?('b/a.rb', 'c/a.rb')
37
+ assert !File.equivalent?('b/a.rb', 'b/c.rb')
38
+ assert !File.equivalent?('../a.rb', './b.rb')
39
+ assert !File.equivalent?('../../../.././../a.rb', 'b.rb')
40
+
41
+ end
42
+ end
@@ -0,0 +1,60 @@
1
+ #
2
+ # File:: test_HAMLProcessor.rb
3
+ # Author:: wkm
4
+ # Copyright:: 2009
5
+ # License:: GPL
6
+ #
7
+ # Unit tests for the HAMLProcessor
8
+ #
9
+
10
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
11
+
12
+ require 'test/unit'
13
+ require 'sitefuel/extensions/StringFormatting'
14
+ require 'sitefuel/processors/HAMLProcessor'
15
+
16
+ include SiteFuel::Processor
17
+
18
+ class TestHAMLProcessor < Test::Unit::TestCase
19
+ def test_file_extensions
20
+
21
+ # negative tests
22
+ assert_equal false, HAMLProcessor.processes_file?("testhaml")
23
+
24
+ # positive tests
25
+ assert HAMLProcessor.processes_file?("test.haml")
26
+ assert HAMLProcessor.processes_file?("test.HAML")
27
+
28
+ end
29
+
30
+ def test_name
31
+ assert_equal "HAML", HAMLProcessor.processor_name
32
+ end
33
+
34
+ def test_generate
35
+ assert_equal(
36
+ "<strong class='code' id='message'>Hello, World!</strong>",
37
+
38
+ HAMLProcessor.filter_string(:generate,
39
+ %q{
40
+ %strong{:class => "code", :id => "message"} Hello, World!
41
+ }.align
42
+ ).strip
43
+ )
44
+ end
45
+
46
+ def test_minify
47
+ assert_equal(
48
+ "<quote><p><strong class=\"code\" id=\"message\">Hello, World!</strong></p></quote>",
49
+
50
+ HAMLProcessor.filter_string([:generate, :minify],
51
+ %q{
52
+ %quote
53
+ %p
54
+ %strong{:class => "code", :id => "message"} Hello, World!
55
+ }.align
56
+ ).strip
57
+ )
58
+ end
59
+
60
+ end
@@ -0,0 +1,186 @@
1
+ #
2
+ # File:: test_HTMLProcessor.rb
3
+ # Author:: wkm
4
+ # Copyright:: 2009
5
+ # License:: GPL
6
+ #
7
+ # Unit tests for the HTMLProcessor
8
+ #
9
+
10
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
11
+
12
+ require 'test/unit'
13
+ require 'sitefuel/processors/HTMLProcessor'
14
+ require 'sitefuel/extensions/StringFormatting'
15
+
16
+ include SiteFuel::Processor
17
+
18
+ class TestHTMLProcessor < Test::Unit::TestCase
19
+ def test_file_extensions
20
+
21
+ # negative tests
22
+ assert_equal false, HTMLProcessor.processes_file?("testhtml")
23
+ assert_equal false, HTMLProcessor.processes_file?("testhtm")
24
+ assert_equal false, HTMLProcessor.processes_file?("testHTML")
25
+
26
+ assert_equal false, HTMLProcessor.processes_file?("test.html.foo")
27
+ assert_equal false, HTMLProcessor.processes_file?("test.htm.foo")
28
+
29
+ # positive tests
30
+ assert HTMLProcessor.processes_file?("test.html")
31
+ assert HTMLProcessor.processes_file?("test.htm")
32
+ assert HTMLProcessor.processes_file?("test.HTML")
33
+ assert HTMLProcessor.processes_file?("test.HtMl")
34
+ assert HTMLProcessor.processes_file?("test.hTm")
35
+
36
+ end
37
+
38
+ def test_name
39
+ assert_equal "HTML", HTMLProcessor.processor_name
40
+ end
41
+
42
+ def test_beautify_quotes
43
+ assert_equal(
44
+ %q{<p>&#8220;Really?&#8221; Alice asked.<br>&#8220;Yes. Just yesterday.&#8221; said Bob.</p>},
45
+
46
+ HTMLProcessor.filter_string(
47
+ :beautify_quotes,
48
+ %q{<p>"Really?" Alice asked.<br>"Yes. Just yesterday." said Bob.}
49
+ )
50
+ )
51
+
52
+ assert_equal(
53
+ %q{<p>This was Alice&#8217;s car; she bought it from the Hoovers.</p>},
54
+
55
+ HTMLProcessor.filter_string(
56
+ :beautify_quotes,
57
+ %q{<p>This was Alice's car; she bought it from the Hoovers.</p>}
58
+ )
59
+ )
60
+ end
61
+
62
+ def test_beautify_dashes
63
+ assert_equal(
64
+ %q{<p>Alice&#8212;having just finished&#8212;shouted</p>},
65
+
66
+ HTMLProcessor.filter_string(
67
+ :beautify_dashes,
68
+ %q{<p>Alice---having just finished---shouted</p>}
69
+ )
70
+ )
71
+
72
+ assert_equal(
73
+ %q{<p>See ppg. 12&#8211;15</p>},
74
+
75
+ HTMLProcessor.filter_string(
76
+ :beautify_dashes,
77
+ %q{<p>See ppg. 12--15</p>}
78
+ )
79
+ )
80
+
81
+ assert_equal(
82
+ %q{<p>These--are left alone</p>},
83
+
84
+ HTMLProcessor.filter_string(
85
+ :beautify_dashes,
86
+ %q{<p>These--are left alone</p>}
87
+ )
88
+ )
89
+
90
+ # test --'s use as a filler for "bad words"
91
+ assert_equal(
92
+ %q{<p>f&#8211;&#8211;</p>},
93
+
94
+ HTMLProcessor.filter_string(
95
+ :beautify_dashes,
96
+ %q{<p>f----</p>}
97
+ )
98
+ )
99
+ end
100
+
101
+ def test_beautify_arrows
102
+ assert_equal(
103
+ %q{<p>a &#8594; b &#8592; c &#8596; d</p>},
104
+
105
+ HTMLProcessor.filter_string(
106
+ :beautify_arrows,
107
+ %q{<p>a --> b <-- c <-> d</p>}
108
+ )
109
+ )
110
+
111
+ assert_equal(
112
+ %q{<p>a &#8658; b &#8656; c &#8660; d</p>},
113
+
114
+ HTMLProcessor.filter_string(
115
+ :beautify_arrows,
116
+ %q{<p>a ==> b <== c <=> d</p>}
117
+ )
118
+ )
119
+ end
120
+
121
+ def test_beautify_symbols
122
+ assert_equal %q{<p>&#8482;</p>}, HTMLProcessor.filter_string(:beautify_symbols, %q{<p>(tm)</p>})
123
+ assert_equal %q{<p>&#169;</p>}, HTMLProcessor.filter_string(:beautify_symbols, %q{<p>(c)</p>})
124
+ assert_equal %q{<p>&#174;</p>}, HTMLProcessor.filter_string(:beautify_symbols, %q{<p>(r)</p>})
125
+
126
+ assert_equal(
127
+ %q{<p>Hello&#8230; Hi&#8230; And finally &#8230; that was it.</p>},
128
+
129
+ HTMLProcessor.filter_string(
130
+ :beautify_symbols,
131
+ %q{<p>Hello... Hi... And finally ... that was it.</p>}
132
+ )
133
+ )
134
+ end
135
+
136
+ def test_traverse
137
+
138
+ modifiable_tags = %w{h1 h2 h3 h4 h5 h6 p b i ul a li td th}
139
+ unmodifiable_tags = %w{pre code html head}
140
+
141
+ # test tags which should be modified
142
+ modifiable_tags.each do |tag|
143
+ assert_equal "<#{tag}>&#8482;</#{tag}>", HTMLProcessor.filter_string(:beautify_symbols, "<#{tag}>(tm)</#{tag}>")
144
+ end
145
+
146
+
147
+ # test tags which should be unmodified
148
+ unmodifiable_tags.each do |tag|
149
+ assert_equal "<#{tag}>(tm)</#{tag}>", HTMLProcessor.filter_string(:beautify_symbols, "<#{tag}>(tm)</#{tag}>")
150
+ end
151
+
152
+ end
153
+
154
+ def test_embedded_css
155
+
156
+ assert_equal(
157
+ %q{<style>body{font-family:"lucida grande",sans-serif;}</style>},
158
+ HTMLProcessor.filter_string(:minify_styles,
159
+ <<-END
160
+ <style>
161
+ body {
162
+ font-family: "lucida grande", sans-serif;
163
+ }
164
+ </style>
165
+ END
166
+ ).strip
167
+ )
168
+
169
+ end
170
+
171
+ def test_embedded_javascript
172
+ assert_equal(
173
+ "<script>var protocol=document.location.protocol\ndocument.write(\"Web protocol used: \"+protocol)</script>",
174
+
175
+ HTMLProcessor.filter_string(:minify_javascript,
176
+ %q{
177
+ <script>
178
+ // some random java script invented by seriously fudging the
179
+ // google analytics includes
180
+ var protocol = document.location.protocol
181
+ document.write("Web protocol used: "+protocol)
182
+ }.align
183
+ ).strip
184
+ )
185
+ end
186
+ end
@@ -0,0 +1,40 @@
1
+ #
2
+ # File:: test_JPEGTran.rb
3
+ # Author:: wkm
4
+ # Copyright:: 2009
5
+ # License:: GPL
6
+ #
7
+ # Unit tests for the JPEGTran wrapper.
8
+ #
9
+
10
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
11
+
12
+ require 'sitefuel/external/ExternalProgramTestCase'
13
+ require 'sitefuel/external/JPEGTran'
14
+
15
+ include SiteFuel::External
16
+
17
+ class TestJPEGTran < Test::Unit::TestCase
18
+ include ExternalProgramTestCase
19
+
20
+ SAMPLE_IMAGE = 'test/test_images/sample_jpg01.jpg'
21
+
22
+ def test_options
23
+ assert JPEGTran.option?(:version)
24
+ assert JPEGTran.option?(:copy)
25
+ assert JPEGTran.option?(:optimize)
26
+ assert JPEGTran.option?(:perfect)
27
+ assert JPEGTran.option?(:input)
28
+ assert JPEGTran.option?(:output)
29
+
30
+ assert_equal '-optimize', JPEGTran.option_template(:optimize)
31
+ end
32
+
33
+ def test_lossless
34
+ new_image = 'test/test_images/tmp-sample_jpg01-lossless.jpg'
35
+ JPEGTran.compress_losslessly SAMPLE_IMAGE, new_image
36
+
37
+
38
+ assert File.size(SAMPLE_IMAGE) > File.size(new_image)
39
+ end
40
+ end
@@ -0,0 +1,63 @@
1
+ #
2
+ # File:: test_JavaScriptProcessor.rb
3
+ # Copyright:: 2009
4
+ # License:: GPL
5
+ #
6
+ # Unit tests for the JavaScriptProcessor
7
+ #
8
+
9
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
10
+
11
+ require 'test/unit'
12
+ require 'sitefuel/processors/JavaScriptProcessor'
13
+
14
+ include SiteFuel::Processor
15
+
16
+ class TestJavaScriptProcessor < Test::Unit::TestCase
17
+
18
+ def test_file_extensions
19
+ assert JavaScriptProcessor.processes_file?('foo.js')
20
+ end
21
+
22
+ def test_name
23
+ assert_equal 'JS', JavaScriptProcessor.processor_name
24
+ end
25
+
26
+ # CDATA fields need to be left intact
27
+ def test_cdata
28
+ assert_equal(
29
+ "//<![CDATA[\nfunction foo(){12}\n//]]>",
30
+
31
+ JavaScriptProcessor.filter_string(:minify,
32
+ %q{
33
+ //<![CDATA[
34
+ function foo() {
35
+ 12
36
+ }
37
+ //]]>
38
+ }
39
+ )
40
+ )
41
+ end
42
+
43
+ # test comment-only javascripts
44
+ def test_comments_only
45
+ assert_equal(
46
+ '',
47
+ JavaScriptProcessor.filter_string(:minify,
48
+ %q{
49
+ // just a comment....
50
+ }
51
+ )
52
+ )
53
+
54
+ assert_equal(
55
+ '',
56
+ JavaScriptProcessor.filter_string(:minify,
57
+ %q{//just a comment...}
58
+ )
59
+ )
60
+ end
61
+
62
+ end
63
+
@@ -0,0 +1,51 @@
1
+ #
2
+ # File:: test_PHPProcessor.rb
3
+ # Author:: wkm
4
+ # Copyright:: 2009
5
+ # License:: GPL
6
+ #
7
+ # Unit tests for the PHPProcessor
8
+ #
9
+
10
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
11
+
12
+ require 'test/unit'
13
+ require 'sitefuel/processors/PHPProcessor'
14
+
15
+ include SiteFuel::Processor
16
+
17
+ class TestPHPProcessor < Test::Unit::TestCase
18
+
19
+ def test_file_extensions
20
+ assert PHPProcessor.processes_file?('test.php')
21
+ assert PHPProcessor.processes_file?('test.php5')
22
+ assert PHPProcessor.processes_file?('test.phtml')
23
+ end
24
+
25
+ def test_name
26
+ assert_equal 'PHP', PHPProcessor.processor_name
27
+ end
28
+
29
+ # test support for PHP documents
30
+ def test_php
31
+ assert_equal(
32
+ "<html><head><title>PHP test</title></head><body><?php echo '<?>Hello World' ?> <p>Some filler text.</p> <? echo 'some more php! Weeee' ?> </body></html>",
33
+
34
+ PHPProcessor.filter_string(:whitespace,
35
+ %q{
36
+ <html>
37
+ <head>
38
+ <title>PHP test</title>
39
+ </head>
40
+ <body>
41
+ <?php echo '<p>Hello World</p>' ?>
42
+ <p>Some filler text.</p>
43
+ <? echo 'some more php! Weeee' ?>
44
+ </body>
45
+ </html>
46
+ }
47
+ )
48
+ )
49
+ end
50
+
51
+ end
@@ -0,0 +1,58 @@
1
+ #
2
+ # File:: test_PNGCrush.m
3
+ # Author:: wkm
4
+ # Copyright:: 2009
5
+ # License:: GPL
6
+ #
7
+ # Unit tests for the PNGCrush wrapper.
8
+ #
9
+
10
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
11
+
12
+ require 'sitefuel/external/ExternalProgramTestCase'
13
+ require 'sitefuel/external/PNGCrush'
14
+
15
+ include SiteFuel::External
16
+
17
+ class TestPNGCrush < Test::Unit::TestCase
18
+ include ExternalProgramTestCase
19
+
20
+ SAMPLE_IMAGE = 'test/test_images/sample_png01.png'
21
+
22
+ def test_option
23
+ # test that we have all options
24
+ assert PNGCrush.option?(:version)
25
+ assert PNGCrush.option?(:brute)
26
+ assert PNGCrush.option?(:reduce)
27
+ assert PNGCrush.option?(:method)
28
+ assert PNGCrush.option?(:input)
29
+ assert PNGCrush.option?(:output)
30
+
31
+ assert_equal '-brute', PNGCrush.option_template(:brute)
32
+ # assert_equal '-version', PNGCrush.option_template(:version)
33
+ end
34
+
35
+ def test_brute
36
+ # test the crush capability against one of the test files
37
+ new_image = './test/test_images/tmp-sample_png01-brute.png'
38
+ PNGCrush.brute SAMPLE_IMAGE, new_image
39
+
40
+ assert File.size(SAMPLE_IMAGE) > File.size(new_image)
41
+
42
+ end
43
+
44
+ def test_quick
45
+ new_image = './test/test_images/tmp-sample_png01-quick.png'
46
+ PNGCrush.quick SAMPLE_IMAGE, new_image
47
+
48
+ assert File.size(SAMPLE_IMAGE) > File.size(new_image)
49
+ end
50
+
51
+ def test_chainsaw
52
+ new_image = './test/test_images/tmp-sample_png01-chainsaw.png'
53
+ PNGCrush.chainsaw SAMPLE_IMAGE, new_image
54
+
55
+ assert File.size(SAMPLE_IMAGE) > File.size(new_image)
56
+ end
57
+
58
+ end
@@ -0,0 +1,32 @@
1
+ #
2
+ # File:: test_PNGProcessor.rb
3
+ # Author:: wkm
4
+ # Copyright:: 2009
5
+ # License:: GPL
6
+ #
7
+ # Unit tests for the PNGProcessor
8
+ #
9
+
10
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
11
+
12
+ require 'test/unit'
13
+ require 'sitefuel/processors/PNGProcessor'
14
+
15
+ include SiteFuel::Processor
16
+
17
+ class TestPNGProcessor < Test::Unit::TestCase
18
+ def test_file_extensions
19
+ assert_equal false, PNGProcessor.processes_file?("testpng")
20
+
21
+ assert PNGProcessor.processes_file?("test.png")
22
+ assert PNGProcessor.processes_file?("test.PNG")
23
+ end
24
+
25
+ def test_name
26
+ assert_equal 'PNG', PNGProcessor.processor_name
27
+ end
28
+
29
+ def test_crush
30
+ PNGProcessor.process_file('test/test_images/sample_png01.png')
31
+ end
32
+ end
@@ -0,0 +1,62 @@
1
+ #
2
+ # File:: test_RHTMLProcessor.rb
3
+ # Author:: wkm
4
+ # Copyright:: 2009
5
+ # License:: GPL
6
+ #
7
+ # Unit tests for the RHTMLProcessor
8
+ #
9
+
10
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
11
+
12
+ require 'test/unit'
13
+ require 'sitefuel/processors/RHTMLProcessor'
14
+
15
+ include SiteFuel::Processor
16
+
17
+ class TestRHTMLProcessor < Test::Unit::TestCase
18
+
19
+ def test_file_extensions
20
+ assert RHTMLProcessor.processes_file?('test.rhtml')
21
+ assert RHTMLProcessor.processes_file?('test.erb')
22
+ end
23
+
24
+ def test_name
25
+ assert_equal 'RHTML', RHTMLProcessor.processor_name
26
+ end
27
+
28
+ # test support for RHTML documents (really testing hpricot here)
29
+ def test_rhtml
30
+ assert_equal(
31
+ "<html><head><title>Goodbye, World.</title></head><body><h1>Goodbye!</h1> <% 5.times do || %> <p>and again...</p> <% end %> </body></html>",
32
+ RHTMLProcessor.filter_string(:whitespace,
33
+ %q{
34
+ <html>
35
+ <head>
36
+ <title>Goodbye, World.</title>
37
+ </head>
38
+ <body>
39
+ <h1>Goodbye!</h1>
40
+ <% 5.times do || %>
41
+ <p>and again...</p>
42
+ <% end %>
43
+ </body>
44
+ </html>
45
+ }
46
+ )
47
+ )
48
+
49
+ assert_equal(
50
+ "<html> <%= page.title %> </html>",
51
+
52
+ RHTMLProcessor.filter_string(:whitespace,
53
+ %q{
54
+ <html>
55
+ <%= page.title %>
56
+ </html>
57
+ }
58
+ )
59
+ )
60
+ end
61
+
62
+ end
@@ -0,0 +1,68 @@
1
+ #
2
+ # File:: test_SASSProcessor.rb
3
+ # Author:: wkm
4
+ # Copyright:: 2009
5
+ # License:: GPL
6
+ #
7
+ # Unit tests for the SASSProcessor
8
+ #
9
+
10
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
11
+
12
+ require 'test/unit'
13
+ require 'sitefuel/extensions/StringFormatting'
14
+ require 'sitefuel/processors/SASSProcessor'
15
+
16
+ include SiteFuel::Processor
17
+
18
+ class TestSASSProcessor < Test::Unit::TestCase
19
+ def test_file_extensions
20
+
21
+ # negative tests
22
+ assert_equal false, SASSProcessor.processes_file?("testsass")
23
+
24
+ # positive tests
25
+ assert SASSProcessor.processes_file?("test.sass")
26
+ assert SASSProcessor.processes_file?("test.SASS")
27
+
28
+ end
29
+
30
+ def test_name
31
+ assert_equal "SASS", SASSProcessor.processor_name
32
+ end
33
+
34
+ def test_generate
35
+ assert_equal(
36
+ %q{
37
+ #main {
38
+ background-color: #ff0000;
39
+ width: 98%; }
40
+ }.align.strip,
41
+
42
+ SASSProcessor.filter_string(:generate,
43
+ %q{
44
+ // from the SASS documentation
45
+ #main
46
+ background-color: #ff0000
47
+ width: 98%
48
+ }.align
49
+ ).strip
50
+ )
51
+ end
52
+
53
+ def test_minify
54
+ assert_equal(
55
+ "#main{background-color:#f00;width:98%;}",
56
+
57
+ SASSProcessor.filter_string([:generate, :minify],
58
+ %q{
59
+ // from the SASS documentation
60
+ #main
61
+ background-color: #ff0000
62
+ width: 98%
63
+ }.align
64
+ ).strip
65
+ )
66
+ end
67
+
68
+ end