summaryrefslogtreecommitdiff
path: root/test/reader_test.rb
diff options
context:
space:
mode:
authorDan Allen <dan.j.allen@gmail.com>2018-04-11 23:10:57 -0600
committerDan Allen <dan.j.allen@gmail.com>2018-04-14 19:55:42 -0600
commit710b25ebca3322f153b291a309011e620666d4dc (patch)
tree311362dced1cbd426b4e18d9855154aacdc55984 /test/reader_test.rb
parent3002af4b0aeb1e9e9a84d7a5e8f40c43eb2bf798 (diff)
use helpers to assert log messages in tests
- add assert_message helper for asserting a single message - add assert_messages helper for asserting multiple messages - rewrite paths and reader tests to assert log messages instead of stderr stream - assert message about illegal reference to parent is only reported on first violation when resolving system path - use instance variable to store shared logger in tests
Diffstat (limited to 'test/reader_test.rb')
-rw-r--r--test/reader_test.rb109
1 files changed, 51 insertions, 58 deletions
diff --git a/test/reader_test.rb b/test/reader_test.rb
index 8ab5d276..19a4c1ac 100644
--- a/test/reader_test.rb
+++ b/test/reader_test.rb
@@ -650,12 +650,12 @@ trailing content
EOS
begin
- doc, warnings = redirect_streams do |_, err|
- [(document_from_string input, :safe => :safe, :base_dir => DIRNAME), err.string]
+ using_memory_logger do |logger|
+ doc = document_from_string input, :safe => :safe, :base_dir => DIRNAME
+ assert_equal 1, doc.blocks.size
+ assert_equal ['trailing content'], doc.blocks[0].lines
+ assert logger.empty?
end
- assert_equal 1, doc.blocks.size
- assert_equal ['trailing content'], doc.blocks[0].lines
- assert_equal 0, warnings.size
rescue
flunk 'include directive should not raise exception on missing file'
end
@@ -669,13 +669,13 @@ trailing content
EOS
begin
- doc, warnings = redirect_streams do |_, err|
- [(document_from_string input, :safe => :safe, :base_dir => DIRNAME), err.string]
+ using_memory_logger do |logger|
+ doc = document_from_string input, :safe => :safe, :base_dir => DIRNAME
+ assert_equal 2, doc.blocks.size
+ assert_equal ['Unresolved directive in <stdin> - include::fixtures/no-such-file.adoc[]'], doc.blocks[0].lines
+ assert_equal ['trailing content'], doc.blocks[1].lines
+ assert_message logger, :ERROR, '~<stdin>: line 1: include file not found', Hash
end
- assert_equal 2, doc.blocks.size
- assert_equal ['Unresolved directive in <stdin> - include::fixtures/no-such-file.adoc[]'], doc.blocks[0].lines
- assert_equal ['trailing content'], doc.blocks[1].lines
- assert_includes warnings, 'include file not found'
rescue
flunk 'include directive should not raise exception on missing file'
end
@@ -691,13 +691,13 @@ trailing content
EOS
begin
- doc, warnings = redirect_streams do |_, err|
- [(document_from_string input, :safe => :safe, :base_dir => DIRNAME), err.string]
+ using_memory_logger do |logger|
+ doc = document_from_string input, :safe => :safe, :base_dir => DIRNAME
+ assert_equal 2, doc.blocks.size
+ assert_equal ['Unresolved directive in <stdin> - include::fixtures/chapter-a.adoc[]'], doc.blocks[0].lines
+ assert_equal ['trailing content'], doc.blocks[1].lines
+ assert_message logger, :ERROR, '~<stdin>: line 1: include file not readable', Hash
end
- assert_equal 2, doc.blocks.size
- assert_equal ['Unresolved directive in <stdin> - include::fixtures/chapter-a.adoc[]'], doc.blocks[0].lines
- assert_equal ['trailing content'], doc.blocks[1].lines
- assert_includes warnings, 'include file not readable'
rescue
flunk 'include directive should not raise exception on missing file'
ensure
@@ -790,15 +790,13 @@ include::#{include_url}[]
....
EOS
begin
- output, warnings = redirect_streams do |_, err|
+ using_memory_logger do |logger|
result = using_test_webserver do
render_embedded_string input, :safe => :safe, :attributes => {'allow-uri-read' => ''}
end
- [result, err.string]
+ assert_includes result, %(Unresolved directive in #{include_url} - include::#{nested_include_url}[])
+ assert_message logger, :ERROR, %(#{include_url}: line 1: include uri not readable: http://#{resolve_localhost}:9876/fixtures/#{nested_include_url}), Hash
end
-
- assert_includes output, %(Unresolved directive in #{include_url} - include::#{nested_include_url}[])
- assert_includes warnings, 'include uri not readable'
rescue
flunk 'include directive should not raise exception on missing file'
end
@@ -831,16 +829,14 @@ include::#{url}[]
EOS
begin
- output = warnings = nil
- redirect_streams do |_, err|
+ using_memory_logger do |logger|
output = using_test_webserver do
render_embedded_string input, :safe => :safe, :attributes => {'allow-uri-read' => ''}
end
- warnings = err.string
+ refute_nil output
+ assert_match(/Unresolved directive/, output)
+ assert_message logger, :ERROR, %(<stdin>: line 2: include uri not readable: #{url}), Hash
end
- refute_nil output
- assert_match(/Unresolved directive/, output)
- assert_includes warnings, 'include uri not readable'
rescue
flunk 'include directive should not raise exception on inaccessible uri'
end
@@ -1085,12 +1081,10 @@ end)
include::fixtures/include-file.asciidoc[tag=snippetZ]
EOS
- warnings = redirect_streams do |_, err|
+ using_memory_logger do |logger|
render_embedded_string input, :safe => :safe, :base_dir => DIRNAME
- err.string
+ assert_message logger, :WARN, '~<stdin>: line 1: tag \'snippetZ\' not found in include file', Hash
end
- refute_nil warnings
- assert_match(/WARNING.*snippetZ/, warnings)
end
test 'should warn if end tag in included file is mismatched' do
@@ -1100,12 +1094,11 @@ include::fixtures/mismatched-end-tag.adoc[tags=a;b]
++++
EOS
- result, warnings = redirect_streams do |out, err|
- [(render_embedded_string input, :safe => :safe, :base_dir => DIRNAME), err.string]
+ using_memory_logger do |logger|
+ result = render_embedded_string input, :safe => :safe, :base_dir => DIRNAME
+ assert_equal %(a\nb), result
+ assert_message logger, :WARN, 'fixtures/mismatched-end-tag.adoc: line 5: mismatched end tag in include: expected b, found a', Hash
end
- assert_equal %(a\nb), result
- refute_nil warnings
- assert_match(/WARNING: .*end tag/, warnings)
end
test 'include directive ignores tags attribute when empty' do
@@ -1212,13 +1205,13 @@ include::{fixturesdir}/include-file.{ext}[]
include::{foodir}/include-file.asciidoc[]
EOS
- line, warnings = redirect_streams do |_, err|
+ using_memory_logger do |logger|
doc = empty_safe_document :base_dir => DIRNAME
reader = Asciidoctor::PreprocessorReader.new doc, input, nil, :normalize => true
- [reader.read_line, err.string]
+ line = reader.read_line
+ assert_equal 'Unresolved directive in <stdin> - include::{foodir}/include-file.asciidoc[]', line
+ assert_message logger, :WARN, 'dropping line containing reference to missing attribute: foodir'
end
- assert_equal 'Unresolved directive in <stdin> - include::{foodir}/include-file.asciidoc[]', line
- assert_includes warnings, 'dropping line containing reference to missing attribute'
end
test 'line is dropped if target of include directive resolves to empty and attribute-missing attribute is not skip' do
@@ -1226,13 +1219,13 @@ include::{foodir}/include-file.asciidoc[]
include::{foodir}/include-file.asciidoc[]
EOS
- line, warnings = redirect_streams do |_, err|
+ using_memory_logger do |logger|
doc = empty_safe_document :base_dir => DIRNAME, :attributes => {'attribute-missing' => 'drop'}
reader = Asciidoctor::PreprocessorReader.new doc, input, nil, :normalize => true
- [reader.read_line, err.string]
+ line = reader.read_line
+ assert_nil line
+ assert_message logger, :WARN, 'dropping line containing reference to missing attribute: foodir'
end
- assert_nil line
- assert_includes warnings, 'dropping line containing reference to missing attribute'
end
test 'line following dropped include is not dropped' do
@@ -1241,13 +1234,13 @@ include::{foodir}/include-file.asciidoc[]
yo
EOS
- line, warnings = redirect_streams do |_, err|
+ using_memory_logger do |logger|
doc = empty_safe_document :base_dir => DIRNAME, :attributes => {'attribute-missing' => 'drop'}
reader = Asciidoctor::PreprocessorReader.new doc, input, nil, :normalize => true
- [reader.read_line, err.string]
+ line = reader.read_line
+ assert_equal 'yo', line
+ assert_message logger, :WARN, 'dropping line containing reference to missing attribute: foodir'
end
- assert_equal 'yo', line
- assert_includes warnings, 'dropping line containing reference to missing attribute'
end
test 'escaped include directive is left unprocessed' do
@@ -1301,14 +1294,14 @@ include::include-file.asciidoc[]
include::fixtures/parent-include.adoc[depth=1]
EOS
- lines, warnings = redirect_streams do |_, err|
+ using_memory_logger do |logger|
pseudo_docfile = File.join DIRNAME, 'include-master.adoc'
doc = empty_safe_document :base_dir => DIRNAME
reader = Asciidoctor::PreprocessorReader.new doc, input, Asciidoctor::Reader::Cursor.new(pseudo_docfile), :normalize => true
- [reader.readlines, err.string]
+ lines = reader.readlines
+ assert_includes lines, 'include::child-include.adoc[]'
+ assert_message logger, :ERROR, 'fixtures/parent-include.adoc: line 3: maximum include depth of 1 exceeded', Hash
end
- assert_includes lines, 'include::child-include.adoc[]'
- assert_match(/maximum include depth .* exceeded/, warnings)
end
test 'include directive should be disabled if max include depth set in nested context has been exceeded' do
@@ -1316,15 +1309,15 @@ include::fixtures/parent-include.adoc[depth=1]
include::fixtures/parent-include-restricted.adoc[depth=3]
EOS
- lines, warnings = redirect_streams do |_, err|
+ using_memory_logger do |logger|
pseudo_docfile = File.join DIRNAME, 'include-master.adoc'
doc = empty_safe_document :base_dir => DIRNAME
reader = Asciidoctor::PreprocessorReader.new doc, input, Asciidoctor::Reader::Cursor.new(pseudo_docfile), :normalize => true
- [reader.readlines, err.string]
+ lines = reader.readlines
+ assert_includes lines, 'first line of child'
+ assert_includes lines, 'include::grandchild-include.adoc[]'
+ assert_message logger, :ERROR, 'fixtures/child-include.adoc: line 3: maximum include depth of 1 exceeded', Hash
end
- assert_includes lines, 'first line of child'
- assert_includes lines, 'include::grandchild-include.adoc[]'
- assert_match(/maximum include depth .* exceeded/, warnings)
end
test 'read_lines_until should not process lines if process option is false' do