grift 3.0.0 → 3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bf2421884afdf8fff5e1b01f197d7249352312fcd7463818f54dee8bd665b251
4
- data.tar.gz: 2491a5140014420c3ee5324c30caa32f8911b5b618417fa525dd9e34b82e6c4f
3
+ metadata.gz: c86b0996af61c492e67d267a83218c19c3840e6368f9e1111657bdd09e9a8904
4
+ data.tar.gz: 1f23f5ccf98ab6f0f212d5284058334e06a252f90f0dee5ce4a8ef6f4d865c3e
5
5
  SHA512:
6
- metadata.gz: 554d8d9425f55e7c8dd803db4311e76153614e13415aaaba44ccab586b4699a2192891f3c731b404f8cb5d4acaef796460ff15f6dca4fa50911e22590b236a97
7
- data.tar.gz: f6fa5b36f3c80ec589a1e6d51c833611cd6ea1170765750a8623e84916d8c2ae9d795ed06474f0c4411d8828bb715845e78cf688d45b60581e480a630229d6c9
6
+ metadata.gz: 21d1ea9659d78500130dcd7c0f058753f84d089f994b7bbec072d1b4fb268c7a81f11ba5c961cfe3f79030c9075cbc09de728a0cdcbfabef3f42be832621d87a
7
+ data.tar.gz: 04024343f3b6779302e50fc77e9c01556955fa3bf0f666acfeff9831fc5c509ae6fb19a617f56324979b640e842cf11e1367ae13f200db97d08cd8fb3cfc7ff4
data/CHANGELOG.md CHANGED
@@ -4,9 +4,23 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
- ## Unreleased
7
+ ## [3.1.1](https://github.com/clarkedb/grift/compare/v3.1.0...v3.1.1) (2026-10-14)
8
8
 
9
- None
9
+
10
+ ### Fixed
11
+
12
+ * package only runtime files in the gem ([#292](https://github.com/clarkedb/grift/issues/292)) ([0e6e3fd](https://github.com/clarkedb/grift/commit/0e6e3fdf2e99696468144ce490b015bdee3f13d4))
13
+
14
+ ## [3.1.0](https://github.com/clarkedb/grift/releases/tag/v3.1.0) - 2026-01-03
15
+
16
+ ### Added
17
+
18
+ - Official support for Ruby 4.0 ([#274](https://github.com/clarkedb/grift/pull/274))
19
+
20
+ ### Fixed
21
+
22
+ - Migrate rubocop setup to use plugins ([#275](https://github.com/clarkedb/grift/pull/275))
23
+ - Use preferred `method_defined?` for style ([#276](https://github.com/clarkedb/grift/pull/276))
10
24
 
11
25
  ## [3.0.0](https://github.com/clarkedb/grift/releases/tag/v3.0.0) - 2024-12-26
12
26
 
data/README.md CHANGED
@@ -122,17 +122,30 @@ my_mock.results
122
122
 
123
123
  ## Requirements
124
124
 
125
- Grift supports all Ruby versions >= 2.7 (including 3.4).
125
+ Grift supports all Ruby versions >= 2.7 (including 4.x versions).
126
+
127
+ ### Support
128
+
129
+ For now Grift is not guaranteed to be compatible with [`Ruby::Box`](https://docs.ruby-lang.org/en/master/Ruby/Box.html) introduced in Ruby 4.0.0. Support will be added/guaranteed if it is determined that `Ruby::Box` will move out of the experimental phase.
126
130
 
127
131
  ## Development
128
132
 
129
133
  After forking the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
130
134
 
131
- When developing, to install Grift whith your changes onto your local machine, run `bundle exec rake install` . For those with write access: to release a new version, update the version number in `version.rb` , and then run `bundle exec rake release` , which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
135
+ When developing, to install Grift whith your changes onto your local machine, run `bundle exec rake install` .
136
+
137
+ ### Releasing
138
+
139
+ Releases are managed by [release-please](https://github.com/googleapis/release-please). When releasable commits (`feat`, `fix`, `perf`, or breaking changes; see [CONTRIBUTING](.github/CONTRIBUTING.md#pull-request-titles)) land on `main`, it opens (or updates) a release pull request that bumps `lib/grift/version.rb` and `CHANGELOG.md`. For those with write access:
140
+
141
+ 1. Merge the release pull request, which tags the version and creates the GitHub release
142
+ 1. Once CI passes on `main`, approve the `release` deployment in GitHub Actions, which pushes the `.gem` file to [rubygems.org](https://rubygems.org) via trusted publishing and then deploys the [docs](#docs)
143
+
144
+ If publishing fails, use "Re-run failed jobs" on the workflow run. "Re-run all jobs" re-runs release-please, which finds the release already exists and skips publishing.
132
145
 
133
146
  ### Docs
134
147
 
135
- The docs are generated using YARD. To build the docs, first `gem install yard` . Then run `yardoc` to build the new docs. This is always done before a release to update the docs that get published and made available with the gem.
148
+ The docs are generated using YARD and deployed to [GitHub Pages](https://clarkedb.github.io/grift/) after each release. To redeploy them, run the Docs workflow manually with the latest release tag. To build them locally, run `BUNDLE_WITH=docs bundle install` and then `bundle exec yard` (output goes to the gitignored `docs/` folder).
136
149
 
137
150
  ## Contributing
138
151
 
@@ -618,8 +618,8 @@ module Grift
618
618
  # @return [Boolean]
619
619
  #
620
620
  def method_defined?
621
- class_instance.instance_methods(false).include?(@method_name) ||
622
- class_instance.private_instance_methods(false).include?(@method_name)
621
+ class_instance.method_defined?(@method_name, false) ||
622
+ class_instance.private_method_defined?(@method_name, false)
623
623
  end
624
624
 
625
625
  ##
data/lib/grift/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Grift
4
4
  # gem version
5
- VERSION = '3.0.0'
5
+ VERSION = '3.1.1'
6
6
  public_constant :VERSION
7
7
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grift
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clark Brown
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-12-26 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies: []
13
12
  description: A gem for simple mocking and spying in Ruby's MiniTest framework.
14
13
  email:
@@ -17,23 +16,9 @@ executables: []
17
16
  extensions: []
18
17
  extra_rdoc_files: []
19
18
  files:
20
- - ".github/CODEOWNERS"
21
- - ".github/CONTRIBUTING.md"
22
- - ".github/FUNDING.yml"
23
- - ".github/dependabot.yml"
24
- - ".github/workflows/ci.yml"
25
- - ".gitignore"
26
- - ".overcommit.yml"
27
- - ".rubocop.yml"
28
- - ".yardopts"
29
19
  - CHANGELOG.md
30
- - Gemfile
31
20
  - LICENSE
32
21
  - README.md
33
- - Rakefile
34
- - bin/console
35
- - bin/setup
36
- - grift.gemspec
37
22
  - lib/grift.rb
38
23
  - lib/grift/config.rb
39
24
  - lib/grift/config/restricted.yml
@@ -54,7 +39,6 @@ metadata:
54
39
  homepage_uri: https://github.com/clarkedb/grift
55
40
  rubygems_mfa_required: 'true'
56
41
  source_code_uri: https://github.com/clarkedb/grift
57
- post_install_message:
58
42
  rdoc_options: []
59
43
  require_paths:
60
44
  - lib
@@ -69,8 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
53
  - !ruby/object:Gem::Version
70
54
  version: '0'
71
55
  requirements: []
72
- rubygems_version: 3.3.26
73
- signing_key:
56
+ rubygems_version: 4.0.20
74
57
  specification_version: 4
75
58
  summary: Mocking and spying in MiniTest
76
59
  test_files: []
data/.github/CODEOWNERS DELETED
@@ -1 +0,0 @@
1
- .github/ @clarkedb
@@ -1,37 +0,0 @@
1
- # How to become a contributor and submit your own code
2
-
3
- 1. Submit an issue on GitHub describing your proposed change to this repo
4
- 1. A repo owner will respond to your issue promptly
5
- 1. Fork the repo, develop and test your code changes
6
- 1. Ensure that your code adheres to the existing style in the code to which you are contributing
7
- 1. Ensure that your code has an appropriate set of tests which all pass
8
- 1. Title your pull request following [Conventional Commits](https://www.conventionalcommits.org/) styling
9
- 1. Submit a pull request.
10
-
11
- ## Policy on inclusive language
12
-
13
- To make Grift a pleasant and effective experience for everyone, we use try to use inclusive language.
14
-
15
- These resources can help:
16
-
17
- - Google's tutorial [Writing inclusive documentation](https://developers.google.com/style/inclusive-documentation) teaches by example, how to reword non-inclusive things.
18
- - Linux kernel mailing list's [Coding Style: Inclusive Terminology](https://lkml.org/lkml/2020/7/4/229) said "Add no new instances of non-inclusive words, here is a list of words not include new ones of."
19
- - Linguistic Society of America published [Guidelines for Inclusive Language](https://www.linguisticsociety.org/resource/guidelines-inclusive-language) which concluded: "We encourage all linguists to consider the possible reactions of their potential audience to their writing and, in so doing, to choose expository practices and content that is positive, inclusive, and respectful."
20
-
21
- This project attempts to improve in these areas. Join us in doing that important work.
22
-
23
- ## Required checks
24
-
25
- Before pushing your code and opening a PR, we recommend you run the following checks to avoid
26
- our GitHub Actions Workflow to block your contribution.
27
-
28
- ```bash
29
- # install dependencies
30
- $ bundle install
31
-
32
- # Run unit tests and check code coverage
33
- $ bundle exec rake test
34
-
35
- # Check code style
36
- $ bundle exec rubocop
37
- ```
data/.github/FUNDING.yml DELETED
@@ -1,3 +0,0 @@
1
- # github sponsors
2
- github:
3
- - clarkedb
@@ -1,13 +0,0 @@
1
- version: 2
2
-
3
- updates:
4
- - directory: /
5
- open-pull-requests-limit: 10
6
- package-ecosystem: bundler
7
- target-branch: main
8
- schedule:
9
- interval: monthly
10
- labels:
11
- - dependencies
12
- assignees:
13
- - clarkedb
@@ -1,56 +0,0 @@
1
- name: CI
2
-
3
- on: push
4
-
5
- env:
6
- CI: true
7
- GIT_COMMIT_SHA: ${{ github.sha }}
8
- GIT_BRANCH: ${{ github.ref }}
9
-
10
- jobs:
11
- linting:
12
- runs-on: ubuntu-latest
13
- env:
14
- BUNDLE_WITH: lint
15
- BUNDLE_WITHOUT: development:test
16
-
17
- steps:
18
- - uses: actions/checkout@v4
19
-
20
- - name: Set up Ruby 3.3
21
- uses: ruby/setup-ruby@v1
22
- with:
23
- ruby-version: 3.3
24
- bundler-cache: true
25
-
26
- - name: Rubocop
27
- run: bundle exec rubocop --format progress
28
-
29
- build:
30
- needs: [linting]
31
- runs-on: ubuntu-latest
32
- name: build (ruby v${{ matrix.ruby }})
33
- strategy:
34
- fail-fast: false
35
- matrix:
36
- ruby: ["2.7", "3.0", "3.1", "3.2", "3.3", "3.4"]
37
-
38
- steps:
39
- - uses: actions/checkout@v4
40
- - uses: ruby/setup-ruby@v1
41
- with:
42
- ruby-version: ${{ matrix.ruby }}
43
- bundler-cache: true
44
-
45
- - name: Test
46
- run: bundle exec rake --trace test
47
-
48
- - name: Upload coverage to Codecov
49
- if: always()
50
- uses: codecov/codecov-action@v4
51
- with:
52
- token: ${{ secrets.CODECOV_TOKEN }}
53
- files: ./coverage/.resultset.json
54
- name: codecov-umbrella
55
- verbose: true
56
- fail_ci_if_error: true
data/.gitignore DELETED
@@ -1,44 +0,0 @@
1
- *.gem
2
- *.rbc
3
- /.config
4
- /coverage/
5
- /InstalledFiles
6
- /pkg/
7
- /spec/reports/
8
- /spec/examples.txt
9
- /test/tmp/
10
- /test/version_tmp/
11
- /tmp/
12
-
13
- # Used by dotenv library to load environment variables.
14
- .env
15
-
16
- # Ignore Byebug command history file.
17
- .byebug_history
18
-
19
- ## Documentation cache and generated files:
20
- /.yardoc/
21
- /_yardoc/
22
- /doc/
23
- /rdoc/
24
-
25
- ## Environment normalization:
26
- /.bundle/
27
- /vendor/bundle
28
- /lib/bundler/man/
29
-
30
- # for a library or gem, you might want to ignore these files since the code is
31
- # intended to run in multiple environments; otherwise, check them in:
32
- Gemfile.lock
33
- .ruby-version
34
- .ruby-gemset
35
-
36
- # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
37
- .rvmrc
38
-
39
- # Used by RuboCop. Remote config files pulled in from inherit_from directive.
40
- # .rubocop-https?--*
41
-
42
- # IDE and system files
43
- .vscode/
44
- **/.DS_STORE
data/.overcommit.yml DELETED
@@ -1,8 +0,0 @@
1
- PreCommit:
2
- RuboCop:
3
- enabled: true
4
- on_warn: fail # Treat all warnings as failures
5
-
6
- CommitMsg:
7
- ALL:
8
- enabled: false
data/.rubocop.yml DELETED
@@ -1,181 +0,0 @@
1
- # The behavior of RuboCop can be controlled via the .rubocop.yml
2
- # configuration file. It makes it possible to enable/disable
3
- # certain cops (checks) and to alter their behavior if they accept
4
- # any parameters. The file can be placed either in your home
5
- # directory or in some project directory.
6
- #
7
- # RuboCop will start looking for the configuration file in the directory
8
- # where the inspected file is and continue its way up to the root directory.
9
- #
10
- # See https://docs.rubocop.org/rubocop/configuration
11
-
12
- require:
13
- - rubocop-minitest
14
- - rubocop-packaging
15
- - rubocop-performance
16
-
17
- # General
18
- AllCops:
19
- NewCops: enable
20
- SuggestExtensions: false
21
-
22
- # Layout
23
- Layout/BlockAlignment:
24
- Enabled: true
25
- EnforcedStyleAlignWith: start_of_block
26
-
27
- Layout/ClassStructure:
28
- Enabled: true
29
-
30
- Layout/DotPosition:
31
- Enabled: true
32
- EnforcedStyle: leading
33
-
34
- Layout/FirstArrayElementIndentation:
35
- Enabled: true
36
- EnforcedStyle: consistent
37
-
38
- Layout/FirstHashElementIndentation:
39
- Enabled: true
40
- EnforcedStyle: consistent
41
-
42
- Layout/HashAlignment:
43
- Enabled: true
44
- EnforcedColonStyle: key
45
- EnforcedLastArgumentHashStyle: always_inspect
46
-
47
- Layout/LineEndStringConcatenationIndentation:
48
- Enabled: true
49
- EnforcedStyle: aligned
50
-
51
- Layout/LineLength:
52
- Enabled: true
53
- Max: 120
54
-
55
- Layout/MultilineArrayLineBreaks:
56
- Enabled: true
57
-
58
- Layout/MultilineAssignmentLayout:
59
- Enabled: false
60
-
61
- Layout/MultilineHashKeyLineBreaks:
62
- Enabled: true
63
-
64
- Layout/MultilineMethodArgumentLineBreaks:
65
- Enabled: true
66
-
67
- Layout/MultilineMethodCallIndentation:
68
- Enabled: true
69
- EnforcedStyle: indented_relative_to_receiver
70
-
71
- Layout/MultilineOperationIndentation:
72
- Enabled: true
73
- EnforcedStyle: indented
74
-
75
- Layout/ParameterAlignment:
76
- Enabled: true
77
- EnforcedStyle: with_first_parameter
78
-
79
- Layout/RedundantLineBreak:
80
- Enabled: true
81
- InspectBlocks: false
82
-
83
- Layout/SingleLineBlockChain:
84
- Enabled: false
85
-
86
- Layout/SpaceBeforeBrackets:
87
- Enabled: true
88
-
89
- Layout/TrailingEmptyLines:
90
- Enabled: true
91
- EnforcedStyle: final_newline
92
-
93
- # Lint
94
- Lint/AmbiguousAssignment:
95
- Enabled: true
96
-
97
- Lint/AmbiguousOperatorPrecedence:
98
- Enabled: true
99
-
100
- Lint/AmbiguousRange:
101
- Enabled: true
102
-
103
- # Metrics
104
- Metrics/AbcSize:
105
- Max: 25
106
- Exclude:
107
- - "test/**/*"
108
-
109
- Metrics/ClassLength:
110
- Max: 225
111
- CountAsOne:
112
- - array
113
- - hash
114
- - heredoc
115
- Exclude:
116
- - "test/**/*"
117
-
118
- Metrics/MethodLength:
119
- Max: 20
120
- CountAsOne:
121
- - array
122
- - hash
123
- - heredoc
124
- Exclude:
125
- - "test/**/*"
126
-
127
- # Minitest
128
- Minitest/AssertPredicate:
129
- Enabled: false
130
-
131
- Minitest/EmptyLineBeforeAssertionMethods:
132
- Enabled: false
133
-
134
- Minitest/MultipleAssertions:
135
- Max: 10
136
-
137
- Minitest/RefutePredicate:
138
- Enabled: false
139
-
140
- # Naming
141
- Naming/InclusiveLanguage:
142
- Enabled: true
143
-
144
- Naming/MethodParameterName:
145
- AllowedNames:
146
- - n
147
-
148
- Naming/VariableNumber:
149
- EnforcedStyle: snake_case
150
-
151
- # Style
152
- Style/AndOr:
153
- EnforcedStyle: always
154
-
155
- Style/ArrayCoercion:
156
- Enabled: true
157
-
158
- Style/CollectionCompact:
159
- Enabled: true
160
-
161
- Style/ConstantVisibility:
162
- Enabled: true
163
- IgnoreModules: true
164
-
165
- Style/Documentation:
166
- Exclude:
167
- - "test/**/*"
168
-
169
- Style/DocumentationMethod:
170
- Enabled: true
171
- Exclude:
172
- - "test/**/*"
173
-
174
- Style/SelectByRegexp:
175
- Enabled: false
176
-
177
- Style/SwapValues:
178
- Enabled: true
179
-
180
- Style/TrailingCommaInArrayLiteral:
181
- EnforcedStyleForMultiline: comma
data/.yardopts DELETED
@@ -1 +0,0 @@
1
- -o ./docs - LICENSE
data/Gemfile DELETED
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- # Grift's gem dependencies are defined in grift.gemspec
6
- gemspec
7
-
8
- gem 'rake', '>= 12.0'
9
-
10
- group :development, :test do
11
- gem 'minitest', '~> 5.25'
12
- gem 'minitest-reporters', '~> 1.7'
13
- gem 'simplecov', '~> 0.22'
14
- gem 'simplecov-cobertura', '~> 2.1'
15
- end
16
-
17
- group :development, :lint do
18
- gem 'overcommit', '>= 0.64'
19
- gem 'rubocop', '~> 1.69.2'
20
- gem 'rubocop-minitest', '~> 0.36.0'
21
- gem 'rubocop-packaging', '~> 0.5.2'
22
- gem 'rubocop-performance', '~> 1.23.0'
23
- end
data/Rakefile DELETED
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rake/testtask'
5
-
6
- Rake::TestTask.new(:test) do |t|
7
- t.libs << 'test'
8
- t.libs << 'lib'
9
- t.test_files = FileList['test/**/*_test.rb']
10
- end
11
-
12
- task default: :test
data/bin/console DELETED
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require 'bundler/setup'
5
- require 'grift'
6
-
7
- # You can add fixtures and/or initialization code here to make experimenting
8
- # with your gem easier. You can also use a different console, if you like.
9
-
10
- # (If you use this, don't forget to add pry to your Gemfile!)
11
- # require "pry"
12
- # Pry.start
13
-
14
- require 'irb'
15
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
data/grift.gemspec DELETED
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'lib/grift/version'
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = 'grift'
7
- spec.version = Grift::VERSION
8
- spec.authors = ['Clark Brown']
9
- spec.email = ['clark@clark-brown.com']
10
-
11
- spec.summary = 'Mocking and spying in MiniTest'
12
- spec.description = "A gem for simple mocking and spying in Ruby's MiniTest framework."
13
- spec.homepage = 'https://github.com/clarkedb/grift'
14
- spec.license = 'MIT'
15
- spec.required_ruby_version = Gem::Requirement.new('>= 2.7.0')
16
-
17
- spec.metadata = {
18
- 'bug_tracker_uri' => "#{spec.homepage}/issues",
19
- 'changelog_uri' => "#{spec.homepage}/blob/main/CHANGELOG.md",
20
- 'documentation_uri' => spec.homepage.to_s,
21
- 'homepage_uri' => spec.homepage.to_s,
22
- 'rubygems_mfa_required' => 'true',
23
- 'source_code_uri' => spec.homepage.to_s
24
- }
25
-
26
- # Specify which files should be added to the gem when it is released.
27
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
28
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
29
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|docs|spec|features)/}) } # rubocop:disable Packaging/GemspecGit
30
- end
31
- spec.bindir = 'exe'
32
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
- spec.require_paths = ['lib']
34
- end