asciidoctor-doctest 1.5.0 → 1.5.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.
- checksums.yaml +4 -4
- data/CHANGELOG.adoc +32 -0
- data/README.adoc +17 -12
- data/Rakefile +28 -3
- data/features/README +1 -0
- data/features/fixtures/html-slim/Rakefile +15 -0
- data/features/fixtures/html-slim/examples/asciidoc/block_quote.adoc +12 -0
- data/features/fixtures/html-slim/examples/asciidoc/document.adoc +4 -0
- data/features/fixtures/html-slim/examples/asciidoc/inline_quoted.adoc +2 -0
- data/features/fixtures/html-slim/examples/html/block_quote.html +26 -0
- data/features/fixtures/html-slim/examples/html/document.html +7 -0
- data/features/fixtures/html-slim/templates/block_paragraph.html.slim +1 -0
- data/features/fixtures/html-slim/templates/block_quote.html.slim +7 -0
- data/features/fixtures/html-slim/templates/document.html.slim +13 -0
- data/features/fixtures/html-slim/templates/embedded.html.slim +3 -0
- data/features/fixtures/html-slim/templates/inline_quoted.html.slim +8 -0
- data/features/fixtures/html-slim/test/html_test.rb +6 -0
- data/features/fixtures/html-slim/test/test_helper.rb +5 -0
- data/features/generator_html.feature +171 -0
- data/features/step_definitions/doctest_steps.rb +5 -0
- data/features/support/env.rb +21 -0
- data/features/test_html.feature +59 -0
- data/lib/asciidoctor/doctest/asciidoc_renderer.rb +19 -14
- data/lib/asciidoctor/doctest/base_example.rb +11 -5
- data/lib/asciidoctor/doctest/base_examples_suite.rb +1 -1
- data/lib/asciidoctor/doctest/generator.rb +3 -1
- data/lib/asciidoctor/doctest/generator_task.rb +8 -5
- data/lib/asciidoctor/doctest/html/example.rb +1 -1
- data/lib/asciidoctor/doctest/html/examples_suite.rb +2 -2
- data/lib/asciidoctor/doctest/minitest_diffy.rb +1 -1
- data/lib/asciidoctor/doctest/test.rb +4 -1
- data/lib/asciidoctor/doctest/version.rb +1 -1
- data/spec/asciidoc_renderer_spec.rb +98 -0
- data/spec/base_example_spec.rb +4 -1
- data/spec/html/examples_suite_spec.rb +5 -5
- data/spec/minitest_diffy_spec.rb +57 -0
- data/spec/shared_examples/base_examples_suite.rb +0 -20
- data/spec/support/fakefs.rb +19 -0
- metadata +151 -74
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 479daec9ac0dc0ec44479eb7675e59a7bc17889d
|
4
|
+
data.tar.gz: ee45df8e137d9e67c1e042f132b4c729bd3c021d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e5edb9b2d8b24065e3546422d93be5632ae76295cefad0d60b502ced846bad0e5144974e4e4f64dc35832ef08c5b222a2b7e78204424d4c73a645c98a40c3be
|
7
|
+
data.tar.gz: d76d62985066c12587a7233d2546a5c923aa97a4578eb5e3895c930aa986a00ad5bcbf0f6b1c5f7addf75310f2a4ff6fddcb245572dca26e61a0c9d178a0e75d
|
data/CHANGELOG.adoc
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
= Asciidoctor::DocTest Changelog
|
2
|
+
:repo-uri: https://github.com/asciidoctor/asciidoctor-doctest
|
3
|
+
:commit-uri: {repo-uri}/commit
|
4
|
+
:issue-uri: {repo-uri}/issues
|
5
|
+
|
6
|
+
This document provides a high-level view of the changes introduced in DocTest by release.
|
7
|
+
For a detailed view of what has changed, refer to the {repo-uri}/commits/master[commit history] on GitHub.
|
8
|
+
|
9
|
+
|
10
|
+
== 1.5.1 (2014-12-29)
|
11
|
+
|
12
|
+
Improvements::
|
13
|
+
* Rename parameter `renderer_opts` to `converter_opts` and method `render` to `convert` to be consistent with Asciidoctor (old names are aliased for now). {issue-uri}/2[#2] [{commit-uri}/97c06af[97c06af]]
|
14
|
+
* Rename `to_s` to `content_pretty` in BaseExample and make alias. [{commit-uri}/3b610e2[3b610e2]]
|
15
|
+
|
16
|
+
Bug fixes::
|
17
|
+
* Allow to modify default `examples_path` in GeneratorTask (was frozen). [{commit-uri}/7251e6c[7251e6c]]
|
18
|
+
* Fix `template_dirs` validation and default `backend_name` in AsciidocRenderer. [{commit-uri}/2a4413d[2a4413d]]
|
19
|
+
* Beautify generated HTML examples. [{commit-uri}/e9d42be[e9d42be]]
|
20
|
+
* Fix Generator to not lose description of the updated example. [{commit-uri}/0d2f4ee[0d2f4ee]]
|
21
|
+
|
22
|
+
Tests::
|
23
|
+
* Add end-to-end integration tests using Cucumber.
|
24
|
+
* Increase (unit) test coverage from 84.2% to 88.5%.
|
25
|
+
|
26
|
+
Known issues::
|
27
|
+
* HTML beautifier doesn’t work as expected. {issue-uri}/3[#3]
|
28
|
+
|
29
|
+
|
30
|
+
== 1.5.0 (2014-12-09)
|
31
|
+
|
32
|
+
The first stable release.
|
data/README.adoc
CHANGED
@@ -6,23 +6,28 @@ ifdef::env-github[:idprefix: user-content-]
|
|
6
6
|
:idseparator: -
|
7
7
|
:source-language: ruby
|
8
8
|
:language: {source-language}
|
9
|
-
//
|
9
|
+
// custom
|
10
|
+
:gem-name: asciidoctor-doctest
|
11
|
+
:gh-name: asciidoctor/{gem-name}
|
12
|
+
:gh-branch: master
|
13
|
+
:badge-style: flat
|
10
14
|
:doctor-man-uri: http://asciidoctor.org/docs/user-manual
|
15
|
+
:rawgit-base: https://cdn.rawgit.com/{gh-name}/master
|
11
16
|
:src-base: lib/asciidoctor/doctest
|
12
17
|
|
13
|
-
image:https://
|
14
|
-
image:https://
|
15
|
-
image:https://
|
16
|
-
image:
|
17
|
-
image:https://
|
18
|
-
image:https://img.shields.io/badge/yard-docs-blue.svg[Yard Docs, link="http://www.rubydoc.info/github/
|
18
|
+
image:https://img.shields.io/travis/{gh-name}/{gh-branch}.svg?style={badge-style}[Build Status, link="https://travis-ci.org/{gh-name}"]
|
19
|
+
image:https://img.shields.io/codeclimate/coverage/github/{gh-name}.svg?style={badge-style}[Test Coverage, link="https://codeclimate.com/github/{gh-name}"]
|
20
|
+
image:https://img.shields.io/codeclimate/github/{gh-name}.svg?style={badge-style}[Code Climate, link="https://codeclimate.com/github/{gh-name}"]
|
21
|
+
image:https://inch-ci.org/github/{gh-name}.svg?branch={gh-branch}&style={badge-style}[Inline docs, link="http://inch-ci.org/github/{gh-name}"]
|
22
|
+
image:https://img.shields.io/gem/v/{gem-name}.svg?style={badge-style}[Gem Version, link="https://rubygems.org/gems/{gem-name}"]
|
23
|
+
image:https://img.shields.io/badge/yard-docs-blue.svg?style={badge-style}[Yard Docs, link="http://www.rubydoc.info/github/{gh-name}/frames"]
|
19
24
|
|
20
25
|
DocTest is a tool for end-to-end testing of Asciidoctor _backends_ based on comparing of textual output.
|
21
26
|
|
22
27
|
It provides a collection of categorized <<input-examples, input _examples_>> (documents in AsciiDoc syntax) to simplify and systematize writing tests for new backends.
|
23
28
|
You just write or <<generate-examples, generate>> the expected output, i.e. what the backend should produce for the given input.
|
24
29
|
|
25
|
-
image::
|
30
|
+
image::{rawgit-base}/doc/img/doctest-diag.svg[diagram, align="center"]
|
26
31
|
|
27
32
|
Each example should be focused on one use case, so when writing a new backend, you can incrementally implement new features following the reference input examples.
|
28
33
|
However, they are not strictly isolated like unit tests.
|
@@ -80,14 +85,14 @@ DocTest.examples_path.unshift 'test/examples/asciidoc'
|
|
80
85
|
DocTest.examples_path.unshift 'test/examples/shiny'
|
81
86
|
----
|
82
87
|
|
83
|
-
. Create test file `test/templates_test.rb` and extend class link:{src-base}/test.rb[DocTest::Test]. Specify `
|
88
|
+
. Create test file `test/templates_test.rb` and extend class link:{src-base}/test.rb[DocTest::Test]. Specify `converter_opts` and then call `generate_tests!` macro with a specific subclass of `BaseExamplesSuite`:
|
84
89
|
+
|
85
90
|
[source]
|
86
91
|
----
|
87
92
|
require 'test_helper'
|
88
93
|
|
89
94
|
class TestTemplates < DocTest::Test
|
90
|
-
|
95
|
+
converter_opts template_dirs: 'data/templates'
|
91
96
|
generate_tests! DocTest::HTML::ExamplesSuite
|
92
97
|
end
|
93
98
|
----
|
@@ -109,7 +114,7 @@ end
|
|
109
114
|
|
110
115
|
DocTest::GeneratorTask.new(:generate) do |task|
|
111
116
|
task.output_suite = DocTest::HTML::ExamplesSuite.new(examples_path: 'test/examples/shiny')
|
112
|
-
task.
|
117
|
+
task.converter_opts[:template_dirs] = 'data/templates'
|
113
118
|
#
|
114
119
|
# add extra input examples (optional)
|
115
120
|
task.examples_path.unshift 'test/examples/asciidoc'
|
@@ -223,7 +228,7 @@ If it’s not your case, then you must overwrite it:
|
|
223
228
|
[source]
|
224
229
|
----
|
225
230
|
class TestShiny < DocTest::Test
|
226
|
-
|
231
|
+
converter_opts template_dirs: 'data/templates'
|
227
232
|
generate_tests! DocTest::HTML::ExamplesSuite.new(paragraph_xpath: './div/p/node()')
|
228
233
|
end
|
229
234
|
----
|
data/Rakefile
CHANGED
@@ -1,12 +1,37 @@
|
|
1
|
+
require 'rake/clean'
|
1
2
|
require 'bundler/gem_tasks'
|
2
3
|
|
4
|
+
default_tasks = []
|
5
|
+
|
3
6
|
begin
|
4
7
|
require 'rspec/core/rake_task'
|
5
8
|
|
6
9
|
RSpec::Core::RakeTask.new(:spec)
|
7
10
|
|
8
11
|
task :test => :spec
|
9
|
-
|
10
|
-
rescue LoadError
|
11
|
-
warn
|
12
|
+
default_tasks << :spec
|
13
|
+
rescue LoadError => e
|
14
|
+
warn "#{e.path} is not available"
|
15
|
+
end
|
16
|
+
|
17
|
+
begin
|
18
|
+
require 'cucumber/rake/task'
|
19
|
+
|
20
|
+
Cucumber::Rake::Task.new do |t|
|
21
|
+
t.cucumber_opts = ['-r features/support', '--format pretty']
|
22
|
+
end
|
23
|
+
|
24
|
+
default_tasks << :cucumber
|
25
|
+
rescue LoadError => e
|
26
|
+
warn "#{e.path} is not available"
|
12
27
|
end
|
28
|
+
|
29
|
+
begin
|
30
|
+
require 'yard'
|
31
|
+
# options are defined in .yardopts
|
32
|
+
YARD::Rake::YardocTask.new(:yard)
|
33
|
+
rescue LoadError => e
|
34
|
+
warn "#{e.path} is not available"
|
35
|
+
end
|
36
|
+
|
37
|
+
task :default => default_tasks
|
data/features/README
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
This directory contains end-to-end integration tests (not acceptance tests).
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'asciidoctor/doctest'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'tilt'
|
4
|
+
|
5
|
+
DocTest::GeneratorTask.new(:generate) do |task|
|
6
|
+
task.output_suite = DocTest::HTML::ExamplesSuite.new(examples_path: 'examples/html')
|
7
|
+
task.examples_path = 'examples/asciidoc'
|
8
|
+
task.converter_opts[:template_dirs] = 'templates'
|
9
|
+
end
|
10
|
+
|
11
|
+
Rake::TestTask.new(:test) do |task|
|
12
|
+
task.description = 'Run tests for custom HTML backend'
|
13
|
+
task.pattern = 'test/html_test.rb'
|
14
|
+
task.libs << 'test'
|
15
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// .with_id_and_role
|
2
|
+
[quote, id="parking", role="startrek"]
|
3
|
+
Everybody remember where we parked.
|
4
|
+
|
5
|
+
// .with_title
|
6
|
+
.After landing the cloaked Klingon bird of prey in Golden Gate park:
|
7
|
+
[quote]
|
8
|
+
Everybody remember where we parked.
|
9
|
+
|
10
|
+
// .with_attribution
|
11
|
+
[quote, Albert Einstein]
|
12
|
+
A person who never made a mistake _never_ tried anything new.
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!-- .basic
|
2
|
+
Doesn't exist in input examples.
|
3
|
+
-->
|
4
|
+
<div class="quoteblock">
|
5
|
+
<blockquote>Four score and seven years ago our fathers brought forth
|
6
|
+
on this continent a new nation…​</blockquote>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<!-- .with_id_and_role
|
10
|
+
Correct example.
|
11
|
+
-->
|
12
|
+
<div id="parking"
|
13
|
+
class="quoteblock startrek">
|
14
|
+
<blockquote>
|
15
|
+
Everybody remember
|
16
|
+
where we parked.
|
17
|
+
</blockquote>
|
18
|
+
</div>
|
19
|
+
|
20
|
+
<!-- .with_attribution
|
21
|
+
Failing example.
|
22
|
+
-->
|
23
|
+
<div class="quoteblock">
|
24
|
+
<blockquote>A person who never made a mistake <em>never</em> tried anything new.</blockquote>
|
25
|
+
<span>Albert Einstein</span>
|
26
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
p =content
|
@@ -0,0 +1,13 @@
|
|
1
|
+
doctype 5
|
2
|
+
html lang=(attr :lang, 'en' unless attr? :nolang)
|
3
|
+
head
|
4
|
+
meta charset='UTF-8'
|
5
|
+
title=((doctitle sanitize: true) || (attr 'untitled-label'))
|
6
|
+
body
|
7
|
+
- unless noheader && notitle
|
8
|
+
#header
|
9
|
+
h1 =header.title
|
10
|
+
- if attr? :author
|
11
|
+
.details
|
12
|
+
span#author =(attr :author)
|
13
|
+
#content =content
|
@@ -0,0 +1,171 @@
|
|
1
|
+
Feature: Generating output examples for a custom HTML backend
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I do have a template-based HTML backend with DocTest
|
5
|
+
|
6
|
+
Scenario: Generate missing output examples
|
7
|
+
When I run `bundle exec rake generate`
|
8
|
+
Then the output should contain:
|
9
|
+
"""
|
10
|
+
Generate testing examples *:*.
|
11
|
+
--> Unchanged block_quote:with_id_and_role
|
12
|
+
--> Generating block_quote:with_title
|
13
|
+
--> Skipping block_quote:with_attribution
|
14
|
+
--> Unknown block_quote:basic, doesn't exist in input examples!
|
15
|
+
--> Skipping document:title_with_author
|
16
|
+
--> Generating inline_quoted:emphasis
|
17
|
+
|
18
|
+
"""
|
19
|
+
And the file "examples/html/block_quote.html" should contain exactly:
|
20
|
+
"""
|
21
|
+
<!-- .basic
|
22
|
+
Doesn't exist in input examples.
|
23
|
+
-->
|
24
|
+
<div class="quoteblock">
|
25
|
+
<blockquote>Four score and seven years ago our fathers brought forth
|
26
|
+
on this continent a new nation…​</blockquote>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<!-- .with_id_and_role
|
30
|
+
Correct example.
|
31
|
+
-->
|
32
|
+
<div id="parking"
|
33
|
+
class="quoteblock startrek">
|
34
|
+
<blockquote>
|
35
|
+
Everybody remember
|
36
|
+
where we parked.
|
37
|
+
</blockquote>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
<!-- .with_attribution
|
41
|
+
Failing example.
|
42
|
+
-->
|
43
|
+
<div class="quoteblock">
|
44
|
+
<blockquote>A person who never made a mistake <em>never</em> tried anything new.</blockquote>
|
45
|
+
<span>Albert Einstein</span>
|
46
|
+
</div>
|
47
|
+
|
48
|
+
<!-- .with_title -->
|
49
|
+
<section class="quoteblock"><h6>After landing the cloaked Klingon bird of prey in Golden Gate park:</h6>
|
50
|
+
<blockquote>Everybody remember where we parked.</blockquote></section>
|
51
|
+
|
52
|
+
"""
|
53
|
+
And the file "examples/html/document.html" should contain exactly:
|
54
|
+
"""
|
55
|
+
<!-- .title_with_author
|
56
|
+
:include: .//body/div[@id="header"]
|
57
|
+
-->
|
58
|
+
<div id="header">
|
59
|
+
<h1>The Dangerous and Thrilling Documentation Chronicles</h1>
|
60
|
+
<div id="author">Kismet Rainbow Chameleon</div>
|
61
|
+
</div>
|
62
|
+
|
63
|
+
"""
|
64
|
+
And the file "examples/html/inline_quoted.html" should contain exactly:
|
65
|
+
"""
|
66
|
+
<!-- .emphasis -->
|
67
|
+
<em>chunky bacon</em>
|
68
|
+
|
69
|
+
"""
|
70
|
+
|
71
|
+
Scenario: Regenerate all outdated output examples
|
72
|
+
When I run `bundle exec rake generate FORCE=yes`
|
73
|
+
Then the output should contain:
|
74
|
+
"""
|
75
|
+
Generate testing examples *:*.
|
76
|
+
--> Unchanged block_quote:with_id_and_role
|
77
|
+
--> Generating block_quote:with_title
|
78
|
+
--> Rewriting block_quote:with_attribution
|
79
|
+
--> Unknown block_quote:basic, doesn't exist in input examples!
|
80
|
+
--> Rewriting document:title_with_author
|
81
|
+
--> Generating inline_quoted:emphasis
|
82
|
+
|
83
|
+
"""
|
84
|
+
And the file "examples/html/block_quote.html" should contain exactly:
|
85
|
+
"""
|
86
|
+
<!-- .basic
|
87
|
+
Doesn't exist in input examples.
|
88
|
+
-->
|
89
|
+
<div class="quoteblock">
|
90
|
+
<blockquote>Four score and seven years ago our fathers brought forth
|
91
|
+
on this continent a new nation…​</blockquote>
|
92
|
+
</div>
|
93
|
+
|
94
|
+
<!-- .with_id_and_role
|
95
|
+
Correct example.
|
96
|
+
-->
|
97
|
+
<div id="parking"
|
98
|
+
class="quoteblock startrek">
|
99
|
+
<blockquote>
|
100
|
+
Everybody remember
|
101
|
+
where we parked.
|
102
|
+
</blockquote>
|
103
|
+
</div>
|
104
|
+
|
105
|
+
<!-- .with_attribution
|
106
|
+
Failing example.
|
107
|
+
-->
|
108
|
+
<div class="quoteblock">
|
109
|
+
<blockquote>A person who never made a mistake
|
110
|
+
<em>never</em>
|
111
|
+
tried anything new.</blockquote>
|
112
|
+
<div class="attribution">— Albert Einstein</div>
|
113
|
+
</div>
|
114
|
+
|
115
|
+
<!-- .with_title -->
|
116
|
+
<section class="quoteblock"><h6>After landing the cloaked Klingon bird of prey in Golden Gate park:</h6>
|
117
|
+
<blockquote>Everybody remember where we parked.</blockquote></section>
|
118
|
+
|
119
|
+
"""
|
120
|
+
And the file "examples/html/document.html" should contain exactly:
|
121
|
+
"""
|
122
|
+
<!-- .title_with_author
|
123
|
+
:include: .//body/div[@id="header"]
|
124
|
+
-->
|
125
|
+
<div id="header">
|
126
|
+
<h1>The Dangerous and Thrilling Documentation Chronicles</h1>
|
127
|
+
<div class="details"><span id="author">Kismet Rainbow Chameleon</span></div>
|
128
|
+
</div>
|
129
|
+
|
130
|
+
"""
|
131
|
+
|
132
|
+
Scenario: Regenerate outdated output examples specified by filter
|
133
|
+
When I run `bundle exec rake generate PATTERN="*:*attribution" FORCE=yes`
|
134
|
+
Then the output should contain:
|
135
|
+
"""
|
136
|
+
Generate testing examples *:*attribution.
|
137
|
+
--> Rewriting block_quote:with_attribution
|
138
|
+
|
139
|
+
"""
|
140
|
+
And the file "examples/html/block_quote.html" should contain exactly:
|
141
|
+
"""
|
142
|
+
<!-- .basic
|
143
|
+
Doesn't exist in input examples.
|
144
|
+
-->
|
145
|
+
<div class="quoteblock">
|
146
|
+
<blockquote>Four score and seven years ago our fathers brought forth
|
147
|
+
on this continent a new nation…​</blockquote>
|
148
|
+
</div>
|
149
|
+
|
150
|
+
<!-- .with_id_and_role
|
151
|
+
Correct example.
|
152
|
+
-->
|
153
|
+
<div id="parking"
|
154
|
+
class="quoteblock startrek">
|
155
|
+
<blockquote>
|
156
|
+
Everybody remember
|
157
|
+
where we parked.
|
158
|
+
</blockquote>
|
159
|
+
</div>
|
160
|
+
|
161
|
+
<!-- .with_attribution
|
162
|
+
Failing example.
|
163
|
+
-->
|
164
|
+
<div class="quoteblock">
|
165
|
+
<blockquote>A person who never made a mistake
|
166
|
+
<em>never</em>
|
167
|
+
tried anything new.</blockquote>
|
168
|
+
<div class="attribution">— Albert Einstein</div>
|
169
|
+
</div>
|
170
|
+
|
171
|
+
"""
|