Skip to content

Commit

Permalink
do not pollute! test unit class
Browse files Browse the repository at this point in the history
  • Loading branch information
tenderlove committed Jun 12, 2009
1 parent 776b4f4 commit 153d6c8
Show file tree
Hide file tree
Showing 7 changed files with 63 additions and 57 deletions.
59 changes: 3 additions & 56 deletions lib/markup_validity.rb
@@ -1,65 +1,12 @@
require 'nokogiri'
require 'markup_validity/validator'
require 'markup_validity/assertions'
require 'markup_validity/rspec'

module MarkupValidity
VERSION = '1.0.0'

class Validator # :nodoc:
Dir.chdir(File.dirname(__FILE__)) do
XHTML1_TRANSITIONAL = Nokogiri::XML::Schema(
File.read('xhtml1-transitional.xsd')
)
XHTML1_STRICT = Nokogiri::XML::Schema(File.read('xhtml1-strict.xsd'))
end

attr_reader :errors
def initialize xml, reference = XHTML1_TRANSITIONAL
doc = Nokogiri::XML xml
@reference = reference
@xml = xml
@errors = reference.validate(doc)
end

def valid?; @errors.length == 0; end

def inspect
lines = @xml.split("\n")
strings = []
errors.each do |error|
strings << "Error on line: #{error.line - 1}:"
strings << error.message.gsub(/\{[^\}]*\}/, '')
Range.new(error.line - 2, error.line + 2).each { |number|
strings << "#{number}: #{lines[number]}"
}
strings << ""
end
strings.join("\n")
end
end

###
# Assert that +xhtml+ is valid XHTML Transitional
def assert_xhtml_transitional xhtml
validator = Validator.new xhtml
assert validator.valid?, validator.inspect
end
alias :assert_xhtml :assert_xhtml_transitional

###
# Assert that +xhtml+ is valid XHTML Strict
def assert_xhtml_strict xhtml
validator = Validator.new xhtml
assert validator.valid?, validator.inspect
end

###
# Assert that +xml+ conforms to +schema+
def assert_schema schema, xml
validator = Validator.new xml, Nokogiri::XML::Schema(schema)
assert validator.valid?, validator.inspect
end
end

if defined? Test::Unit::TestCase
class Test::Unit::TestCase; include MarkupValidity; end
class Test::Unit::TestCase; include MarkupValidity::Assertions; end
end
25 changes: 25 additions & 0 deletions lib/markup_validity/assertions.rb
@@ -0,0 +1,25 @@
module MarkupValidity
module Assertions
###
# Assert that +xhtml+ is valid XHTML Transitional
def assert_xhtml_transitional xhtml
validator = Validator.new xhtml
assert validator.valid?, validator.inspect
end
alias :assert_xhtml :assert_xhtml_transitional

###
# Assert that +xhtml+ is valid XHTML Strict
def assert_xhtml_strict xhtml
validator = Validator.new xhtml
assert validator.valid?, validator.inspect
end

###
# Assert that +xml+ conforms to +schema+
def assert_schema schema, xml
validator = Validator.new xml, Nokogiri::XML::Schema(schema)
assert validator.valid?, validator.inspect
end
end
end
34 changes: 34 additions & 0 deletions lib/markup_validity/validator.rb
@@ -0,0 +1,34 @@
module MarkupValidity
class Validator # :nodoc:
Dir.chdir(File.dirname(__FILE__)) do
XHTML1_TRANSITIONAL = Nokogiri::XML::Schema(
File.read('xhtml1-transitional.xsd')
)
XHTML1_STRICT = Nokogiri::XML::Schema(File.read('xhtml1-strict.xsd'))
end

attr_reader :errors
def initialize xml, reference = XHTML1_TRANSITIONAL
doc = Nokogiri::XML xml
@reference = reference
@xml = xml
@errors = reference.validate(doc)
end

def valid?; @errors.length == 0; end

def inspect
lines = @xml.split("\n")
strings = []
errors.each do |error|
strings << "Error on line: #{error.line - 1}:"
strings << error.message.gsub(/\{[^\}]*\}/, '')
Range.new(error.line - 2, error.line + 2).each { |number|
strings << "#{number}: #{lines[number]}"
}
strings << ""
end
strings.join("\n")
end
end
end
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion test/test_markup_validity.rb
Expand Up @@ -6,7 +6,7 @@ class TestMarkupValidity < Test::Unit::TestCase
include MarkupValidity::TestHelper

class FakeUnit
include MarkupValidity
include MarkupValidity::Assertions

attr_reader :assertions

Expand Down

0 comments on commit 153d6c8

Please sign in to comment.