usmu 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,49 @@
1
+ require 'usmu/plugin'
2
+ require 'ostruct'
3
+
4
+ RSpec.describe Usmu::Plugin do
5
+ before(:each) do
6
+ # noinspection RubyStringKeysInHashInspection
7
+ allow(Gem::Specification).to receive(:find_all).and_return([OpenStruct.new({'name' => 'usmu-mock_plugin'})])
8
+ end
9
+
10
+ let(:plugins) { Usmu::Plugin.new }
11
+
12
+ it 'should load the core plugin' do
13
+ plugins.load_plugins
14
+ expect(plugins.plugins.select {|p| p.class.name == 'Usmu::Plugin::Core'}.length).to eq(1)
15
+ end
16
+
17
+ it 'should load plugins from gems' do
18
+ plugins.load_plugins
19
+ expect(plugins.plugins.select {|p| p.class.name == 'Usmu::MockPlugin'}.length).to eq(1)
20
+ end
21
+
22
+ it 'should avoid loading plugins more than once' do
23
+ # noinspection RubyStringKeysInHashInspection
24
+ allow(Gem::Specification).to receive(:find_all).and_return([
25
+ OpenStruct.new({'name' => 'usmu-mock_plugin'}),
26
+ OpenStruct.new({'name' => 'usmu-mock_plugin'}),
27
+ ])
28
+ plugins.load_plugins
29
+ expect(plugins.plugins.select {|p| p.class.name == 'Usmu::MockPlugin'}.length).to eq(1)
30
+ end
31
+
32
+ it 'should call methods by name when using #invoke' do
33
+ plugins.load_plugins
34
+ plugins.plugins.select {|p| p.class.name == 'Usmu::MockPlugin' }.each do |p|
35
+ allow(p).to receive(:test).with('Hello world!')
36
+ end
37
+
38
+ plugins.invoke :test, 'Hello world!'
39
+ end
40
+
41
+ it 'should aggregate information from plugins when using #invoke' do
42
+ plugins.load_plugins
43
+ plugins.plugins.select {|p| p.class.name == 'Usmu::MockPlugin' }.each do |p|
44
+ allow(p).to receive(:test).and_return(['Goodbye world!'])
45
+ end
46
+
47
+ expect(plugins.invoke :test).to eq([['Goodbye world!']])
48
+ end
49
+ end
@@ -1,4 +1,3 @@
1
- require 'rspec'
2
1
  require 'usmu/site_generator'
3
2
 
4
3
  RSpec.describe Usmu::SiteGenerator do
@@ -27,6 +26,5 @@ RSpec.describe Usmu::SiteGenerator do
27
26
 
28
27
  it 'should be able to generate a site' do
29
28
  expect(generator.respond_to? :generate).to eq(true)
30
- # Further testing is exercised at the system integration level in the cukes.
31
29
  end
32
30
  end
@@ -1,3 +1,8 @@
1
+ require 'simplecov'
2
+ SimpleCov.command_name 'RSpec'
3
+
4
+ require 'logging'
5
+
1
6
  # This file was generated by the `rspec --init` command. Conventionally, all
2
7
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
8
  # The generated `.rspec` file contains `--require spec_helper` which will cause this
@@ -54,7 +59,7 @@ RSpec.configure do |config|
54
59
 
55
60
  # This setting enables warnings. It's recommended, but in some cases may
56
61
  # be too noisy due to issues in dependencies.
57
- config.warnings = true
62
+ config.warnings = false
58
63
 
59
64
  # Many RSpec users commonly either run the entire suite or an individual
60
65
  # file, and it's useful to allow more verbose output when running an
@@ -83,3 +88,9 @@ RSpec.configure do |config|
83
88
  # as the one that triggered the failure.
84
89
  Kernel.srand config.seed
85
90
  end
91
+
92
+ # Load turnip step definitions
93
+ Dir['test/spec/**/*_steps.rb'].each {|f| require f[10..f.length] }
94
+
95
+ # Allow loading of mocks
96
+ $LOAD_PATH.unshift(File.realpath('./test/spec/mock'))
@@ -1,4 +1,3 @@
1
- require 'rspec'
2
1
  require 'support/shared_layout'
3
2
  require 'usmu/static_file'
4
3
 
@@ -13,6 +12,13 @@ RSpec.describe Usmu::StaticFile do
13
12
  expect(rendered).to eq(File.read('test/expected-site/robots.txt'))
14
13
  end
15
14
 
15
+ it 'has an input path' do
16
+ configuration = Usmu::Configuration.from_hash({})
17
+ page = Usmu::StaticFile.new(configuration, 'robots.txt', 'txt', '', {})
18
+ expect(page.respond_to? :input_path).to eq(true)
19
+ expect(page.input_path).to eq('src/robots.txt')
20
+ end
21
+
16
22
  it 'has an output filename that matches input' do
17
23
  file = Usmu::StaticFile.new(configuration, 'robots.txt')
18
24
  expect(file.output_filename).to eq('robots.txt')
@@ -20,7 +20,7 @@ RSpec.shared_examples 'a layout' do
20
20
  include_examples 'a renderable file'
21
21
 
22
22
  let(:title_configuration) { Usmu::Configuration.from_hash({'default meta' => {'title' => 'title'}}) }
23
- let(:meta_with_title) { {'title' => 'title'} }
23
+ let(:meta_with_title) { {'title' => 'meta title'} }
24
24
  let(:content) { "title \#{title}\nbody\n #container\n | \#{{content}}" }
25
25
 
26
26
  it 'and has a type' do
@@ -35,6 +35,72 @@ RSpec.shared_examples 'a layout' do
35
35
  <title>title</title><body><div id="container">test</div></body>
36
36
  EOF
37
37
  end
38
+
39
+ context 'and when it\'s type' do
40
+ it 'is invalid' do
41
+ expect {described_class.new(empty_configuration, 'body.foo', nil, '', {})}.to raise_error()
42
+ end
43
+
44
+ it 'is erb then it\'s output type should be taken from it\'s filename' do
45
+ layout = described_class.new(empty_configuration, 'body.txt.erb', 'erb', '', {})
46
+ expect(layout.output_filename).to eq('body.txt')
47
+ end
48
+
49
+ it 'is rhtml then it\'s output type should be taken from it\'s filename' do
50
+ layout = described_class.new(empty_configuration, 'body.txt.rhtml', 'rhtml', '', {})
51
+ expect(layout.output_filename).to eq('body.txt')
52
+ end
53
+
54
+ it 'is erubis then it\'s output type should be taken from it\'s filename' do
55
+ layout = described_class.new(empty_configuration, 'body.txt.erubis', 'erubis', '', {})
56
+ expect(layout.output_filename).to eq('body.txt')
57
+ end
58
+
59
+ it 'is markdown then it\'s output type should be html' do
60
+ layout = described_class.new(empty_configuration, 'body.markdown', 'markdown', '', {})
61
+ expect(layout.output_filename).to eq('body.html')
62
+ end
63
+
64
+ it 'is mkd then it\'s output type should be html' do
65
+ layout = described_class.new(empty_configuration, 'body.mkd', 'mkd', '', {})
66
+ expect(layout.output_filename).to eq('body.html')
67
+ end
68
+
69
+ it 'is md then it\'s output type should be html' do
70
+ layout = described_class.new(empty_configuration, 'body.md', 'md', '', {})
71
+ expect(layout.output_filename).to eq('body.html')
72
+ end
73
+
74
+ it 'is coffee then it\'s output type should be js' do
75
+ layout = described_class.new(empty_configuration, 'body.coffee', 'coffee', '', {})
76
+ expect(layout.output_filename).to eq('body.js')
77
+ end
78
+
79
+ it 'is less then it\'s output type should be css' do
80
+ layout = described_class.new(empty_configuration, 'body.less', 'less', '', {})
81
+ expect(layout.output_filename).to eq('body.css')
82
+ end
83
+
84
+ it 'is liquid then it\'s output type should be taken from it\'s filename' do
85
+ layout = described_class.new(empty_configuration, 'body.txt.liquid', 'liquid', '', {})
86
+ expect(layout.output_filename).to eq('body.txt')
87
+ end
88
+
89
+ it 'is sass then it\'s output type should be scss' do
90
+ layout = described_class.new(empty_configuration, 'body.sass', 'sass', '', {})
91
+ expect(layout.output_filename).to eq('body.css')
92
+ end
93
+
94
+ it 'is scss then it\'s output type should be css' do
95
+ layout = described_class.new(empty_configuration, 'body.scss', 'scss', '', {})
96
+ expect(layout.output_filename).to eq('body.css')
97
+ end
98
+
99
+ it 'is slim then it\'s output type should be html' do
100
+ layout = described_class.new(empty_configuration, 'body.slim', 'slim', '', {})
101
+ expect(layout.output_filename).to eq('body.html')
102
+ end
103
+ end
38
104
  end
39
105
 
40
106
  RSpec.shared_examples 'a layout with metadata' do
@@ -61,10 +127,10 @@ RSpec.shared_examples 'a layout with metadata' do
61
127
  EOF
62
128
  end
63
129
 
64
- it 'variables over default metadata' do
65
- layout = described_class.new(empty_configuration, 'body.slim', 'slim', content, {})
66
- expect(layout.render({'content' => 'test', 'title' => 'overridden title'})).to eq(<<-EOF)
67
- <title>overridden title</title><body><div id="container">test</div></body>
130
+ it 'metadata over default metadata' do
131
+ layout = described_class.new(title_configuration, 'body.slim', 'slim', content, meta_with_title)
132
+ expect(layout.render({'content' => 'test'})).to eq(<<-EOF)
133
+ <title>meta title</title><body><div id="container">test</div></body>
68
134
  EOF
69
135
  end
70
136
  end
@@ -89,6 +155,24 @@ RSpec.shared_examples 'an embeddable layout' do
89
155
  EOF
90
156
  end
91
157
 
158
+ it 'and respects templates from default metadata' do
159
+ parent = described_class.new(empty_configuration, 'html.slim', 'slim', wrapper, {})
160
+ default_layout_configuration = Usmu::Configuration.from_hash({'default meta' => {'layout' => parent}})
161
+ layout = described_class.new(default_layout_configuration, 'body.slim', 'slim', content, {'title' => 'test title'})
162
+ expect(layout.render({'content' => 'test'})).to eq(<<-EOF)
163
+ <html><title>test title</title><body><div id="container">test</div></body>
164
+ </html>
165
+ EOF
166
+ end
167
+
168
+ it 'and uses a template of "none" to explicitly disable the parent template' do
169
+ default_layout_configuration = Usmu::Configuration.from_hash({'default meta' => {'layout' => 'html'}})
170
+ layout = described_class.new(default_layout_configuration, 'body.slim', 'slim', content, {'layout' => 'none', 'title' => 'test title'})
171
+ expect(layout.render({'content' => 'test'})).to eq(<<-EOF)
172
+ <title>test title</title><body><div id="container">test</div></body>
173
+ EOF
174
+ end
175
+
92
176
  context 'and prioritises' do
93
177
  it 'metadata over parent metadata' do
94
178
  parent = described_class.new(empty_configuration, 'html.slim', 'slim', wrapper, {'title' => 'title'})
@@ -0,0 +1,20 @@
1
+ require 'usmu/ui/console'
2
+
3
+ Usmu.disable_stdout_logging
4
+
5
+ RSpec.describe Usmu::Ui::Console do
6
+ it 'supports --quiet' do
7
+ expect(Usmu).to receive(:quiet_logging)
8
+ Usmu::Ui::Console.new(%w{--quiet --config test/site/usmu.yml})
9
+ end
10
+
11
+ it 'supports --log' do
12
+ expect(Usmu).to receive(:add_file_logger).with('test.log')
13
+ Usmu::Ui::Console.new(%w{--log test.log --config test/site/usmu.yml})
14
+ end
15
+
16
+ it 'supports --verbose' do
17
+ expect(Usmu).to receive(:verbose_logging)
18
+ Usmu::Ui::Console.new(%w{--verbose --config test/site/usmu.yml})
19
+ end
20
+ end
data/usmu-jruby.gemspec CHANGED
@@ -22,13 +22,16 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency 'tilt', '~> 2.0'
23
23
  spec.add_dependency 'kramdown', '~> 1.5'
24
24
  spec.add_dependency 'deep_merge', '~> 1.0'
25
- spec.add_dependency 'trollop', '~> 2.0'
26
- spec.add_dependency 'highline', '~> 1.6'
25
+ spec.add_dependency 'commander', '~> 4.2'
26
+ spec.add_dependency 'logging', '~> 1.8'
27
27
 
28
28
  spec.add_development_dependency 'bundler', '~> 1.6'
29
29
  spec.add_development_dependency 'rake', '~> 10.0'
30
30
  spec.add_development_dependency 'rspec', '~> 3.1'
