rematch 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
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: