diff options
| author | Dan Allen <dan.j.allen@gmail.com> | 2018-04-11 23:10:57 -0600 |
|---|---|---|
| committer | Dan Allen <dan.j.allen@gmail.com> | 2018-04-14 19:55:42 -0600 |
| commit | 710b25ebca3322f153b291a309011e620666d4dc (patch) | |
| tree | 311362dced1cbd426b4e18d9855154aacdc55984 /test/reader_test.rb | |
| parent | 3002af4b0aeb1e9e9a84d7a5e8f40c43eb2bf798 (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.rb | 109 |
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 |
