class_spec_helper 1.0.0 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b8638213951339c30d2d985e7cda10f3857c41575c2ba9409c0d3ef166468b92
4
- data.tar.gz: 64299b1761a7d59974b3582266f7304b968408d204c18406c7c01b550045d244
3
+ metadata.gz: e21827629a25a7fa533931a96a8e3317a0bf74dc5098481c51e7706be055761a
4
+ data.tar.gz: def51eadc569144a85d682661dbc743719bfcd9fa9b212cdf7d58d8b79c81168
5
5
  SHA512:
6
- metadata.gz: 6defe9ad81d470ad0a6e0e0d20cbb6cc016b0155a9389ebf386b97b3dd82526d52a37be92431b78a335b14ef1d89adf44a4fda14f98d2b00aaa4aa7c0526c8e0
7
- data.tar.gz: 96db5f7019a128090a84505e0e3a7a8562a02f7cb3f38ba24e1dcd556db01f1546a6c8a94db368c667c2d32be0040a45d0cf7738ade6c73c98f3a89358804b3b
6
+ metadata.gz: 6cdea831539568818a8f980c0308a9f9ae390b9378ac4533ba90462c62380ab2ec271dfced68a537b65a94c60a5bfa26dbb8b9a38e17dbe040d8a14313db29bd
7
+ data.tar.gz: c8f6b92393d49d9e2ac65c12019ff81272d69c9d6e462b2080852bc569beb389741dd6e59655bcf7fc5401df17d39b6ca52e927491eca0907e9bb70eb10d5f97
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.0](https://github.com/craigulliott/class_spec_helper/compare/v1.0.0...v1.1.0) (2023-07-17)
4
+
5
+
6
+ ### Features
7
+
8
+ * manually running the garbage collector to allow for more reliable use of `ObjectSpace` ([87652cb](https://github.com/craigulliott/class_spec_helper/commit/87652cbd601348afbf21f4913483aa558f30d87e))
9
+
3
10
  ## 1.0.0 (2023-07-13)
4
11
 
5
12
 
data/README.md CHANGED
@@ -51,11 +51,22 @@ require "class_spec_helper"
51
51
 
52
52
  RSpec.configure do |config|
53
53
 
54
- # make class_spec_helper conveniently accessable within your test suite
54
+ # make class_spec_helper conveniently accessible within your test suite
55
55
  config.add_setting :class_spec_helper
56
56
  config.class_spec_helper = ClassSpecHelper.new
57
57
 
58
- # destroy these dyanmically created classes after each test
58
+ # Run the garbage collector before each test. As long as there are no
59
+ # references in your code to the classes you created during your tests
60
+ # then this will help ensure that your classes are also completely destroyed.
61
+ #
62
+ # If you do not do this, then your deleted classes may still be available
63
+ # in `ObjectSpace` until the garbage collector runs. Adding this to your
64
+ # rspec is necessary if your code relies on `ObjectSpace`.
65
+ config.before(:each) do
66
+ ObjectSpace.garbage_collect
67
+ end
68
+
69
+ # destroy these dynamically created classes after each test
59
70
  config.after(:each) do
60
71
  config.class_spec_helper.remove_all_dynamically_created_classes
61
72
  end
@@ -67,6 +67,16 @@ class ClassSpecHelper
67
67
 
68
68
  # finish building the class
69
69
  klass.class_eval(&block) if block
70
+
71
+ # If we are using this in a test suite and the same class names are being used
72
+ # between each test, then after creation has proven to be a good time to run the
73
+ # garbage collector manually. It is very likely that all references to the old
74
+ # class are gone at this point.
75
+ #
76
+ # We do this because it is possibe that this is being used within a test suite
77
+ # for an application which makes use of `ObjectSpace`, and deleted classes will
78
+ # still be available in `ObjectSpace` until the garbage collector runs.
79
+ ObjectSpace.garbage_collect
70
80
  end
71
81
  end
72
82
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class ClassSpecHelper
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: class_spec_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig Ulliott
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-13 00:00:00.000000000 Z
11
+ date: 2023-07-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby gem to create named classes for use within your specs, and then
14
14
  clear them out automatically between specs.
@@ -27,13 +27,13 @@ files:
27
27
  - lib/class_spec_helper/destroy_classes.rb
28
28
  - lib/class_spec_helper/naming.rb
29
29
  - lib/class_spec_helper/version.rb
30
- homepage:
30
+ homepage:
31
31
  licenses:
32
32
  - MIT
33
33
  metadata:
34
34
  source_code_uri: https://github.com/craigulliott/class_spec_helper/
35
35
  changelog_uri: https://github.com/craigulliott/class_spec_helper/blob/main/CHANGELOG.md
36
- post_install_message:
36
+ post_install_message:
37
37
  rdoc_options: []
38
38
  require_paths:
39
39
  - lib
@@ -48,8 +48,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
48
48
  - !ruby/object:Gem::Version
49
49
  version: '0'
50
50
  requirements: []
51
- rubygems_version: 3.2.3
52
- signing_key:
51
+ rubygems_version: 3.3.26
52
+ signing_key:
53
53
  specification_version: 4
54
54
  summary: Easily create and destroy named classes for use within your specs.
55
55
  test_files: []