asciidoctor-doctest 1.5.0

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 (71) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.adoc +0 -0
  3. data/LICENSE +21 -0
  4. data/README.adoc +327 -0
  5. data/Rakefile +12 -0
  6. data/data/examples/asciidoc/block_admonition.adoc +27 -0
  7. data/data/examples/asciidoc/block_audio.adoc +13 -0
  8. data/data/examples/asciidoc/block_colist.adoc +46 -0
  9. data/data/examples/asciidoc/block_dlist.adoc +99 -0
  10. data/data/examples/asciidoc/block_example.adoc +21 -0
  11. data/data/examples/asciidoc/block_floating_title.adoc +27 -0
  12. data/data/examples/asciidoc/block_image.adoc +28 -0
  13. data/data/examples/asciidoc/block_listing.adoc +68 -0
  14. data/data/examples/asciidoc/block_literal.adoc +30 -0
  15. data/data/examples/asciidoc/block_olist.adoc +55 -0
  16. data/data/examples/asciidoc/block_open.adoc +40 -0
  17. data/data/examples/asciidoc/block_outline.adoc +60 -0
  18. data/data/examples/asciidoc/block_page_break.adoc +6 -0
  19. data/data/examples/asciidoc/block_paragraph.adoc +17 -0
  20. data/data/examples/asciidoc/block_pass.adoc +5 -0
  21. data/data/examples/asciidoc/block_preamble.adoc +19 -0
  22. data/data/examples/asciidoc/block_quote.adoc +30 -0
  23. data/data/examples/asciidoc/block_sidebar.adoc +22 -0
  24. data/data/examples/asciidoc/block_stem.adoc +28 -0
  25. data/data/examples/asciidoc/block_table.adoc +168 -0
  26. data/data/examples/asciidoc/block_thematic_break.adoc +2 -0
  27. data/data/examples/asciidoc/block_toc.adoc +50 -0
  28. data/data/examples/asciidoc/block_ulist.adoc +43 -0
  29. data/data/examples/asciidoc/block_verse.adoc +37 -0
  30. data/data/examples/asciidoc/block_video.adoc +24 -0
  31. data/data/examples/asciidoc/document.adoc +51 -0
  32. data/data/examples/asciidoc/embedded.adoc +10 -0
  33. data/data/examples/asciidoc/inline_anchor.adoc +27 -0
  34. data/data/examples/asciidoc/inline_break.adoc +8 -0
  35. data/data/examples/asciidoc/inline_button.adoc +3 -0
  36. data/data/examples/asciidoc/inline_callout.adoc +5 -0
  37. data/data/examples/asciidoc/inline_footnote.adoc +9 -0
  38. data/data/examples/asciidoc/inline_image.adoc +44 -0
  39. data/data/examples/asciidoc/inline_kbd.adoc +7 -0
  40. data/data/examples/asciidoc/inline_menu.adoc +11 -0
  41. data/data/examples/asciidoc/inline_quoted.adoc +59 -0
  42. data/data/examples/asciidoc/section.adoc +74 -0
  43. data/doc/img/doctest-diag.odf +0 -0
  44. data/doc/img/doctest-diag.svg +56 -0
  45. data/doc/img/failing-test-term.gif +0 -0
  46. data/lib/asciidoctor-doctest.rb +1 -0
  47. data/lib/asciidoctor/doctest.rb +30 -0
  48. data/lib/asciidoctor/doctest/asciidoc/examples_suite.rb +44 -0
  49. data/lib/asciidoctor/doctest/asciidoc_renderer.rb +103 -0
  50. data/lib/asciidoctor/doctest/base_example.rb +161 -0
  51. data/lib/asciidoctor/doctest/base_examples_suite.rb +188 -0
  52. data/lib/asciidoctor/doctest/core_ext.rb +49 -0
  53. data/lib/asciidoctor/doctest/generator.rb +63 -0
  54. data/lib/asciidoctor/doctest/generator_task.rb +111 -0
  55. data/lib/asciidoctor/doctest/html/example.rb +21 -0
  56. data/lib/asciidoctor/doctest/html/examples_suite.rb +111 -0
  57. data/lib/asciidoctor/doctest/html/html_beautifier.rb +17 -0
  58. data/lib/asciidoctor/doctest/html/normalizer.rb +118 -0
  59. data/lib/asciidoctor/doctest/minitest_diffy.rb +74 -0
  60. data/lib/asciidoctor/doctest/test.rb +120 -0
  61. data/lib/asciidoctor/doctest/version.rb +5 -0
  62. data/spec/asciidoc/examples_suite_spec.rb +99 -0
  63. data/spec/base_example_spec.rb +176 -0
  64. data/spec/core_ext_spec.rb +67 -0
  65. data/spec/html/examples_suite_spec.rb +249 -0
  66. data/spec/html/normalizer_spec.rb +70 -0
  67. data/spec/shared_examples/base_examples_suite.rb +262 -0
  68. data/spec/spec_helper.rb +33 -0
  69. data/spec/support/matchers.rb +7 -0
  70. data/spec/test_spec.rb +164 -0
  71. metadata +360 -0
