test-loop 9.0.1 → 9.1.0
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/README.md +8 -18
- data/bin/test-loop +17 -10
- metadata +18 -3
    
        data/README.md
    CHANGED
    
    | @@ -53,7 +53,8 @@ As a Ruby gem: | |
| 53 53 |  | 
| 54 54 | 
             
            As a Git clone:
         | 
| 55 55 |  | 
| 56 | 
            -
                gem install diff-lcs
         | 
| 56 | 
            +
                gem install diff-lcs -v '>= 1.1.2'
         | 
| 57 | 
            +
                gem install ansi -v '>= 1.2.2'
         | 
| 57 58 | 
             
                git clone git://github.com/sunaku/test-loop
         | 
| 58 59 |  | 
| 59 60 |  | 
| @@ -155,19 +156,15 @@ you can query and modify the `Test::Loop` OpenStruct configuration as follows: | |
| 155 156 | 
             
              execution began, and (5) how many seconds it took for the overall test
         | 
| 156 157 | 
             
              execution to complete.
         | 
| 157 158 |  | 
| 158 | 
            -
              For example, to see on-screen-display notifications about test | 
| 159 | 
            -
               | 
| 160 | 
            -
              terminal, add the following to your configuration file:
         | 
| 159 | 
            +
              For example, to see on-screen-display notifications only about test
         | 
| 160 | 
            +
              failures, add the following to your configuration file:
         | 
| 161 161 |  | 
| 162 162 | 
             
                  Test::Loop.after_each_test = lambda do |test_file, log_file, run_status, started_at, elapsed_time|
         | 
| 163 163 | 
             
                    unless run_status.success?
         | 
| 164 | 
            -
                      # display the failure log
         | 
| 165 | 
            -
                      divider = '#' * 80
         | 
| 166 | 
            -
                      STDERR.print [divider, File.read(log_file), divider, nil].join("\n")
         | 
| 167 | 
            -
             | 
| 168 | 
            -
                      # notify user about failure
         | 
| 169 164 | 
             
                      title = 'FAIL at %s in %0.1fs' % [started_at.strftime('%r'), elapsed_time]
         | 
| 165 | 
            +
             | 
| 170 166 | 
             
                      message = test_file
         | 
| 167 | 
            +
             | 
| 171 168 | 
             
                      Thread.new do # run in background
         | 
| 172 169 | 
             
                        system 'notify-send', '-i', 'dialog-error', title, message or
         | 
| 173 170 | 
             
                        system 'growlnotify', '-a', 'Xcode', '-m', message, title or
         | 
| @@ -177,19 +174,12 @@ you can query and modify the `Test::Loop` OpenStruct configuration as follows: | |
| 177 174 | 
             
                  end
         | 
| 178 175 |  | 
| 179 176 | 
             
              For example, to see on-screen-display notifications about completed test
         | 
| 180 | 
            -
              runs  | 
| 181 | 
            -
               | 
| 177 | 
            +
              runs, regardless of whether they passed or failed, add the following to your
         | 
| 178 | 
            +
              configuration file:
         | 
| 182 179 |  | 
| 183 180 | 
             
                  Test::Loop.after_each_test = lambda do |test_file, log_file, run_status, started_at, elapsed_time|
         | 
| 184 181 | 
             
                    success = run_status.success?
         | 
| 185 182 |  | 
| 186 | 
            -
                    # display the failure log
         | 
| 187 | 
            -
                    unless success
         | 
| 188 | 
            -
                      divider = '#' * 80
         | 
| 189 | 
            -
                      STDERR.print [divider, File.read(log_file), divider, nil].join("\n")
         | 
| 190 | 
            -
                    end
         | 
| 191 | 
            -
             | 
| 192 | 
            -
                    # notify the user about test completion
         | 
| 193 183 | 
             
                    title = '%s at %s in %0.1fs' %
         | 
| 194 184 | 
             
                      [success ? 'PASS' : 'FAIL', started_at.strftime('%X'), elapsed_time]
         | 
| 195 185 |  | 
    
        data/bin/test-loop
    CHANGED
    
    | @@ -24,6 +24,7 @@ | |
| 24 24 |  | 
| 25 25 | 
             
            require 'ostruct'
         | 
| 26 26 | 
             
            require 'diff/lcs'
         | 
| 27 | 
            +
            require 'ansi'
         | 
| 27 28 |  | 
| 28 29 | 
             
            module Test
         | 
| 29 30 | 
             
              Loop = OpenStruct.new
         | 
| @@ -37,8 +38,8 @@ module Test | |
| 37 38 | 
             
                # source files that correspond to test files
         | 
| 38 39 | 
             
                '{lib,app}/**/*.rb' => lambda do |path|
         | 
| 39 40 | 
             
                  extn = File.extname(path)
         | 
| 40 | 
            -
                   | 
| 41 | 
            -
                  "{test,spec}/**/#{ | 
| 41 | 
            +
                  base = File.basename(path, extn)
         | 
| 42 | 
            +
                  "{test,spec}/**/#{base}_{test,spec}#{extn}"
         | 
| 42 43 | 
             
                end,
         | 
| 43 44 |  | 
| 44 45 | 
             
                # the actual test files themselves
         | 
| @@ -55,7 +56,7 @@ module Test | |
| 55 56 | 
             
              Loop.before_each_test = lambda do |test_file, log_file, test_names|
         | 
| 56 57 | 
             
                unless test_names.empty?
         | 
| 57 58 | 
             
                  test_name_pattern = test_names.map do |name|
         | 
| 58 | 
            -
                    # sanitize string  | 
| 59 | 
            +
                    # sanitize string interpolations and invalid method name characters
         | 
| 59 60 | 
             
                    name.gsub(/\#\{.*?\}/, ' ').strip.gsub(/\W+/, '.*')
         | 
| 60 61 | 
             
                  end.join('|')
         | 
| 61 62 |  | 
| @@ -208,15 +209,21 @@ module Test | |
| 208 209 | 
             
                    notify "TEST #{test_file}"
         | 
| 209 210 |  | 
| 210 211 | 
             
                    # wait for worker to finish
         | 
| 211 | 
            -
                     | 
| 212 | 
            -
             | 
| 213 | 
            -
                    rescue Errno::ECHILD
         | 
| 214 | 
            -
                      # worker finished and the OS has forgotten about it already
         | 
| 215 | 
            -
                    end
         | 
| 212 | 
            +
                    Process.waitpid worker_pid
         | 
| 213 | 
            +
                    run_status = $?
         | 
| 216 214 | 
             
                    elapsed_time = Time.now - @last_ran_at
         | 
| 217 215 |  | 
| 218 | 
            -
                     | 
| 219 | 
            -
                     | 
| 216 | 
            +
                    # report test results along with any failure logs
         | 
| 217 | 
            +
                    if run_status.success?
         | 
| 218 | 
            +
                      notify ANSI::Code.green("PASS #{test_file}")
         | 
| 219 | 
            +
                    else
         | 
| 220 | 
            +
                      notify ANSI::Code.red("FAIL #{test_file}")
         | 
| 221 | 
            +
                      STDERR.print File.read(log_file)
         | 
| 222 | 
            +
                    end
         | 
| 223 | 
            +
             | 
| 224 | 
            +
                    after_each_test.call \
         | 
| 225 | 
            +
                      test_file, log_file, run_status, @last_ran_at, elapsed_time
         | 
| 226 | 
            +
             | 
| 220 227 | 
             
                    @running_files_lock.synchronize { @running_files.delete test_file }
         | 
| 221 228 | 
             
                  end
         | 
| 222 229 | 
             
                end
         | 
    
        metadata
    CHANGED
    
    | @@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version | |
| 4 4 | 
             
              prerelease: false
         | 
| 5 5 | 
             
              segments: 
         | 
| 6 6 | 
             
              - 9
         | 
| 7 | 
            -
              - 0
         | 
| 8 7 | 
             
              - 1
         | 
| 9 | 
            -
               | 
| 8 | 
            +
              - 0
         | 
| 9 | 
            +
              version: 9.1.0
         | 
| 10 10 | 
             
            platform: ruby
         | 
| 11 11 | 
             
            authors: 
         | 
| 12 12 | 
             
            - Suraj N. Kurapati
         | 
| @@ -14,7 +14,7 @@ autorequire: | |
| 14 14 | 
             
            bindir: bin
         | 
| 15 15 | 
             
            cert_chain: []
         | 
| 16 16 |  | 
| 17 | 
            -
            date: 2011-02- | 
| 17 | 
            +
            date: 2011-02-23 00:00:00 -08:00
         | 
| 18 18 | 
             
            default_executable: 
         | 
| 19 19 | 
             
            dependencies: 
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -32,6 +32,21 @@ dependencies: | |
| 32 32 | 
             
                    version: 1.1.2
         | 
| 33 33 | 
             
              type: :runtime
         | 
| 34 34 | 
             
              version_requirements: *id001
         | 
| 35 | 
            +
            - !ruby/object:Gem::Dependency 
         | 
| 36 | 
            +
              name: ansi
         | 
| 37 | 
            +
              prerelease: false
         | 
| 38 | 
            +
              requirement: &id002 !ruby/object:Gem::Requirement 
         | 
| 39 | 
            +
                none: false
         | 
| 40 | 
            +
                requirements: 
         | 
| 41 | 
            +
                - - ">="
         | 
| 42 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 43 | 
            +
                    segments: 
         | 
| 44 | 
            +
                    - 1
         | 
| 45 | 
            +
                    - 2
         | 
| 46 | 
            +
                    - 2
         | 
| 47 | 
            +
                    version: 1.2.2
         | 
| 48 | 
            +
              type: :runtime
         | 
| 49 | 
            +
              version_requirements: *id002
         | 
| 35 50 | 
             
            description: 
         | 
| 36 51 | 
             
            email: 
         | 
| 37 52 | 
             
            executables: 
         |