File: assert-text-equal.rb

package info (click to toggle)
erubis 2.6.2-3.1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 2,064 kB
  • ctags: 1,320
  • sloc: ruby: 6,193; makefile: 108; ansic: 97; php: 17
file content (45 lines) | stat: -rw-r--r-- 1,282 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
###
### $Rev: 77 $
### $Release: 2.6.2 $
### copyright(c) 2006-2008 kuwata-lab.com all rights reserved.
###

require 'test/unit'
require 'tempfile'


module Test
  module Unit
    class TestCase

      def assert_text_equal(expected, actual, message=nil, diffopt='-u', flag_cut=true)
        if expected == actual
          assert(true)
          return
        end
        if expected[-1] != ?\n || actual[-1] != ?\n
          expected += "\n"
          actual   += "\n"
        end
        begin
          expfile = Tempfile.new(".expected.")
          expfile.write(expected); expfile.flush()
          actfile = Tempfile.new(".actual.")
          actfile.write(actual);   actfile.flush()
          diff = `diff #{diffopt} #{expfile.path} #{actfile.path}`
        ensure
          expfile.close(true) if expfile
          actfile.close(true) if actfile
        end
        # cut 1st & 2nd lines
        message = (flag_cut ? diff.gsub(/\A.*\n.*\n/, '') : diff) unless message
        #raise Test::Unit::AssertionFailedError.new(message)
        assert_block(message) { false }  # or assert(false, message)
      end

      alias assert_equal_with_diff assert_text_equal    # for compatibility
      alias assert_text_equals     assert_text_equal    # for typo

    end
  end
end