minitest-ci 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/minitest/ci.rb +49 -7
- data/test/test_minitest_ci.rb +24 -6
- metadata +3 -35
    
        data/lib/minitest/ci.rb
    CHANGED
    
    | @@ -1,13 +1,37 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 1 | 
            +
            begin
         | 
| 2 | 
            +
              gem 'minitest', '2.6.0'
         | 
| 3 | 
            +
              require "minitest/unit"
         | 
| 4 | 
            +
            rescue Gem::LoadError => e
         | 
| 5 | 
            +
              msg = [
         | 
| 6 | 
            +
                'minitest version 2.6.0 required',
         | 
| 7 | 
            +
                'try: gem install minitest -v 2.6.0'
         | 
| 8 | 
            +
              ]
         | 
| 9 | 
            +
              raise e.exception msg.join("\n")
         | 
| 10 | 
            +
            end
         | 
| 4 11 |  | 
| 5 12 | 
             
            require 'fileutils'
         | 
| 6 13 | 
             
            require 'cgi'
         | 
| 7 14 |  | 
| 8 15 | 
             
            module MiniTest
         | 
| 9 16 | 
             
              module Ci
         | 
| 10 | 
            -
                 | 
| 17 | 
            +
                ###
         | 
| 18 | 
            +
                # copied
         | 
| 19 | 
            +
                file = if RUBY_VERSION =~ /^1\.9/ then  # bt's expanded, but __FILE__ isn't :(
         | 
| 20 | 
            +
                         File.expand_path __FILE__
         | 
| 21 | 
            +
                       elsif  __FILE__ =~ /^[^\.]/ then # assume both relative
         | 
| 22 | 
            +
                         require 'pathname'
         | 
| 23 | 
            +
                         pwd = Pathname.new Dir.pwd
         | 
| 24 | 
            +
                         pn = Pathname.new File.expand_path(__FILE__)
         | 
| 25 | 
            +
                         pn = File.join(".", pn.relative_path_from(pwd)) unless pn.relative?
         | 
| 26 | 
            +
                         pn.to_s
         | 
| 27 | 
            +
                       else                             # assume both are expanded
         | 
| 28 | 
            +
                         __FILE__
         | 
| 29 | 
            +
                       end
         | 
| 30 | 
            +
                # end of copy
         | 
| 31 | 
            +
                ###
         | 
| 32 | 
            +
                CI_MINI_DIR = File.dirname(File.dirname(file))
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                VERSION = '1.0.3'
         | 
| 11 35 |  | 
| 12 36 | 
             
                @test_dir = nil #'test/reports'
         | 
| 13 37 | 
             
                @error = nil
         | 
| @@ -55,6 +79,24 @@ module MiniTest | |
| 55 79 | 
             
                  FileUtils.mkdir_p @test_dir
         | 
| 56 80 | 
             
                end
         | 
| 57 81 |  | 
| 82 | 
            +
                def escape o
         | 
| 83 | 
            +
                  CGI.escapeHTML(o.to_s)
         | 
| 84 | 
            +
                end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                # use original as well as filtering this file.
         | 
| 87 | 
            +
                def filter_backtrace bt
         | 
| 88 | 
            +
                  bt = MiniTest::filter_backtrace bt
         | 
| 89 | 
            +
                  orig_mini_dir = MiniTest::MINI_DIR
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                  orig_verbose, $VERBOSE = $VERBOSE, nil
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                  MiniTest.const_set :MINI_DIR, CI_MINI_DIR
         | 
| 94 | 
            +
                  MiniTest::filter_backtrace bt
         | 
| 95 | 
            +
                ensure
         | 
| 96 | 
            +
                  MiniTest.const_set :MINI_DIR, orig_mini_dir
         | 
| 97 | 
            +
                  $VERBOSE = orig_verbose
         | 
| 98 | 
            +
                end
         | 
| 99 | 
            +
             | 
| 58 100 | 
             
                def generate_suite name, suite
         | 
| 59 101 | 
             
                  total_time, assertions, errors, failures, skips = 0, 0, 0, 0, 0
         | 
| 60 102 | 
             
                  suite.each do |_, t, a, e|
         | 
| @@ -77,9 +119,9 @@ module MiniTest | |
| 77 119 | 
             
                    suite.each do |method, time, asserts, error|
         | 
| 78 120 | 
             
                      f.puts "  <testcase time='#{"%6f" % time}' name='#{method}' assertions='#{asserts}'>"
         | 
| 79 121 | 
             
                      if error
         | 
| 80 | 
            -
                        bt =  | 
| 81 | 
            -
                        f.write "    <#{type error} type='#{error.class}' message='#{ | 
| 82 | 
            -
                        f.puts  | 
| 122 | 
            +
                        bt = filter_backtrace(error.backtrace).join "\n"
         | 
| 123 | 
            +
                        f.write "    <#{type error} type='#{escape error.class}' message='#{escape error.message}'>"
         | 
| 124 | 
            +
                        f.puts escape bt
         | 
| 83 125 | 
             
                        f.puts "    </#{type error}>"
         | 
| 84 126 | 
             
                      end
         | 
| 85 127 | 
             
                      f.puts "  </testcase>"
         | 
    
        data/test/test_minitest_ci.rb
    CHANGED
    
    | @@ -20,9 +20,13 @@ class MockTestSuite < MiniTest::Unit::TestCase | |
| 20 20 | 
             
                pass
         | 
| 21 21 | 
             
              end
         | 
| 22 22 |  | 
| 23 | 
            -
              def  | 
| 23 | 
            +
              def test_invalid_characters_in_message
         | 
| 24 24 | 
             
                raise Object.new.inspect
         | 
| 25 25 | 
             
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              def test_invalid_error_name
         | 
| 28 | 
            +
                raise Class.new(Exception)
         | 
| 29 | 
            +
              end
         | 
| 26 30 | 
             
            end
         | 
| 27 31 |  | 
| 28 32 | 
             
            class TestMinitest
         | 
| @@ -50,21 +54,22 @@ class TestMinitest::TestCi < MiniTest::Unit::TestCase | |
| 50 54 | 
             
              def setup
         | 
| 51 55 | 
             
                file = "#{MiniTest::Ci.test_dir}/TEST-MockTestSuite.xml"
         | 
| 52 56 | 
             
                assert File.exists?( file ), 'expected xml file to exists'
         | 
| 53 | 
            -
                @ | 
| 57 | 
            +
                @file = File.read file
         | 
| 58 | 
            +
                @doc = Nokogiri.parse @file
         | 
| 54 59 | 
             
                @doc = @doc.at_xpath('/testsuite')
         | 
| 55 60 | 
             
              end
         | 
| 56 61 |  | 
| 57 62 | 
             
              def test_testsuite
         | 
| 58 63 | 
             
                assert_equal "1", @doc['skipped']
         | 
| 59 64 | 
             
                assert_equal "1", @doc['failures']
         | 
| 60 | 
            -
                assert_equal " | 
| 65 | 
            +
                assert_equal "4", @doc['errors']
         | 
| 61 66 | 
             
                assert_equal "2", @doc['assertions']
         | 
| 62 | 
            -
                assert_equal " | 
| 67 | 
            +
                assert_equal "6", @doc['tests']
         | 
| 63 68 | 
             
                assert_equal "MockTestSuite", @doc['name']
         | 
| 64 69 | 
             
              end
         | 
| 65 70 |  | 
| 66 71 | 
             
              def test_testcase
         | 
| 67 | 
            -
                assert_equal  | 
| 72 | 
            +
                assert_equal 6, @doc.children.count {|c| Nokogiri::XML::Element === c}
         | 
| 68 73 | 
             
                @doc.children.each do |c|
         | 
| 69 74 | 
             
                  next unless Nokogiri::XML::Element === c
         | 
| 70 75 | 
             
                  assert_equal 'testcase', c.name
         | 
| @@ -86,13 +91,26 @@ class TestMinitest::TestCi < MiniTest::Unit::TestCase | |
| 86 91 | 
             
                assert_equal 'raise an error', error.at_xpath('failure')['message']
         | 
| 87 92 | 
             
                assert_equal '0', error['assertions']
         | 
| 88 93 |  | 
| 89 | 
            -
                error = @doc.at_xpath('/testsuite/testcase[@name=" | 
| 94 | 
            +
                error = @doc.at_xpath('/testsuite/testcase[@name="test_invalid_characters_in_message"]')
         | 
| 90 95 | 
             
                assert_match( /^#<Object/, error.at_xpath('failure')['message'] )
         | 
| 91 96 | 
             
                assert_equal '0', error['assertions']
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                error = @doc.at_xpath('/testsuite/testcase[@name="test_invalid_error_name"]')
         | 
| 99 | 
            +
                assert_match( /^#<Class/, error.at_xpath('failure')['message'] )
         | 
| 100 | 
            +
                assert_equal '0', error['assertions']
         | 
| 92 101 | 
             
              end
         | 
| 93 102 |  | 
| 94 103 | 
             
              def test_output
         | 
| 95 104 | 
             
                self.class.output.rewind
         | 
| 96 105 | 
             
                assert_match( /generating ci files/, self.class.output.read )
         | 
| 97 106 | 
             
              end
         | 
| 107 | 
            +
             | 
| 108 | 
            +
              def test_filter_backtrace
         | 
| 109 | 
            +
                bt = begin; raise; rescue => e; e.backtrace; end
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                bt = MiniTest::Ci.send :filter_backtrace, bt
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                assert_equal 1, bt.size
         | 
| 114 | 
            +
                assert_match( /#{__FILE__}/, bt.first )
         | 
| 115 | 
            +
              end
         | 
| 98 116 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,8 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: minitest-ci
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash: 19
         | 
| 5 4 | 
             
              prerelease: 
         | 
| 6 | 
            -
               | 
| 7 | 
            -
              - 1
         | 
| 8 | 
            -
              - 0
         | 
| 9 | 
            -
              - 2
         | 
| 10 | 
            -
              version: 1.0.2
         | 
| 5 | 
            +
              version: 1.0.3
         | 
| 11 6 | 
             
            platform: ruby
         | 
| 12 7 | 
             
            authors: 
         | 
| 13 8 | 
             
            - Brian Henderson
         | 
| @@ -15,8 +10,7 @@ autorequire: | |
| 15 10 | 
             
            bindir: bin
         | 
| 16 11 | 
             
            cert_chain: []
         | 
| 17 12 |  | 
| 18 | 
            -
            date: 2011- | 
| 19 | 
            -
            default_executable: 
         | 
| 13 | 
            +
            date: 2011-10-04 00:00:00 Z
         | 
| 20 14 | 
             
            dependencies: 
         | 
| 21 15 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 22 16 | 
             
              name: minitest
         | 
| @@ -26,11 +20,6 @@ dependencies: | |
| 26 20 | 
             
                requirements: 
         | 
| 27 21 | 
             
                - - "="
         | 
| 28 22 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 29 | 
            -
                    hash: 23
         | 
| 30 | 
            -
                    segments: 
         | 
| 31 | 
            -
                    - 2
         | 
| 32 | 
            -
                    - 6
         | 
| 33 | 
            -
                    - 0
         | 
| 34 23 | 
             
                    version: 2.6.0
         | 
| 35 24 | 
             
              type: :runtime
         | 
| 36 25 | 
             
              version_requirements: *id001
         | 
| @@ -42,11 +31,6 @@ dependencies: | |
| 42 31 | 
             
                requirements: 
         | 
| 43 32 | 
             
                - - ~>
         | 
| 44 33 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 45 | 
            -
                    hash: 3
         | 
| 46 | 
            -
                    segments: 
         | 
| 47 | 
            -
                    - 1
         | 
| 48 | 
            -
                    - 5
         | 
| 49 | 
            -
                    - 0
         | 
| 50 34 | 
             
                    version: 1.5.0
         | 
| 51 35 | 
             
              type: :development
         | 
| 52 36 | 
             
              version_requirements: *id002
         | 
| @@ -58,11 +42,6 @@ dependencies: | |
| 58 42 | 
             
                requirements: 
         | 
| 59 43 | 
             
                - - ">="
         | 
| 60 44 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 61 | 
            -
                    hash: 27
         | 
| 62 | 
            -
                    segments: 
         | 
| 63 | 
            -
                    - 2
         | 
| 64 | 
            -
                    - 4
         | 
| 65 | 
            -
                    - 2
         | 
| 66 45 | 
             
                    version: 2.4.2
         | 
| 67 46 | 
             
              type: :development
         | 
| 68 47 | 
             
              version_requirements: *id003
         | 
| @@ -74,10 +53,6 @@ dependencies: | |
| 74 53 | 
             
                requirements: 
         | 
| 75 54 | 
             
                - - ~>
         | 
| 76 55 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 77 | 
            -
                    hash: 27
         | 
| 78 | 
            -
                    segments: 
         | 
| 79 | 
            -
                    - 2
         | 
| 80 | 
            -
                    - 12
         | 
| 81 56 | 
             
                    version: "2.12"
         | 
| 82 57 | 
             
              type: :development
         | 
| 83 58 | 
             
              version_requirements: *id004
         | 
| @@ -104,7 +79,6 @@ files: | |
| 104 79 | 
             
            - lib/minitest/ci.rb
         | 
| 105 80 | 
             
            - test/test_minitest_ci.rb
         | 
| 106 81 | 
             
            - .gemtest
         | 
| 107 | 
            -
            has_rdoc: true
         | 
| 108 82 | 
             
            homepage: https://github.com/bhenderson/minitest-ci
         | 
| 109 83 | 
             
            licenses: []
         | 
| 110 84 |  | 
| @@ -119,23 +93,17 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 119 93 | 
             
              requirements: 
         | 
| 120 94 | 
             
              - - ">="
         | 
| 121 95 | 
             
                - !ruby/object:Gem::Version 
         | 
| 122 | 
            -
                  hash: 3
         | 
| 123 | 
            -
                  segments: 
         | 
| 124 | 
            -
                  - 0
         | 
| 125 96 | 
             
                  version: "0"
         | 
| 126 97 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 127 98 | 
             
              none: false
         | 
| 128 99 | 
             
              requirements: 
         | 
| 129 100 | 
             
              - - ">="
         | 
| 130 101 | 
             
                - !ruby/object:Gem::Version 
         | 
| 131 | 
            -
                  hash: 3
         | 
| 132 | 
            -
                  segments: 
         | 
| 133 | 
            -
                  - 0
         | 
| 134 102 | 
             
                  version: "0"
         | 
| 135 103 | 
             
            requirements: []
         | 
| 136 104 |  | 
| 137 105 | 
             
            rubyforge_project: minitest-ci
         | 
| 138 | 
            -
            rubygems_version: 1. | 
| 106 | 
            +
            rubygems_version: 1.8.10
         | 
| 139 107 | 
             
            signing_key: 
         | 
| 140 108 | 
             
            specification_version: 3
         | 
| 141 109 | 
             
            summary: CI reporter plugin for MiniTest This gem was made possible by ATT Interactive.
         |