spec/spec_helper.rb in cxml-ruby-0.5.0 vs spec/spec_helper.rb in cxml-ruby-0.6.0

- old
+ new

@@ -7,15 +7,42 @@ Dir['./spec/support/**/*.rb'].sort.each { |f| require f } RSpec.configure do |config| config.expect_with(:rspec) { |c| c.syntax = :should } + config.default_formatter = 'doc' if config.files_to_run.one? end def fixture_path(filename = nil) path = File.expand_path('fixtures', __dir__) filename.nil? ? path : File.join(path, filename) end def fixture(file) File.read(File.join(fixture_path, file)) +end + +def dtd_path_from_url(url) + return 'spec/fixtures/1.2.037-cXML.dtd' unless url + + match = url.match(%r{/(\d+\.\d+\.\d+)/(\w+\.dtd)}).to_a + file = 'spec/fixtures/' + match.last(2).join('-') + return file if File.exist?(file) + + system("curl #{url} -O && mv #{match.last} #{file}") + file +end + +def test_for_xmllint + return true if system('type xmllint > /dev/null 2>&1') + + puts 'skipping DTD validation without xmllint' + false +end + +def lint_doc_with_dtd(doc) + file = "spec/output/#{rand}.xml" + File.open(file, 'w') { |f| f.puts doc.to_xml } + linted = system("xmllint --noout --dtdvalid #{dtd_path_from_url(doc.dtd_url)} #{file}") + File.delete(file) if File.exist?(file) + linted end