coverband 6.1.0 → 6.1.1
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.
- checksums.yaml +4 -4
- data/changes.md +4 -0
- data/coverband.gemspec +1 -0
- data/lib/coverband/adapters/hash_redis_store.rb +7 -6
- data/lib/coverband/version.rb +1 -1
- data/test/coverband/adapters/hash_redis_store_test.rb +48 -0
- data/test/test_helper.rb +1 -0
- metadata +16 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ed2b063179cbc773c9b3b8fab3403820f9855c32a9de007c347b58873eecf13a
         | 
| 4 | 
            +
              data.tar.gz: 7968b26ac22e3209b0bf2a9baabdfe107ed9029a0d4557eea5b80c22439e3278
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 3bccf2dbc8e92d5980365a99b5ae2852fd8e04d224202a58e3a8490991b88eb88a881fbf620e4ea60d66cd4714a70f11a8015ebd96aa772a65a35e1fb642ea24
         | 
| 7 | 
            +
              data.tar.gz: 784f5e0905989f865199261270072c397e520b2269ed387f0ecd1276ef5a7395fc5d4de7ec9990aceeda1cc883778bcfcf4c7c2260c792e81557914298778d87
         | 
    
        data/changes.md
    CHANGED
    
    | @@ -1,3 +1,7 @@ | |
| 1 | 
            +
            ### Coverband 6.1.1
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            * Performance fix making paged report loading 10X faster
         | 
| 4 | 
            +
             | 
| 1 5 | 
             
            ### Coverband 6.1.0
         | 
| 2 6 |  | 
| 3 7 | 
             
            This release has a number of smaller fixes and improvements. It includes a sizable refactoring around the UI which should simplify improvements going forward. This release is mostly targetting large projects with 6K+ ruby files, use the new `config.paged_reporting = true` option with the HashRedisStore to enable paged reporting for large projects. The HashRedisStore now also includes the last time a line in a file was executed.
         | 
    
        data/coverband.gemspec
    CHANGED
    
    | @@ -36,6 +36,7 @@ Gem::Specification.new do |spec| | |
| 36 36 | 
             
              spec.add_development_dependency "memory_profiler"
         | 
| 37 37 | 
             
              # breaking change in minitest and mocha...
         | 
| 38 38 | 
             
              # note: we are also adding 'spy' as mocha doesn't want us to spy on redis calls...
         | 
| 39 | 
            +
              spec.add_development_dependency "spy"
         | 
| 39 40 | 
             
              # ^^^ probably need a large test cleanup refactor
         | 
| 40 41 | 
             
              spec.add_development_dependency "minitest", "= 5.18.1"
         | 
| 41 42 | 
             
              spec.add_development_dependency "minitest-fork_executor"
         | 
| @@ -231,14 +231,14 @@ module Coverband | |
| 231 231 | 
             
                      end
         | 
| 232 232 | 
             
                    end
         | 
| 233 233 |  | 
| 234 | 
            +
                    # NOTE: This is kind of hacky, we find all the matching eager loading data
         | 
| 235 | 
            +
                    # for current page of runtime data.
         | 
| 234 236 | 
             
                    eager_key_pre = key_prefix(Coverband::EAGER_TYPE)
         | 
| 235 237 | 
             
                    runtime_key_pre = key_prefix(Coverband::RUNTIME_TYPE)
         | 
| 236 | 
            -
                    matched_file_set =  | 
| 237 | 
            -
                      . | 
| 238 | 
            -
             | 
| 239 | 
            -
             | 
| 240 | 
            -
                      end
         | 
| 241 | 
            -
                    end || []
         | 
| 238 | 
            +
                    matched_file_set = runtime_file_set.map do |runtime_key|
         | 
| 239 | 
            +
                      runtime_key.sub(runtime_key_pre, eager_key_pre)
         | 
| 240 | 
            +
                    end
         | 
| 241 | 
            +
             | 
| 242 242 | 
             
                    hash_data[Coverband::EAGER_TYPE] = matched_file_set.each_slice(page_size).flat_map do |key_batch|
         | 
| 243 243 | 
             
                      @redis.pipelined do |pipeline|
         | 
| 244 244 | 
             
                        key_batch.each do |key|
         | 
| @@ -246,6 +246,7 @@ module Coverband | |
| 246 246 | 
             
                        end
         | 
| 247 247 | 
             
                      end
         | 
| 248 248 | 
             
                    end
         | 
| 249 | 
            +
             | 
| 249 250 | 
             
                    hash_data[Coverband::RUNTIME_TYPE] = hash_data[Coverband::RUNTIME_TYPE].each_with_object({}) do |data_from_redis, hash|
         | 
| 250 251 | 
             
                      add_coverage_for_file(data_from_redis, hash)
         | 
| 251 252 | 
             
                    end
         | 
    
        data/lib/coverband/version.rb
    CHANGED
    
    
| @@ -242,4 +242,52 @@ class HashRedisStoreTest < Minitest::Test | |
| 242 242 | 
             
                  @store.coverage["./dog.rb"]
         | 
| 243 243 | 
             
                )
         | 
| 244 244 | 
             
              end
         | 
| 245 | 
            +
             | 
| 246 | 
            +
              def test_split_coverage
         | 
| 247 | 
            +
                @store = Coverband::Adapters::HashRedisStore.new(
         | 
| 248 | 
            +
                  @redis,
         | 
| 249 | 
            +
                  redis_namespace: "coverband_test",
         | 
| 250 | 
            +
                  relative_file_converter: MockRelativeFileConverter
         | 
| 251 | 
            +
                )
         | 
| 252 | 
            +
             | 
| 253 | 
            +
                mock_file_hash
         | 
| 254 | 
            +
                yesterday = DateTime.now.prev_day.to_time
         | 
| 255 | 
            +
                mock_time(yesterday)
         | 
| 256 | 
            +
             | 
| 257 | 
            +
                @store.type = :eager_loading
         | 
| 258 | 
            +
                data = {
         | 
| 259 | 
            +
                  "app_path/dog.rb" => [0, nil, 1]
         | 
| 260 | 
            +
                }
         | 
| 261 | 
            +
                @store.save_report(data)
         | 
| 262 | 
            +
             | 
| 263 | 
            +
                @store.type = :runtime
         | 
| 264 | 
            +
                @store.save_report(
         | 
| 265 | 
            +
                  "app_path/dog.rb" => [0, 1, 2]
         | 
| 266 | 
            +
                )
         | 
| 267 | 
            +
                redis_pipelined = Spy.on(@redis, :pipelined).and_call_through
         | 
| 268 | 
            +
                assert_equal(
         | 
| 269 | 
            +
                  {
         | 
| 270 | 
            +
                    runtime: {
         | 
| 271 | 
            +
                      "./dog.rb" => {
         | 
| 272 | 
            +
                        "first_updated_at" => yesterday.to_i,
         | 
| 273 | 
            +
                        "last_updated_at" => yesterday.to_i,
         | 
| 274 | 
            +
                        "file_hash" => "abcd",
         | 
| 275 | 
            +
                        "data" => [0, 1, 2],
         | 
| 276 | 
            +
                        "timedata" => [nil, Time.at(yesterday.to_i), Time.at(yesterday.to_i)]
         | 
| 277 | 
            +
                      }
         | 
| 278 | 
            +
                    },
         | 
| 279 | 
            +
                    eager_loading: {
         | 
| 280 | 
            +
                      "./dog.rb" => {
         | 
| 281 | 
            +
                        "first_updated_at" => yesterday.to_i,
         | 
| 282 | 
            +
                        "last_updated_at" => nil,
         | 
| 283 | 
            +
                        "file_hash" => "abcd",
         | 
| 284 | 
            +
                        "data" => [0, nil, 1],
         | 
| 285 | 
            +
                        "timedata" => [nil, nil, Time.at(yesterday.to_i)]
         | 
| 286 | 
            +
                      }
         | 
| 287 | 
            +
                    }
         | 
| 288 | 
            +
                  },
         | 
| 289 | 
            +
                  @store.split_coverage([Coverband::RUNTIME_TYPE, Coverband::EAGER_TYPE], {}, {page: 1})
         | 
| 290 | 
            +
                )
         | 
| 291 | 
            +
                assert_equal 2, redis_pipelined.calls.count
         | 
| 292 | 
            +
              end
         | 
| 245 293 | 
             
            end
         | 
    
        data/test/test_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: coverband
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 6.1. | 
| 4 | 
            +
              version: 6.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dan Mayer
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2024-04- | 
| 12 | 
            +
            date: 2024-04-23 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: benchmark-ips
         | 
| @@ -67,6 +67,20 @@ dependencies: | |
| 67 67 | 
             
                - - ">="
         | 
| 68 68 | 
             
                  - !ruby/object:Gem::Version
         | 
| 69 69 | 
             
                    version: '0'
         | 
| 70 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 71 | 
            +
              name: spy
         | 
| 72 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 73 | 
            +
                requirements:
         | 
| 74 | 
            +
                - - ">="
         | 
| 75 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 76 | 
            +
                    version: '0'
         | 
| 77 | 
            +
              type: :development
         | 
| 78 | 
            +
              prerelease: false
         | 
| 79 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 80 | 
            +
                requirements:
         | 
| 81 | 
            +
                - - ">="
         | 
| 82 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 83 | 
            +
                    version: '0'
         | 
| 70 84 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 71 85 | 
             
              name: minitest
         | 
| 72 86 | 
             
              requirement: !ruby/object:Gem::Requirement
         |