31
- spec.add_development_dependency 'cucumber', '~> 1.3'
32
31
  spec.add_development_dependency 'yard', '~> 0.8'
33
32
  spec.add_development_dependency 'cane', '~> 2.6'
33
+ spec.add_development_dependency 'simplecov', '~> 0.9'
34
+ spec.add_development_dependency 'guard', '~> 2.8'
35
+ spec.add_development_dependency 'guard-rspec', '~> 4.3'
36
+ spec.add_development_dependency 'turnip', '~> 1.2'
34
37
  end
data/usmu.gemspec CHANGED
@@ -19,17 +19,18 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_dependency 'slim', '~> 2.1'
21
21
  spec.add_dependency 'tilt', '~> 2.0'
22
- # For now yard requires redcarpet < 3.2
23
- # See: https://github.com/lsegal/yard/issues/812
24
- spec.add_dependency 'redcarpet', '~> 3.1', '< 3.2'
22
+ spec.add_dependency 'redcarpet', '~> 3.2', '>= 3.2.1'
25
23
  spec.add_dependency 'deep_merge', '~> 1.0'
26
- spec.add_dependency 'trollop', '~> 2.0'
27
- spec.add_dependency 'highline', '~> 1.6'
24
+ spec.add_dependency 'commander', '~> 4.2'
25
+ spec.add_dependency 'logging', '~> 1.8'
28
26
 
29
27
  spec.add_development_dependency 'bundler', '~> 1.6'
30
28
  spec.add_development_dependency 'rake', '~> 10.0'
31
29
  spec.add_development_dependency 'rspec', '~> 3.1'
32
- spec.add_development_dependency 'cucumber', '~> 1.3'
33
30
  spec.add_development_dependency 'yard', '~> 0.8'
34
31
  spec.add_development_dependency 'cane', '~> 2.6'
32
+ spec.add_development_dependency 'simplecov', '~> 0.9'
33
+ spec.add_development_dependency 'guard', '~> 2.8'
34
+ spec.add_development_dependency 'guard-rspec', '~> 4.3'
35
+ spec.add_development_dependency 'turnip', '~> 1.2'
35
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usmu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Scharley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-11 00:00:00.000000000 Z
11
+ date: 2014-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slim
@@ -43,21 +43,21 @@ dependencies:
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.1'
48
- - - "<"
49
46
  - !ruby/object:Gem::Version
50
47
  version: '3.2'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 3.2.1
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - "~>"
56
- - !ruby/object:Gem::Version
57
- version: '3.1'
58
- - - "<"
59
56
  - !ruby/object:Gem::Version
60
57
  version: '3.2'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 3.2.1
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: deep_merge
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -73,33 +73,33 @@ dependencies:
73
73
  - !ruby/object:Gem::Version
74
74
  version: '1.0'
75
75
  - !ruby/object:Gem::Dependency
76
- name: trollop
76
+ name: commander
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '2.0'
81
+ version: '4.2'
82
82
  type: :runtime
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '2.0'
88
+ version: '4.2'
89
89
  - !ruby/object:Gem::Dependency
90
- name: highline
90
+ name: logging
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '1.6'
95
+ version: '1.8'
96
96
  type: :runtime
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '1.6'
102
+ version: '1.8'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: bundler
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -143,47 +143,89 @@ dependencies:
143
143
  - !ruby/object:Gem::Version
144
144
  version: '3.1'
145
145
  - !ruby/object:Gem::Dependency
146
- name: cucumber
146
+ name: yard
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '1.3'
151
+ version: '0.8'
152
152
  type: :development
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: '1.3'
158
+ version: '0.8'
159
159
  - !ruby/object:Gem::Dependency
160
- name: yard
160
+ name: cane
161
161
  requirement: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: '0.8'
165
+ version: '2.6'
166
166
  type: :development
167
167
  prerelease: false
168
168
  version_requirements: !ruby/object:Gem::Requirement
169
169
  requirements:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
- version: '0.8'
172
+ version: '2.6'
173
173
  - !ruby/object:Gem::Dependency
174
- name: cane
174
+ name: simplecov
175
175
  requirement: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: '2.6'
179
+ version: '0.9'
180
180
  type: :development
181
181
  prerelease: false
182
182
  version_requirements: !ruby/object:Gem::Requirement
183
183
  requirements:
184
184
  - - "~>"