@@ -0,0 +1,33 @@
1
+ require 'rspec/collection_matchers'
2
+ require 'simplecov'
3
+ require 'asciidoctor/doctest'
4
+
5
+ Dir['./spec/{shared_examples,support}/**/*.rb'].each { |file| require file }
6
+
7
+ RSpec.configure do |config|
8
+
9
+ # rspec-expectations config
10
+ config.expect_with :rspec do |expects|
11
+
12
+ # This option disables deprecated 'should' syntax.
13
+ expects.syntax = :expect
14
+
15
+ # This option makes the +description+ and +failure_message+ of custom
16
+ # matchers include text for helper methods defined using +chain+, e.g.:
17
+ # be_bigger_than(2).and_smaller_than(4).description
18
+ # # => "be bigger than 2 and smaller than 4"
19
+ # ...rather than:
20
+ # # => "be bigger than 2"
21
+ expects.include_chain_clauses_in_custom_matcher_descriptions = true
22
+ end
23
+
24
+ # rspec-mocks config
25
+ config.mock_with :rspec do |mocks|
26
+
27
+ # Prevents you from mocking or stubbing a method that does not exist on
28
+ # a real object.
29
+ mocks.verify_partial_doubles = true
30
+ end
31
+
32
+ config.color = true
33
+ end
@@ -0,0 +1,7 @@
1
+ require 'rspec/expectations'
2
+
3
+ RSpec::Matchers.define :have_method do |*names|
4
+ match do |klass|
5
+ names.all? { |name| klass.method_defined? name }
6
+ end
7
+ end
data/spec/test_spec.rb ADDED
@@ -0,0 +1,164 @@
1
+ describe DocTest::Test do
2
+
3
+ subject(:test_class) { Class.new described_class }
4
+
5
+ let(:renderer) { double 'Renderer' }
6
+ let(:input_suite) { double 'ExamplesSuite' }
7
+ let(:output_suite) { double 'ExamplesSuite' }
8
+
9
+ before do
10
+ test_class.instance_variable_set(:@renderer, renderer)
11
+ end
12
+
13
+ it { is_expected.to have_method :input_suite, :output_suite, :renderer }
14
+
15
+
16
+ describe '.define_test' do
17
+ before { test_class.define_test('dummy') { 42 } }
18
+
19
+ it 'defines method with the given name' do
20
+ is_expected.to have_method :dummy
21
+ expect(test_class.new('dummy').send(:dummy)).to eq 42
22
+ end
23
+
24
+ it "adds the method's name to runnable_methods" do
25
+ expect(test_class.runnable_methods).to eq ['dummy']
26
+ end
27
+ end
28
+
29
+
30
+ describe '.runnable_methods' do
31
+ subject { test_class.runnable_methods }
32
+
33
+ context 'when no test defined yet' do
34
+ it { is_expected.to be_empty }
35
+ end
36
+
37
+ context 'when some test is defined using test macro' do
38
+ it 'returns array with the test method name' do
39
+ test_class.define_test('dummy') { 42 }
40
+ is_expected.to eq ['dummy']
41
+ end
42
+ end
43
+
44
+ context 'when any method named /test_.*/ exists' do
45
+ it 'returns array with the method name' do
46
+ test_class.send(:define_method, :test_me) { 42 }
47
+ is_expected.to eq ['test_me']
48
+ end
49
+ end
50
+ end
51
+
52
+
53
+ describe '.generate_tests!' do
54
+
55
+ let :examples do
56
+ [
57
+ [ (create_example 'bl:basic', content: '_meh_'),
58
+ (create_example 'bl:basic', content: '<i>meh</i>') ],
59
+ [ (create_example 'bl:noinput'),
60
+ (create_example 'bl:noinput') ],
61
+ [ (create_example 'bl:nooutput', content: '_meh_'),
62
+ (create_example 'bl:nooutput') ]
63
+ ]
64
+ end
65
+
66
+ before do
67
+ expect(input_suite).to receive(:pair_with)
68
+ .with(output_suite).and_return(examples)
69
+ test_class.generate_tests! output_suite, input_suite
70
+ end
71
+
72
+ context 'when both input and output examples are present' do
73
+ subject(:test_inst) { test_class.new('bl:basic') }
74
+
75
+ it 'defines test method that calls method :test_example'do
76
+ is_expected.to receive(:test_example)
77
+ test_inst.send(:'bl:basic')
78
+ end
79
+ end
80
+
81
+ context 'when input example is missing' do
82
+ it "doesn't define a test method for it" do
83
+ is_expected.to_not have_method :'bl:noinput'
84
+ end
85
+ end
86
+
87
+ context 'when output example is missing' do
88
+ subject { test_class.new('bl:nooutput') }
89
+
90
+ it 'defines test method with "skip"' do
91
+ expect { subject.send(:'bl:nooutput') }.to raise_error Minitest::Skip
92
+ end
93
+ end
94
+ end
95
+
96
+
97
+ describe '#location' do
98
+ subject { test_class.new('block_ulist:basic').location }
99
+
100
+ # test_class is anonymous, so we must give it some name
101
+ before { DummyTest = test_class unless defined? DummyTest }
102
+
103
+ it 'returns formatted example name' do
104
+ is_expected.to eq 'DummyTest :: block_ulist : basic'
105
+ end
106
+ end
107
+
108
+
109
+ describe '#test_example' do
110
+ subject(:test_inst) { test_class.new('bl:basic') }
111
+
112
+ let(:input_exmpl) { create_example 'bl:basic', content: '_meh_' }
113
+ let(:output_exmpl) { create_example 'bl:basic', content: '<i>meh</i>', opts: {foo: 42} }
114
+ let(:test_example!) { test_inst.test_example output_exmpl, input_exmpl }
115
+
116
+ before do
117
+ allow(input_suite).to receive(:pair_with)
118
+ .with(output_suite)
119
+ .and_return([])
120
+
121
+ expect(output_suite).to receive(:convert_example)
122
+ .with(input_exmpl, output_exmpl.opts, renderer)
123
+ .and_return(actual_exmpl)
124
+
125
+ test_class.generate_tests! output_suite, input_suite
126
+ end
127
+
128
+ context 'when examples are equivalent' do
129
+ let(:actual_exmpl) { output_exmpl.dup }
130
+
131
+ it 'no error is thrown' do
132
+ expect { test_example! }.not_to raise_error
133
+ end
134
+ end
135
+
136
+ context 'when examples are not equivalent' do
137
+ let(:input_exmpl) { create_example 'bl:basic', content: '_meh_', desc: 'yada yada' }
138
+ let(:actual_exmpl) { output_exmpl.dup.tap { |o| o.content = '<em>meh</em>' } }
139
+
140
+ it 'throws Minitest::Assertion error' do
141
+ expect { test_example! }.to raise_error Minitest::Assertion
142
+ end
143
+
144
+ context 'and input example has desc:' do
145
+ it 'throws error which message starts with the desc' do
146
+ expect { test_example! }.to raise_error(/^yada yada.*/)
147
+ end
148
+ end
149
+
150
+ context 'and both input and output examples have desc:' do
151
+ let(:output_exmpl) { create_example 'bl:basic', content: '<i>meh</i>', desc: 'Yoda' }
152
+
153
+ it "throws error which message starts with the output's example desc" do
154
+ expect { test_example! }.to raise_error(/^Yoda.*/)
155
+ end
156
+ end
157
+ end
158
+ end
159
+
160
+
161
+ def create_example(*args)
162
+ DocTest::BaseExample.new(*args)
163
+ end
164
+ end
metadata ADDED
@@ -0,0 +1,360 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: asciidoctor-doctest
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.5.0
5
+ platform: ruby
6
+ authors:
7
+ - Jakub Jirutka
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: codeclimate-test-reporter
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.4'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: fakefs
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.6'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.9'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.9'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.1'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-collection_matchers
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.1'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: yard
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.8'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.8'
125
+ - !ruby/object:Gem::Dependency
126
+ name: activesupport
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '4.1'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '4.1'
139
+ - !ruby/object:Gem::Dependency
140
+ name: asciidoctor
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.5'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.5'
153
+ - !ruby/object:Gem::Dependency
154
+ name: colorize
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.6'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.6'
167
+ - !ruby/object:Gem::Dependency
168
+ name: diffy
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '3.0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '3.0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: htmlbeautifier
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '0.0'
188
+ - - ">="
189
+ - !ruby/object:Gem::Version
190
+ version: 0.0.10
191
+ type: :runtime
192
+ prerelease: false
193
+ version_requirements: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - "~>"
196
+ - !ruby/object:Gem::Version
197
+ version: '0.0'
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: 0.0.10
201
+ - !ruby/object:Gem::Dependency
202
+ name: minitest
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '5.4'
208
+ type: :runtime
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '5.4'
215
+ - !ruby/object:Gem::Dependency
216
+ name: nokogiri
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: 1.6.3
222
+ - - "<"
223
+ - !ruby/object:Gem::Version
224
+ version: 1.6.4
225
+ type: :runtime
226
+ prerelease: false
227
+ version_requirements: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - "~>"
230
+ - !ruby/object:Gem::Version
231
+ version: 1.6.3
232
+ - - "<"
233
+ - !ruby/object:Gem::Version
234
+ version: 1.6.4
235
+ - !ruby/object:Gem::Dependency
236
+ name: minitest-rg
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - "~>"
240
+ - !ruby/object:Gem::Version
241
+ version: '5.1'
242
+ type: :runtime
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - "~>"
247
+ - !ruby/object:Gem::Version
248
+ version: '5.1'
249
+ description: |
250
+ A tool for end-to-end testing of Asciidoctor backends based on comparing of textual output.
251
+ email: jakub@jirutka.cz
252
+ executables: []
253
+ extensions: []
254
+ extra_rdoc_files:
255
+ - LICENSE
256
+ files:
257
+ - CHANGELOG.adoc
258
+ - LICENSE
259
+ - README.adoc
260
+ - Rakefile
261
+ - data/examples/asciidoc/block_admonition.adoc
262
+ - data/examples/asciidoc/block_audio.adoc
263
+ - data/examples/asciidoc/block_colist.adoc
264
+ - data/examples/asciidoc/block_dlist.adoc
265
+ - data/examples/asciidoc/block_example.adoc
266
+ - data/examples/asciidoc/block_floating_title.adoc
267
+ - data/examples/asciidoc/block_image.adoc
268
+ - data/examples/asciidoc/block_listing.adoc
269
+ - data/examples/asciidoc/block_literal.adoc
270
+ - data/examples/asciidoc/block_olist.adoc
271
+ - data/examples/asciidoc/block_open.adoc
272
+ - data/examples/asciidoc/block_outline.adoc
273
+ - data/examples/asciidoc/block_page_break.adoc
274
+ - data/examples/asciidoc/block_paragraph.adoc
275
+ - data/examples/asciidoc/block_pass.adoc
276
+ - data/examples/asciidoc/block_preamble.adoc
277
+ - data/examples/asciidoc/block_quote.adoc
278
+ - data/examples/asciidoc/block_sidebar.adoc
279
+ - data/examples/asciidoc/block_stem.adoc
280
+ - data/examples/asciidoc/block_table.adoc
281
+ - data/examples/asciidoc/block_thematic_break.adoc
282
+ - data/examples/asciidoc/block_toc.adoc
283
+ - data/examples/asciidoc/block_ulist.adoc
284
+ - data/examples/asciidoc/block_verse.adoc
285
+ - data/examples/asciidoc/block_video.adoc
286
+ - data/examples/asciidoc/document.adoc
287
+ - data/examples/asciidoc/embedded.adoc
288
+ - data/examples/asciidoc/inline_anchor.adoc
289
+ - data/examples/asciidoc/inline_break.adoc
290
+ - data/examples/asciidoc/inline_button.adoc
291
+ - data/examples/asciidoc/inline_callout.adoc
292
+ - data/examples/asciidoc/inline_footnote.adoc
293
+ - data/examples/asciidoc/inline_image.adoc
294
+ - data/examples/asciidoc/inline_kbd.adoc
295
+ - data/examples/asciidoc/inline_menu.adoc
296
+ - data/examples/asciidoc/inline_quoted.adoc
297
+ - data/examples/asciidoc/section.adoc
298
+ - doc/img/doctest-diag.odf
299
+ - doc/img/doctest-diag.svg
300
+ - doc/img/failing-test-term.gif
301
+ - lib/asciidoctor-doctest.rb
302
+ - lib/asciidoctor/doctest.rb
303
+ - lib/asciidoctor/doctest/asciidoc/examples_suite.rb
304
+ - lib/asciidoctor/doctest/asciidoc_renderer.rb
305
+ - lib/asciidoctor/doctest/base_example.rb
306
+ - lib/asciidoctor/doctest/base_examples_suite.rb
307
+ - lib/asciidoctor/doctest/core_ext.rb
308
+ - lib/asciidoctor/doctest/generator.rb
309
+ - lib/asciidoctor/doctest/generator_task.rb
310
+ - lib/asciidoctor/doctest/html/example.rb
311
+ - lib/asciidoctor/doctest/html/examples_suite.rb
312
+ - lib/asciidoctor/doctest/html/html_beautifier.rb
313
+ - lib/asciidoctor/doctest/html/normalizer.rb
314
+ - lib/asciidoctor/doctest/minitest_diffy.rb
315
+ - lib/asciidoctor/doctest/test.rb
316
+ - lib/asciidoctor/doctest/version.rb
317
+ - spec/asciidoc/examples_suite_spec.rb
318
+ - spec/base_example_spec.rb
319
+ - spec/core_ext_spec.rb
320
+ - spec/html/examples_suite_spec.rb
321
+ - spec/html/normalizer_spec.rb
322
+ - spec/shared_examples/base_examples_suite.rb
323
+ - spec/spec_helper.rb
324
+ - spec/support/matchers.rb
325
+ - spec/test_spec.rb
326
+ homepage: https://github.com/asciidoctor/asciidoctor-doctest
327
+ licenses:
328
+ - MIT
329
+ metadata: {}
330
+ post_install_message:
331
+ rdoc_options: []
332
+ require_paths:
333
+ - lib
334
+ required_ruby_version: !ruby/object:Gem::Requirement
335
+ requirements:
336
+ - - ">="
337
+ - !ruby/object:Gem::Version
338
+ version: '2.0'
339
+ required_rubygems_version: !ruby/object:Gem::Requirement
340
+ requirements:
341
+ - - ">="
342
+ - !ruby/object:Gem::Version
343
+ version: '0'
344
+ requirements: []
345
+ rubyforge_project:
346
+ rubygems_version: 2.4.3
347
+ signing_key:
348
+ specification_version: 4
349
+ summary: Test suite for Asciidoctor backends
350
+ test_files:
351
+ - spec/asciidoc/examples_suite_spec.rb
352
+ - spec/base_example_spec.rb
353
+ - spec/core_ext_spec.rb
354
+ - spec/html/examples_suite_spec.rb
355
+ - spec/html/normalizer_spec.rb
356
+ - spec/shared_examples/base_examples_suite.rb
357
+ - spec/spec_helper.rb
358
+ - spec/support/matchers.rb
359
+ - spec/test_spec.rb
360
+ has_rdoc: yard