ocrunner 0.2.3 → 0.2.4
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/VERSION +1 -1
 - data/lib/ocrunner/cli.rb +1 -1
 - data/lib/ocrunner/test_case.rb +7 -2
 - data/lib/ocrunner/test_error.rb +8 -0
 - data/lib/ocrunner/test_runner.rb +80 -33
 - data/lib/ocrunner/test_suite.rb +3 -0
 - data/lib/ocrunner.rb +1 -0
 - data/ocrunner.gemspec +2 -1
 - metadata +3 -2
 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.2. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.2.4
         
     | 
    
        data/lib/ocrunner/cli.rb
    CHANGED
    
    
    
        data/lib/ocrunner/test_case.rb
    CHANGED
    
    | 
         @@ -1,10 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module OCRunner
         
     | 
| 
       2 
2 
     | 
    
         
             
              class TestCase
         
     | 
| 
       3 
     | 
    
         
            -
                attr :name
         
     | 
| 
       4 
     | 
    
         
            -
                attr_accessor :passed, :path, :line, :message
         
     | 
| 
       5 
3 
     | 
    
         | 
| 
      
 4 
     | 
    
         
            +
                # Container for test case info
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                attr :name
         
     | 
| 
      
 7 
     | 
    
         
            +
                attr_accessor :passed
         
     | 
| 
      
 8 
     | 
    
         
            +
                attr_accessor :errors
         
     | 
| 
      
 9 
     | 
    
         
            +
                    
         
     | 
| 
       6 
10 
     | 
    
         
             
                def initialize(name)
         
     | 
| 
       7 
11 
     | 
    
         
             
                  @name = name
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @errors = []
         
     | 
| 
       8 
13 
     | 
    
         
             
                end
         
     | 
| 
       9 
14 
     | 
    
         
             
              end
         
     | 
| 
       10 
15 
     | 
    
         
             
            end
         
     | 
    
        data/lib/ocrunner/test_runner.rb
    CHANGED
    
    | 
         @@ -1,19 +1,30 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module OCRunner
         
     | 
| 
       2 
2 
     | 
    
         
             
              class TestRunner
         
     | 
| 
       3 
3 
     | 
    
         
             
                include Console
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
      
 4 
     | 
    
         
            +
                
         
     | 
| 
      
 5 
     | 
    
         
            +
                class BuildFailure < StandardError; end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                attr_reader :compilation_error_occurred
         
     | 
| 
       6 
8 
     | 
    
         | 
| 
       7 
9 
     | 
    
         
             
                def initialize(options)
         
     | 
| 
       8 
10 
     | 
    
         
             
                  @suites = []
         
     | 
| 
       9 
11 
     | 
    
         
             
                  @log = ''
         
     | 
| 
       10 
12 
     | 
    
         
             
                  @current_directory = Dir.pwd
         
     | 
| 
       11 
13 
     | 
    
         
             
                  @options = options
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @passed = true
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @compilation_error_occurred = false
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @output = []
         
     | 
| 
       12 
17 
     | 
    
         | 
| 
      
 18 
     | 
    
         
            +
                  setup
         
     | 
| 
       13 
19 
     | 
    
         
             
                  build_command
         
     | 
| 
       14 
20 
     | 
    
         
             
                  run_tests
         
     | 
| 
       15 
     | 
    
         
            -
                   
     | 
| 
       16 
     | 
    
         
            -
                   
     | 
| 
      
 21 
     | 
    
         
            +
                  summarize
         
     | 
| 
      
 22 
     | 
    
         
            +
                  display_results
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
              
         
     | 
| 
      
 25 
     | 
    
         
            +
                def setup
         
     | 
| 
      
 26 
     | 
    
         
            +
                  puts "="*80
         
     | 
| 
      
 27 
     | 
    
         
            +
                  puts
         
     | 
| 
       17 
28 
     | 
    
         
             
                end
         
     | 
| 
       18 
29 
     | 
    
         | 
| 
       19 
30 
     | 
    
         
             
                def build_command
         
     | 
| 
         @@ -35,44 +46,60 @@ module OCRunner 
     | 
|
| 
       35 
46 
     | 
    
         
             
                  end
         
     | 
| 
       36 
47 
     | 
    
         
             
                end
         
     | 
| 
       37 
48 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
                def  
     | 
| 
       39 
     | 
    
         
            -
                   
     | 
| 
      
 49 
     | 
    
         
            +
                def summarize
         
     | 
| 
      
 50 
     | 
    
         
            +
                  
         
     | 
| 
       40 
51 
     | 
    
         
             
                  @suites.each do |suite|
         
     | 
| 
       41 
     | 
    
         
            -
                     
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                       
     | 
| 
       44 
     | 
    
         
            -
                       
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                       
     | 
| 
      
 52 
     | 
    
         
            +
                    suite.cases.reject {|kase| kase.passed}.each do |kase|
         
     | 
| 
      
 53 
     | 
    
         
            +
                      out
         
     | 
| 
      
 54 
     | 
    
         
            +
                      out '  ' + red("[#{suite.name} #{kase.name}] FAIL")
         
     | 
| 
      
 55 
     | 
    
         
            +
                      kase.errors.each do |error|
         
     | 
| 
      
 56 
     | 
    
         
            +
                        out '    ' + red(error.message) + " line #{error.line} of #{clean_path(error.path)}"
         
     | 
| 
      
 57 
     | 
    
         
            +
                      end
         
     | 
| 
       47 
58 
     | 
    
         
             
                    end
         
     | 
| 
       48 
     | 
    
         
            -
                     
     | 
| 
      
 59 
     | 
    
         
            +
                    out
         
     | 
| 
       49 
60 
     | 
    
         
             
                  end
         
     | 
| 
       50 
61 
     | 
    
         | 
| 
       51 
62 
     | 
    
         
             
                  @suites.each do |suite|
         
     | 
| 
       52 
63 
     | 
    
         
             
                    failed = suite.cases.reject {|c| c.passed}
         
     | 
| 
       53 
     | 
    
         
            -
                     
     | 
| 
      
 64 
     | 
    
         
            +
                    out "Suite '#{suite.name}': #{suite.cases.size - failed.size} passes and #{failed.size} failures in #{suite.time} seconds."
         
     | 
| 
       54 
65 
     | 
    
         
             
                  end
         
     | 
| 
       55 
66 
     | 
    
         | 
| 
       56 
     | 
    
         
            -
                   
     | 
| 
      
 67 
     | 
    
         
            +
                  out
         
     | 
| 
       57 
68 
     | 
    
         | 
| 
       58 
     | 
    
         
            -
                  if passed
         
     | 
| 
       59 
     | 
    
         
            -
                     
     | 
| 
       60 
     | 
    
         
            -
                    puts green('*** BUILD SUCCEEDED ***')
         
     | 
| 
      
 69 
     | 
    
         
            +
                  if @passed
         
     | 
| 
      
 70 
     | 
    
         
            +
                    build_succeeded
         
     | 
| 
       61 
71 
     | 
    
         
             
                  else
         
     | 
| 
       62 
     | 
    
         
            -
                     
     | 
| 
       63 
     | 
    
         
            -
                    puts red('*** BUILD FAILED ***')
         
     | 
| 
      
 72 
     | 
    
         
            +
                    build_failed
         
     | 
| 
       64 
73 
     | 
    
         
             
                  end
         
     | 
| 
       65 
74 
     | 
    
         
             
                end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                def  
     | 
| 
       68 
     | 
    
         
            -
                  puts @log if @options[:verbose]
         
     | 
| 
      
 75 
     | 
    
         
            +
                
         
     | 
| 
      
 76 
     | 
    
         
            +
                def display_results
         
     | 
| 
      
 77 
     | 
    
         
            +
                  puts @log if @options[:verbose] || compilation_error_occurred
         
     | 
| 
      
 78 
     | 
    
         
            +
                  puts @output.join("\n")
         
     | 
| 
      
 79 
     | 
    
         
            +
                  puts
         
     | 
| 
       69 
80 
     | 
    
         
             
                end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
      
 81 
     | 
    
         
            +
                
         
     | 
| 
      
 82 
     | 
    
         
            +
                def build_error(message)
         
     | 
| 
      
 83 
     | 
    
         
            +
                  out red(message)
         
     | 
| 
      
 84 
     | 
    
         
            +
                  @passed = false
         
     | 
| 
      
 85 
     | 
    
         
            +
                end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
                def build_failed
         
     | 
| 
      
 88 
     | 
    
         
            +
                  growl('BUILD FAILED!')
         
     | 
| 
      
 89 
     | 
    
         
            +
                  out red('*** BUILD FAILED ***')
         
     | 
| 
      
 90 
     | 
    
         
            +
                end
         
     | 
| 
      
 91 
     | 
    
         
            +
                
         
     | 
| 
      
 92 
     | 
    
         
            +
                def build_succeeded
         
     | 
| 
      
 93 
     | 
    
         
            +
                  growl('Build succeeded.')
         
     | 
| 
      
 94 
     | 
    
         
            +
                  out green('*** BUILD SUCCEEDED ***')
         
     | 
| 
      
 95 
     | 
    
         
            +
                end
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
       71 
97 
     | 
    
         
             
                def process_console_output(line)
         
     | 
| 
       72 
98 
     | 
    
         | 
| 
       73 
99 
     | 
    
         
             
                  # test case started
         
     | 
| 
       74 
     | 
    
         
            -
                  if line =~ /Test Case '-\[ 
     | 
| 
      
 100 
     | 
    
         
            +
                  if line =~ /Test Case '-\[.+ (.+)\]' started/
         
     | 
| 
       75 
101 
     | 
    
         
             
                    @current_case = TestCase.new($1)
         
     | 
| 
      
 102 
     | 
    
         
            +
                    @current_suite.cases << @current_case
         
     | 
| 
       76 
103 
     | 
    
         
             
                  end
         
     | 
| 
       77 
104 
     | 
    
         | 
| 
       78 
105 
     | 
    
         
             
                  # test case passed
         
     | 
| 
         @@ -84,13 +111,10 @@ module OCRunner 
     | 
|
| 
       84 
111 
     | 
    
         
             
                  end
         
     | 
| 
       85 
112 
     | 
    
         | 
| 
       86 
113 
     | 
    
         
             
                  # test failure
         
     | 
| 
       87 
     | 
    
         
            -
                  if line =~ /(.+\.m):(\d+): error: -\[(.+) (.+)\] :(?: (.+) 
     | 
| 
      
 114 
     | 
    
         
            +
                  if line =~ /(.+\.m):(\d+): error: -\[(.+) (.+)\] :(?: (.+):?)? /
         
     | 
| 
       88 
115 
     | 
    
         
             
                    @current_case.passed = false
         
     | 
| 
       89 
     | 
    
         
            -
                    @current_case. 
     | 
| 
       90 
     | 
    
         
            -
                    @ 
     | 
| 
       91 
     | 
    
         
            -
                    @current_case.message = $5
         
     | 
| 
       92 
     | 
    
         
            -
                    @current_suite.cases << @current_case
         
     | 
| 
       93 
     | 
    
         
            -
                    @current_case = nil
         
     | 
| 
      
 116 
     | 
    
         
            +
                    @current_case.errors << TestError.new($1, $2, $5)
         
     | 
| 
      
 117 
     | 
    
         
            +
                    @passed = false
         
     | 
| 
       94 
118 
     | 
    
         
             
                    print red('.')
         
     | 
| 
       95 
119 
     | 
    
         
             
                  end
         
     | 
| 
       96 
120 
     | 
    
         | 
| 
         @@ -107,12 +131,35 @@ module OCRunner 
     | 
|
| 
       107 
131 
     | 
    
         
             
                    @current_suite = nil
         
     | 
| 
       108 
132 
     | 
    
         
             
                    print "\n" # clear console line
         
     | 
| 
       109 
133 
     | 
    
         
             
                  end
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
                  # test executable not found
         
     | 
| 
      
 136 
     | 
    
         
            +
                  if line =~ /The executable for the test bundle at (.+\.octest) could not be found/
         
     | 
| 
      
 137 
     | 
    
         
            +
                    build_error("Test executable #{clean_path($1)} could not be found")
         
     | 
| 
      
 138 
     | 
    
         
            +
                  end
         
     | 
| 
      
 139 
     | 
    
         
            +
                  
         
     | 
| 
      
 140 
     | 
    
         
            +
                  # compilation reference error
         
     | 
| 
      
 141 
     | 
    
         
            +
                  if line =~ /"(.+)", referenced from:/
         
     | 
| 
      
 142 
     | 
    
         
            +
                    compilation_error_occurred!
         
     | 
| 
      
 143 
     | 
    
         
            +
                    build_error($&)
         
     | 
| 
      
 144 
     | 
    
         
            +
                  end
         
     | 
| 
      
 145 
     | 
    
         
            +
                  if line =~ /-\[\w+ \w+\] in .+\.o/
         
     | 
| 
      
 146 
     | 
    
         
            +
                    compilation_error_occurred!
         
     | 
| 
      
 147 
     | 
    
         
            +
                    build_error($&)
         
     | 
| 
      
 148 
     | 
    
         
            +
                  end
         
     | 
| 
       110 
149 
     | 
    
         | 
| 
       111 
150 
     | 
    
         
             
                  # no Xcode project found
         
     | 
| 
       112 
151 
     | 
    
         
             
                  if line =~ /does not contain an Xcode project/
         
     | 
| 
       113 
     | 
    
         
            -
                     
     | 
| 
       114 
     | 
    
         
            -
                    exit
         
     | 
| 
      
 152 
     | 
    
         
            +
                    build_error('No Xcode project was found.')
         
     | 
| 
       115 
153 
     | 
    
         
             
                  end
         
     | 
| 
      
 154 
     | 
    
         
            +
                  
         
     | 
| 
      
 155 
     | 
    
         
            +
                end
         
     | 
| 
      
 156 
     | 
    
         
            +
               
         
     | 
| 
      
 157 
     | 
    
         
            +
                def compilation_error_occurred!
         
     | 
| 
      
 158 
     | 
    
         
            +
                  @compilation_error_occurred = true
         
     | 
| 
      
 159 
     | 
    
         
            +
                end
         
     | 
| 
      
 160 
     | 
    
         
            +
               
         
     | 
| 
      
 161 
     | 
    
         
            +
                def out(line = '')
         
     | 
| 
      
 162 
     | 
    
         
            +
                  @output << line
         
     | 
| 
       116 
163 
     | 
    
         
             
                end
         
     | 
| 
       117 
164 
     | 
    
         | 
| 
       118 
165 
     | 
    
         
             
                def clean_path(path)
         
     | 
    
        data/lib/ocrunner/test_suite.rb
    CHANGED
    
    
    
        data/lib/ocrunner.rb
    CHANGED
    
    | 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require File.dirname(__FILE__) + '/ocrunner/cli'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require File.dirname(__FILE__) + '/ocrunner/console'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require File.dirname(__FILE__) + '/ocrunner/test_case'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/ocrunner/test_error'
         
     | 
| 
       4 
5 
     | 
    
         
             
            require File.dirname(__FILE__) + '/ocrunner/test_suite'
         
     | 
| 
       5 
6 
     | 
    
         
             
            require File.dirname(__FILE__) + '/ocrunner/test_runner'
         
     | 
    
        data/ocrunner.gemspec
    CHANGED
    
    | 
         @@ -5,7 +5,7 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = %q{ocrunner}
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "0.2. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.2.4"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["Jim Benton"]
         
     | 
| 
         @@ -30,6 +30,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       30 
30 
     | 
    
         
             
                 "lib/ocrunner/cli.rb",
         
     | 
| 
       31 
31 
     | 
    
         
             
                 "lib/ocrunner/console.rb",
         
     | 
| 
       32 
32 
     | 
    
         
             
                 "lib/ocrunner/test_case.rb",
         
     | 
| 
      
 33 
     | 
    
         
            +
                 "lib/ocrunner/test_error.rb",
         
     | 
| 
       33 
34 
     | 
    
         
             
                 "lib/ocrunner/test_runner.rb",
         
     | 
| 
       34 
35 
     | 
    
         
             
                 "lib/ocrunner/test_suite.rb",
         
     | 
| 
       35 
36 
     | 
    
         
             
                 "ocrunner.gemspec",
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version 
     | 
|
| 
       5 
5 
     | 
    
         
             
              segments: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              - 0
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 2
         
     | 
| 
       8 
     | 
    
         
            -
              -  
     | 
| 
       9 
     | 
    
         
            -
              version: 0.2. 
     | 
| 
      
 8 
     | 
    
         
            +
              - 4
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: 0.2.4
         
     | 
| 
       10 
10 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       11 
11 
     | 
    
         
             
            authors: 
         
     | 
| 
       12 
12 
     | 
    
         
             
            - Jim Benton
         
     | 
| 
         @@ -62,6 +62,7 @@ files: 
     | 
|
| 
       62 
62 
     | 
    
         
             
            - lib/ocrunner/cli.rb
         
     | 
| 
       63 
63 
     | 
    
         
             
            - lib/ocrunner/console.rb
         
     | 
| 
       64 
64 
     | 
    
         
             
            - lib/ocrunner/test_case.rb
         
     | 
| 
      
 65 
     | 
    
         
            +
            - lib/ocrunner/test_error.rb
         
     | 
| 
       65 
66 
     | 
    
         
             
            - lib/ocrunner/test_runner.rb
         
     | 
| 
       66 
67 
     | 
    
         
             
            - lib/ocrunner/test_suite.rb
         
     | 
| 
       67 
68 
     | 
    
         
             
            - ocrunner.gemspec
         
     |