185
185
  - !ruby/object:Gem::Version
186
- version: '2.6'
186
+ version: '0.9'
187
+ - !ruby/object:Gem::Dependency
188
+ name: guard
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '2.8'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: '2.8'
201
+ - !ruby/object:Gem::Dependency
202
+ name: guard-rspec
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '4.3'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '4.3'
215
+ - !ruby/object:Gem::Dependency
216
+ name: turnip
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: '1.2'
222
+ type: :development
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: '1.2'
187
229
  description:
188
230
  email:
189
231
  - matt.scharley@gmail.com
@@ -195,10 +237,13 @@ files:
195
237
  - ".cane"
196
238
  - ".gitignore"
197
239
  - ".rspec"
240
+ - ".simplecov"
198
241
  - ".travis.yml"
199
242
  - ".yardopts"
243
+ - CONTRIBUTING.md
200
244
  - Gemfile
201
245
  - Gemfile-jruby
246
+ - Guardfile
202
247
  - LICENSE.md
203
248
  - README.md
204
249
  - Rakefile
@@ -208,6 +253,8 @@ files:
208
253
  - lib/usmu/configuration.rb
209
254
  - lib/usmu/layout.rb
210
255
  - lib/usmu/page.rb
256
+ - lib/usmu/plugin.rb
257
+ - lib/usmu/plugin/core.rb
211
258
  - lib/usmu/site_generator.rb
212
259
  - lib/usmu/static_file.rb
213
260
  - lib/usmu/ui.rb
@@ -217,8 +264,6 @@ files:
217
264
  - test/expected-site/embedded.html
218
265
  - test/expected-site/index.html
219
266
  - test/expected-site/robots.txt
220
- - test/features/generator.feature
221
- - test/features/step_definitions/step_general.rb
222
267
  - test/site/content/default.md
223
268
  - test/site/content/embedded.md
224
269
  - test/site/content/embedded.meta.yml
@@ -230,13 +275,19 @@ files:
230
275
  - test/site/layouts/html.meta.yml
231
276
  - test/site/layouts/html.slim
232
277
  - test/site/usmu.yml
278
+ - test/spec/acceptance/full_site_build.feature
279
+ - test/spec/acceptance/steps/full_site_build_steps.rb
233
280
  - test/spec/configuration_spec.rb
234
281
  - test/spec/layout_spec.rb
282
+ - test/spec/mock/usmu/mock_plugin.rb
235
283
  - test/spec/page_spec.rb
284
+ - test/spec/plugin/core_spec.rb
285
+ - test/spec/plugin_spec.rb
236
286
  - test/spec/site_generator_spec.rb
237
287
  - test/spec/spec_helper.rb
238
288
  - test/spec/static_file_spec.rb
239
289
  - test/spec/support/shared_layout.rb
290
+ - test/spec/ui/console_spec.rb
240
291
  - usmu-jruby.gemspec
241
292
  - usmu.gemspec
242
293
  homepage: https://github.com/usmu/usmu
@@ -268,8 +319,6 @@ test_files:
268
319
  - test/expected-site/embedded.html
269
320
  - test/expected-site/index.html
270
321
  - test/expected-site/robots.txt
271
- - test/features/generator.feature
272
- - test/features/step_definitions/step_general.rb
273
322
  - test/site/content/default.md
274
323
  - test/site/content/embedded.md
275
324
  - test/site/content/embedded.meta.yml
@@ -281,11 +330,17 @@ test_files:
281
330
  - test/site/layouts/html.meta.yml
282
331
  - test/site/layouts/html.slim
283
332
  - test/site/usmu.yml
333
+ - test/spec/acceptance/full_site_build.feature
334
+ - test/spec/acceptance/steps/full_site_build_steps.rb
284
335
  - test/spec/configuration_spec.rb
285
336
  - test/spec/layout_spec.rb
337
+ - test/spec/mock/usmu/mock_plugin.rb
286
338
  - test/spec/page_spec.rb
339
+ - test/spec/plugin/core_spec.rb
340
+ - test/spec/plugin_spec.rb
287
341
  - test/spec/site_generator_spec.rb
288
342
  - test/spec/spec_helper.rb
289
343
  - test/spec/static_file_spec.rb
290
344
  - test/spec/support/shared_layout.rb
345
+ - test/spec/ui/console_spec.rb
291
346
  has_rdoc: