rematch 1.4.2 → 2.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f699e5e0c1d64349c09caa39f25bbacb14611337ab42a96f648869bebdb76a0c
4
- data.tar.gz: ecfb4cca03ca59e1d7e48678cc5a275638b8274afa3ea86e46cb2489fc1baeed
3
+ metadata.gz: 785b035990ab3f3b2615c20211f0714b475adc30c2b10340b22fc2c3aedb3ab4
4
+ data.tar.gz: 1b1cdcc8e0a17a2564aff63e89ff41d652320259d4be90d315704f7fe2a1843b
5
5
  SHA512:
6
- metadata.gz: be3f22dcd4354450f4e540eb1102813b681e0b06a4b241db47be3d4bb56cbb94e26ed0610921e3143ea56e23fff5638bad7c0f0a73f89735bd300bb0eece75d2
7
- data.tar.gz: ba28a07503d7ab0f3c8c362a5b7117cddeb8efde244041c5b9e82ba8f5137b5aabbad4166d79870d1c9a336e860da4fad62ad74e856105e84bad6ad0d32f4d63
6
+ metadata.gz: e8ea2ec684a238530b4050d89a63cf4d8454264e5df821122d4857f5ece42cf0f29c63b26bc4cfe8675b60599a85c8f0987d0c9783bf437f62d5ecfcc11c6e9f
7
+ data.tar.gz: 981c98f90eb585f57bb0bd8808c43b146b8ab7d8503ef9646620ed1003375a29e29d02bb057b4eb4eecc2a30ba61c1233692d1cd84cf57c372648915824a4b76
@@ -23,16 +23,16 @@ module Minitest
23
23
  # Reopen the minitest module
24
24
  module Assertions
25
25
  # Main assertion
26
- def assert_rematch(actual, *args)
26
+ def assert_rematch(key, actual, *args)
27
27
  assertion = :assert_equal
28
28
  message = nil
29
29
  args.each { |arg| arg.is_a?(Symbol) ? assertion = arg : message = arg }
30
- send assertion, @rematch.rematch(actual), actual, message # assert that the stored value is the same actual value
30
+ send assertion, @rematch.rematch(key, actual), actual, message # assert that the stored value is the same actual value
31
31
  end
32
32
 
33
33
  # Temporarily used to store the actual value, useful for reconciliation of expected changed values
34
- def store_assert_rematch(actual, *_args)
35
- @rematch.store(actual)
34
+ def store_assert_rematch(key, actual, *_args)
35
+ @rematch.store(key, actual)
36
36
  # Always fail after storing, forcing the restore of the original assertion/expectation
37
37
  raise Minitest::Assertion, '[rematch] the value has been stored: remove the "store_" prefix to pass the test'
38
38
  end
@@ -41,7 +41,7 @@ module Minitest
41
41
  # Reopen the minitest module
42
42
  module Expectations
43
43
  # Add the expectations pointing to the assertions
44
- infect_an_assertion :assert_rematch, :must_rematch, true # dont_flip
45
- infect_an_assertion :store_assert_rematch, :store_must_rematch, true # dont_flip
44
+ infect_an_assertion :assert_rematch, :must_rematch
45
+ infect_an_assertion :store_assert_rematch, :store_must_rematch
46
46
  end
47
47
  end
data/lib/rematch.rb CHANGED
@@ -5,7 +5,7 @@ require 'fileutils'
5
5
 
6
6
  # Handles the key/value store for each test
7
7
  class Rematch
8
- VERSION = '1.4.2'
8
+ VERSION = '2.0.0'
9
9
  EXT = '.rematch'
10
10
 
11
11
  @rebuild = false # rebuild the store?
@@ -29,24 +29,34 @@ class Rematch
29
29
  self.class.check_rebuild(path)
30
30
  @store = YAML::Store.new(path, true)
31
31
  @id = id
32
- @count = 0
33
32
  end
34
33
 
35
34
  # Retrieve the stored value for the current assertion if its key is known; store the value otherwise
36
- def rematch(value)
37
- key = assertion_key
38
- @store.transaction { |s| s.root?(key) ? s[key] : s[key] = value }
35
+ def rematch(key, value)
36
+ # key = assertion_key(key)
37
+ @store.transaction do |s|
38
+ if s.root?(@id) # there is the root id
39
+ if s[@id].key?(key) # there is the key
40
+ s[@id][key] # return it
41
+ else # not such a key
42
+ s[@id][key] = value # set
43
+ end
44
+ else # there is no root yet
45
+ s[@id] = { key => value } # the key is the first one
46
+ value # always return the value
47
+ end
48
+ end
39
49
  end
40
50
 
41
51
  # Store the value
42
- def store(value)
43
- @store.transaction { |s| s[assertion_key] = value }
44
- end
45
-
46
- private
47
-
48
- # Return the key for the current assertion
49
- def assertion_key
50
- "[#{@count += 1}] #{@id}"
52
+ def store(key, value)
53
+ @store.transaction do |s|
54
+ if s.root?(@id) # there is the root id
55
+ s[@id][key] = value # set
56
+ else # there is no root yet
57
+ s[@id] = { key => value } # the key is the first one
58
+ value # always return the value
59
+ end
60
+ end
51
61
  end
52
62
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rematch
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Domizio Demichelis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-11 00:00:00.000000000 Z
11
+ date: 2024-01-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Instead of copying and pasting large outputs or big ruby structures into
14
14
  all the affected test files every time your code change, you can do it the easy
@@ -38,14 +38,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">"
40
40
  - !ruby/object:Gem::Version
41
- version: '2.5'
41
+ version: '3.1'
42
42
  required_rubygems_version: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
47
  requirements: []
48
- rubygems_version: 3.2.32
48
+ rubygems_version: 3.5.3
49
49
  signing_key:
50
50
  specification_version: 4
51
51
  summary: Declutter your test files from large hardcoded data and update them automatically