rematch 1.4.0 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c2a78aaba52539be2d6d48d6c9ab22cb42619fb2caaae180b910c0479d80a7f2
4
- data.tar.gz: c297708164e69b9af694ad7ed82e88a77566ab9dc84061cd0fef82507e2d942a
3
+ metadata.gz: 2b3e156f501309072c0c57f782f4954d878d6fca881df21be60294d048e8499d
4
+ data.tar.gz: '09b2e677934c63c345dcd5df0aaa1d045136b2089f93abbc9e88c19109bfaddc'
5
5
  SHA512:
6
- metadata.gz: 5026206bb987112ecd2cb028d72bb3e128163d44f3e44537f1e745163325196656c5bf03bebac6ae74998c52f2be4b0e7dd3c7e4af575565c2bd6f9ebceff4dd
7
- data.tar.gz: ff729f5a2aa8bb2e405ec8f4608cbfd07cc53f32440d1041be0fed6ff437cf37f1a5441cff2d8626d477e7be274942bd73f2db5044c846dcfa6fa07a5560a2ea
6
+ metadata.gz: ae7b319799b53c0c459217113ca1bb2e4811cadcacf26f2bb5be127414d8e1064fe70a3dfd15ce691a3013016fb8b772168568e450913f6b09045fe5d4e469e4
7
+ data.tar.gz: 8124b42a3eaa69c37c10b8991f1d3a3eb13c4c70fc2ecde3908580eae388da11e18848a89848c9a2f4682c8f2903afd77f336e70753c33c0ae665c02213c3105
@@ -4,6 +4,7 @@ require 'rematch'
4
4
 
5
5
  # Implement the minitest plugin
6
6
  module Minitest
7
+ # Set Rematch.rebuild with the --rematch-rebuild
7
8
  def self.plugin_rematch_options(opts, _options)
8
9
  opts.on '--rematch-rebuild', 'Rebuild the stores with the current entries/values' do
9
10
  Rematch.rebuild = true
@@ -12,6 +13,7 @@ module Minitest
12
13
 
13
14
  # Reopen the minitest class
14
15
  class Test
16
+ # Create the rematch object for each test
15
17
  def before_setup
16
18
  super
17
19
  @rematch = Rematch.new(path: method(name).source_location.first, id: location)
@@ -20,21 +22,25 @@ module Minitest
20
22
 
21
23
  # Reopen the minitest module
22
24
  module Assertions
25
+ # Main assertion
23
26
  def assert_rematch(actual, *args)
24
27
  assertion = :assert_equal
25
28
  message = nil
26
29
  args.each { |arg| arg.is_a?(Symbol) ? assertion = arg : message = arg }
27
- send assertion, @rematch.rematch(actual), actual, message # assert that the stored value is the same
30
+ send assertion, @rematch.rematch(actual), actual, message # assert that the stored value is the same actual value
28
31
  end
29
32
 
33
+ # Temporarily used to store the actual value, useful for reconciliation of expected changed values
30
34
  def store_assert_rematch(actual, *_args)
31
35
  @rematch.store(actual)
36
+ # Always fail after storing, forcing the restore of the original assertion/expectation
32
37
  raise Minitest::Assertion, '[rematch] the value has been stored: remove the "store_" prefix to pass the test'
33
38
  end
34
39
  end
35
40
 
36
41
  # Reopen the minitest module
37
42
  module Expectations
43
+ # Add the expectations pointing to the assertions
38
44
  infect_an_assertion :assert_rematch, :must_rematch, true # dont_flip
39
45
  infect_an_assertion :store_assert_rematch, :store_must_rematch, true # dont_flip
40
46
  end
data/lib/rematch.rb CHANGED
@@ -3,13 +3,13 @@
3
3
  require 'yaml/store'
4
4
  require 'fileutils'
5
5
 
6
- # Implement the key/value store
6
+ # Handles the key/value store for each test
7
7
  class Rematch
8
- VERSION = '1.4.0'
8
+ VERSION = '1.4.1'
9
9
  EXT = '.rematch'
10
10
 
11
- @rebuild = false
12
- @rebuilt = []
11
+ @rebuild = false # rebuild the store?
12
+ @rebuilt = [] # paths already rebuilt
13
13
  class << self
14
14
  attr_accessor :rebuild
15
15
 
@@ -23,7 +23,7 @@ class Rematch
23
23
  end
24
24
  end
25
25
 
26
- # Path and unique id of the test being run
26
+ # Instantiated at each test, stores the path and the unique id of the test being run
27
27
  def initialize(path:, id:)
28
28
  path = "#{path}#{EXT}"
29
29
  self.class.check_rebuild(path)
@@ -32,19 +32,21 @@ class Rematch
32
32
  @count = 0
33
33
  end
34
34
 
35
- # Retrieve the stored value if the key is known; store the value otherwise
35
+ # Retrieve the stored value for the current assertion if its key is known; store the value otherwise
36
36
  def rematch(value)
37
- key = count_key
37
+ key = assertion_key
38
38
  @store.transaction { |s| s.root?(key) ? s[key] : s[key] = value }
39
39
  end
40
40
 
41
+ # Store the value
41
42
  def store(value)
42
- @store.transaction { |s| s[count_key] = value }
43
+ @store.transaction { |s| s[assertion_key] = value }
43
44
  end
44
45
 
45
46
  private
46
47
 
47
- def count_key
48
+ # Return the key for the current assertion
49
+ def assertion_key
48
50
  "[#{@count += 1}] #{@id}"
49
51
  end
50
52
  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.0
4
+ version: 1.4.1
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-08 00:00:00.000000000 Z
11
+ date: 2021-12-10 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
@@ -27,6 +27,9 @@ licenses:
27
27
  - MIT
28
28
  metadata:
29
29
  rubygems_mfa_required: 'true'
30
+ homepage_uri: https://github.com/ddneus/rematch
31
+ bug_tracker_uri: https://github.com/ddnexus/rematch/issues
32
+ changelog_uri: https://github.com/ddnexus/rematch/blob/master/CHANGELOG.md
30
33
  post_install_message:
31
34
  rdoc_options: []
32
35
  require_paths: