staticmatic 0.8.10 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +49 -0
- data/LICENSE +21 -0
- data/README +5 -27
- data/Rakefile +25 -2
- data/lib/staticmatic.rb +3 -5
- data/lib/staticmatic/base.rb +6 -2
- data/lib/staticmatic/configuration.rb +5 -9
- data/lib/staticmatic/helpers.rb +81 -54
- data/lib/staticmatic/version.rb +34 -0
- data/test/base_test.rb +5 -2
- data/test/helpers_test.rb +220 -27
- data/test/version_test.rb +26 -0
- data/website/site/download.html +84 -78
- data/website/site/faq.html +77 -71
- data/website/site/how_to_use.html +307 -173
- data/website/site/index.html +98 -92
- data/website/site/releases/0_8_10.html +106 -0
- data/website/site/releases/0_8_4.html +101 -95
- data/website/site/releases/0_8_8.html +96 -86
- data/website/site/releases/0_9_0.html +124 -0
- data/website/src/layouts/application.haml +10 -7
- data/website/src/pages/how_to_use.haml +149 -8
- data/website/src/pages/releases/0_8_10.haml +22 -0
- data/website/src/pages/releases/0_8_8.haml +4 -0
- data/website/src/pages/releases/0_9_0.haml +34 -0
- data/website/src/partials/news.haml +8 -6
- metadata +12 -5
data/CHANGELOG
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
*SVN*
|
2
|
+
|
3
|
+
*0.9.0* (October 16th, 2007)
|
4
|
+
|
5
|
+
* [NEW] added StaticMatic::VERSION.requirements_met? [Brent Beardsley]
|
6
|
+
|
7
|
+
* [NEW] added LICENSE and CHANGELOG files [Brent Beardsley]
|
8
|
+
|
9
|
+
* [NEW] can now specify relative paths when only specifying a title - link("../How to download") [Brent Beardsley]
|
10
|
+
|
11
|
+
* [NEW] add src_dir/stylesheets directory to sass load path so you can use @import styles.sass [Brent Beardsley]
|
12
|
+
|
13
|
+
* [NEW] added sass_options hash to configuration so you can configure sass (ie: :style => :compact) [Brent Beardsley]
|
14
|
+
|
15
|
+
* [NEW] added configuration.use_extensions_for_page_links (defaults to true) when false will strip index.html and .html off the end of links for pretty urls [Brent Beardsley]
|
16
|
+
|
17
|
+
* [NEW] made all "local" links (pages/stylesheets/images) relative to the current page and removed use_relative_path_for_* configuration settings [Brent Beardsley]
|
18
|
+
|
19
|
+
* [FIX] no longer add \n after the tag in the tag helper [Brent Beardsley]
|
20
|
+
|
21
|
+
* [FIX] mailto: links were getting a / inserted at in front of the mailto: [Brent Beardsley]
|
22
|
+
|
23
|
+
* [NEW] stylesheets helper can now take a list of stylesheets to include and the order as well as options (ie: :media => :print) [Brent Beardsley]
|
24
|
+
|
25
|
+
* [FIX] clear all instance variables in @scope except @staticmatic [Brent Beardsley]
|
26
|
+
|
27
|
+
* [NEW] added clean and clobber tasks to Rakefile [Brent Beardsley]
|
28
|
+
|
29
|
+
* [NEW] added StaticMatic::VERSION in version.rb [Brent Beardsley]
|
30
|
+
|
31
|
+
* [NEW] added package task to Rakefile and made it the default [Brent Beardsley]
|
32
|
+
|
33
|
+
*0.8.10* (October 12th, 2007)
|
34
|
+
|
35
|
+
* [NEW] rails-like partials. Partials can start with an underscore and live in the pages directory tree, old way still works [Brent Beardsley]
|
36
|
+
|
37
|
+
* [NEW] img helper changes and tests [Jason Tennier]
|
38
|
+
|
39
|
+
* [NEW] added current_page helper for use in other helpers, layouts, or pages [Brent Beardsley]
|
40
|
+
|
41
|
+
* [NEW] add src_dir, site_dir, and current_page attr_reader's on staticmatic class [Brent Beardsley]
|
42
|
+
|
43
|
+
* [FIX] removed dependency on rails needing to be installed [Brent Beardsley]
|
44
|
+
|
45
|
+
* [FIX] fixed preview bug where setting a layout in a page would cause it to be used even for pages that did not have a layout specified and should be using the default [Brent Beardsley]
|
46
|
+
|
47
|
+
* [FIX] tag helper only outputs the attribute if it has a value [Brent Beardsley]
|
48
|
+
|
49
|
+
* [FIX] renamed RakeFile to Rakefile so it'll work on non-windows boxes [Brent Beardsley]
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Copyright (C) 2007 Stephen Bartholomew
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
data/README
CHANGED
@@ -32,10 +32,12 @@ After this command you'll have the following files:
|
|
32
32
|
stylesheets/
|
33
33
|
javascripts/
|
34
34
|
src/
|
35
|
-
|
36
|
-
index.haml
|
35
|
+
helpers/
|
37
36
|
layouts/
|
38
37
|
application.haml
|
38
|
+
pages/
|
39
|
+
index.haml
|
40
|
+
partials/
|
39
41
|
stylesheets/
|
40
42
|
application.sass
|
41
43
|
|
@@ -51,28 +53,4 @@ All of the pages are parsed and wrapped up in application.haml and put into the
|
|
51
53
|
StaticMatic adds a few helpers to the core Haml helpers:
|
52
54
|
|
53
55
|
= link 'Title', 'url'
|
54
|
-
= img 'my_image.jpg'
|
55
|
-
|
56
|
-
|
57
|
-
**_Coming soon:_**
|
58
|
-
|
59
|
-
I'm already extending these to include some neat conventions to speed up coding. For example, in the next version:
|
60
|
-
|
61
|
-
= link 'Contact Us'
|
62
|
-
|
63
|
-
will produce
|
64
|
-
|
65
|
-
<a href="contact_us.html">Contact Us</a>
|
66
|
-
|
67
|
-
Or with the Rewriting enabled:
|
68
|
-
|
69
|
-
<a href="contact_us">Contact Us</a>
|
70
|
-
|
71
|
-
## What's Next?
|
72
|
-
|
73
|
-
* Multiple directories of content
|
74
|
-
* Layouts based on directory of page template
|
75
|
-
* Additional Helpers
|
76
|
-
* Tests, tests, tests!
|
77
|
-
* Configuration
|
78
|
-
* Default Rewriting for HTML pages (drop the .html)
|
56
|
+
= img 'my_image.jpg'
|
data/Rakefile
CHANGED
@@ -1,7 +1,30 @@
|
|
1
|
+
require 'rubygems'
|
1
2
|
require 'rake/testtask'
|
3
|
+
require 'rake/clean'
|
4
|
+
Gem::manage_gems
|
5
|
+
require 'rake/gempackagetask'
|
6
|
+
require File.join(File.dirname(__FILE__), 'lib/staticmatic/version')
|
2
7
|
|
3
|
-
|
4
|
-
|
8
|
+
task :default => [:package]
|
9
|
+
|
10
|
+
spec = Gem::Specification.new do |s|
|
11
|
+
s.name = "staticmatic"
|
12
|
+
s.version = StaticMatic::VERSION::STRING
|
13
|
+
s.author = "Stephen Bartholomew"
|
14
|
+
s.email = "steve@curve21.com"
|
15
|
+
s.homepage = "http//www.curve21.com"
|
16
|
+
s.summary = "Manage static sites using Haml & Sass"
|
17
|
+
files = FileList["**/**/**"]
|
18
|
+
files.exclude 'pkg'
|
19
|
+
s.files = files.to_a
|
20
|
+
s.test_files = Dir.glob("test/*_test.rb")
|
21
|
+
s.add_dependency("haml")
|
22
|
+
s.add_dependency("mongrel")
|
23
|
+
s.executables=['staticmatic']
|
24
|
+
end
|
25
|
+
|
26
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
27
|
+
end
|
5
28
|
|
6
29
|
desc "Run all unit tests"
|
7
30
|
Rake::TestTask.new(:test) do |t|
|
data/lib/staticmatic.rb
CHANGED
@@ -5,9 +5,7 @@ require File.dirname(__FILE__) + '/staticmatic/helpers'
|
|
5
5
|
|
6
6
|
Haml::Helpers.class_eval("include StaticMatic::Helpers")
|
7
7
|
|
8
|
-
|
9
|
-
require File.dirname(__FILE__)
|
10
|
-
|
11
|
-
require File.dirname(__FILE__) + '/staticmatic/server'
|
12
|
-
|
8
|
+
%w(version configuration error base server).each do |file|
|
9
|
+
require File.join(File.dirname(__FILE__), 'staticmatic', file)
|
10
|
+
end
|
13
11
|
|
data/lib/staticmatic/base.rb
CHANGED
@@ -120,7 +120,10 @@ module StaticMatic
|
|
120
120
|
full_file_path = File.join(@src_dir, 'pages', source_dir, "#{source_file}.haml")
|
121
121
|
|
122
122
|
begin
|
123
|
-
|
123
|
+
# clear all scope variables except @staticmatic
|
124
|
+
@scope.instance_variables.each do |var|
|
125
|
+
@scope.instance_variable_set(var, nil) unless var == '@staticmatic'
|
126
|
+
end
|
124
127
|
html = generate_html_from_template_source(File.read(full_file_path))
|
125
128
|
|
126
129
|
@layout = detirmine_layout(source_dir)
|
@@ -192,7 +195,8 @@ module StaticMatic
|
|
192
195
|
def generate_css(source, source_dir = '')
|
193
196
|
full_file_path = File.join(@src_dir, 'stylesheets', source_dir, "#{source}.sass")
|
194
197
|
begin
|
195
|
-
|
198
|
+
sass_options = { :load_paths => [ File.join(@src_dir, 'stylesheets') ] }.merge(self.configuration.sass_options)
|
199
|
+
stylesheet = Sass::Engine.new(File.read(full_file_path), sass_options)
|
196
200
|
stylesheet.to_css
|
197
201
|
rescue Sass::SyntaxError => sass_error
|
198
202
|
raise StaticMatic::Error.new(sass_error.sass_line, full_file_path, sass_error.message)
|
@@ -4,17 +4,13 @@ module StaticMatic
|
|
4
4
|
|
5
5
|
attr_accessor :preview_server_host
|
6
6
|
|
7
|
-
attr_accessor :
|
8
|
-
attr_accessor :
|
9
|
-
|
10
|
-
attr_accessor :use_relative_paths_for_javascripts
|
11
|
-
|
7
|
+
attr_accessor :use_extensions_for_page_links
|
8
|
+
attr_accessor :sass_options
|
9
|
+
|
12
10
|
def initialize
|
13
11
|
self.preview_server_port = 3000
|
14
|
-
self.
|
15
|
-
self.
|
16
|
-
self.use_relative_paths_for_stylesheets = false
|
17
|
-
self.use_relative_paths_for_javascripts = false
|
12
|
+
self.use_extensions_for_page_links = true
|
13
|
+
self.sass_options = {}
|
18
14
|
end
|
19
15
|
end
|
20
16
|
end
|
data/lib/staticmatic/helpers.rb
CHANGED
@@ -3,35 +3,57 @@ module StaticMatic
|
|
3
3
|
self.extend self
|
4
4
|
|
5
5
|
# Generates links to all stylesheets in the source directory
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
stylesheet_directories.each do |path|
|
16
|
-
path = File.basename(path)
|
17
|
-
if path.include?(search_filename)
|
18
|
-
already_included = true
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
stylesheet_directories << filename if !already_included
|
6
|
+
# = stylesheets
|
7
|
+
# or specific stylesheets in a specific order
|
8
|
+
# = stylesheets :reset, :application
|
9
|
+
# Can also pass options hash in at the end so you can specify :media => :print
|
10
|
+
def stylesheets(*params)
|
11
|
+
options = {}
|
12
|
+
if params.last.is_a?(Hash)
|
13
|
+
options = params.last
|
14
|
+
params.slice!(-1, 1)
|
23
15
|
end
|
16
|
+
options[:media] = 'all' unless options.has_key?(:media)
|
17
|
+
options[:rel] = 'stylesheet'
|
18
|
+
|
19
|
+
relative_path = current_page_relative_path
|
24
20
|
|
25
21
|
output = ""
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
if params.length == 0
|
23
|
+
# no specific files requested so include all in no particular order
|
24
|
+
stylesheet_dir = File.join(@staticmatic.src_dir, 'stylesheets')
|
25
|
+
stylesheet_directories = Dir[File.join(stylesheet_dir, '**','*.sass')]
|
29
26
|
|
30
|
-
|
31
|
-
|
27
|
+
# Bit of a hack here - adds any stylesheets that exist in the site/ dir that haven't been generated from source sass
|
28
|
+
Dir[File.join(@staticmatic.site_dir, 'stylesheets', '*.css')].each do |filename|
|
29
|
+
search_filename = File.basename(filename).chomp(File.extname(filename))
|
30
|
+
|
31
|
+
already_included = false
|
32
|
+
stylesheet_directories.each do |path|
|
33
|
+
if File.basename(path).include?(search_filename)
|
34
|
+
already_included = true
|
35
|
+
break
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
stylesheet_directories << filename unless already_included
|
32
40
|
end
|
33
41
|
|
34
|
-
|
42
|
+
stylesheet_directories.each do |path|
|
43
|
+
filename_without_extension = File.basename(path).chomp(File.extname(path))
|
44
|
+
|
45
|
+
options[:href] = "#{relative_path}stylesheets/#{filename_without_extension}.css"
|
46
|
+
output << tag(:link, options)
|
47
|
+
end
|
48
|
+
else
|
49
|
+
#specific files requested and in a specific order
|
50
|
+
params.each do |file|
|
51
|
+
if File.exist?(File.join(@staticmatic.src_dir, 'stylesheets', "#{file}.sass")) ||
|
52
|
+
File.exist?(File.join(@staticmatic.site_dir, 'stylesheets', "#{file}.css"))
|
53
|
+
options[:href] = "#{relative_path}stylesheets/#{file}.css"
|
54
|
+
output << tag(:link, options)
|
55
|
+
end
|
56
|
+
end
|
35
57
|
end
|
36
58
|
|
37
59
|
output
|
@@ -42,16 +64,13 @@ module StaticMatic
|
|
42
64
|
# javascripts('test') -> <script language="javascript" src="javascripts/test.js"></script>
|
43
65
|
#
|
44
66
|
def javascripts(*files)
|
67
|
+
relative_path = current_page_relative_path
|
68
|
+
|
45
69
|
output = ""
|
46
70
|
files.each do |file|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
src = "/#{src}"
|
51
|
-
end
|
52
|
-
|
53
|
-
output << tag(:script, :language => 'javascript', :src => src, :type => "text/javascript") { "" }
|
54
|
-
end
|
71
|
+
file_str = file.to_s
|
72
|
+
src = file_str.match(%r{^((\.\.?)?/|https?://)}) ? file_str : "#{relative_path}javascripts/#{file_str}.js"
|
73
|
+
output << tag(:script, :language => 'javascript', :src => src, :type => "text/javascript") { "" }
|
55
74
|
end
|
56
75
|
output
|
57
76
|
end
|
@@ -77,38 +96,34 @@ module StaticMatic
|
|
77
96
|
end
|
78
97
|
|
79
98
|
if href.nil? || href.strip.length < 1
|
80
|
-
|
99
|
+
path_prefix = ''
|
100
|
+
if title.match(/^(\.\.?)?\//)
|
101
|
+
# starts with relative path so strip it off and prepend it to the urlified title
|
102
|
+
path_prefix_match = title.match(/^[^\s]*\//)
|
103
|
+
path_prefix = path_prefix_match[0] if path_prefix_match
|
104
|
+
title = title[path_prefix.length, title.length]
|
105
|
+
end
|
106
|
+
href = path_prefix + urlify(title) + ".html"
|
81
107
|
end
|
108
|
+
|
109
|
+
options[:href] = "#{current_page_relative_path(href)}#{href}"
|
82
110
|
|
83
|
-
options.
|
84
|
-
|
85
|
-
|
86
|
-
options[:href]
|
111
|
+
local_page = (options[:href].match(/^(\#|.+?\:)/) == nil)
|
112
|
+
unless @staticmatic.configuration.use_extensions_for_page_links || !local_page
|
113
|
+
options[:href].chomp!(".html")
|
114
|
+
options[:href].chomp!("index") if options[:href][-5, 5] == 'index'
|
87
115
|
end
|
88
|
-
|
116
|
+
|
89
117
|
tag(:a, options) { title }
|
90
118
|
end
|
91
119
|
|
92
|
-
# Generates an image tag.
|
120
|
+
# Generates an image tag always relative to the current page unless absolute path or http url specified.
|
93
121
|
#
|
94
122
|
# img('test_image.gif') -> <img src="/images/test_image.gif" alt="Test image"/>
|
95
123
|
# img('contact/test_image.gif') -> <img src="/images/contact/test_image.gif" alt="Test image"/>
|
96
124
|
# img('http://localhost/test_image.gif') -> <img src="http://localhost/test_image.gif" alt="Test image"/>
|
97
|
-
#
|
98
|
-
# If you want to use relative paths instead set 'configuration.use_relative_paths_for_images = true'
|
99
|
-
# in configuration.rb. This will set the image source relative to the page.
|
100
|
-
#
|
101
|
-
# img('test_image.gif') -> <img src="images/test_image.gif" alt="Test image"/>
|
102
125
|
def img(name, options = {})
|
103
|
-
|
104
|
-
options[:src] = "images/#{name}"
|
105
|
-
unless @staticmatic.configuration.use_relative_paths_for_images
|
106
|
-
options[:src] = "/" + options[:src]
|
107
|
-
end
|
108
|
-
else
|
109
|
-
options[:src] = name
|
110
|
-
end
|
111
|
-
|
126
|
+
options[:src] = name.match(%r{^((\.\.?)?/|https?://)}) ? name : "#{current_page_relative_path}images/#{name}"
|
112
127
|
options[:alt] ||= name.split('/').last.split('.').first.capitalize.gsub(/_|-/, ' ')
|
113
128
|
tag :img, options
|
114
129
|
end
|
@@ -127,9 +142,9 @@ module StaticMatic
|
|
127
142
|
if block_given?
|
128
143
|
output << ">"
|
129
144
|
output << yield
|
130
|
-
output << "</#{name}
|
145
|
+
output << "</#{name}>"
|
131
146
|
else
|
132
|
-
output << "
|
147
|
+
output << "/>"
|
133
148
|
end
|
134
149
|
output
|
135
150
|
end
|
@@ -157,5 +172,17 @@ module StaticMatic
|
|
157
172
|
def current_page
|
158
173
|
@staticmatic.current_page
|
159
174
|
end
|
175
|
+
|
176
|
+
private
|
177
|
+
|
178
|
+
def current_page_relative_path(current_path = nil)
|
179
|
+
if current_path.nil? || current_path.match(/^((\.\.?)?\/|\#|.+?\:)/) == nil
|
180
|
+
current_page_depth = current_page.split('/').length - 2;
|
181
|
+
(current_page_depth > 0) ? ([ '..' ] * current_page_depth).join('/') + '/' : ''
|
182
|
+
else
|
183
|
+
''
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
160
187
|
end
|
161
188
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module StaticMatic #:nodoc:
|
2
|
+
module VERSION #:nodoc:
|
3
|
+
MAJOR = 0
|
4
|
+
MINOR = 9
|
5
|
+
TINY = 0
|
6
|
+
|
7
|
+
STRING = [MAJOR, MINOR, TINY].join('.')
|
8
|
+
URLIFIED = STRING.tr('.', '_')
|
9
|
+
|
10
|
+
# requirements_met? can take a hash with :major, :minor, :tiny set or
|
11
|
+
# a string in the format "major.minor.tiny"
|
12
|
+
def self.requirements_met?(minimum_version = {})
|
13
|
+
major = minor = tiny = 0
|
14
|
+
if minimum_version.is_a?(Hash)
|
15
|
+
major = minimum_version[:major].to_i if minimum_version.has_key?(:major)
|
16
|
+
minor = minimum_version[:minor].to_i if minimum_version.has_key?(:minor)
|
17
|
+
tiny = minimum_version[:tiny].to_i if minimum_version.has_key?(:tiny)
|
18
|
+
else
|
19
|
+
major, minor, tiny = minimum_version.to_s.split('.').collect { |v| v.to_i }
|
20
|
+
end
|
21
|
+
met = false
|
22
|
+
if StaticMatic::VERSION::MAJOR > major
|
23
|
+
met = true
|
24
|
+
elsif StaticMatic::VERSION::MAJOR == major
|
25
|
+
if StaticMatic::VERSION::MINOR > minor
|
26
|
+
met = true
|
27
|
+
elsif StaticMatic::VERSION::MINOR == minor
|
28
|
+
met = StaticMatic::VERSION::TINY >= tiny
|
29
|
+
end
|
30
|
+
end
|
31
|
+
met
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/test/base_test.rb
CHANGED
@@ -6,6 +6,11 @@ class StaticMaticBaseTest < Test::Unit::TestCase
|
|
6
6
|
@base_dir = File.dirname(__FILE__) + '/sandbox/test_site'
|
7
7
|
@staticmatic = StaticMatic::Base.new(@base_dir)
|
8
8
|
end
|
9
|
+
|
10
|
+
def test_initial_configuration_settings
|
11
|
+
assert_equal true, @staticmatic.configuration.use_extensions_for_page_links
|
12
|
+
assert_equal 3000, @staticmatic.configuration.preview_server_port
|
13
|
+
end
|
9
14
|
|
10
15
|
def test_should_setup_directories
|
11
16
|
tmp_dir = File.dirname(__FILE__) + '/sandbox/tmp'
|
@@ -23,11 +28,9 @@ class StaticMaticBaseTest < Test::Unit::TestCase
|
|
23
28
|
end
|
24
29
|
Dir.delete("#{tmp_dir}/#{dir}") if File.exists?("#{tmp_dir}/#{dir}")
|
25
30
|
end
|
26
|
-
|
27
31
|
end
|
28
32
|
|
29
33
|
def test_should_generate_html_with_layout
|
30
|
-
|
31
34
|
content = @staticmatic.generate_html_with_layout("index")
|
32
35
|
assert_match "StaticMatic", content
|
33
36
|
assert_match "This is some test content", content
|