From 9f00b2705814d2f4809c125cab34875158331820 Mon Sep 17 00:00:00 2001 From: "Peter H. Boling" Date: Sat, 6 Sep 2025 14:08:03 -0600 Subject: [PATCH 1/6] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20kettle-dev=20v1.1.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .git-hooks/commit-msg | 39 +++++++++++++--------- Gemfile.lock | 77 ++++--------------------------------------- oauth2.gemspec | 2 +- 3 files changed, 30 insertions(+), 88 deletions(-) diff --git a/.git-hooks/commit-msg b/.git-hooks/commit-msg index cd918f6b..750c5bb1 100755 --- a/.git-hooks/commit-msg +++ b/.git-hooks/commit-msg @@ -1,21 +1,24 @@ #!/usr/bin/env ruby # vim: set syntax=ruby -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) - -require "rubygems" -require "bundler/setup" - -# External gems -require "gitmoji/regex" +# Do not rely on Bundler; allow running outside a Bundler context +begin + require "rubygems" +rescue LoadError + # continue +end -full_text = File.read(ARGV[0]) -# Is the first character a GitMoji? -gitmoji_index = full_text =~ Gitmoji::Regex::REGEX -if gitmoji_index == 0 - exit 0 -else - denied = < e + warn("gitmoji-regex gem not found: #{e.class}: #{e.message}.\n\tSkipping gitmoji check and allowing commit to proceed.\n\tRecommendation: add 'gitmoji-regex' to your development dependencies to enable this check.") + exit 0 end diff --git a/Gemfile.lock b/Gemfile.lock index 8f4b5353..1982af18 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -28,25 +28,17 @@ GEM addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) ansi (1.5.0) - appraisal2 (3.0.0) - bundler (>= 1.17.3) - rake (>= 10) - thor (>= 0.14) ast (2.4.3) backports (3.25.1) base64 (0.3.0) benchmark (0.4.1) - bigdecimal (3.2.2) - bundler-audit (0.9.2) - bundler (>= 1.2.0, < 3) - thor (~> 1.0) + bigdecimal (3.2.3) coderay (1.1.3) concurrent-ruby (1.3.5) date (3.4.1) debug (1.11.0) irb (~> 1.10) reline (>= 0.3.8) - delegate (0.4.0) diff-lcs (1.6.2) diffy (3.4.4) docile (1.4.1) @@ -89,8 +81,6 @@ GEM gem_bench (2.0.5) bundler (>= 1.14) version_gem (~> 1.1,>= 1.1.4) - gitmoji-regex (1.0.3) - version_gem (~> 1.1,>= 1.1.8) hashie (5.0.0) io-console (0.8.1) irb (1.15.2) @@ -100,17 +90,7 @@ GEM json (2.13.2) jwt (3.1.2) base64 - kettle-dev (1.0.24) - appraisal2 (~> 3.0) - bundler-audit (~> 0.9.2) - gitmoji-regex (~> 1.0,>= 1.0.3) - kettle-test (~> 1.0) - rake (~> 13.0) - require_bench (~> 1.0,>= 1.0.4) - rspec-pending_for - ruby-progressbar (~> 1.13) - stone_checksums (~> 1.0,>= 1.0.2) - version_gem (~> 1.1,>= 1.1.8) + kettle-dev (1.1.7) kettle-soup-cover (1.0.10) simplecov (~> 0.22) simplecov-cobertura (~> 3.0) @@ -120,15 +100,6 @@ GEM simplecov-rcov (~> 0.3,>= 0.3.7) simplecov_json_formatter (~> 0.1,>= 0.1.4) version_gem (~> 1.1,>= 1.1.8) - kettle-test (1.0.3) - appraisal2 (~> 3.0) - rspec (~> 3.0) - rspec-block_is_expected (~> 1.0,>= 1.0.6) - rspec-stubbed_env (~> 1.0,>= 1.0.4) - rspec_junit_formatter (~> 0.6) - silent_stream (~> 1.0,>= 1.0.12) - timecop-rspec (~> 1.0,>= 1.0.3) - version_gem (~> 1.1,>= 1.1.8) kramdown (2.5.1) rexml (>= 3.3.9) kramdown-parser-gfm (1.1.0) @@ -161,9 +132,8 @@ GEM stringio public_suffix (6.0.2) racc (1.8.1) - rack (3.2.0) + rack (3.2.1) rainbow (3.1.1) - rake (13.3.0) rbs (3.9.4) logger rdoc (6.14.2) @@ -178,30 +148,8 @@ GEM regexp_parser (2.11.2) reline (0.6.2) io-console (~> 0.5) - require_bench (1.0.4) - version_gem (>= 1.1.3, < 4) rexml (3.4.2) - rspec (3.13.1) - rspec-core (~> 3.13.0) - rspec-expectations (~> 3.13.0) - rspec-mocks (~> 3.13.0) rspec-block_is_expected (1.0.6) - rspec-core (3.13.5) - rspec-support (~> 3.13.0) - rspec-expectations (3.13.5) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.13.0) - rspec-mocks (3.13.5) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.13.0) - rspec-pending_for (0.1.18) - rspec-core (~> 3.0) - ruby_engine (~> 2.0) - ruby_version (~> 1.0) - rspec-stubbed_env (1.0.4) - rspec-support (3.13.5) - rspec_junit_formatter (0.6.0) - rspec-core (>= 2, < 4, != 2.12.0) rubocop (1.75.8) json (~> 2.3) language_server-protocol (~> 3.17.0.2) @@ -243,7 +191,7 @@ GEM rubocop-rake (0.7.1) lint_roller (~> 1.1) rubocop (>= 1.72.1) - rubocop-rspec (3.6.0) + rubocop-rspec (3.7.0) lint_roller (~> 1.1) rubocop (~> 1.72,>= 1.72.1) rubocop-ruby2_2 (2.0.5) @@ -261,11 +209,6 @@ GEM rubocop (~> 1.72,>= 1.72.1) rubocop-ast (>= 1.44.0, < 2.0) ruby-progressbar (1.13.0) - ruby_engine (2.0.3) - ruby_version (1.0.3) - silent_stream (1.0.12) - logger (~> 1.2) - version_gem (>= 1.1.8, < 3) simplecov (0.22.0) docile (~> 1.1) simplecov-html (~> 0.11) @@ -303,22 +246,14 @@ GEM standard-custom (>= 1.0.2, < 2) standard-performance (>= 1.3.1, < 2) version_gem (>= 1.1.4, < 3) - stone_checksums (1.0.2) - version_gem (~> 1.1,>= 1.1.8) stringio (3.1.7) terminal-table (4.0.0) unicode-display_width (>= 1.1.1, < 4) - thor (1.4.0) - timecop (0.9.10) - timecop-rspec (1.0.3) - delegate (~> 0.1) - rspec (~> 3.0) - timecop (>= 0.7, < 1) unicode-display_width (3.1.5) unicode-emoji (~> 4.0,>= 4.0.4) unicode-emoji (4.0.4) uri (1.0.3) - version_gem (1.1.8) + version_gem (1.1.9) yard (0.9.37) yard-relative_markdown_links (0.5.0) nokogiri (>= 1.14.3, < 2) @@ -334,7 +269,7 @@ DEPENDENCIES benchmark (~> 0.4,>= 0.4.1) debug (>= 1.0.0) gem_bench (~> 2.0,>= 2.0.5) - kettle-dev (~> 1.0,>= 1.0.24) + kettle-dev (~> 1.1,>= 1.1.7) kettle-soup-cover (~> 1.0,>= 1.0.10) kramdown (~> 2.5,>= 2.5.1) kramdown-parser-gfm (~> 1.1) diff --git a/oauth2.gemspec b/oauth2.gemspec index b75ce7e4..4a70ce85 100644 --- a/oauth2.gemspec +++ b/oauth2.gemspec @@ -151,7 +151,7 @@ Thanks, @pboling / @galtzo # Dev, Test, & Release Tasks spec.add_development_dependency("addressable", "~> 2.8", ">= 2.8.7") # ruby>= 2.2 spec.add_development_dependency("backports", "~> 3.25", ">= 3.25.1") # ruby>= 0 - spec.add_development_dependency("kettle-dev", "~> 1.0", ">= 1.0.24") # ruby>= 2.3 + spec.add_development_dependency("kettle-dev", "~> 1.1", ">= 1.1.7") # ruby>= 2.3 spec.add_development_dependency("nkf", "~> 0.2") # ruby>= 2.3 spec.add_development_dependency("rexml", "~> 3.2", ">= 3.2.5") # ruby>= 0 end From ceccd25ca3ce6b9b2c302e3b672679d6c97c0d1f Mon Sep 17 00:00:00 2001 From: "Peter H. Boling" Date: Sat, 6 Sep 2025 14:08:24 -0600 Subject: [PATCH 2/6] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Fix=20typos,=20remove?= =?UTF-8?q?=20accidental=20duplication,=20in=20CHANGELOG.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 188 ++++++++------------------------------------------- 1 file changed, 28 insertions(+), 160 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc9fcde4..230f0cdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,9 +23,11 @@ Please file a bug if you notice a violation of semantic versioning. - [actions/runner - issues/2347][GHA-continue-on-error-ui] - [community/discussions/15452][GHA-allow-failure] ### Changed +- Upgrade to kettle-dev v1.1.7 ### Deprecated ### Removed ### Fixed +- Remove accidentally duplicated lines, and fix typos in CHANGELOG.md - point badge to the correct workflow for Ruby 2.3 (caboose.yml) ### Security @@ -39,25 +41,25 @@ Please file a bug if you notice a violation of semantic versioning. - 90.48% documented ### Added - improved documentation by @pboling -- [gh665][gh665] - Document Mutual TLS (mTLS) usage with example in README (connection_opts.ssl client_cert/client_key and auth_scheme: :tls_client_auth) by @pboling -- [gh666][gh666] - Document usage of flat query params using Faraday::FlatParamsEncoder, with example URI, in README by @pboling +- [gh!665][gh!665] - Document Mutual TLS (mTLS) usage with example in README (connection_opts.ssl client_cert/client_key and auth_scheme: :tls_client_auth) by @pboling +- [gh!666][gh!666] - Document usage of flat query params using Faraday::FlatParamsEncoder, with example URI, in README by @pboling - Spec: verify flat params are preserved with Faraday::FlatParamsEncoder (skips on Faraday without FlatParamsEncoder) -- [gh662][gh662] - documentation notes in code comments and README highlighting OAuth 2.1 differences, with references, by @pboling +- [gh!662][gh!662] - documentation notes in code comments and README highlighting OAuth 2.1 differences, with references, by @pboling - PKCE required for auth code, - exact redirect URI match, - implicit/password grants omitted, - avoid bearer tokens in query, - refresh token guidance for public clients, - simplified client definitions -- [gh663][gh663] - document how to implement an OIDC client with this gem in OIDC.md by @pboling +- [gh!663][gh!663] - document how to implement an OIDC client with this gem in OIDC.md by @pboling - also, list libraries built on top of the oauth2 gem that implement OIDC -- [gh664][gh664] - README: Add example for JHipster UAA (Spring Cloud) password grant, converted from Postman/Net::HTTP by @pboling +- [gh!664][gh!664] - README: Add example for JHipster UAA (Spring Cloud) password grant, converted from Postman/Net::HTTP by @pboling -[gh662]: https://github.com/ruby-oauth/oauth2/pull/662 -[gh663]: https://github.com/ruby-oauth/oauth2/pull/663 -[gh664]: https://github.com/ruby-oauth/oauth2/pull/664 -[gh665]: https://github.com/ruby-oauth/oauth2/pull/665 -[gh666]: https://github.com/ruby-oauth/oauth2/pull/666 +[gh!662]: https://github.com/ruby-oauth/oauth2/pull/662 +[gh!663]: https://github.com/ruby-oauth/oauth2/pull/663 +[gh!664]: https://github.com/ruby-oauth/oauth2/pull/664 +[gh!665]: https://github.com/ruby-oauth/oauth2/pull/665 +[gh!666]: https://github.com/ruby-oauth/oauth2/pull/666 ## [2.0.13] - 2025年08月30日 - TAG: [v2.0.13][2.0.13t] @@ -65,23 +67,23 @@ Please file a bug if you notice a violation of semantic versioning. - BRANCH COVERAGE: 100.00% -- 174/174 branches in 14 files - 90.48% documented ### Added -- [gh656][gh656] - Support revocation with URL-encoded parameters -- [gh660][gh660] - Inline yard documentation by @pboling -- [gh660][gh660] - Complete RBS types documentation by @pboling -- [gh660][gh660]- (more) Comprehensive documentation / examples by @pboling -- [gh657][gh657] - Updated documentation for org-rename by @pboling +- [gh!656][gh!656] - Support revocation with URL-encoded parameters +- [gh!660][gh!660] - Inline yard documentation by @pboling +- [gh!660][gh!660] - Complete RBS types documentation by @pboling +- [gh!660][gh!660]- (more) Comprehensive documentation / examples by @pboling +- [gh!657][gh!657] - Updated documentation for org-rename by @pboling - More funding links by @Aboling0 - Documentation: Added docs/OIDC.md with OIDC 1.0 overview, example, and references ### Changed - Upgrade Code of Conduct to Contributor Covenant 2.1 by @pboling -- [gh660][gh660] - Shrink post-install message by 4 lines by @pboling +- [gh!660][gh!660] - Shrink post-install message by 4 lines by @pboling ### Fixed -- [gh660][gh660] - Links in README (including link to HEAD documentation) by @pboling +- [gh!660][gh!660] - Links in README (including link to HEAD documentation) by @pboling ### Security -[gh660]: https://github.com/ruby-oauth/oauth2/pull/660 -[gh657]: https://github.com/ruby-oauth/oauth2/pull/657 -[gh656]: https://github.com/ruby-oauth/oauth2/pull/656 +[gh!660]: https://github.com/ruby-oauth/oauth2/pull/660 +[gh!657]: https://github.com/ruby-oauth/oauth2/pull/657 +[gh!656]: https://github.com/ruby-oauth/oauth2/pull/656 ## [2.0.12] - 2025年05月31日 - TAG: [v2.0.12][2.0.12t] @@ -89,7 +91,7 @@ Please file a bug if you notice a violation of semantic versioning. - Branch Coverage: 100.0% (174 / 174) - 80.00% documented ### Added -- [gh652][gh652] - Support IETF rfc7515 JSON Web Signature - JWS by @mridang +- [gh!652][gh!652] - Support IETF rfc7515 JSON Web Signature - JWS by @mridang - Support JWT `kid` for key discovery and management - More Documentation by @pboling - Documented Serialization Extensions @@ -103,8 +105,7 @@ Please file a bug if you notice a violation of semantic versioning. - Documentation Typos by @pboling ### Security -[gh652]: https://github.com/oauth-xx/oauth2/pull/652 -[gh652]: https://github.com/ruby-oauth/oauth2/pull/652 +[gh!652]: https://github.com/ruby-oauth/oauth2/pull/652 ## [2.0.11] - 2025年05月23日 - TAG: [v2.0.11][2.0.11t] @@ -112,11 +113,9 @@ Please file a bug if you notice a violation of semantic versioning. - BRANCH COVERAGE: 100.00% -- 172/172 branches in 14 files - 80.00% documented ### Added -- [gh651](https://github.com/oauth-xx/oauth2/pull/651) - `:snaky_hash_klass` option (@pboling) -- [gh651](https://github.com/ruby-oauth/oauth2/pull/651) - `:snaky_hash_klass` option (@pboling) +- [gh!651](https://github.com/ruby-oauth/oauth2/pull/651) - `:snaky_hash_klass` option (@pboling) - More documentation - Codeberg as ethical mirror (@pboling) - - https://codeberg.org/oauth-xx/oauth2 - https://codeberg.org/ruby-oauth/oauth2 - Don't check for cert if SKIP_GEM_SIGNING is set (@pboling) - All runtime deps, including oauth-xx sibling gems, are now tested against HEAD (@pboling) @@ -124,19 +123,15 @@ Please file a bug if you notice a violation of semantic versioning. - YARD config, GFM compatible with relative file links (@pboling) - Documentation site on GitHub Pages (@pboling) - [oauth2.galtzo.com](https://oauth2.galtzo.com) -- [!649](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/649) - Test compatibility with all key minor versions of Hashie v0, v1, v2, v3, v4, v5, HEAD (@pboling) -- [gh651](https://github.com/oauth-xx/oauth2/pull/651) - Mock OAuth2 server for testing (@pboling) - [!649](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/649) - Test compatibility with all key minor versions of Hashie v0, v1, v2, v3, v4, v5, HEAD (@pboling) -- [gh651](https://github.com/ruby-oauth/oauth2/pull/651) - Mock OAuth2 server for testing (@pboling) +- [gh!651](https://github.com/ruby-oauth/oauth2/pull/651) - Mock OAuth2 server for testing (@pboling) - https://github.com/navikt/mock-oauth2-server ### Changed -- [gh651](https://github.com/oauth-xx/oauth2/pull/651) - Upgraded to snaky_hash v2.0.3 (@pboling) -- [gh651](https://github.com/ruby-oauth/oauth2/pull/651) - Upgraded to snaky_hash v2.0.3 (@pboling) +- [gh!651](https://github.com/ruby-oauth/oauth2/pull/651) - Upgraded to snaky_hash v2.0.3 (@pboling) - Provides solution for serialization issues - Updated `spec.homepage_uri` in gemspec to GitHub Pages YARD documentation site (@pboling) ### Fixed -- [gh650](https://github.com/oauth-xx/oauth2/pull/650) - Regression in return type of `OAuth2::Response#parsed` (@pboling) -- [gh650](https://github.com/ruby-oauth/oauth2/pull/650) - Regression in return type of `OAuth2::Response#parsed` (@pboling) +- [gh!650](https://github.com/ruby-oauth/oauth2/pull/650) - Regression in return type of `OAuth2::Response#parsed` (@pboling) - Incorrect documentation related to silencing warnings (@pboling) ## [2.0.10] - 2025年05月17日 @@ -145,10 +140,6 @@ Please file a bug if you notice a violation of semantic versioning. - BRANCH COVERAGE: 100.00% -- 170/170 branches in 14 files - 79.05% documented ### Added -- [gh!632](https://github.com/oauth-xx/oauth2/pull/632) - Added `funding.yml` (@Aboling0) -- [!635](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/635) - Added `.gitlab-ci.yml` (@jessieay) -- [#638](https://gitlab.com/oauth-xx/oauth2/-/issues/638) - Documentation of support for **ILO Fundamental Principles of Rights at Work** (@pboling) -- [!642](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/642) - 20-year certificate for signing gem releases, expires 2045年04月29日 (@pboling) - [gh!632](https://github.com/ruby-oauth/oauth2/pull/632) - Added `funding.yml` (@Aboling0) - [!635](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/635) - Added `.gitlab-ci.yml` (@jessieay) - [#638](https://gitlab.com/ruby-oauth/oauth2/-/issues/638) - Documentation of support for **ILO Fundamental Principles of Rights at Work** (@pboling) @@ -158,47 +149,26 @@ Please file a bug if you notice a violation of semantic versioning. - news_uri - mailing_list_uri - SHA256 and SHA512 Checksums for release -- [!643](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/643) - Add `token_name` option (@pboling) - [!643](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/643) - Add `token_name` option (@pboling) - Specify the parameter name that identifies the access token -- [!645](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/645) - Add `OAuth2::OAUTH_DEBUG` constant, based on `ENV["OAUTH_DEBUG"] (@pboling) -- [!646](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/646) - Add `OAuth2.config.silence_extra_tokens_warning`, default: false (@pboling) -- [!647](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/647) - Add IETF RFC 7009 Token Revocation compliant (@pboling) - [!645](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/645) - Add `OAuth2::OAUTH_DEBUG` constant, based on `ENV["OAUTH_DEBUG"] (@pboling) - [!646](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/646) - Add `OAuth2.config.silence_extra_tokens_warning`, default: false (@pboling) - [!647](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/647) - Add IETF RFC 7009 Token Revocation compliant (@pboling) - `OAuth2::Client#revoke_token` - `OAuth2::AccessToken#revoke` - See: https://datatracker.ietf.org/doc/html/rfc7009 -- [gh!644](https://github.com/oauth-xx/oauth2/pull/644), [gh!645](https://github.com/oauth-xx/oauth2/pull/645) - Added CITATION.cff (@Aboling0) -- [!648](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/648) - Improved documentation (@pboling) - [gh!644](https://github.com/ruby-oauth/oauth2/pull/644), [gh!645](https://github.com/ruby-oauth/oauth2/pull/645) - Added CITATION.cff (@Aboling0) - [!648](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/648) - Improved documentation (@pboling) ### Changed - Default value of `OAuth2.config.silence_extra_tokens_warning` was `false`, now `true` (@pboling) - Gem releases are now cryptographically signed, with a 20-year cert (@pboling) - Allow linux distros to build release without signing, as their package managers sign independently -- [!647](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/647) - `OAuth2::AccessToken#refresh` now supports block param pass through (@pboling) -- [!647](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/647) - `OAuth2.config` is no longer writable (@pboling) -- [!647](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/647) - Errors raised by `OAuth2::AccessToken` are now always `OAuth2::Error` and have better metadata (@pboling) - [!647](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/647) - `OAuth2::AccessToken#refresh` now supports block param pass through (@pboling) - [!647](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/647) - `OAuth2.config` is no longer writable (@pboling) - [!647](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/647) - Errors raised by `OAuth2::AccessToken` are now always `OAuth2::Error` and have better metadata (@pboling) ### Fixed -- [#95](https://gitlab.com/oauth-xx/oauth2/-/issues/95) - restoring an access token via `AccessToken#from_hash` (@pboling) - [#95](https://gitlab.com/ruby-oauth/oauth2/-/issues/95) - restoring an access token via `AccessToken#from_hash` (@pboling) - This was a 13 year old bug report. 😘 -- [#619](https://gitlab.com/oauth-xx/oauth2/-/issues/619) - Internal options (like `snaky`, `raise_errors`, and `parse`) are no longer included in request (@pboling) -- [!633](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/633) - Spaces will now be encoded as `%20` instead of `+` (@nov.matake) -- [!634](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/634) - `CHANGELOG.md` documentation fix (@skuwa229) -- [!638](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/638) - fix `expired?` when `expires_in` is `0` (@disep) -- [!639](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/639) - Only instantiate `OAuth2::Error` if `raise_errors` option is `true` (@glytch2) -- [#639](https://gitlab.com/oauth-xx/oauth2/-/issues/639) - `AccessToken#to_hash` is now serializable, just a regular Hash (@pboling) -- [!640](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/640) - `README.md` documentation fix (@martinezcoder) -- [!641](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/641) - Do not include sensitive information in the `inspect` (@manuelvanrijn) -- [#641](https://gitlab.com/oauth-xx/oauth2/-/issues/641) - Made default JSON response parser more resilient (@pboling) -- [#645](https://gitlab.com/oauth-xx/oauth2/-/issues/645) - Response no longer becomes a snaky hash (@pboling) -- [gh!646](https://github.com/oauth-xx/oauth2/pull/646) - Change `require` to `require_relative` (improve performance) (@Aboling0) - [#619](https://gitlab.com/ruby-oauth/oauth2/-/issues/619) - Internal options (like `snaky`, `raise_errors`, and `parse`) are no longer included in request (@pboling) - [!633](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/633) - Spaces will now be encoded as `%20` instead of `+` (@nov.matake) - [!634](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/634) - `CHANGELOG.md` documentation fix (@skuwa229) @@ -222,35 +192,27 @@ Please file a bug if you notice a violation of semantic versioning. ## [2.0.8] - 2022年09月01日 - TAG: [v2.0.8][2.0.8t] ### Changed -- [!630](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/630) - Extract snaky_hash to external dependency (@pboling) - [!630](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/630) - Extract snaky_hash to external dependency (@pboling) ### Added -- [!631](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/631) - New global configuration option OAuth2.config.silence_extra_tokens_warning (default: false) fixes [#628](https://gitlab.com/oauth-xx/oauth2/-/issues/628) - [!631](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/631) - New global configuration option OAuth2.config.silence_extra_tokens_warning (default: false) fixes [#628](https://gitlab.com/ruby-oauth/oauth2/-/issues/628) ## [2.0.7] - 2022年08月22日 - TAG: [v2.0.7][2.0.7t] ### Added -- [!629](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/629) - Allow POST of JSON to get token (@pboling, @terracatta) - [!629](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/629) - Allow POST of JSON to get token (@pboling, @terracatta) ### Fixed -- [!626](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/626) - Fixes a regression in 2.0.6. Will now prefer the key order from the lookup, not the hash keys (@rickselby) - [!626](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/626) - Fixes a regression in 2.0.6. Will now prefer the key order from the lookup, not the hash keys (@rickselby) - Note: This fixes compatibility with `omniauth-oauth2` and AWS -- [!625](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/625) - Fixes the printed version in the post install message (@hasghari) - [!625](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/625) - Fixes the printed version in the post install message (@hasghari) ## [2.0.6] - 2022年07月13日 - TAG: [v2.0.6][2.0.6t] ### Fixed -- [!624](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/624) - Fixes a [regression](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/623) in v2.0.5, where an error would be raised in refresh_token flows due to (legitimate) lack of access_token (@pboling) - [!624](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/624) - Fixes a [regression](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/623) in v2.0.5, where an error would be raised in refresh_token flows due to (legitimate) lack of access_token (@pboling) ## [2.0.5] - 2022年07月07日 - TAG: [v2.0.5][2.0.5t] ### Fixed -- [!620](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/620) - Documentation improvements, to help with upgrading (@swanson) -- [!621](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/621) - Fixed [#528](https://gitlab.com/oauth-xx/oauth2/-/issues/528) and [#619](https://gitlab.com/oauth-xx/oauth2/-/issues/619) (@pboling) - [!620](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/620) - Documentation improvements, to help with upgrading (@swanson) - [!621](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/621) - Fixed [#528](https://gitlab.com/ruby-oauth/oauth2/-/issues/528) and [#619](https://gitlab.com/ruby-oauth/oauth2/-/issues/619) (@pboling) - All data in responses is now returned, with the access token removed and set as `token` @@ -262,28 +224,20 @@ Please file a bug if you notice a violation of semantic versioning. ## [2.0.4] - 2022年07月01日 - TAG: [v2.0.4][2.0.4t] ### Fixed -- [!618](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/618) - In some scenarios the `snaky` option default value was not applied (@pboling) - [!618](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/618) - In some scenarios the `snaky` option default value was not applied (@pboling) ## [2.0.3] - 2022年06月28日 - TAG: [v2.0.3][2.0.3t] ### Added -- [!611](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/611) - Proper deprecation warnings for `extract_access_token` argument (@pboling) -- [!612](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/612) - Add `snaky: false` option to skip conversion to `OAuth2::SnakyHash` (default: true) (@pboling) - [!611](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/611) - Proper deprecation warnings for `extract_access_token` argument (@pboling) - [!612](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/612) - Add `snaky: false` option to skip conversion to `OAuth2::SnakyHash` (default: true) (@pboling) ### Fixed -- [!608](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/608) - Wrap `Faraday::TimeoutError` in `OAuth2::TimeoutError` (@nbibler) -- [!615](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/615) - Fix support for requests with blocks, see `Faraday::Connection#run_request` (@pboling) - [!608](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/608) - Wrap `Faraday::TimeoutError` in `OAuth2::TimeoutError` (@nbibler) - [!615](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/615) - Fix support for requests with blocks, see `Faraday::Connection#run_request` (@pboling) ## [2.0.2] - 2022年06月24日 - TAG: [v2.0.2][2.0.2t] ### Fixed -- [!604](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/604) - Wrap `Faraday::TimeoutError` in `OAuth2::TimeoutError` (@stanhu) -- [!606](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/606) - Ruby 2.7 deprecation warning fix: Move `access_token_class` parameter into `Client` constructor (@stanhu) -- [!607](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/607) - CHANGELOG correction, reference to `OAuth2::ConnectionError` (@zavan) - [!604](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/604) - Wrap `Faraday::TimeoutError` in `OAuth2::TimeoutError` (@stanhu) - [!606](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/606) - Ruby 2.7 deprecation warning fix: Move `access_token_class` parameter into `Client` constructor (@stanhu) - [!607](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/607) - CHANGELOG correction, reference to `OAuth2::ConnectionError` (@zavan) @@ -297,32 +251,6 @@ Please file a bug if you notice a violation of semantic versioning. ## [2.0.0] - 2022年06月21日 - TAG: [v2.0.0][2.0.0t] ### Added -- [!158](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/158), [!344](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/344) - Optionally pass raw response to parsers (@niels) -- [!190](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/190), [!332](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/332), [!334](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/334), [!335](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/335), [!360](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/360), [!426](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/426), [!427](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/427), [!461](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/461) - Documentation (@josephpage, @pboling, @meganemura, @joshRpowell, @elliotcm) -- [!220](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/220) - Support IETF rfc7523 JWT Bearer Tokens Draft 04+ (@jhmoore) -- [!298](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/298) - Set the response object on the access token on Client#get_token for debugging (@cpetschnig) -- [!305](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/305) - Option: `OAuth2::Client#get_token` - `:access_token_class` (`AccessToken`); user specified class to use for all calls to `get_token` (@styd) -- [!346](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/571) - Modern gem structure (@pboling) -- [!351](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/351) - Support Jruby 9k (@pboling) -- [!362](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/362) - Support SemVer release version scheme (@pboling) -- [!363](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/363) - New method `OAuth2::AccessToken#refresh!` same as old `refresh`, with backwards compatibility alias (@pboling) -- [!364](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/364) - Support `application/hal+json` format (@pboling) -- [!365](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/365) - Support `application/vnd.collection+json` format (@pboling) -- [!376](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/376) - _Documentation_: Example / Test for Google 2-legged JWT (@jhmoore) -- [!381](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/381) - Spec for extra header params on client credentials (@nikz) -- [!394](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/394) - Option: `OAuth2::AccessToken#initialize` - `:expires_latency` (`nil`); number of seconds by which AccessToken validity will be reduced to offset latency (@klippx) -- [!412](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/412) - Support `application/vdn.api+json` format (from jsonapi.org) (@david-christensen) -- [!413](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/413) - _Documentation_: License scan and report (@meganemura) -- [!442](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/442) - Option: `OAuth2::Client#initialize` - `:logger` (`::Logger.new($stdout)`) logger to use when OAUTH_DEBUG is enabled (for parity with `1-4-stable` branch) (@rthbound) -- [!494](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/494) - Support [OIDC 1.0 Private Key JWT](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication); based on the OAuth JWT assertion specification [(RFC 7523)](https://tools.ietf.org/html/rfc7523) (@SteveyblamWork) -- [!549](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/549) - Wrap `Faraday::ConnectionFailed` in `OAuth2::ConnectionError` (@nikkypx) -- [!550](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/550) - Raise error if location header not present when redirecting (@stanhu) -- [!552](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/552) - Add missing `version.rb` require (@ahorek) -- [!553](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/553) - Support `application/problem+json` format (@janz93) -- [!560](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/560) - Support IETF rfc6749, section 2.3.1 - don't set auth params when `nil` (@bouk) -- [!571](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/571) - Support Ruby 3.1 (@pboling) -- [!575](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/575) - Support IETF rfc7231, section 7.1.2 - relative location in redirect (@pboling) -- [!581](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/581) - _Documentation_: of breaking changes (@pboling) - [!158](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/158), [!344](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/344) - Optionally pass raw response to parsers (@niels) - [!190](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/190), [!332](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/332), [!334](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/334), [!335](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/335), [!360](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/360), [!426](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/426), [!427](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/427), [!461](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/461) - Documentation (@josephpage, @pboling, @meganemura, @joshRpowell, @elliotcm) - [!220](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/220) - Support IETF rfc7523 JWT Bearer Tokens Draft 04+ (@jhmoore) @@ -350,16 +278,6 @@ Please file a bug if you notice a violation of semantic versioning. - [!575](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/575) - Support IETF rfc7231, section 7.1.2 - relative location in redirect (@pboling) - [!581](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/581) - _Documentation_: of breaking changes (@pboling) ### Changed -- [!191](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/191) - **BREAKING**: Token is expired if `expired_at` time is `now` (@davestevens) -- [!312](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/312) - **BREAKING**: Set `:basic_auth` as default for `:auth_scheme` instead of `:request_body`. This was default behavior before 1.3.0. (@tetsuya, @wy193777) -- [!317](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/317) - _Dependency_: Upgrade `jwt` to 2.x.x (@travisofthenorth) -- [!338](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/338) - _Dependency_: Switch from `Rack::Utils.escape` to `CGI.escape` (@josephpage) -- [!339](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/339), [!368](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/368), [!424](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/424), [!479](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/479), [!493](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/493), [!539](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/539), [!542](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/542), [!553](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/553) - CI Updates, code coverage, linting, spelling, type fixes, New VERSION constant (@pboling, @josephpage, @ahorek) -- [!410](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/410) - **BREAKING**: Removed the ability to call .error from an OAuth2::Response object (@jhmoore) -- [!414](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/414) - Use Base64.strict_encode64 instead of custom internal logic (@meganemura) -- [!469](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/469) - **BREAKING**: Default value for option `OAuth2::Client` - `:authorize_url` removed leading slash to work with relative paths by default (`'oauth/authorize'`) (@ghost) -- [!469](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/469) - **BREAKING**: Default value for option `OAuth2::Client` - `:token_url` removed leading slash to work with relative paths by default (`'oauth/token'`) (@ghost) -- [!507](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/507), [!575](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/575) - **BREAKING**: Transform keys to snake case, always, by default (ultimately via `rash_alt` gem) - [!191](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/191) - **BREAKING**: Token is expired if `expired_at` time is `now` (@davestevens) - [!312](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/312) - **BREAKING**: Set `:basic_auth` as default for `:auth_scheme` instead of `:request_body`. This was default behavior before 1.3.0. (@tetsuya, @wy193777) - [!317](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/317) - _Dependency_: Upgrade `jwt` to 2.x.x (@travisofthenorth) @@ -373,29 +291,9 @@ Please file a bug if you notice a violation of semantic versioning. - Original keys will still work as previously, in most scenarios, thanks to `rash_alt` gem. - However, this is a _breaking_ change if you rely on `response.parsed.to_h`, as the keys in the result will be snake case. - As of version 2.0.4 you can turn key transformation off with the `snaky: false` option. -- [!576](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/576) - **BREAKING**: Stop rescuing parsing errors (@pboling) -- [!591](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/576) - _DEPRECATION_: `OAuth2::Client` - `:extract_access_token` option is deprecated - [!576](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/576) - **BREAKING**: Stop rescuing parsing errors (@pboling) - [!591](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/576) - _DEPRECATION_: `OAuth2::Client` - `:extract_access_token` option is deprecated ### Fixed -- [!158](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/158), [!344](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/344) - Handling of errors when using `omniauth-facebook` (@niels) -- [!294](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/294) - Fix: "Unexpected middleware set" issue with Faraday when `OAUTH_DEBUG=true` (@spectator, @gafrom) -- [!300](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/300) - _Documentation_: `Oauth2::Error` - Error codes are strings, not symbols (@NobodysNightmare) -- [!318](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/318), [!326](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/326), [!343](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/343), [!347](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/347), [!397](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/397), [!464](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/464), [!561](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/561), [!565](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/565) - _Dependency_: Support all versions of `faraday` (see [gemfiles/README.md][gemfiles/readme] for compatibility matrix with Ruby engines & versions) (@pboling, @raimondasv, @zacharywelch, @Fudoshiki, @ryogift, @sj26, @jdelStrother) -- [!322](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/322), [!331](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/331), [!337](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/337), [!361](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/361), [!371](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/371), [!377](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/377), [!383](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/383), [!392](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/392), [!395](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/395), [!400](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/400), [!401](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/401), [!403](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/403), [!415](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/415), [!567](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/567) - Updated Rubocop, Rubocop plugins and improved code style (@pboling, @bquorning, @lautis, @spectator) -- [!328](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/328) - _Documentation_: Homepage URL is SSL (@amatsuda) -- [!339](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/339), [!479](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/479) - Update testing infrastructure for all supported Rubies (@pboling and @josephpage) -- [!366](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/366) - **Security**: Fix logging to `$stdout` of request and response bodies via Faraday's logger and `ENV["OAUTH_DEBUG"] == 'true'` (@pboling) -- [!380](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/380) - Fix: Stop attempting to encode non-encodable objects in `Oauth2::Error` (@jhmoore) -- [!399](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/399) - Fix: Stop duplicating `redirect_uri` in `get_token` (@markus) -- [!410](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/410) - Fix: `SystemStackError` caused by circular reference between Error and Response classes (@jhmoore) -- [!460](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/460) - Fix: Stop throwing errors when `raise_errors` is set to `false`; analog of [!524](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/524) for `1-4-stable` branch (@joaolrpaulo) -- [!472](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/472) - **Security**: Add checks to enforce `client_secret` is *never* passed in authorize_url query params for `implicit` and `auth_code` grant types (@dfockler) -- [!482](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/482) - _Documentation_: Update last of `intridea` links to `oauth-xx` (@pboling) -- [!536](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/536) - **Security**: Compatibility with more (and recent) Ruby OpenSSL versions, Github Actions, Rubocop updated, analogous to [!535](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/535) on `1-4-stable` branch (@pboling) -- [!595](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/595) - Graceful handling of empty responses from `Client#get_token`, respecting `:raise_errors` config (@stanhu) -- [!596](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/596) - Consistency between `AccessToken#refresh` and `Client#get_token` named arguments (@stanhu) -- [!598](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/598) - Fix unparseable data not raised as error in `Client#get_token`, respecting `:raise_errors` config (@stanhu) - [!158](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/158), [!344](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/344) - Handling of errors when using `omniauth-facebook` (@niels) - [!294](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/294) - Fix: "Unexpected middleware set" issue with Faraday when `OAUTH_DEBUG=true` (@spectator, @gafrom) - [!300](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/300) - _Documentation_: `Oauth2::Error` - Error codes are strings, not symbols (@NobodysNightmare) @@ -415,12 +313,6 @@ Please file a bug if you notice a violation of semantic versioning. - [!596](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/596) - Consistency between `AccessToken#refresh` and `Client#get_token` named arguments (@stanhu) - [!598](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/598) - Fix unparseable data not raised as error in `Client#get_token`, respecting `:raise_errors` config (@stanhu) ### Removed -- [!341](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/341) - Remove Rdoc & Jeweler related files (@josephpage) -- [!342](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/342) - **BREAKING**: Dropped support for Ruby 1.8 (@josephpage) -- [!539](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/539) - Remove reliance on globally included OAuth2 in tests, analog of [!538](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/538) for 1-4-stable (@anderscarling) -- [!566](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/566) - _Dependency_: Removed `wwtd` (@bquorning) -- [!589](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/589), [!593](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/593) - Remove support for expired MAC token draft spec (@stanhu) -- [!590](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/590) - _Dependency_: Removed `multi_json` (@stanhu) - [!341](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/341) - Remove Rdoc & Jeweler related files (@josephpage) - [!342](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/342) - **BREAKING**: Dropped support for Ruby 1.8 (@josephpage) - [!539](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/539) - Remove reliance on globally included OAuth2 in tests, analog of [!538](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/538) for 1-4-stable (@anderscarling) @@ -435,12 +327,10 @@ Please file a bug if you notice a violation of semantic versioning. ## [1.4.10] - 2022年07月01日 - TAG: [v1.4.10][1.4.10t] -- FIPS Compatibility [!587](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/587) (@akostadinov) - FIPS Compatibility [!587](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/587) (@akostadinov) ## [1.4.9] - 2022年02月20日 - TAG: [v1.4.9][1.4.9t] -- Fixes compatibility with Faraday v2 [572](https://gitlab.com/oauth-xx/oauth2/-/issues/572) - Fixes compatibility with Faraday v2 [572](https://gitlab.com/ruby-oauth/oauth2/-/issues/572) - Includes supported versions of Faraday in test matrix: - Faraday ~> 2.2.0 with Ruby>= 2.6 @@ -452,34 +342,24 @@ Please file a bug if you notice a violation of semantic versioning. - TAG: [v1.4.8][1.4.8t] - MFA is now required to push new gem versions (@pboling) - README overhaul w/ new Ruby Version and Engine compatibility policies (@pboling) -- [!569](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/569) Backport fixes ([!561](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/561) by @ryogift), and add more fixes, to allow faraday 1.x and 2.x (@jrochkind) - [!569](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/569) Backport fixes ([!561](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/561) by @ryogift), and add more fixes, to allow faraday 1.x and 2.x (@jrochkind) - Improve Code Coverage tracking (Coveralls, CodeCov, CodeClimate), and enable branch coverage (@pboling) - Add CodeQL, Security Policy, Funding info (@pboling) - Added Ruby 3.1, jruby, jruby-head, truffleruby, truffleruby-head to build matrix (@pboling) -- [!543](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/543) - Support for more modern Open SSL libraries (@pboling) - [!543](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/543) - Support for more modern Open SSL libraries (@pboling) ## [1.4.7] - 2021年03月19日 - TAG: [v1.4.7][1.4.7t] -- [!541](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/541) - Backport fix to expires_at handling [!533](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/533) to 1-4-stable branch. (@dobon) - [!541](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/541) - Backport fix to expires_at handling [!533](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/533) to 1-4-stable branch. (@dobon) ## [1.4.6] - 2021年03月19日 - TAG: [v1.4.6][1.4.6t] -- [!540](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/540) - Add VERSION constant (@pboling) -- [!537](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/537) - Fix crash in OAuth2::Client#get_token (@anderscarling) -- [!538](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/538) - Remove reliance on globally included OAuth2 in tests, analogous to [!539](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/539) on main branch (@anderscarling) - [!540](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/540) - Add VERSION constant (@pboling) - [!537](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/537) - Fix crash in OAuth2::Client#get_token (@anderscarling) - [!538](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/538) - Remove reliance on globally included OAuth2 in tests, analogous to [!539](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/539) on main branch (@anderscarling) ## [1.4.5] - 2021年03月18日 - TAG: [v1.4.5][1.4.5t] -- [!535](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/535) - Compatibility with range of supported Ruby OpenSSL versions, Rubocop updates, Github Actions, analogous to [!536](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/536) on main branch (@pboling) -- [!518](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/518) - Add extract_access_token option to OAuth2::Client (@jonspalmer) -- [!507](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/507) - Fix camel case content type, response keys (@anvox) -- [!500](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/500) - Fix YARD documentation formatting (@olleolleolle) - [!535](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/535) - Compatibility with range of supported Ruby OpenSSL versions, Rubocop updates, Github Actions, analogous to [!536](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/536) on main branch (@pboling) - [!518](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/518) - Add extract_access_token option to OAuth2::Client (@jonspalmer) - [!507](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/507) - Fix camel case content type, response keys (@anvox) @@ -487,34 +367,22 @@ Please file a bug if you notice a violation of semantic versioning. ## [1.4.4] - 2020年02月12日 - TAG: [v1.4.4][1.4.4t] -- [!408](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/408) - Fixed expires_at for formatted time (@Lomey) - [!408](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/408) - Fixed expires_at for formatted time (@Lomey) ## [1.4.3] - 2020年01月29日 - TAG: [v1.4.3][1.4.3t] -- [!483](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/483) - add project metadata to gemspec (@orien) -- [!495](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/495) - support additional types of access token requests (@SteveyblamFreeagent, @thomcorley, @dgholz) - [!483](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/483) - add project metadata to gemspec (@orien) - [!495](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/495) - support additional types of access token requests (@SteveyblamFreeagent, @thomcorley, @dgholz) - Adds support for private_key_jwt and tls_client_auth -- [!433](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/433) - allow field names with square brackets and numbers in params (@asm256) - [!433](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/433) - allow field names with square brackets and numbers in params (@asm256) ## [1.4.2] - 2019年10月01日 - TAG: [v1.4.2][1.4.2t] -- [!478](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/478) - support latest version of faraday & fix build (@pboling) - [!478](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/478) - support latest version of faraday & fix build (@pboling) - Officially support Ruby 2.6 and truffleruby ## [1.4.1] - 2018年10月13日 - TAG: [v1.4.1][1.4.1t] -- [!417](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/417) - update jwt dependency (@thewoolleyman) -- [!419](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/419) - remove rubocop dependency (temporary, added back in [!423](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/423)) (@pboling) -- [!418](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/418) - update faraday dependency (@pboling) -- [!420](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/420) - update [oauth2.gemspec](https://gitlab.com/oauth-xx/oauth2/-/blob/1-4-stable/oauth2.gemspec) (@pboling) -- [!421](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/421) - fix [CHANGELOG.md](https://gitlab.com/oauth-xx/oauth2/-/blob/1-4-stable/CHANGELOG.md) for previous releases (@pboling) -- [!422](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/422) - update [LICENSE](https://gitlab.com/oauth-xx/oauth2/-/blob/1-4-stable/LICENSE) and [README.md](https://gitlab.com/oauth-xx/oauth2/-/blob/1-4-stable/README.md) (@pboling) -- [!423](https://gitlab.com/oauth-xx/oauth2/-/merge_requests/423) - update [builds](https://travis-ci.org/oauth-xx/oauth2/builds), [Rakefile](https://gitlab.com/oauth-xx/oauth2/-/blob/1-4-stable/Rakefile) (@pboling) - [!417](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/417) - update jwt dependency (@thewoolleyman) - [!419](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/419) - remove rubocop dependency (temporary, added back in [!423](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/423)) (@pboling) - [!418](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/418) - update faraday dependency (@pboling) From 50c9a66619e0fb6ab18802b149d3dd15a00129bf Mon Sep 17 00:00:00 2001 From: "Peter H. Boling" Date: Sat, 6 Sep 2025 14:08:34 -0600 Subject: [PATCH 3/6] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20IDE=20s?= =?UTF-8?q?ettings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/oauth2.iml | 32 +++++--------------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/.idea/oauth2.iml b/.idea/oauth2.iml index 5c3d6b0d..62138b86 100755 --- a/.idea/oauth2.iml +++ b/.idea/oauth2.iml @@ -18,19 +18,16 @@ - - + - - @@ -45,15 +42,13 @@ - - + - @@ -74,25 +69,15 @@ - + - - - - - - - - - - @@ -102,14 +87,11 @@ - + - - - @@ -122,16 +104,12 @@ - - - - - + From 7e9650875788188bffb3c5491d3d5e7baec0d71e Mon Sep 17 00:00:00 2001 From: "Peter H. Boling" Date: Sun, 7 Sep 2025 14:30:03 -0600 Subject: [PATCH 4/6] =?UTF-8?q?=F0=9F=8E=A8=20Template=20bootstrap=20by=20?= =?UTF-8?q?kettle-dev-setup=20v1.1.9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .aiignore | 19 + .env.local.example | 15 +- .git-hooks/prepare-commit-msg | 3 +- .github/workflows/current.yml | 5 + .github/workflows/dep-heads.yml | 105 +++ .github/workflows/heads.yml | 9 +- .github/workflows/jruby.yml | 5 + .gitignore | 1 + .gitlab-ci.yml | 72 ++- .idea/oauth2.iml | 30 +- .junie/guidelines.md | 8 +- Appraisals | 71 +- CHANGELOG.md | 608 +----------------- CONTRIBUTING.md | 42 +- FUNDING.md | 4 +- Gemfile | 14 +- Gemfile.lock | 84 ++- README.md | 36 +- Rakefile | 6 +- SECURITY.md | 20 +- bin/kettle-dev-setup | 16 + bin/kettle-dvcs | 16 + bin/kettle-pre-release | 16 + bin/pry | 16 + bin/rbs | 16 + gemfiles/audit.gemfile | 5 +- gemfiles/coverage.gemfile | 5 +- gemfiles/current.gemfile | 2 +- gemfiles/dep_heads.gemfile | 7 + gemfiles/deps_unlocked.gemfile | 13 - gemfiles/head.gemfile | 2 - gemfiles/modular/debug.gemfile | 6 +- gemfiles/modular/erb/r2.3/default.gemfile | 6 + gemfiles/modular/erb/r2.6/v2.2.gemfile | 3 + gemfiles/modular/erb/r2/v3.0.gemfile | 1 + gemfiles/modular/erb/r3.1/v4.0.gemfile | 2 + gemfiles/modular/erb/r3/v5.0.gemfile | 1 + gemfiles/modular/erb/vHEAD.gemfile | 2 + gemfiles/modular/injected.gemfile | 60 ++ gemfiles/modular/mutex_m/r2.4/v0.1.gemfile | 3 + gemfiles/modular/mutex_m/r2/v0.3.gemfile | 2 + gemfiles/modular/mutex_m/r3/v0.3.gemfile | 2 + gemfiles/modular/mutex_m/vHEAD.gemfile | 2 + gemfiles/modular/runtime_heads.gemfile | 2 + gemfiles/modular/stringio/r2.4/v0.0.2.gemfile | 4 + gemfiles/modular/stringio/r2/v3.0.gemfile | 5 + gemfiles/modular/stringio/r3/v3.0.gemfile | 5 + gemfiles/modular/stringio/vHEAD.gemfile | 2 + gemfiles/modular/x_std_libs.gemfile | 2 + gemfiles/modular/x_std_libs/r2.3/libs.gemfile | 3 + gemfiles/modular/x_std_libs/r2.4/libs.gemfile | 3 + gemfiles/modular/x_std_libs/r2.6/libs.gemfile | 3 + gemfiles/modular/x_std_libs/r2/libs.gemfile | 3 + gemfiles/modular/x_std_libs/r3.1/libs.gemfile | 3 + gemfiles/modular/x_std_libs/r3/libs.gemfile | 3 + gemfiles/modular/x_std_libs/vHEAD.gemfile | 3 + gemfiles/ruby_2_3_hashie_v0.gemfile | 2 + gemfiles/ruby_2_3_hashie_v1.gemfile | 2 + gemfiles/ruby_2_3_hashie_v2.gemfile | 2 + gemfiles/ruby_2_3_hashie_v3.gemfile | 2 + gemfiles/ruby_2_3_hashie_v4.gemfile | 2 + gemfiles/ruby_2_3_hashie_v5.gemfile | 2 + gemfiles/ruby_2_4.gemfile | 2 + gemfiles/ruby_2_5.gemfile | 2 + gemfiles/ruby_2_6.gemfile | 5 +- gemfiles/ruby_2_7.gemfile | 5 +- gemfiles/ruby_3_0.gemfile | 5 +- gemfiles/ruby_3_1.gemfile | 5 +- gemfiles/ruby_3_2.gemfile | 5 +- gemfiles/ruby_3_3.gemfile | 5 +- gemfiles/style.gemfile | 5 +- gemfiles/unlocked_deps.gemfile | 2 + oauth2.gemspec | 51 +- 73 files changed, 728 insertions(+), 778 deletions(-) create mode 100644 .aiignore create mode 100644 .github/workflows/dep-heads.yml create mode 100755 bin/kettle-dev-setup create mode 100755 bin/kettle-dvcs create mode 100755 bin/kettle-pre-release create mode 100755 bin/pry create mode 100755 bin/rbs create mode 100644 gemfiles/dep_heads.gemfile delete mode 100644 gemfiles/deps_unlocked.gemfile create mode 100644 gemfiles/modular/erb/r2.3/default.gemfile create mode 100644 gemfiles/modular/erb/r2.6/v2.2.gemfile create mode 100644 gemfiles/modular/erb/r2/v3.0.gemfile create mode 100644 gemfiles/modular/erb/r3.1/v4.0.gemfile create mode 100644 gemfiles/modular/erb/r3/v5.0.gemfile create mode 100644 gemfiles/modular/erb/vHEAD.gemfile create mode 100644 gemfiles/modular/injected.gemfile create mode 100644 gemfiles/modular/mutex_m/r2.4/v0.1.gemfile create mode 100644 gemfiles/modular/mutex_m/r2/v0.3.gemfile create mode 100644 gemfiles/modular/mutex_m/r3/v0.3.gemfile create mode 100644 gemfiles/modular/mutex_m/vHEAD.gemfile create mode 100644 gemfiles/modular/stringio/r2.4/v0.0.2.gemfile create mode 100644 gemfiles/modular/stringio/r2/v3.0.gemfile create mode 100644 gemfiles/modular/stringio/r3/v3.0.gemfile create mode 100644 gemfiles/modular/stringio/vHEAD.gemfile create mode 100644 gemfiles/modular/x_std_libs.gemfile create mode 100644 gemfiles/modular/x_std_libs/r2.3/libs.gemfile create mode 100644 gemfiles/modular/x_std_libs/r2.4/libs.gemfile create mode 100644 gemfiles/modular/x_std_libs/r2.6/libs.gemfile create mode 100644 gemfiles/modular/x_std_libs/r2/libs.gemfile create mode 100644 gemfiles/modular/x_std_libs/r3.1/libs.gemfile create mode 100644 gemfiles/modular/x_std_libs/r3/libs.gemfile create mode 100644 gemfiles/modular/x_std_libs/vHEAD.gemfile diff --git a/.aiignore b/.aiignore new file mode 100644 index 00000000..df6bd8b7 --- /dev/null +++ b/.aiignore @@ -0,0 +1,19 @@ +# An .aiignore file follows the same syntax as a .gitignore file. +# .gitignore documentation: https://git-scm.com/docs/gitignore + +# you can ignore files +.DS_Store +*.log +*.tmp + +# or folders +.devcontainer/ +.qlty/ +.yardoc/ +dist/ +build/ +out/ +coverage/ +docs/ +pkg/ +results/ diff --git a/.env.local.example b/.env.local.example index f07a00ae..dd5423f9 100644 --- a/.env.local.example +++ b/.env.local.example @@ -11,4 +11,17 @@ export AUTOGEN_FIXTURE_CLEANUP=false # autogenerated gem fixture cleanup after e export GIT_HOOK_FOOTER_APPEND=false export GIT_HOOK_FOOTER_APPEND_DEBUG=false export GIT_HOOK_FOOTER_SENTINEL="⚡️ A message from a fellow meat-based-AI ⚡️" -export GITHUB_TOKEN= + +# Tokens used by ci:act and CI helpers for reading workflow/pipeline status via APIs +# GitHub (either GITHUB_TOKEN or GH_TOKEN will be used; fine-grained recommended) +# - Scope/permissions: For fine-grained tokens, grant repository access (Read) and Actions: Read +# - For classic tokens, public repos need no scopes; private repos typically require repo +export GITHUB_TOKEN= +# Alternatively: +# export GH_TOKEN= + +# GitLab (either GITLAB_TOKEN or GL_TOKEN will be used) +# - Scope: read_api is sufficient to read pipelines +export GITLAB_TOKEN= +# Alternatively: +# export GL_TOKEN= diff --git a/.git-hooks/prepare-commit-msg b/.git-hooks/prepare-commit-msg index 48c75470..c6a15570 100755 --- a/.git-hooks/prepare-commit-msg +++ b/.git-hooks/prepare-commit-msg @@ -11,8 +11,7 @@ PROJECT_ROOT="$(CDPATH= cd -- "$(dirname -- "0ドル")"/.. && pwd)" # One of the things .envrc needs to do is add $PROJECT_ROOT/bin/ to the path. # You should have this line at the top of .envrc # PATH_add bin -# NOTE: this project needs to also add exe as well, -# but other libraries won't generally need to do that. +# NOTE: If this project ships exe scripts it should also add that. if command -v direnv>/dev/null 2>&1; then exec direnv exec "$PROJECT_ROOT" "kettle-commit-msg" "$@" else diff --git a/.github/workflows/current.yml b/.github/workflows/current.yml index aca52ba3..72e44fe1 100644 --- a/.github/workflows/current.yml +++ b/.github/workflows/current.yml @@ -65,9 +65,11 @@ jobs: steps: - name: Checkout + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} uses: actions/checkout@v5 - name: Setup Ruby & RubyGems + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} @@ -79,8 +81,11 @@ jobs: # We need to do this first to get appraisal installed. # NOTE: This does not use the primary Gemfile at all. - name: Install Root Appraisal + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} run: bundle - name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }} + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle - name: Tests for ${{ matrix.ruby }}@${{ matrix.appraisal }} via ${{ matrix.exec_cmd }} + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.github/workflows/dep-heads.yml b/.github/workflows/dep-heads.yml new file mode 100644 index 00000000..f6915689 --- /dev/null +++ b/.github/workflows/dep-heads.yml @@ -0,0 +1,105 @@ +# Targets the evergreen latest release of ruby, truffleruby, and jruby +# and tests against the HEAD of runtime dependencies +name: Runtime Deps @ HEAD + +permissions: + contents: read + +env: + K_SOUP_COV_DO: false + +on: + push: + branches: + - 'main' + - '*-stable' + tags: + - '!*' # Do not execute on tags + pull_request: + branches: + - '*' + # Allow manually triggering the workflow. + workflow_dispatch: + +# Cancels all previous workflow runs for the same branch that have not yet completed. +concurrency: + # The concurrency group contains the workflow name and the branch name. + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +jobs: + test: + if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}${{ matrix.name_extra || '' }} + runs-on: ubuntu-latest + continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} + env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps + BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile + strategy: + fail-fast: true + matrix: + include: + # Ruby 3.4 + - ruby: "ruby" + appraisal: "dep-heads" + exec_cmd: "rake test" + gemfile: "Appraisal.root" + rubygems: latest + bundler: latest + + # truffleruby-24.1 + # (according to documentation: targets Ruby 3.3 compatibility) + # (according to runtime: targets Ruby 3.2 compatibility) + - ruby: "truffleruby" + appraisal: "dep-heads" + exec_cmd: "rake test" + gemfile: "Appraisal.root" + rubygems: default + bundler: default + + # jruby-10.0 (targets Ruby 3.4 compatibility) + - ruby: "jruby" + appraisal: "dep-heads" + exec_cmd: "rake test" + gemfile: "Appraisal.root" + rubygems: default + bundler: default + + steps: + - name: Checkout + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} + uses: actions/checkout@v5 + + - name: Setup Ruby & RubyGems + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + rubygems: ${{ matrix.rubygems }} + bundler: ${{ matrix.bundler }} + bundler-cache: false + + # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) + # We need to do this first to get appraisal installed. + # NOTE: This does not use the primary Gemfile at all. + - name: "Install Root Appraisal" + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} + run: bundle + + - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}" + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} + id: bundleAttempt1 + run: bundle exec appraisal ${{ matrix.appraisal }} bundle + # Continue to the next step on failure + continue-on-error: true + + # Effectively an automatic retry of the previous step. + - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}" + # If bundleAttempt1 failed, try again here; Otherwise skip. + if: ${{ steps.bundleAttempt1.outcome == 'failure' && !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} + id: bundleAttempt2 + run: bundle exec appraisal ${{ matrix.appraisal }} bundle + + - name: Tests for ${{ matrix.ruby }}@${{ matrix.appraisal }} via ${{ matrix.exec_cmd }} + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} + run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.github/workflows/heads.yml b/.github/workflows/heads.yml index e2046e66..f8c92d16 100644 --- a/.github/workflows/heads.yml +++ b/.github/workflows/heads.yml @@ -64,9 +64,11 @@ jobs: steps: - name: Checkout + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} uses: actions/checkout@v5 - name: Setup Ruby & RubyGems + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} @@ -78,9 +80,11 @@ jobs: # We need to do this first to get appraisal installed. # NOTE: This does not use the primary Gemfile at all. - name: "Install Root Appraisal" + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} run: bundle - name: "[Attempt 1] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}" + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} id: bundleAttempt1 run: bundle exec appraisal ${{ matrix.appraisal }} bundle # Continue to the next step on failure @@ -88,10 +92,11 @@ jobs: # Effectively an automatic retry of the previous step. - name: "[Attempt 2] Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}" - id: bundleAttempt2 # If bundleAttempt1 failed, try again here; Otherwise skip. - if: steps.bundleAttempt1.outcome == 'failure' + if: ${{ steps.bundleAttempt1.outcome == 'failure' && !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} + id: bundleAttempt2 run: bundle exec appraisal ${{ matrix.appraisal }} bundle - name: Tests for ${{ matrix.ruby }}@${{ matrix.appraisal }} via ${{ matrix.exec_cmd }} + if: ${{ !(env.ACT && startsWith(matrix.ruby, 'jruby')) }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.github/workflows/jruby.yml b/.github/workflows/jruby.yml index 99ea13d9..26cc8f3e 100644 --- a/.github/workflows/jruby.yml +++ b/.github/workflows/jruby.yml @@ -46,9 +46,11 @@ jobs: steps: - name: Checkout + if: ${{ !env.ACT }} uses: actions/checkout@v5 - name: Setup Ruby & RubyGems + if: ${{ !env.ACT }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} @@ -60,8 +62,11 @@ jobs: # We need to do this first to get appraisal installed. # NOTE: This does not use the primary Gemfile at all. - name: Install Root Appraisal + if: ${{ !env.ACT }} run: bundle - name: Appraisal for ${{ matrix.appraisal }} + if: ${{ !env.ACT }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle - name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }} + if: ${{ !env.ACT }} run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }} diff --git a/.gitignore b/.gitignore index 83000f2c..5fb6e270 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ Appraisal.*.gemfile.lock /coverage/ /spec/reports/ /results/ +.output.txt # Documentation /.yardoc/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1d4f5398..3390138a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,16 +1,31 @@ +# You can override the included template(s) by including variable overrides +# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings +# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings +# Dependency Scanning customization: https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-the-dependency-scanning-settings +# Container Scanning customization: https://docs.gitlab.com/ee/user/application_security/container_scanning/#customizing-the-container-scanning-settings +# Note that environment variables can be set in several places +# See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence +#stages: +# - test +#sast: +# stage: test +#include: +# - template: Security/SAST.gitlab-ci.yml + default: - image: ruby:3.2 + image: ruby variables: BUNDLE_INSTALL_FLAGS: "--quiet --jobs=$(nproc) --retry=3" BUNDLE_FROZEN: "false" # No lockfile! + BUNDLE_GEMFILE: Appraisal.root.gemfile K_SOUP_COV_DEBUG: true K_SOUP_COV_DO: true K_SOUP_COV_HARD: true K_SOUP_COV_MIN_BRANCH: 100 K_SOUP_COV_MIN_LINE: 100 K_SOUP_COV_VERBOSE: true - K_SOUP_COV_FORMATTERS: "html,xml,rcov,lcov,json,tty" + K_SOUP_COV_FORMATTERS: "tty" K_SOUP_COV_MULTI_FORMATTERS: true K_SOUP_COV_COMMAND_NAME: "RSpec Coverage" @@ -18,7 +33,7 @@ workflow: rules: # For merge requests, create a pipeline. - if: '$CI_MERGE_REQUEST_IID' - # For default branch, create a pipeline (this includes on schedules, pushes, merges, etc.). + # For the ` main ` branch, create a pipeline (this includes on schedules, pushes, merges, etc.). - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' # For tags, create a pipeline. - if: '$CI_COMMIT_TAG' @@ -27,10 +42,25 @@ workflow: image: ruby:${RUBY_VERSION} stage: test script: - - gem update --silent --system - - bundle config --local path vendor + # || true so we don't fail here, because it'll probably work even if the gem update fails + - gem update --silent --system> /dev/null 2>&1 || true + - mkdir -p vendor/bundle + - bundle config set path 'vendor/bundle' + - chmod +t -R vendor/bundle + - chmod o-w -R vendor/bundle + # Setup appraisal2 - bundle install - - bundle exec rake + # Bundle a specific appraisal + - bundle exec appraisal unlocked_deps bundle install + # Light smoke test + - bundle exec appraisal unlocked_deps bin/rake --tasks + # Run tests, skipping those that won't work in CI + -> + bundle exec appraisal unlocked_deps \ + bin/rspec spec \ + --tag \~ci_skip \ + --format progress \ + --format RspecJunitFormatter cache: key: ${CI_JOB_IMAGE} paths: @@ -40,13 +70,28 @@ workflow: image: ruby:${RUBY_VERSION} stage: test script: - # Because we support EOL Ruby still... - - gem install rubygems-update -v ${RUBYGEMS_VERSION} + # RUBYGEMS_VERSION because we support EOL Ruby still... + # || true so we don't fail here, because it'll probably work even if the gem update fails + - gem install rubygems-update -v ${RUBYGEMS_VERSION} || true # Actually updates both RubyGems and Bundler! - update_rubygems - - bundle config --local path vendor + - mkdir -p vendor/bundle + - bundle config set path 'vendor/bundle' + - chmod +t -R vendor/bundle + - chmod o-w -R vendor/bundle + # Setup appraisal2 - bundle install - - bundle exec rake test + # Bundle a specific appraisal + - bundle exec appraisal ${APPRAISAL} bundle install + # Light smoke test + - bundle exec appraisal ${APPRAISAL} bin/rake --tasks + # Run tests, skipping those that won't work in CI + -> + bundle exec appraisal unlocked_deps \ + bin/rspec spec \ + --tag \~ci_skip \ + --format progress \ + --format RspecJunitFormatter cache: key: ${CI_JOB_IMAGE} paths: @@ -54,7 +99,6 @@ workflow: ruby-current: variables: - BUNDLE_GEMFILE: gemfiles/omnibus.gemfile K_SOUP_COV_DO: true <<: *test_definition-current parallel: @@ -64,7 +108,7 @@ ruby-current: ruby-ruby3_1: variables: RUBYGEMS_VERSION: "3.6.9" - BUNDLE_GEMFILE: gemfiles/vanilla.gemfile + APPRAISAL: ruby_3_1 K_SOUP_COV_DO: false <<: *test_definition-legacy parallel: @@ -74,7 +118,7 @@ ruby-ruby3_1: ruby-ruby3_0: variables: RUBYGEMS_VERSION: "3.5.23" - BUNDLE_GEMFILE: gemfiles/vanilla.gemfile + APPRAISAL: ruby_3_0 K_SOUP_COV_DO: false <<: *test_definition-legacy parallel: @@ -84,7 +128,7 @@ ruby-ruby3_0: ruby-ruby2_7: variables: RUBYGEMS_VERSION: "3.4.22" - BUNDLE_GEMFILE: gemfiles/vanilla.gemfile + APPRAISAL: ruby_2_7 K_SOUP_COV_DO: false <<: *test_definition-legacy parallel: diff --git a/.idea/oauth2.iml b/.idea/oauth2.iml index 62138b86..046be677 100755 --- a/.idea/oauth2.iml +++ b/.idea/oauth2.iml @@ -18,16 +18,18 @@ + - + + @@ -42,20 +44,22 @@ + - + + - + @@ -65,19 +69,28 @@ - + - + + + + + + + + + + @@ -92,6 +105,9 @@ + + + @@ -104,8 +120,12 @@ + + + + diff --git a/.junie/guidelines.md b/.junie/guidelines.md index 949c89b7..ca783b2d 100644 --- a/.junie/guidelines.md +++ b/.junie/guidelines.md @@ -13,7 +13,7 @@ This document captures project-specific knowledge to streamline setup, testing, - See CONTRIBUTING.md for details on how to set up your local environment. - Ruby and Bundler - Runtime supports very old Rubies (>= 2.2), but development tooling targets>= 2.3 because of CI/setup-ruby and dev dependencies. - - Use a recent Ruby (>= 3.1 recommended) for fastest setup and to exercise modern coverage behavior. + - Use a recent Ruby (>= 3.4 recommended) for fastest setup and to exercise modern coverage behavior. - Install dependencies via Bundler in project root: - bundle install - Rake tasks (preferred entry points) @@ -82,7 +82,7 @@ This document captures project-specific knowledge to streamline setup, testing, - During a spec run, the presence of output about missing activation keys is often expected, since it is literally what this library is for. It only indicates a failure if the spec expected all activation keys to be present, and not all specs do. - Adding new tests (guidelines) - Organize specs by class/module. Do not create per-task umbrella spec files; add examples to the existing spec for the class/module under test, or create a new spec file for that class/module if one does not exist. Only create a standalone scenario spec when it intentionally spans multiple classes for an integration/benchmark scenario (e.g., bench_integration_spec), and name it accordingly. - - Spec file names must map to a real class or module under lib/ (mirror the path). Do not introduce specs for non-existent classes or ad-hoc names (e.g., avoid template_helpers_replacements_spec.rb when testing OAuth2::TemplateHelpers; add those examples to template_helpers_spec.rb). + - Spec file names must map to a real class or module under lib/ (mirror the path). Do not introduce specs for non-existent classes or ad-hoc names (e.g., avoid template_helpers_replacements_spec.rb when testing Oauth2::TemplateHelpers; add those examples to template_helpers_spec.rb). - REQUIRED: Provide unit tests for every class, module, constant, and public method. Place them in spec/ mirroring the path under lib/. When a file under lib/ is added or changed, ensure a corresponding spec file exists/updated for it. - Add tests for all public methods and add contexts for variations of their arguments, and arity. - This repository targets near-100% coverage of its public API; when you add new public methods, rake tasks to a rakelib, or config behavior, add or update specs accordingly. @@ -133,3 +133,7 @@ Notes - Coverage reports: NEVER review the HTML report. Use JSON (preferred), XML, LCOV, or RCOV. For this project, always run tests with K_SOUP_COV_FORMATTERS set to "json". - Do NOT modify .envrc in tasks; when running tests locally or in scripts, manually prefix each run, e.g.: K_SOUP_COV_FORMATTERS="json" bin/rspec - For all the kettle-soup-cover options, see .envrc and find the K_SOUP_COV_* env vars. + +Important documentation rules +- Do NOT edit files under docs/ manually; they are generated by `bundle exec rake yard` as part of the default rake task. +- Clarification: Executable scripts provided by this gem (exe/* and installed binstubs) work when the gem is installed as a system gem (gem install oauth2). However, the Rake tasks provided by this gem require oauth2 to be declared as a development dependency in the host project's Gemfile and loaded in the project's Rakefile. diff --git a/Appraisals b/Appraisals index 9c6dd968..51465fb7 100644 --- a/Appraisals +++ b/Appraisals @@ -24,28 +24,25 @@ appraise "unlocked_deps" do eval_gemfile "modular/documentation.gemfile" eval_gemfile "modular/style.gemfile" eval_gemfile "modular/optional.gemfile" + eval_gemfile "modular/x_std_libs.gemfile" end # Used for head (nightly) releases of ruby, truffleruby, and jruby. # Split into discrete appraisals if one of them needs a dependency locked discretely. appraise "head" do - gem "mutex_m", ">= 0.2" - gem "stringio", ">= 3.0" gem "benchmark", "~> 0.4", ">= 0.4.1" eval_gemfile "modular/runtime_heads.gemfile" end -# Test current Rubies against head versions of runtime dependencies -appraise "current-runtime-heads" do - gem "mutex_m", ">= 0.2" - gem "stringio", ">= 3.0" - eval_gemfile "modular/runtime_heads.gemfile" -end - # Used for current releases of ruby, truffleruby, and jruby. # Split into discrete appraisals if one of them needs a dependency locked discretely. appraise "current" do - eval_gemfile "modular/latest.gemfile" + eval_gemfile "modular/x_std_libs.gemfile" +end + +# Test current Rubies against head versions of runtime dependencies +appraise "dep-heads" do + eval_gemfile "modular/runtime_heads.gemfile" end appraise "ruby-2-3-hashie_v0" do @@ -55,6 +52,7 @@ appraise "ruby-2-3-hashie_v0" do eval_gemfile "modular/logger_v1_2.gemfile" eval_gemfile "modular/multi_xml_v0_5.gemfile" eval_gemfile "modular/rack_v1_2.gemfile" + eval_gemfile "modular/x_std_libs/r2.3/libs.gemfile" end appraise "ruby-2-3-hashie_v1" do @@ -64,6 +62,7 @@ appraise "ruby-2-3-hashie_v1" do eval_gemfile "modular/logger_v1_2.gemfile" eval_gemfile "modular/multi_xml_v0_5.gemfile" eval_gemfile "modular/rack_v1_2.gemfile" + eval_gemfile "modular/x_std_libs/r2.3/libs.gemfile" end appraise "ruby-2-3-hashie_v2" do @@ -73,6 +72,7 @@ appraise "ruby-2-3-hashie_v2" do eval_gemfile "modular/logger_v1_2.gemfile" eval_gemfile "modular/multi_xml_v0_5.gemfile" eval_gemfile "modular/rack_v1_2.gemfile" + eval_gemfile "modular/x_std_libs/r2.3/libs.gemfile" end appraise "ruby-2-3-hashie_v3" do @@ -82,6 +82,7 @@ appraise "ruby-2-3-hashie_v3" do eval_gemfile "modular/logger_v1_2.gemfile" eval_gemfile "modular/multi_xml_v0_5.gemfile" eval_gemfile "modular/rack_v1_2.gemfile" + eval_gemfile "modular/x_std_libs/r2.3/libs.gemfile" end appraise "ruby-2-3-hashie_v4" do @@ -91,6 +92,7 @@ appraise "ruby-2-3-hashie_v4" do eval_gemfile "modular/logger_v1_2.gemfile" eval_gemfile "modular/multi_xml_v0_5.gemfile" eval_gemfile "modular/rack_v1_2.gemfile" + eval_gemfile "modular/x_std_libs/r2.3/libs.gemfile" end appraise "ruby-2-3-hashie_v5" do @@ -100,6 +102,7 @@ appraise "ruby-2-3-hashie_v5" do eval_gemfile "modular/logger_v1_2.gemfile" eval_gemfile "modular/multi_xml_v0_5.gemfile" eval_gemfile "modular/rack_v1_2.gemfile" + eval_gemfile "modular/x_std_libs/r2.3/libs.gemfile" end appraise "ruby-2-4" do @@ -109,6 +112,7 @@ appraise "ruby-2-4" do eval_gemfile "modular/logger_v1_2.gemfile" eval_gemfile "modular/multi_xml_v0_5.gemfile" eval_gemfile "modular/rack_v1_6.gemfile" + eval_gemfile "modular/x_std_libs/r2.4/libs.gemfile" end appraise "ruby-2-5" do @@ -118,78 +122,71 @@ appraise "ruby-2-5" do eval_gemfile "modular/logger_v1_5.gemfile" eval_gemfile "modular/multi_xml_v0_6.gemfile" eval_gemfile "modular/rack_v2.gemfile" + eval_gemfile "modular/x_std_libs/r2.6/libs.gemfile" end appraise "ruby-2-6" do - gem "mutex_m", "~> 0.2" - gem "stringio", "~> 3.0" eval_gemfile "modular/faraday_v2.gemfile" eval_gemfile "modular/hashie_v3.gemfile" eval_gemfile "modular/jwt_v2.gemfile" eval_gemfile "modular/logger_v1_5.gemfile" eval_gemfile "modular/multi_xml_v0_6.gemfile" eval_gemfile "modular/rack_v3.gemfile" + eval_gemfile "modular/x_std_libs/r2.6/libs.gemfile" end appraise "ruby-2-7" do - gem "mutex_m", "~> 0.2" - gem "stringio", "~> 3.0" eval_gemfile "modular/faraday_v2.gemfile" eval_gemfile "modular/hashie_v4.gemfile" eval_gemfile "modular/jwt_v2.gemfile" eval_gemfile "modular/logger_v1_7.gemfile" eval_gemfile "modular/multi_xml_v0_6.gemfile" eval_gemfile "modular/rack_v3.gemfile" + eval_gemfile "modular/x_std_libs/r3.1/libs.gemfile" end appraise "ruby-3-0" do - gem "mutex_m", "~> 0.2" - gem "stringio", "~> 3.0" eval_gemfile "modular/faraday_v2.gemfile" eval_gemfile "modular/hashie_v5.gemfile" eval_gemfile "modular/jwt_v2.gemfile" eval_gemfile "modular/logger_v1_7.gemfile" eval_gemfile "modular/multi_xml_v0_6.gemfile" eval_gemfile "modular/rack_v3.gemfile" + eval_gemfile "modular/x_std_libs/r3.1/libs.gemfile" end appraise "ruby-3-1" do - gem "mutex_m", "~> 0.2" - gem "stringio", "~> 3.0" eval_gemfile "modular/faraday_v2.gemfile" eval_gemfile "modular/hashie_v5.gemfile" eval_gemfile "modular/jwt_v2.gemfile" eval_gemfile "modular/logger_v1_7.gemfile" eval_gemfile "modular/multi_xml_v0_6.gemfile" eval_gemfile "modular/rack_v3.gemfile" + eval_gemfile "modular/x_std_libs/r3.1/libs.gemfile" end appraise "ruby-3-2" do - gem "mutex_m", "~> 0.2" - gem "stringio", "~> 3.0" eval_gemfile "modular/faraday_v2.gemfile" eval_gemfile "modular/hashie_v5.gemfile" eval_gemfile "modular/jwt_v2.gemfile" eval_gemfile "modular/logger_v1_7.gemfile" eval_gemfile "modular/multi_xml_v0_7.gemfile" eval_gemfile "modular/rack_v3.gemfile" + eval_gemfile "modular/x_std_libs/r3/libs.gemfile" end appraise "ruby-3-3" do - gem "mutex_m", "~> 0.2" - gem "stringio", "~> 3.0" eval_gemfile "modular/faraday_v2.gemfile" eval_gemfile "modular/hashie_v5.gemfile" eval_gemfile "modular/jwt_v2.gemfile" eval_gemfile "modular/logger_v1_7.gemfile" eval_gemfile "modular/multi_xml_v0_7.gemfile" eval_gemfile "modular/rack_v3.gemfile" + eval_gemfile "modular/x_std_libs/r3/libs.gemfile" end # Only run security audit on the latest version of Ruby appraise "audit" do - gem "mutex_m", "~> 0.2" - gem "stringio", "~> 3.0" eval_gemfile "modular/audit.gemfile" eval_gemfile "modular/faraday_v2.gemfile" eval_gemfile "modular/hashie_v5.gemfile" @@ -197,12 +194,11 @@ appraise "audit" do eval_gemfile "modular/logger_v1_7.gemfile" eval_gemfile "modular/multi_xml_v0_7.gemfile" eval_gemfile "modular/rack_v3.gemfile" + eval_gemfile "modular/x_std_libs/r3/libs.gemfile" end # Only run coverage on the latest version of Ruby appraise "coverage" do - gem "mutex_m", "~> 0.2" - gem "stringio", "~> 3.0" eval_gemfile "modular/coverage.gemfile" eval_gemfile "modular/faraday_v2.gemfile" eval_gemfile "modular/hashie_v5.gemfile" @@ -211,30 +207,11 @@ appraise "coverage" do eval_gemfile "modular/multi_xml_v0_7.gemfile" eval_gemfile "modular/optional.gemfile" eval_gemfile "modular/rack_v3.gemfile" + eval_gemfile "modular/x_std_libs/r3/libs.gemfile" end # Only run linter on the latest version of Ruby (but, in support of oldest supported Ruby version) appraise "style" do - gem "mutex_m", "~> 0.2" - gem "stringio", "~> 3.0" eval_gemfile "modular/style.gemfile" -end - -### Above: Used by GitHub CI Workflows ### -### Below: Used by GitLab CI Pipelines ### - -appraise "omnibus" do - eval_gemfile "modular/audit.gemfile" - eval_gemfile "modular/coverage.gemfile" - eval_gemfile "modular/documentation.gemfile" - eval_gemfile "modular/faraday_v2.gemfile" - eval_gemfile "modular/hashie_v5.gemfile" - eval_gemfile "modular/jwt_v2.gemfile" - eval_gemfile "modular/logger_v1_7.gemfile" - eval_gemfile "modular/multi_xml_v0_7.gemfile" - eval_gemfile "modular/rack_v3.gemfile" - eval_gemfile "modular/style.gemfile" -end - -appraise "vanilla" do + eval_gemfile "modular/x_std_libs/r3/libs.gemfile" end diff --git a/CHANGELOG.md b/CHANGELOG.md index 230f0cdb..252a3fba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,606 +18,30 @@ Please file a bug if you notice a violation of semantic versioning. ## [Unreleased] ### Added -- .env.local.example for contributor happiness -- note lack of builds for JRuby 9.2, 9.3 & Truffleruby 22.3, 23.0 - - [actions/runner - issues/2347][GHA-continue-on-error-ui] - - [community/discussions/15452][GHA-allow-failure] ### Changed -- Upgrade to kettle-dev v1.1.7 ### Deprecated ### Removed ### Fixed -- Remove accidentally duplicated lines, and fix typos in CHANGELOG.md -- point badge to the correct workflow for Ruby 2.3 (caboose.yml) ### Security -[GHA-continue-on-error-ui]: https://github.com/actions/runner/issues/2347 -[GHA-allow-failure]: https://github.com/orgs/community/discussions/15452 - -## [2.0.14] - 2025年08月31日 -- TAG: [v2.0.14][2.0.14t] -- COVERAGE: 100.00% -- 519/519 lines in 14 files -- BRANCH COVERAGE: 100.00% -- 174/174 branches in 14 files -- 90.48% documented -### Added -- improved documentation by @pboling -- [gh!665][gh!665] - Document Mutual TLS (mTLS) usage with example in README (connection_opts.ssl client_cert/client_key and auth_scheme: :tls_client_auth) by @pboling -- [gh!666][gh!666] - Document usage of flat query params using Faraday::FlatParamsEncoder, with example URI, in README by @pboling - - Spec: verify flat params are preserved with Faraday::FlatParamsEncoder (skips on Faraday without FlatParamsEncoder) -- [gh!662][gh!662] - documentation notes in code comments and README highlighting OAuth 2.1 differences, with references, by @pboling - - PKCE required for auth code, - - exact redirect URI match, - - implicit/password grants omitted, - - avoid bearer tokens in query, - - refresh token guidance for public clients, - - simplified client definitions -- [gh!663][gh!663] - document how to implement an OIDC client with this gem in OIDC.md by @pboling - - also, list libraries built on top of the oauth2 gem that implement OIDC -- [gh!664][gh!664] - README: Add example for JHipster UAA (Spring Cloud) password grant, converted from Postman/Net::HTTP by @pboling - -[gh!662]: https://github.com/ruby-oauth/oauth2/pull/662 -[gh!663]: https://github.com/ruby-oauth/oauth2/pull/663 -[gh!664]: https://github.com/ruby-oauth/oauth2/pull/664 -[gh!665]: https://github.com/ruby-oauth/oauth2/pull/665 -[gh!666]: https://github.com/ruby-oauth/oauth2/pull/666 - -## [2.0.13] - 2025年08月30日 -- TAG: [v2.0.13][2.0.13t] -- COVERAGE: 100.00% -- 519/519 lines in 14 files -- BRANCH COVERAGE: 100.00% -- 174/174 branches in 14 files -- 90.48% documented -### Added -- [gh!656][gh!656] - Support revocation with URL-encoded parameters -- [gh!660][gh!660] - Inline yard documentation by @pboling -- [gh!660][gh!660] - Complete RBS types documentation by @pboling -- [gh!660][gh!660]- (more) Comprehensive documentation / examples by @pboling -- [gh!657][gh!657] - Updated documentation for org-rename by @pboling -- More funding links by @Aboling0 -- Documentation: Added docs/OIDC.md with OIDC 1.0 overview, example, and references -### Changed -- Upgrade Code of Conduct to Contributor Covenant 2.1 by @pboling -- [gh!660][gh!660] - Shrink post-install message by 4 lines by @pboling -### Fixed -- [gh!660][gh!660] - Links in README (including link to HEAD documentation) by @pboling -### Security - -[gh!660]: https://github.com/ruby-oauth/oauth2/pull/660 -[gh!657]: https://github.com/ruby-oauth/oauth2/pull/657 -[gh!656]: https://github.com/ruby-oauth/oauth2/pull/656 - -## [2.0.12] - 2025年05月31日 -- TAG: [v2.0.12][2.0.12t] -- Line Coverage: 100.0% (520 / 520) -- Branch Coverage: 100.0% (174 / 174) -- 80.00% documented -### Added -- [gh!652][gh!652] - Support IETF rfc7515 JSON Web Signature - JWS by @mridang - - Support JWT `kid` for key discovery and management -- More Documentation by @pboling - - Documented Serialization Extensions - - Added Gatzo.com FLOSS logo by @Aboling0, CC BY-SA 4.0 -- Documentation site @ https://oauth2.galtzo.com now complete -### Changed -- Updates to gemspec (email, funding url, post install message) -### Deprecated -### Removed -### Fixed -- Documentation Typos by @pboling -### Security - -[gh!652]: https://github.com/ruby-oauth/oauth2/pull/652 - -## [2.0.11] - 2025年05月23日 -- TAG: [v2.0.11][2.0.11t] -- COVERAGE: 100.00% -- 518/518 lines in 14 files -- BRANCH COVERAGE: 100.00% -- 172/172 branches in 14 files -- 80.00% documented -### Added -- [gh!651](https://github.com/ruby-oauth/oauth2/pull/651) - `:snaky_hash_klass` option (@pboling) -- More documentation -- Codeberg as ethical mirror (@pboling) - - https://codeberg.org/ruby-oauth/oauth2 -- Don't check for cert if SKIP_GEM_SIGNING is set (@pboling) -- All runtime deps, including oauth-xx sibling gems, are now tested against HEAD (@pboling) -- All runtime deps, including ruby-oauth sibling gems, are now tested against HEAD (@pboling) -- YARD config, GFM compatible with relative file links (@pboling) -- Documentation site on GitHub Pages (@pboling) - - [oauth2.galtzo.com](https://oauth2.galtzo.com) -- [!649](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/649) - Test compatibility with all key minor versions of Hashie v0, v1, v2, v3, v4, v5, HEAD (@pboling) -- [gh!651](https://github.com/ruby-oauth/oauth2/pull/651) - Mock OAuth2 server for testing (@pboling) - - https://github.com/navikt/mock-oauth2-server -### Changed -- [gh!651](https://github.com/ruby-oauth/oauth2/pull/651) - Upgraded to snaky_hash v2.0.3 (@pboling) - - Provides solution for serialization issues -- Updated `spec.homepage_uri` in gemspec to GitHub Pages YARD documentation site (@pboling) -### Fixed -- [gh!650](https://github.com/ruby-oauth/oauth2/pull/650) - Regression in return type of `OAuth2::Response#parsed` (@pboling) -- Incorrect documentation related to silencing warnings (@pboling) - -## [2.0.10] - 2025年05月17日 -- TAG: [v2.0.10][2.0.10t] -- COVERAGE: 100.00% -- 518/518 lines in 14 files -- BRANCH COVERAGE: 100.00% -- 170/170 branches in 14 files -- 79.05% documented -### Added -- [gh!632](https://github.com/ruby-oauth/oauth2/pull/632) - Added `funding.yml` (@Aboling0) -- [!635](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/635) - Added `.gitlab-ci.yml` (@jessieay) -- [#638](https://gitlab.com/ruby-oauth/oauth2/-/issues/638) - Documentation of support for **ILO Fundamental Principles of Rights at Work** (@pboling) -- [!642](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/642) - 20-year certificate for signing gem releases, expires 2045年04月29日 (@pboling) - - Gemspec metadata - - funding_uri - - news_uri - - mailing_list_uri - - SHA256 and SHA512 Checksums for release -- [!643](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/643) - Add `token_name` option (@pboling) - - Specify the parameter name that identifies the access token -- [!645](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/645) - Add `OAuth2::OAUTH_DEBUG` constant, based on `ENV["OAUTH_DEBUG"] (@pboling) -- [!646](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/646) - Add `OAuth2.config.silence_extra_tokens_warning`, default: false (@pboling) -- [!647](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/647) - Add IETF RFC 7009 Token Revocation compliant (@pboling) - - `OAuth2::Client#revoke_token` - - `OAuth2::AccessToken#revoke` - - See: https://datatracker.ietf.org/doc/html/rfc7009 -- [gh!644](https://github.com/ruby-oauth/oauth2/pull/644), [gh!645](https://github.com/ruby-oauth/oauth2/pull/645) - Added CITATION.cff (@Aboling0) -- [!648](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/648) - Improved documentation (@pboling) -### Changed -- Default value of `OAuth2.config.silence_extra_tokens_warning` was `false`, now `true` (@pboling) -- Gem releases are now cryptographically signed, with a 20-year cert (@pboling) - - Allow linux distros to build release without signing, as their package managers sign independently -- [!647](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/647) - `OAuth2::AccessToken#refresh` now supports block param pass through (@pboling) -- [!647](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/647) - `OAuth2.config` is no longer writable (@pboling) -- [!647](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/647) - Errors raised by `OAuth2::AccessToken` are now always `OAuth2::Error` and have better metadata (@pboling) -### Fixed -- [#95](https://gitlab.com/ruby-oauth/oauth2/-/issues/95) - restoring an access token via `AccessToken#from_hash` (@pboling) - - This was a 13 year old bug report. 😘 -- [#619](https://gitlab.com/ruby-oauth/oauth2/-/issues/619) - Internal options (like `snaky`, `raise_errors`, and `parse`) are no longer included in request (@pboling) -- [!633](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/633) - Spaces will now be encoded as `%20` instead of `+` (@nov.matake) -- [!634](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/634) - `CHANGELOG.md` documentation fix (@skuwa229) -- [!638](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/638) - fix `expired?` when `expires_in` is `0` (@disep) -- [!639](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/639) - Only instantiate `OAuth2::Error` if `raise_errors` option is `true` (@glytch2) -- [#639](https://gitlab.com/ruby-oauth/oauth2/-/issues/639) - `AccessToken#to_hash` is now serializable, just a regular Hash (@pboling) -- [!640](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/640) - `README.md` documentation fix (@martinezcoder) -- [!641](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/641) - Do not include sensitive information in the `inspect` (@manuelvanrijn) -- [#641](https://gitlab.com/ruby-oauth/oauth2/-/issues/641) - Made default JSON response parser more resilient (@pboling) -- [#645](https://gitlab.com/ruby-oauth/oauth2/-/issues/645) - Response no longer becomes a snaky hash (@pboling) -- [gh!646](https://github.com/ruby-oauth/oauth2/pull/646) - Change `require` to `require_relative` (improve performance) (@Aboling0) - -## [2.0.9] - 2022年09月16日 -- TAG: [v2.0.9][2.0.9t] -### Added -- More specs (@pboling) -### Changed -- Complete migration to main branch as default (@pboling) -- Complete migration to Gitlab, updating all links, and references in VCS-managed files (@pboling) - -## [2.0.8] - 2022年09月01日 -- TAG: [v2.0.8][2.0.8t] -### Changed -- [!630](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/630) - Extract snaky_hash to external dependency (@pboling) -### Added -- [!631](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/631) - New global configuration option OAuth2.config.silence_extra_tokens_warning (default: false) fixes [#628](https://gitlab.com/ruby-oauth/oauth2/-/issues/628) - -## [2.0.7] - 2022年08月22日 -- TAG: [v2.0.7][2.0.7t] -### Added -- [!629](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/629) - Allow POST of JSON to get token (@pboling, @terracatta) -### Fixed -- [!626](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/626) - Fixes a regression in 2.0.6. Will now prefer the key order from the lookup, not the hash keys (@rickselby) - - Note: This fixes compatibility with `omniauth-oauth2` and AWS -- [!625](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/625) - Fixes the printed version in the post install message (@hasghari) - -## [2.0.6] - 2022年07月13日 -- TAG: [v2.0.6][2.0.6t] +## [1.0.1] - 2025年08月24日 +- TAG: [v1.0.1][1.0.1t] +- COVERAGE: 100.00% -- 130/130 lines in 7 files +- BRANCH COVERAGE: 96.00% -- 48/50 branches in 7 files +- 100% documented ### Fixed -- [!624](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/624) - Fixes a [regression](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/623) in v2.0.5, where an error would be raised in refresh_token flows due to (legitimate) lack of access_token (@pboling) - -## [2.0.5] - 2022年07月07日 -- TAG: [v2.0.5][2.0.5t] -### Fixed -- [!620](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/620) - Documentation improvements, to help with upgrading (@swanson) -- [!621](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/621) - Fixed [#528](https://gitlab.com/ruby-oauth/oauth2/-/issues/528) and [#619](https://gitlab.com/ruby-oauth/oauth2/-/issues/619) (@pboling) - - All data in responses is now returned, with the access token removed and set as `token` - - `refresh_token` is no longer dropped - - **BREAKING**: Microsoft's `id_token` is no longer left as `access_token['id_token']`, but moved to the standard `access_token.token` that all other strategies use - - Remove `parse` and `snaky` from options so they don't get included in response - - There is now 100% test coverage, for lines _and_ branches, and it will stay that way. - -## [2.0.4] - 2022年07月01日 -- TAG: [v2.0.4][2.0.4t] -### Fixed -- [!618](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/618) - In some scenarios the `snaky` option default value was not applied (@pboling) - -## [2.0.3] - 2022年06月28日 -- TAG: [v2.0.3][2.0.3t] -### Added -- [!611](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/611) - Proper deprecation warnings for `extract_access_token` argument (@pboling) -- [!612](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/612) - Add `snaky: false` option to skip conversion to `OAuth2::SnakyHash` (default: true) (@pboling) -### Fixed -- [!608](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/608) - Wrap `Faraday::TimeoutError` in `OAuth2::TimeoutError` (@nbibler) -- [!615](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/615) - Fix support for requests with blocks, see `Faraday::Connection#run_request` (@pboling) - -## [2.0.2] - 2022年06月24日 -- TAG: [v2.0.2][2.0.2t] -### Fixed -- [!604](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/604) - Wrap `Faraday::TimeoutError` in `OAuth2::TimeoutError` (@stanhu) -- [!606](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/606) - Ruby 2.7 deprecation warning fix: Move `access_token_class` parameter into `Client` constructor (@stanhu) -- [!607](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/607) - CHANGELOG correction, reference to `OAuth2::ConnectionError` (@zavan) - -## [2.0.1] - 2022年06月22日 -- TAG: [v2.0.1][2.0.1t] -### Added -- Documentation improvements (@pboling) -- Increased test coverage to 99% (@pboling) +- bugfix: oopsie -## [2.0.0] - 2022年06月21日 -- TAG: [v2.0.0][2.0.0t] -### Added -- [!158](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/158), [!344](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/344) - Optionally pass raw response to parsers (@niels) -- [!190](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/190), [!332](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/332), [!334](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/334), [!335](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/335), [!360](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/360), [!426](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/426), [!427](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/427), [!461](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/461) - Documentation (@josephpage, @pboling, @meganemura, @joshRpowell, @elliotcm) -- [!220](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/220) - Support IETF rfc7523 JWT Bearer Tokens Draft 04+ (@jhmoore) -- [!298](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/298) - Set the response object on the access token on Client#get_token for debugging (@cpetschnig) -- [!305](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/305) - Option: `OAuth2::Client#get_token` - `:access_token_class` (`AccessToken`); user specified class to use for all calls to `get_token` (@styd) -- [!346](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/571) - Modern gem structure (@pboling) -- [!351](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/351) - Support Jruby 9k (@pboling) -- [!362](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/362) - Support SemVer release version scheme (@pboling) -- [!363](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/363) - New method `OAuth2::AccessToken#refresh!` same as old `refresh`, with backwards compatibility alias (@pboling) -- [!364](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/364) - Support `application/hal+json` format (@pboling) -- [!365](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/365) - Support `application/vnd.collection+json` format (@pboling) -- [!376](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/376) - _Documentation_: Example / Test for Google 2-legged JWT (@jhmoore) -- [!381](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/381) - Spec for extra header params on client credentials (@nikz) -- [!394](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/394) - Option: `OAuth2::AccessToken#initialize` - `:expires_latency` (`nil`); number of seconds by which AccessToken validity will be reduced to offset latency (@klippx) -- [!412](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/412) - Support `application/vdn.api+json` format (from jsonapi.org) (@david-christensen) -- [!413](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/413) - _Documentation_: License scan and report (@meganemura) -- [!442](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/442) - Option: `OAuth2::Client#initialize` - `:logger` (`::Logger.new($stdout)`) logger to use when OAUTH_DEBUG is enabled (for parity with `1-4-stable` branch) (@rthbound) -- [!494](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/494) - Support [OIDC 1.0 Private Key JWT](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication); based on the OAuth JWT assertion specification [(RFC 7523)](https://tools.ietf.org/html/rfc7523) (@SteveyblamWork) -- [!549](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/549) - Wrap `Faraday::ConnectionFailed` in `OAuth2::ConnectionError` (@nikkypx) -- [!550](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/550) - Raise error if location header not present when redirecting (@stanhu) -- [!552](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/552) - Add missing `version.rb` require (@ahorek) -- [!553](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/553) - Support `application/problem+json` format (@janz93) -- [!560](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/560) - Support IETF rfc6749, section 2.3.1 - don't set auth params when `nil` (@bouk) -- [!571](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/571) - Support Ruby 3.1 (@pboling) -- [!575](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/575) - Support IETF rfc7231, section 7.1.2 - relative location in redirect (@pboling) -- [!581](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/581) - _Documentation_: of breaking changes (@pboling) -### Changed -- [!191](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/191) - **BREAKING**: Token is expired if `expired_at` time is `now` (@davestevens) -- [!312](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/312) - **BREAKING**: Set `:basic_auth` as default for `:auth_scheme` instead of `:request_body`. This was default behavior before 1.3.0. (@tetsuya, @wy193777) -- [!317](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/317) - _Dependency_: Upgrade `jwt` to 2.x.x (@travisofthenorth) -- [!338](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/338) - _Dependency_: Switch from `Rack::Utils.escape` to `CGI.escape` (@josephpage) -- [!339](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/339), [!368](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/368), [!424](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/424), [!479](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/479), [!493](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/493), [!539](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/539), [!542](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/542), [!553](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/553) - CI Updates, code coverage, linting, spelling, type fixes, New VERSION constant (@pboling, @josephpage, @ahorek) -- [!410](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/410) - **BREAKING**: Removed the ability to call .error from an OAuth2::Response object (@jhmoore) -- [!414](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/414) - Use Base64.strict_encode64 instead of custom internal logic (@meganemura) -- [!469](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/469) - **BREAKING**: Default value for option `OAuth2::Client` - `:authorize_url` removed leading slash to work with relative paths by default (`'oauth/authorize'`) (@ghost) -- [!469](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/469) - **BREAKING**: Default value for option `OAuth2::Client` - `:token_url` removed leading slash to work with relative paths by default (`'oauth/token'`) (@ghost) -- [!507](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/507), [!575](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/575) - **BREAKING**: Transform keys to snake case, always, by default (ultimately via `rash_alt` gem) - - Original keys will still work as previously, in most scenarios, thanks to `rash_alt` gem. - - However, this is a _breaking_ change if you rely on `response.parsed.to_h`, as the keys in the result will be snake case. - - As of version 2.0.4 you can turn key transformation off with the `snaky: false` option. -- [!576](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/576) - **BREAKING**: Stop rescuing parsing errors (@pboling) -- [!591](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/576) - _DEPRECATION_: `OAuth2::Client` - `:extract_access_token` option is deprecated -### Fixed -- [!158](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/158), [!344](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/344) - Handling of errors when using `omniauth-facebook` (@niels) -- [!294](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/294) - Fix: "Unexpected middleware set" issue with Faraday when `OAUTH_DEBUG=true` (@spectator, @gafrom) -- [!300](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/300) - _Documentation_: `Oauth2::Error` - Error codes are strings, not symbols (@NobodysNightmare) -- [!318](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/318), [!326](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/326), [!343](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/343), [!347](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/347), [!397](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/397), [!464](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/464), [!561](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/561), [!565](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/565) - _Dependency_: Support all versions of `faraday` (see [gemfiles/README.md][gemfiles/readme] for compatibility matrix with Ruby engines & versions) (@pboling, @raimondasv, @zacharywelch, @Fudoshiki, @ryogift, @sj26, @jdelStrother) -- [!322](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/322), [!331](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/331), [!337](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/337), [!361](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/361), [!371](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/371), [!377](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/377), [!383](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/383), [!392](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/392), [!395](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/395), [!400](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/400), [!401](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/401), [!403](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/403), [!415](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/415), [!567](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/567) - Updated Rubocop, Rubocop plugins and improved code style (@pboling, @bquorning, @lautis, @spectator) -- [!328](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/328) - _Documentation_: Homepage URL is SSL (@amatsuda) -- [!339](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/339), [!479](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/479) - Update testing infrastructure for all supported Rubies (@pboling and @josephpage) -- [!366](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/366) - **Security**: Fix logging to `$stdout` of request and response bodies via Faraday's logger and `ENV["OAUTH_DEBUG"] == 'true'` (@pboling) -- [!380](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/380) - Fix: Stop attempting to encode non-encodable objects in `Oauth2::Error` (@jhmoore) -- [!399](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/399) - Fix: Stop duplicating `redirect_uri` in `get_token` (@markus) -- [!410](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/410) - Fix: `SystemStackError` caused by circular reference between Error and Response classes (@jhmoore) -- [!460](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/460) - Fix: Stop throwing errors when `raise_errors` is set to `false`; analog of [!524](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/524) for `1-4-stable` branch (@joaolrpaulo) -- [!472](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/472) - **Security**: Add checks to enforce `client_secret` is *never* passed in authorize_url query params for `implicit` and `auth_code` grant types (@dfockler) -- [!482](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/482) - _Documentation_: Update last of `intridea` links to `ruby-oauth` (@pboling) -- [!536](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/536) - **Security**: Compatibility with more (and recent) Ruby OpenSSL versions, Github Actions, Rubocop updated, analogous to [!535](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/535) on `1-4-stable` branch (@pboling) -- [!595](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/595) - Graceful handling of empty responses from `Client#get_token`, respecting `:raise_errors` config (@stanhu) -- [!596](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/596) - Consistency between `AccessToken#refresh` and `Client#get_token` named arguments (@stanhu) -- [!598](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/598) - Fix unparseable data not raised as error in `Client#get_token`, respecting `:raise_errors` config (@stanhu) -### Removed -- [!341](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/341) - Remove Rdoc & Jeweler related files (@josephpage) -- [!342](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/342) - **BREAKING**: Dropped support for Ruby 1.8 (@josephpage) -- [!539](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/539) - Remove reliance on globally included OAuth2 in tests, analog of [!538](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/538) for 1-4-stable (@anderscarling) -- [!566](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/566) - _Dependency_: Removed `wwtd` (@bquorning) -- [!589](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/589), [!593](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/593) - Remove support for expired MAC token draft spec (@stanhu) -- [!590](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/590) - _Dependency_: Removed `multi_json` (@stanhu) - -## [1.4.11] - 2022年09月16日 -- TAG: [v1.4.11][1.4.11t] -- Complete migration to main branch as default (@pboling) -- Complete migration to Gitlab, updating all links, and references in VCS-managed files (@pboling) - -## [1.4.10] - 2022年07月01日 -- TAG: [v1.4.10][1.4.10t] -- FIPS Compatibility [!587](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/587) (@akostadinov) - -## [1.4.9] - 2022年02月20日 -- TAG: [v1.4.9][1.4.9t] -- Fixes compatibility with Faraday v2 [572](https://gitlab.com/ruby-oauth/oauth2/-/issues/572) -- Includes supported versions of Faraday in test matrix: - - Faraday ~> 2.2.0 with Ruby>= 2.6 - - Faraday ~> 1.10 with Ruby>= 2.4 - - Faraday ~> 0.17.3 with Ruby>= 1.9 -- Add Windows and MacOS to test matrix - -## [1.4.8] - 2022年02月18日 -- TAG: [v1.4.8][1.4.8t] -- MFA is now required to push new gem versions (@pboling) -- README overhaul w/ new Ruby Version and Engine compatibility policies (@pboling) -- [!569](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/569) Backport fixes ([!561](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/561) by @ryogift), and add more fixes, to allow faraday 1.x and 2.x (@jrochkind) -- Improve Code Coverage tracking (Coveralls, CodeCov, CodeClimate), and enable branch coverage (@pboling) -- Add CodeQL, Security Policy, Funding info (@pboling) -- Added Ruby 3.1, jruby, jruby-head, truffleruby, truffleruby-head to build matrix (@pboling) -- [!543](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/543) - Support for more modern Open SSL libraries (@pboling) - -## [1.4.7] - 2021年03月19日 -- TAG: [v1.4.7][1.4.7t] -- [!541](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/541) - Backport fix to expires_at handling [!533](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/533) to 1-4-stable branch. (@dobon) - -## [1.4.6] - 2021年03月19日 -- TAG: [v1.4.6][1.4.6t] -- [!540](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/540) - Add VERSION constant (@pboling) -- [!537](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/537) - Fix crash in OAuth2::Client#get_token (@anderscarling) -- [!538](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/538) - Remove reliance on globally included OAuth2 in tests, analogous to [!539](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/539) on main branch (@anderscarling) - -## [1.4.5] - 2021年03月18日 -- TAG: [v1.4.5][1.4.5t] -- [!535](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/535) - Compatibility with range of supported Ruby OpenSSL versions, Rubocop updates, Github Actions, analogous to [!536](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/536) on main branch (@pboling) -- [!518](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/518) - Add extract_access_token option to OAuth2::Client (@jonspalmer) -- [!507](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/507) - Fix camel case content type, response keys (@anvox) -- [!500](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/500) - Fix YARD documentation formatting (@olleolleolle) - -## [1.4.4] - 2020年02月12日 -- TAG: [v1.4.4][1.4.4t] -- [!408](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/408) - Fixed expires_at for formatted time (@Lomey) - -## [1.4.3] - 2020年01月29日 -- TAG: [v1.4.3][1.4.3t] -- [!483](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/483) - add project metadata to gemspec (@orien) -- [!495](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/495) - support additional types of access token requests (@SteveyblamFreeagent, @thomcorley, @dgholz) - - Adds support for private_key_jwt and tls_client_auth -- [!433](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/433) - allow field names with square brackets and numbers in params (@asm256) - -## [1.4.2] - 2019年10月01日 -- TAG: [v1.4.2][1.4.2t] -- [!478](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/478) - support latest version of faraday & fix build (@pboling) - - Officially support Ruby 2.6 and truffleruby - -## [1.4.1] - 2018年10月13日 -- TAG: [v1.4.1][1.4.1t] -- [!417](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/417) - update jwt dependency (@thewoolleyman) -- [!419](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/419) - remove rubocop dependency (temporary, added back in [!423](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/423)) (@pboling) -- [!418](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/418) - update faraday dependency (@pboling) -- [!420](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/420) - update [oauth2.gemspec](https://gitlab.com/ruby-oauth/oauth2/-/blob/1-4-stable/oauth2.gemspec) (@pboling) -- [!421](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/421) - fix [CHANGELOG.md](https://gitlab.com/ruby-oauth/oauth2/-/blob/1-4-stable/CHANGELOG.md) for previous releases (@pboling) -- [!422](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/422) - update [LICENSE](https://gitlab.com/ruby-oauth/oauth2/-/blob/1-4-stable/LICENSE) and [README.md](https://gitlab.com/ruby-oauth/oauth2/-/blob/1-4-stable/README.md) (@pboling) -- [!423](https://gitlab.com/ruby-oauth/oauth2/-/merge_requests/423) - update [builds](https://travis-ci.org/ruby-oauth/oauth2/builds), [Rakefile](https://gitlab.com/ruby-oauth/oauth2/-/blob/1-4-stable/Rakefile) (@pboling) - - officially document supported Rubies - * Ruby 1.9.3 - * Ruby 2.0.0 - * Ruby 2.1 - * Ruby 2.2 - * [JRuby 1.7][jruby-1.7] (targets MRI v1.9) - * [JRuby 9.0][jruby-9.0] (targets MRI v2.0) - * Ruby 2.3 - * Ruby 2.4 - * Ruby 2.5 - * [JRuby 9.1][jruby-9.1] (targets MRI v2.3) - * [JRuby 9.2][jruby-9.2] (targets MRI v2.5) - -[jruby-1.7]: https://www.jruby.org/2017/05/11/jruby-1-7-27.html -[jruby-9.0]: https://www.jruby.org/2016/01/26/jruby-9-0-5-0.html -[jruby-9.1]: https://www.jruby.org/2017/05/16/jruby-9-1-9-0.html -[jruby-9.2]: https://www.jruby.org/2018/05/24/jruby-9-2-0-0.html - -## [1.4.0] - 2017年06月09日 -- TAG: [v1.4.0][1.4.0t] -- Drop Ruby 1.8.7 support (@sferik) -- Fix some RuboCop offenses (@sferik) -- _Dependency_: Remove Yardstick (@sferik) -- _Dependency_: Upgrade Faraday to 0.12 (@sferik) - -## [1.3.1] - 2017年03月03日 -- TAG: [v1.3.1][1.3.1t] -- Add support for Ruby 2.4.0 (@pschambacher) -- _Dependency_: Upgrade Faraday to Faraday 0.11 (@mcfiredrill, @rhymes, @pschambacher) - -## [1.3.0] - 2016年12月28日 -- TAG: [v1.3.0][1.3.0t] -- Add support for header-based authentication to the `Client` so it can be used across the library (@bjeanes) -- Default to header-based authentication when getting a token from an authorisation code (@maletor) -- **Breaking**: Allow an `auth_scheme` (`:basic_auth` or `:request_body`) to be set on the client, defaulting to `:request_body` to maintain backwards compatibility (@maletor, @bjeanes) -- Handle `redirect_uri` according to the OAuth 2 spec, so it is passed on redirect and at the point of token exchange (@bjeanes) -- Refactor handling of encoding of error responses (@urkle) -- Avoid instantiating an `Error` if there is no error to raise (@urkle) -- Add support for Faraday 0.10 (@rhymes) - -## [1.2.0] - 2016年07月01日 -- TAG: [v1.2.0][1.2.0t] -- Properly handle encoding of error responses (so we don't blow up, for example, when Google's response includes a ∞) (@Motoshi-Nishihira) -- Make a copy of the options hash in `AccessToken#from_hash` to avoid accidental mutations (@Linuus) -- Use `raise` rather than `fail` to throw exceptions (@sferik) - -## [1.1.0] - 2016年01月30日 -- TAG: [v1.1.0][1.1.0t] -- Various refactors (eliminating `Hash#merge!` usage in `AccessToken#refresh!`, use `yield` instead of `#call`, freezing mutable objects in constants, replacing constants with class variables) (@sferik) -- Add support for Rack 2, and bump various other dependencies (@sferik) - -## [1.0.0] - 2014年07月09日 +## [1.0.0] - 2025年08月24日 - TAG: [v1.0.0][1.0.0t] +- COVERAGE: 100.00% -- 130/130 lines in 7 files +- BRANCH COVERAGE: 96.00% -- 48/50 branches in 7 files +- 100% documented ### Added -- Add an implementation of the MAC token spec. -### Fixed -- Fix Base64.strict_encode64 incompatibility with Ruby 1.8.7. - -## [0.5.0] - 2011年07月29日 -- TAG: [v0.5.0][0.5.0t] -### Changed -- *breaking* `oauth_token` renamed to `oauth_bearer`. -- *breaking* `authorize_path` Client option renamed to `authorize_url`. -- *breaking* `access_token_path` Client option renamed to `token_url`. -- *breaking* `access_token_method` Client option renamed to `token_method`. -- *breaking* `web_server` renamed to `auth_code`. - -## [0.4.1] - 2011年04月20日 -- TAG: [v0.4.1][0.4.1t] - -## [0.4.0] - 2011年04月20日 -- TAG: [v0.4.0][0.4.0t] - -## [0.3.0] - 2011年04月08日 -- TAG: [v0.3.0][0.3.0t] - -## [0.2.0] - 2011年04月01日 -- TAG: [v0.2.0][0.2.0t] - -## [0.1.1] - 2011年01月12日 -- TAG: [v0.1.1][0.1.1t] - -## [0.1.0] - 2010年10月13日 -- TAG: [v0.1.0][0.1.0t] - -## [0.0.13] - 2010年08月17日 -- TAG: [v0.0.13][0.0.13t] - -## [0.0.12] - 2010年08月17日 -- TAG: [v0.0.12][0.0.12t] - -## [0.0.11] - 2010年08月17日 -- TAG: [v0.0.11][0.0.11t] - -## [0.0.10] - 2010年06月19日 -- TAG: [v0.0.10][0.0.10t] - -## [0.0.9] - 2010年06月18日 -- TAG: [v0.0.9][0.0.9t] - -## [0.0.8] - 2010年04月27日 -- TAG: [v0.0.8][0.0.8t] - -## [0.0.7] - 2010年04月27日 -- TAG: [v0.0.7][0.0.7t] - -## [0.0.6] - 2010年04月25日 -- TAG: [v0.0.6][0.0.6t] - -## [0.0.5] - 2010年04月23日 -- TAG: [v0.0.5][0.0.5t] - -## [0.0.4] - 2010年04月22日 -- TAG: [v0.0.4][0.0.4t] - -## [0.0.3] - 2010年04月22日 -- TAG: [v0.0.3][0.0.3t] - -## [0.0.2] - 2010年04月22日 -- TAG: [v0.0.2][0.0.2t] - -## [0.0.1] - 2010年04月22日 -- TAG: [v0.0.1][0.0.1t] - -[gemfiles/readme]: gemfiles/README.md +- Initial release -[Unreleased]: https://github.com/ruby-oauth/oauth2/compare/v2.0.14...HEAD -[2.0.14]: https://github.com/ruby-oauth/oauth2/compare/v2.0.13...v2.0.14 -[2.0.14t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.14 -[2.0.13]: https://github.com/ruby-oauth/oauth2/compare/v2.0.12...v2.0.13 -[2.0.13t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.13 -[2.0.12]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.11...v2.0.12 -[2.0.12t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.12 -[2.0.11]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.10...v2.0.11 -[2.0.11t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.11 -[2.0.10]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.9...v2.0.10 -[2.0.10t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.10 -[2.0.9]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.8...v2.0.9 -[2.0.9t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.9 -[2.0.8]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.7...v2.0.8 -[2.0.8t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.8 -[2.0.7]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.6...v2.0.7 -[2.0.7t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.7 -[2.0.6]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.5...v2.0.6 -[2.0.6t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.6 -[2.0.5]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.4...v2.0.5 -[2.0.5t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.5 -[2.0.4]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.3...v2.0.4 -[2.0.4t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.4 -[2.0.3]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.2...v2.0.3 -[2.0.3t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.3 -[2.0.2]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.1...v2.0.2 -[2.0.2t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.2 -[2.0.1]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v2.0.0...v2.0.1 -[2.0.1t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.1 -[2.0.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.11...v2.0.0 -[2.0.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.0 -[1.4.11]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.10...v1.4.11 -[1.4.11t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.11 -[1.4.10]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.9...v1.4.10 -[1.4.10t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.10 -[1.4.9]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.8...v1.4.9 -[1.4.9t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.9 -[1.4.8]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.7...v1.4.8 -[1.4.8t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.8 -[1.4.7]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.6...v1.4.7 -[1.4.7t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.7 -[1.4.6]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.5...v1.4.6 -[1.4.6t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.6 -[1.4.5]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.4...v1.4.5 -[1.4.5t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.5 -[1.4.4]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.3...v1.4.4 -[1.4.4t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.4 -[1.4.3]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.2...v1.4.3 -[1.4.3t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.3 -[1.4.2]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.1...v1.4.2 -[1.4.2t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.2 -[1.4.1]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.4.0...v1.4.1 -[1.4.1t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.1 -[1.4.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.3.1...v1.4.0 -[1.4.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.4.0 -[1.3.1]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.3.0...v1.3.1 -[1.3.1t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.3.1 -[1.3.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.2.0...v1.3.0 -[1.3.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.3.0 -[1.2.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.1.0...v1.2.0 -[1.2.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.2.0 -[1.1.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.0.0...v1.1.0 -[1.1.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.1.0 -[1.0.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.9.4...v1.0.0 -[1.0.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v1.0.0 -[0.5.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.4.1...v0.5.0 -[0.5.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.5.0 -[0.4.1]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.4.0...v0.4.1 -[0.4.1t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.4.1 -[0.4.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.3.0...v0.4.0 -[0.4.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.4.0 -[0.3.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.2.0...v0.3.0 -[0.3.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.3.0 -[0.2.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.1.1...v0.2.0 -[0.2.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.2.0 -[0.1.1]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.1.0...v0.1.1 -[0.1.1t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.1.1 -[0.1.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.13...v0.1.0 -[0.1.0t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.1.0 -[0.0.13]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.12...v0.0.13 -[0.0.13t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.13 -[0.0.12]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.11...v0.0.12 -[0.0.12t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.12 -[0.0.11]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.10...v0.0.11 -[0.0.11t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.11 -[0.0.10]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.9...v0.0.10 -[0.0.10t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.10 -[0.0.9]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.8...v0.0.9 -[0.0.9t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.9 -[0.0.8]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.7...v0.0.8 -[0.0.8t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.8 -[0.0.7]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.6...v0.0.7 -[0.0.7t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.7 -[0.0.6]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.5...v0.0.6 -[0.0.6t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.6 -[0.0.5]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.4...v0.0.5 -[0.0.5t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.5 -[0.0.4]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.3...v0.0.4 -[0.0.4t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.4 -[0.0.3]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.2...v0.0.3 -[0.0.3t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.3 -[0.0.2]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v0.0.1...v0.0.2 -[0.0.2t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.2 -[0.0.1]: https://github.com/ruby-oauth/oauth2/compare/311d9f4...v0.0.1 -[0.0.1t]: https://github.com/ruby-oauth/oauth2/releases/tag/v0.0.1 +[Unreleased]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.0.0...HEAD +[1.0.0]: https://gitlab.com/ruby-oauth/oauth2/-/compare/a427c302df09cfe4253a7c8d400333f9a4c1a208...v1.0.0 +[1.0.0t]: https://gitlab.com/ruby-oauth/oauth2/-/tags/v1.0.0 +[1.0.1]: https://gitlab.com/ruby-oauth/oauth2/-/compare/v1.0.0...v1.0.1 +[1.0.1t]: https://gitlab.com/ruby-oauth/oauth2/-/tags/v1.0.1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 59ae2314..f70f8c81 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,6 @@ This project should be a safe, welcoming space for collaboration, so contributor the [code of conduct][🤝conduct]. To submit a patch, please fork the project, create a patch with tests, and send a pull request. -Post a message to the [google group][⛳mail-list] if you want to. Remember to [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] if you make changes. @@ -23,6 +22,35 @@ Follow these instructions: 6. Make sure to add tests for it. This is important, so it doesn't break in a future release. 7. Create new Pull Request. +## Executables vs Rake tasks + +Executables shipped by oauth2 can be used with or without generating the binstubs. +They will work when oauth2 is installed globally (i.e., `gem install oauth2`) and do not require that oauth2 be in your bundle. + +- kettle-changelog +- kettle-commit-msg +- oauth2-setup +- kettle-dvcs +- kettle-pre-release +- kettle-readme-backers +- kettle-release + +However, the rake tasks provided by oauth2 do require oauth2 to be added as a development dependency and loaded in your Rakefile. +See the full list of rake tasks in head of Rakefile + +**Gemfile** +```ruby +group :development do + gem "oauth2", require: false +end +``` + +**Rakefile** +```ruby +# Rakefile +require "oauth2" +``` + ## Environment Variables for Local Development Below are the primary environment variables recognized by stone_checksums (and its integrated tools). Unless otherwise noted, set boolean values to the string "true" to enable. @@ -90,9 +118,10 @@ bundle exec rake test ### Spec organization (required) -- For each class or module under `lib/`, keep all of its unit tests in a single spec file under `spec/` that mirrors the path and file name (e.g., specs for `lib/oauth2/release_cli.rb` live in `spec/oauth2/release_cli_spec.rb`). -- Do not create ad-hoc "_more" or split spec files for the same class/module. Consolidate all unit tests into the main spec file for that class/module. -- Only integration scenarios that intentionally span multiple classes belong in `spec/integration/`. +- One spec file per class/module. For each class or module under `lib/`, keep all of its unit tests in a single spec file under `spec/` that mirrors the path and file name exactly: `lib/oauth2/release_cli.rb` -> `spec/oauth2/release_cli_spec.rb`. +- Never add a second spec file for the same class/module. Examples of disallowed names: `*_more_spec.rb`, `*_extra_spec.rb`, `*_status_spec.rb`, or any other suffix that still targets the same class. If you find yourself wanting a second file, merge those examples into the canonical spec file for that class/module. +- Exception: Integration specs that intentionally span multiple classes. Place these under `spec/integration/` (or a clearly named integration folder), and do not directly mirror a single class. Name them after the scenario, not a class. +- Migration note: If a duplicate spec file exists, move all examples into the canonical file and delete the duplicate. Do not leave stubs or empty files behind. ## Lint It @@ -147,7 +176,9 @@ NOTE: To build without signing the gem set `SKIP_GEM_SIGNING` to any value in th #### Automated process -Run `bundle exec kettle-release`. +1. Update version.rb to contian the correct version-to-be-released. +2. Run `bundle exec kettle-changelog`. +3. Run `bundle exec kettle-release`. #### Manual process @@ -176,7 +207,6 @@ Run `bundle exec kettle-release`. 13. 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][💎rubygems] -[⛳mail-list]: http://groups.google.com/group/oauth-ruby [📜src-gl]: https://gitlab.com/ruby-oauth/oauth2/ [📜src-cb]: https://codeberg.org/ruby-oauth/oauth2 [📜src-gh]: https://github.com/ruby-oauth/oauth2 diff --git a/FUNDING.md b/FUNDING.md index bebc9ab1..b7a061d1 100644 --- a/FUNDING.md +++ b/FUNDING.md @@ -18,11 +18,11 @@ Many paths lead to being a sponsor or a backer of this project. Are you on such [🖇sponsor]: https://github.com/sponsors/pboling [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat [🖇polar]: https://polar.sh/pboling -[🖇kofi-img]: https://img.shields.io/badge/ko--fi-✓-a51611.svg?style=flat +[🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat [🖇kofi]: https://ko-fi.com/O5O86SNP4 [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat [🖇patreon]: https://patreon.com/galtzo -[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-✓-a51611.svg?style=flat +[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat [🖇buyme]: https://www.buymeacoffee.com/pboling [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal [🖇paypal]: https://www.paypal.com/paypalme/peterboling diff --git a/Gemfile b/Gemfile index af3abbf9..19875ab5 100644 --- a/Gemfile +++ b/Gemfile @@ -12,15 +12,8 @@ git_source(:gitlab) { |repo_name| "https://gitlab.com/#{repo_name}" } # Include dependencies from .gemspec gemspec -platform :mri do - # Debugging - Ensure ENV["DEBUG"] == "true" to use debuggers within spec suite - # Use binding.break, binding.b, or debugger in code - gem "debug", ">= 1.0.0" # ruby>= 2.7 - gem "gem_bench", "~> 2.0", ">= 2.0.5" - - # Dev Console - Binding.pry - Irb replacement - gem "pry", "~> 0.14" # ruby>= 2.0 -end +# Debugging +eval_gemfile "gemfiles/modular/debug.gemfile" # Code Coverage eval_gemfile "gemfiles/modular/coverage.gemfile" @@ -33,3 +26,6 @@ eval_gemfile "gemfiles/modular/documentation.gemfile" # Optional eval_gemfile "gemfiles/modular/optional.gemfile" + +### Std Lib Extracted Gems +eval_gemfile "gemfiles/modular/x_std_libs.gemfile" diff --git a/Gemfile.lock b/Gemfile.lock index 1982af18..6bbe0251 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -28,17 +28,24 @@ GEM addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) ansi (1.5.0) + appraisal2 (3.0.0) + bundler (>= 1.17.3) + rake (>= 10) + thor (>= 0.14) ast (2.4.3) backports (3.25.1) base64 (0.3.0) benchmark (0.4.1) bigdecimal (3.2.3) - coderay (1.1.3) + bundler-audit (0.9.2) + bundler (>= 1.2.0, < 3) + thor (~> 1.0) concurrent-ruby (1.3.5) date (3.4.1) debug (1.11.0) irb (~> 1.10) reline (>= 0.3.8) + delegate (0.4.0) diff-lcs (1.6.2) diffy (3.4.4) docile (1.4.1) @@ -81,6 +88,8 @@ GEM gem_bench (2.0.5) bundler (>= 1.14) version_gem (~> 1.1,>= 1.1.4) + gitmoji-regex (1.0.3) + version_gem (~> 1.1,>= 1.1.8) hashie (5.0.0) io-console (0.8.1) irb (1.15.2) @@ -90,7 +99,7 @@ GEM json (2.13.2) jwt (3.1.2) base64 - kettle-dev (1.1.7) + kettle-dev (1.1.9) kettle-soup-cover (1.0.10) simplecov (~> 0.22) simplecov-cobertura (~> 3.0) @@ -100,6 +109,15 @@ GEM simplecov-rcov (~> 0.3,>= 0.3.7) simplecov_json_formatter (~> 0.1,>= 0.1.4) version_gem (~> 1.1,>= 1.1.8) + kettle-test (1.0.3) + appraisal2 (~> 3.0) + rspec (~> 3.0) + rspec-block_is_expected (~> 1.0,>= 1.0.6) + rspec-stubbed_env (~> 1.0,>= 1.0.4) + rspec_junit_formatter (~> 0.6) + silent_stream (~> 1.0,>= 1.0.12) + timecop-rspec (~> 1.0,>= 1.0.3) + version_gem (~> 1.1,>= 1.1.8) kramdown (2.5.1) rexml (>= 3.3.9) kramdown-parser-gfm (1.1.0) @@ -107,9 +125,9 @@ GEM language_server-protocol (3.17.0.5) lint_roller (1.1.0) logger (1.7.0) - method_source (1.1.0) multi_xml (0.7.2) bigdecimal (~> 3.1) + mutex_m (0.3.0) net-http (0.6.0) uri nkf (0.2.0) @@ -124,9 +142,6 @@ GEM prettyprint prettyprint (0.2.0) prism (1.4.0) - pry (0.15.2) - coderay (~> 1.1) - method_source (~> 1.0) psych (5.2.6) date stringio @@ -134,6 +149,7 @@ GEM racc (1.8.1) rack (3.2.1) rainbow (3.1.1) + rake (13.3.0) rbs (3.9.4) logger rdoc (6.14.2) @@ -148,8 +164,31 @@ GEM regexp_parser (2.11.2) reline (0.6.2) io-console (~> 0.5) - rexml (3.4.2) + require_bench (1.0.4) + version_gem (>= 1.1.3, < 4) + rexml (3.4.3) + rspec (3.13.1) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) rspec-block_is_expected (1.0.6) + rspec-core (3.13.5) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.5) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.5) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-pending_for (0.1.19) + rspec-core (~> 3.0) + ruby_engine (~> 2.0) + ruby_version (~> 1.0) + version_gem (~> 1.1,>= 1.1.8) + rspec-stubbed_env (1.0.4) + rspec-support (3.13.5) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) rubocop (1.75.8) json (~> 2.3) language_server-protocol (~> 3.17.0.2) @@ -209,6 +248,11 @@ GEM rubocop (~> 1.72,>= 1.72.1) rubocop-ast (>= 1.44.0, < 2.0) ruby-progressbar (1.13.0) + ruby_engine (2.0.3) + ruby_version (1.0.3) + silent_stream (1.0.12) + logger (~> 1.2) + version_gem (>= 1.1.8, < 3) simplecov (0.22.0) docile (~> 1.1) simplecov-html (~> 0.11) @@ -246,9 +290,17 @@ GEM standard-custom (>= 1.0.2, < 2) standard-performance (>= 1.3.1, < 2) version_gem (>= 1.1.4, < 3) + stone_checksums (1.0.2) + version_gem (~> 1.1,>= 1.1.8) stringio (3.1.7) terminal-table (4.0.0) unicode-display_width (>= 1.1.1, < 4) + thor (1.4.0) + timecop (0.9.10) + timecop-rspec (1.0.3) + delegate (~> 0.1) + rspec (~> 3.0) + timecop (>= 0.7, < 1) unicode-display_width (3.1.5) unicode-emoji (~> 4.0,>= 4.0.4) unicode-emoji (4.0.4) @@ -265,26 +317,38 @@ PLATFORMS DEPENDENCIES addressable (~> 2.8,>= 2.8.7) + appraisal2 (~> 3.0) backports (~> 3.25,>= 3.25.1) benchmark (~> 0.4,>= 0.4.1) - debug (>= 1.0.0) + bundler-audit (~> 0.9.2) + debug (>= 1.1) + erb (~> 5.0) gem_bench (~> 2.0,>= 2.0.5) - kettle-dev (~> 1.1,>= 1.1.7) + gitmoji-regex (~> 1.0,>= 1.0.3) + irb (~> 1.15,>= 1.15.2) + kettle-dev (~> 1.1,>= 1.1.9) kettle-soup-cover (~> 1.0,>= 1.0.10) + kettle-test (~> 1.0) kramdown (~> 2.5,>= 2.5.1) kramdown-parser-gfm (~> 1.1) + mutex_m (~> 0.2) nkf (~> 0.2) oauth2! - pry (~> 0.14) + rake (~> 13.0) rdoc (~> 6.11) reek (~> 6.5) + require_bench (~> 1.0,>= 1.0.4) rexml (~> 3.2,>= 3.2.5) + rspec-pending_for (~> 0.0,>= 0.0.17) rubocop-lts (~> 8.0) rubocop-on-rbs (~> 1.8) rubocop-packaging (~> 0.6,>= 0.6.0) rubocop-rspec (~> 3.6) rubocop-ruby2_2 + ruby-progressbar (~> 1.13) standard (>= 1.50) + stone_checksums (~> 1.0,>= 1.0.2) + stringio (>= 3.0) yard (~> 0.9,>= 0.9.37) yard-junk (~> 0.0,>= 0.0.10)! yard-relative_markdown_links (~> 0.5.0) diff --git a/README.md b/README.md index 7563d5c3..a04e1e2d 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![oauth2 Logo by Chris Messina, CC BY-SA 3.0][🖼️oauth2-i]][🖼️oauth2] -[🖼️oauth2-i]: https://logos.galtzo.com/assets/images/oauth/oauth2/avatar-192px.svg -[🖼️oauth2]: https://github.com/ruby-oauth/oauth2 -[🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg -[🖼️ruby-lang]: https://www.ruby-lang.org/ [🖼️galtzo-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg [🖼️galtzo-discord]: https://discord.gg/3qme4XHNKN +[🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg +[🖼️ruby-lang]: https://www.ruby-lang.org/ +[🖼️oauth2-i]: https://logos.galtzo.com/assets/images/oauth/oauth2/avatar-192px.svg +[🖼️oauth2]: https://github.com/ruby-oauth/oauth2 # 🔐 OAuth 2.0 Authorization Framework ⭐️ including OAuth 2.1 draft spec & OpenID Connect (OIDC) -[![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls] [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov] [![QLTY Maintainability][🔑qlty-mnti]][🔑qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Caboose is an absolute WAGON][🚎13-cbs-wfi]][🚎13-cbs-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL] +[![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![CodeCov Test Coverage][🔑codecovi]][🔑codecov] [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls] [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov] [![QLTY Maintainability][🔑qlty-mnti]][🔑qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL] If ☝️ `ci_badges.map(&:color).detect { it != "green"}` [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord]. @@ -131,9 +131,9 @@ What does that mean specifically for the runtime dependencies? We have 100% test coverage of lines and branches, and this test suite runs across a large matrix covering the latest patch for each of the following minor versions: -| 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 | -|------------------------------------------------|--------------------------------------------------------------------------------------| -| 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2](https://github.com/appraisal-rb/appraisal2) ✨ | +| 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 | +|------------------------------------------------|--------------------------------------------------------| +| 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ | #### You should upgrade this gem with confidence\*. @@ -1180,6 +1180,8 @@ See [CONTRIBUTING.md][🤝contributing]. ### Code Coverage +[![Coverage Graph][🔑codecov-g]][🔑codecov] + [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls] [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov] @@ -1311,11 +1313,11 @@ Thanks for RTFM. ☺️ [🖇sponsor]: https://github.com/sponsors/pboling [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat [🖇polar]: https://polar.sh/pboling -[🖇kofi-img]: https://img.shields.io/badge/ko--fi-✓-a51611.svg?style=flat +[🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat [🖇kofi]: https://ko-fi.com/O5O86SNP4 [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat [🖇patreon]: https://patreon.com/galtzo -[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-✓-a51611.svg?style=flat +[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat [🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff [🖇buyme]: https://www.buymeacoffee.com/pboling [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal @@ -1347,7 +1349,7 @@ Thanks for RTFM. ☺️ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase [💖🐘ruby-mast]: https://ruby.social/@galtzo -[💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https%3A%2F%2Fruby.social&style=flat&logo=mastodon&label=Ruby%20%40galtzo +[💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo [💖🦋bluesky]: https://bsky.app/profile/galtzo.com [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white [💖🌳linktree]: https://linktr.ee/galtzo @@ -1417,8 +1419,8 @@ Thanks for RTFM. ☺️ [🚎10-j-wfi]: https://github.com/ruby-oauth/oauth2/actions/workflows/jruby.yml/badge.svg [🚎11-c-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/current.yml [🚎11-c-wfi]: https://github.com/ruby-oauth/oauth2/actions/workflows/current.yml/badge.svg -[🚎12-crh-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/current-runtime-heads.yml -[🚎12-crh-wfi]: https://github.com/ruby-oauth/oauth2/actions/workflows/current-runtime-heads.yml/badge.svg +[🚎12-crh-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/dep-heads.yml +[🚎12-crh-wfi]: https://github.com/ruby-oauth/oauth2/actions/workflows/dep-heads.yml/badge.svg [🚎13-cbs-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/caboose.yml [🚎13-cbs-wfi]: https://github.com/ruby-oauth/oauth2/actions/workflows/caboose.yml/badge.svg [🚎13-🔒️-wf]: https://github.com/ruby-oauth/oauth2/actions/workflows/locked_deps.yml @@ -1472,7 +1474,7 @@ Thanks for RTFM. ☺️ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat [📌gitmoji]:https://gitmoji.dev -[📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20😜%20😍-34495e.svg?style=flat-square +[📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.519-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue [🔐security]: SECURITY.md @@ -1488,7 +1490,7 @@ Thanks for RTFM. ☺️ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums [💎SHA_checksums]: https://gitlab.com/ruby-oauth/oauth2/-/tree/main/checksums [💎rlts]: https://github.com/rubocop-lts/rubocop-lts -[💎rlts-img]: https://img.shields.io/badge/code_style_%26_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white +[💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white [💎appraisal2]: https://github.com/appraisal-rb/appraisal2 [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/ @@ -1498,8 +1500,8 @@ Thanks for RTFM. ☺️ rel="me" Social Proofs - - + + diff --git a/Rakefile b/Rakefile index 249ef930..4f67de12 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,6 @@ # frozen_string_literal: true -# kettle-dev Rakefile v1.0.24 - 2025年08月31日 +# kettle-dev Rakefile v1.1.9 - 2025年09月07日 # Ruby 2.3 (Safe Navigation) or higher required # # MIT License (see License.txt) @@ -15,14 +15,10 @@ # rake bench # Run all benchmarks (alias for bench:run) # rake bench:list # List available benchmark scripts # rake bench:run # Run all benchmark scripts (skips on CI) -# rake build # Build kettle-dev-1.0.0.gem into the pkg d... -# rake build:checksum # Generate SHA512 checksum of kettle-dev-1.... # rake build:generate_checksums # Generate both SHA256 & SHA512 checksums i... # rake bundle:audit:check # Checks the Gemfile.lock for insecure depe... # rake bundle:audit:update # Updates the bundler-audit vulnerability d... # rake ci:act[opt] # Run 'act' with a selected workflow -# rake clean # Remove any temporary products -# rake clobber # Remove any generated files # rake coverage # Run specs w/ coverage and open results in... # rake default # Default tasks aggregator # rake install # Build and install kettle-dev-1.0.0.gem in... diff --git a/SECURITY.md b/SECURITY.md index 1fc2f483..a319529f 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,15 +2,9 @@ ## Supported Versions -| Version | Supported | Post-EOL / Enterprise | -|----------|-----------|---------------------------------------| -| 2.latest | ✅ | [Tidelift Subscription][tidelift-ref] | -| 1.latest | ✅ | [Tidelift Subscription][tidelift-ref] | -| <= 1 | ⛔ | ⛔ | - -### EOL Policy - -Non-commercial support for the oldest version of Ruby (which itself is going EOL) will be dropped each year in April. +| Version | Supported | +|----------|-----------| +| 1.latest | ✅ | ## Security contact information @@ -25,11 +19,3 @@ please consider sponsoring the project / maintainer @ https://liberapay.com/pbol or find other sponsorship links in the [README]. [README]: README.md - -## Enterprise Support - -Available as part of the Tidelift Subscription. - -The maintainers of this library and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use. [Learn more.][tidelift-ref] - -[tidelift-ref]: https://tidelift.com/subscription/pkg/rubygems-oauth2?utm_source=rubygems-oauth2&utm_medium=referral&utm_campaign=enterprise&utm_term=repo diff --git a/bin/kettle-dev-setup b/bin/kettle-dev-setup new file mode 100755 index 00000000..276319a7 --- /dev/null +++ b/bin/kettle-dev-setup @@ -0,0 +1,16 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'kettle-dev-setup' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("kettle-dev", "kettle-dev-setup") diff --git a/bin/kettle-dvcs b/bin/kettle-dvcs new file mode 100755 index 00000000..b572d48c --- /dev/null +++ b/bin/kettle-dvcs @@ -0,0 +1,16 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'kettle-dvcs' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("kettle-dev", "kettle-dvcs") diff --git a/bin/kettle-pre-release b/bin/kettle-pre-release new file mode 100755 index 00000000..1b98ad61 --- /dev/null +++ b/bin/kettle-pre-release @@ -0,0 +1,16 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'kettle-pre-release' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("kettle-dev", "kettle-pre-release") diff --git a/bin/pry b/bin/pry new file mode 100755 index 00000000..41bfde55 --- /dev/null +++ b/bin/pry @@ -0,0 +1,16 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'pry' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("pry", "pry") diff --git a/bin/rbs b/bin/rbs new file mode 100755 index 00000000..ffc95a0d --- /dev/null +++ b/bin/rbs @@ -0,0 +1,16 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'rbs' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("rbs", "rbs") diff --git a/gemfiles/audit.gemfile b/gemfiles/audit.gemfile index 5a3af548..82550001 100644 --- a/gemfiles/audit.gemfile +++ b/gemfiles/audit.gemfile @@ -2,9 +2,6 @@ source "https://rubygems.org" -gem "mutex_m", "~> 0.2" -gem "stringio", "~> 3.0" - gemspec path: "../" eval_gemfile("modular/audit.gemfile") @@ -20,3 +17,5 @@ eval_gemfile("modular/logger_v1_7.gemfile") eval_gemfile("modular/multi_xml_v0_7.gemfile") eval_gemfile("modular/rack_v3.gemfile") + +eval_gemfile("modular/x_std_libs/r3/libs.gemfile") diff --git a/gemfiles/coverage.gemfile b/gemfiles/coverage.gemfile index 92c25c25..0bb1d61f 100644 --- a/gemfiles/coverage.gemfile +++ b/gemfiles/coverage.gemfile @@ -2,9 +2,6 @@ source "https://rubygems.org" -gem "mutex_m", "~> 0.2" -gem "stringio", "~> 3.0" - gemspec path: "../" eval_gemfile("modular/coverage.gemfile") @@ -22,3 +19,5 @@ eval_gemfile("modular/multi_xml_v0_7.gemfile") eval_gemfile("modular/optional.gemfile") eval_gemfile("modular/rack_v3.gemfile") + +eval_gemfile("modular/x_std_libs/r3/libs.gemfile") diff --git a/gemfiles/current.gemfile b/gemfiles/current.gemfile index 770c6643..d0b46ac0 100644 --- a/gemfiles/current.gemfile +++ b/gemfiles/current.gemfile @@ -4,4 +4,4 @@ source "https://rubygems.org" gemspec path: "../" -eval_gemfile("modular/latest.gemfile") +eval_gemfile("modular/x_std_libs.gemfile") diff --git a/gemfiles/dep_heads.gemfile b/gemfiles/dep_heads.gemfile new file mode 100644 index 00000000..3173f86f --- /dev/null +++ b/gemfiles/dep_heads.gemfile @@ -0,0 +1,7 @@ +# This file was generated by Appraisal2 + +source "https://rubygems.org" + +gemspec path: "../" + +eval_gemfile("modular/runtime_heads.gemfile") diff --git a/gemfiles/deps_unlocked.gemfile b/gemfiles/deps_unlocked.gemfile deleted file mode 100644 index 789a4f03..00000000 --- a/gemfiles/deps_unlocked.gemfile +++ /dev/null @@ -1,13 +0,0 @@ -# This file was generated by Appraisal2 - -source "https://rubygems.org" - -gemspec path: "../" - -eval_gemfile("modular/audit.gemfile") - -eval_gemfile("modular/coverage.gemfile") - -eval_gemfile("modular/documentation.gemfile") - -eval_gemfile("modular/style.gemfile") diff --git a/gemfiles/head.gemfile b/gemfiles/head.gemfile index f8e1bc42..e6b6d80d 100644 --- a/gemfiles/head.gemfile +++ b/gemfiles/head.gemfile @@ -2,8 +2,6 @@ source "https://rubygems.org" -gem "mutex_m", ">= 0.2" -gem "stringio", ">= 3.0" gem "benchmark", "~> 0.4", ">= 0.4.1" gemspec path: "../" diff --git a/gemfiles/modular/debug.gemfile b/gemfiles/modular/debug.gemfile index 28cd3728..3e86091c 100644 --- a/gemfiles/modular/debug.gemfile +++ b/gemfiles/modular/debug.gemfile @@ -2,10 +2,12 @@ gem "irb", "~> 1.15", ">= 1.15.2" # removed from stdlib in 3.5 platform :mri do - # Debugging + # Debugging - Ensure ENV["DEBUG"] == "true" to use debuggers within spec suite # Use binding.break, binding.b, or debugger in code gem "debug", ">= 1.1" # ruby>= 2.7 + + # Dev Console - Binding.pry - Irb replacement + # gem "pry", "~> 0.14" # ruby>= 2.0 end -gem "require_bench", "~> 1.0", ">= 1.0.4" gem "gem_bench", "~> 2.0", ">= 2.0.5" diff --git a/gemfiles/modular/erb/r2.3/default.gemfile b/gemfiles/modular/erb/r2.3/default.gemfile new file mode 100644 index 00000000..a38f952f --- /dev/null +++ b/gemfiles/modular/erb/r2.3/default.gemfile @@ -0,0 +1,6 @@ +# The cake is a lie. +# erb v2.2, the oldest release on RubyGems.org, was never compatible with Ruby 2.3. +# In addition, erb does not follow SemVer, and old rubies get dropped in a patch. +# This means we have no choice but to use the erb that shipped with Ruby 2.3 +# /opt/hostedtoolcache/Ruby/2.3.8/x64/lib/ruby/gems/2.3.0/gems/erb-2.2.2/lib/erb.rb:670:in `prepare_trim_mode': undefined method `match?' for "-":String (NoMethodError) +# gem "erb", ">= 2.2" # ruby>= 2.3.0 diff --git a/gemfiles/modular/erb/r2.6/v2.2.gemfile b/gemfiles/modular/erb/r2.6/v2.2.gemfile new file mode 100644 index 00000000..7cd85745 --- /dev/null +++ b/gemfiles/modular/erb/r2.6/v2.2.gemfile @@ -0,0 +1,3 @@ +# Ruby>= 2.3.0 (claimed, but not true, minimum support is Ruby 2.4) +# Last version supporting Ruby <= 2.6 +gem "erb", "~> 2.2.2" diff --git a/gemfiles/modular/erb/r2/v3.0.gemfile b/gemfiles/modular/erb/r2/v3.0.gemfile new file mode 100644 index 00000000..c03bd8d8 --- /dev/null +++ b/gemfiles/modular/erb/r2/v3.0.gemfile @@ -0,0 +1 @@ +gem "erb", "~> 3.0" # ruby>= 2.7.0 diff --git a/gemfiles/modular/erb/r3.1/v4.0.gemfile b/gemfiles/modular/erb/r3.1/v4.0.gemfile new file mode 100644 index 00000000..2e9046d8 --- /dev/null +++ b/gemfiles/modular/erb/r3.1/v4.0.gemfile @@ -0,0 +1,2 @@ +# last version compatible with Ruby 3.1 +gem "erb", "~> 4.0" # ruby>= 2.7.0 diff --git a/gemfiles/modular/erb/r3/v5.0.gemfile b/gemfiles/modular/erb/r3/v5.0.gemfile new file mode 100644 index 00000000..97033fa7 --- /dev/null +++ b/gemfiles/modular/erb/r3/v5.0.gemfile @@ -0,0 +1 @@ +gem "erb", "~> 5.0" # ruby>= 3.2.0 diff --git a/gemfiles/modular/erb/vHEAD.gemfile b/gemfiles/modular/erb/vHEAD.gemfile new file mode 100644 index 00000000..65f8433e --- /dev/null +++ b/gemfiles/modular/erb/vHEAD.gemfile @@ -0,0 +1,2 @@ +# Ruby>= 3.2 (dependency of kettle-dev) +gem "erb", github: "ruby/erb", branch: "master" diff --git a/gemfiles/modular/injected.gemfile b/gemfiles/modular/injected.gemfile new file mode 100644 index 00000000..0b5f8fa7 --- /dev/null +++ b/gemfiles/modular/injected.gemfile @@ -0,0 +1,60 @@ +# NOTE: It is preferable to list development dependencies in the gemspec due to increased +# visibility and discoverability on RubyGems.org. +# However, this gem sits underneath all my other gems, and also "depends on" many of them. +# So instead of depending on them directly it injects them into the other gem's gemspec on install. +# This gem its injected dev dependencies, will install on Ruby down to 2.3.x. +# This gem does not inject runtime dependencies. +# Thus, dev dependencies injected into gemspecs must have +# +# required_ruby_version ">= 2.3" (or lower) +# +# Development dependencies that require strictly newer Ruby versions should be in a "gemfile", +# and preferably a modular one (see gemfiles/modular/*.gemfile). + +# Security +gem "bundler-audit", "~> 0.9.2" # ruby>= 2.0.0 + +# Tasks +gem "rake", "~> 13.0" # ruby>= 2.2.0 + +# Debugging +gem "require_bench", "~> 1.0", ">= 1.0.4" # ruby>= 2.2.0 + +# Testing +gem "appraisal2", "~> 3.0" # ruby>= 1.8.7, for testing against multiple versions of dependencies +gem "kettle-test", "~> 1.0" # ruby>= 2.3 +gem "rspec-pending_for" # ruby>= 2.3, used to skip specs on incompatible Rubies + +# Releasing +gem "ruby-progressbar", "~> 1.13" # ruby>= 0 +gem "stone_checksums", "~> 1.0", ">= 1.0.2" # ruby>= 2.2.0 + +# Git integration (optional) +# The 'git' gem is optional; kettle-dev falls back to shelling out to `git` if it is not present. +# The current release of the git gem depends on activesupport, which makes it too heavy to depend on directly +# Compatibility with the git gem is tested via appraisals instead. +# gem("git", ">= 1.19.1") # ruby>= 2.3 + +# Development tasks +gem "gitmoji-regex", "~> 1.0", ">= 1.0.3" # ruby>= 2.3.0 + +# The cake is a lie. erb v2.2, the oldest release on RubyGems.org, was never compatible with Ruby 2.3. +# This means we have no choice but to use the erb that shipped with Ruby 2.3 +# /opt/hostedtoolcache/Ruby/2.3.8/x64/lib/ruby/gems/2.3.0/gems/erb-2.2.2/lib/erb.rb:670:in `prepare_trim_mode': undefined method `match?' for "-":String (NoMethodError) +# gem "erb", ">= 2.2" # ruby>= 2.3.0, not SemVer, old rubies get dropped in a patch. + +# HTTP recording for deterministic specs +# It seems that somehow just having a newer version of appraisal installed breaks +# Ruby 2.3 and 2.4 even if their bundle specifies an older version, +# and as a result it can only be a dependency in the appraisals. +# | An error occurred while loading spec_helper. +# | Failure/Error: require "vcr" +# | +# | NoMethodError: +# | undefined method `delete_prefix' for "CONTENT_LENGTH":String +# | # ./spec/config/vcr.rb:3:in `require' +# | # ./spec/config/vcr.rb:3:in `' +# | # ./spec/spec_helper.rb:8:in `require_relative' +# | # ./spec/spec_helper.rb:8:in `' +# gem "vcr", ">= 4" # 6.0 claims to support ruby>= 2.3, but fails on ruby 2.4 +# gem "webmock", ">= 3" # Last version to support ruby>= 2.3 diff --git a/gemfiles/modular/mutex_m/r2.4/v0.1.gemfile b/gemfiles/modular/mutex_m/r2.4/v0.1.gemfile new file mode 100644 index 00000000..cabf9806 --- /dev/null +++ b/gemfiles/modular/mutex_m/r2.4/v0.1.gemfile @@ -0,0 +1,3 @@ +# Ruby>= 0 +# Last version supporting Ruby <= 2.4 +gem "mutex_m", "~> 0.1" diff --git a/gemfiles/modular/mutex_m/r2/v0.3.gemfile b/gemfiles/modular/mutex_m/r2/v0.3.gemfile new file mode 100644 index 00000000..42e9d9bd --- /dev/null +++ b/gemfiles/modular/mutex_m/r2/v0.3.gemfile @@ -0,0 +1,2 @@ +# Ruby>= 2.5 +gem "mutex_m", "~> 0.2" diff --git a/gemfiles/modular/mutex_m/r3/v0.3.gemfile b/gemfiles/modular/mutex_m/r3/v0.3.gemfile new file mode 100644 index 00000000..42e9d9bd --- /dev/null +++ b/gemfiles/modular/mutex_m/r3/v0.3.gemfile @@ -0,0 +1,2 @@ +# Ruby>= 2.5 +gem "mutex_m", "~> 0.2" diff --git a/gemfiles/modular/mutex_m/vHEAD.gemfile b/gemfiles/modular/mutex_m/vHEAD.gemfile new file mode 100644 index 00000000..8af3b6fc --- /dev/null +++ b/gemfiles/modular/mutex_m/vHEAD.gemfile @@ -0,0 +1,2 @@ +# Ruby>= 2.5 (dependency of omniauth) +gem "mutex_m", github: "ruby/mutex_m", branch: "master" diff --git a/gemfiles/modular/runtime_heads.gemfile b/gemfiles/modular/runtime_heads.gemfile index a3c5115c..7d74c143 100644 --- a/gemfiles/modular/runtime_heads.gemfile +++ b/gemfiles/modular/runtime_heads.gemfile @@ -25,3 +25,5 @@ gem "version_gem", github: "ruby-oauth/version_gem", branch: "main" # Ruby>= 2.2 gem "snaky_hash", github: "ruby-oauth/snaky_hash", branch: "main" + +eval_gemfile("x_std_libs/vHEAD.gemfile") diff --git a/gemfiles/modular/stringio/r2.4/v0.0.2.gemfile b/gemfiles/modular/stringio/r2.4/v0.0.2.gemfile new file mode 100644 index 00000000..94021cf3 --- /dev/null +++ b/gemfiles/modular/stringio/r2.4/v0.0.2.gemfile @@ -0,0 +1,4 @@ +# !!WARNING!! +# NOT SEMVER +# Last version to support Ruby <= 2.5 +gem "stringio", ">= 0.0.2" diff --git a/gemfiles/modular/stringio/r2/v3.0.gemfile b/gemfiles/modular/stringio/r2/v3.0.gemfile new file mode 100644 index 00000000..e85bb18e --- /dev/null +++ b/gemfiles/modular/stringio/r2/v3.0.gemfile @@ -0,0 +1,5 @@ +# !!WARNING!! +# NOT SEMVER +# Version 3.0.7 dropped support for Ruby <= 2.7 +# Version 3.0.0 dropped support for Ruby <= 2.4 +gem "stringio", ">= 3.0" diff --git a/gemfiles/modular/stringio/r3/v3.0.gemfile b/gemfiles/modular/stringio/r3/v3.0.gemfile new file mode 100644 index 00000000..e85bb18e --- /dev/null +++ b/gemfiles/modular/stringio/r3/v3.0.gemfile @@ -0,0 +1,5 @@ +# !!WARNING!! +# NOT SEMVER +# Version 3.0.7 dropped support for Ruby <= 2.7 +# Version 3.0.0 dropped support for Ruby <= 2.4 +gem "stringio", ">= 3.0" diff --git a/gemfiles/modular/stringio/vHEAD.gemfile b/gemfiles/modular/stringio/vHEAD.gemfile new file mode 100644 index 00000000..5f2a7412 --- /dev/null +++ b/gemfiles/modular/stringio/vHEAD.gemfile @@ -0,0 +1,2 @@ +# Ruby>= 2.5 (dependency of omniauth) +gem "stringio", github: "ruby/stringio", branch: "master" diff --git a/gemfiles/modular/x_std_libs.gemfile b/gemfiles/modular/x_std_libs.gemfile new file mode 100644 index 00000000..cb677752 --- /dev/null +++ b/gemfiles/modular/x_std_libs.gemfile @@ -0,0 +1,2 @@ +### Std Lib Extracted Gems +eval_gemfile "x_std_libs/r3/libs.gemfile" diff --git a/gemfiles/modular/x_std_libs/r2.3/libs.gemfile b/gemfiles/modular/x_std_libs/r2.3/libs.gemfile new file mode 100644 index 00000000..2fee8b60 --- /dev/null +++ b/gemfiles/modular/x_std_libs/r2.3/libs.gemfile @@ -0,0 +1,3 @@ +eval_gemfile "../../erb/r2.3/default.gemfile" +eval_gemfile "../../mutex_m/r2.4/v0.1.gemfile" +eval_gemfile "../../stringio/r2.4/v0.0.2.gemfile" diff --git a/gemfiles/modular/x_std_libs/r2.4/libs.gemfile b/gemfiles/modular/x_std_libs/r2.4/libs.gemfile new file mode 100644 index 00000000..c1bcbd8f --- /dev/null +++ b/gemfiles/modular/x_std_libs/r2.4/libs.gemfile @@ -0,0 +1,3 @@ +eval_gemfile "../../erb/r2.6/v2.2.gemfile" +eval_gemfile "../../mutex_m/r2.4/v0.1.gemfile" +eval_gemfile "../../stringio/r2.4/v0.0.2.gemfile" diff --git a/gemfiles/modular/x_std_libs/r2.6/libs.gemfile b/gemfiles/modular/x_std_libs/r2.6/libs.gemfile new file mode 100644 index 00000000..beac38c9 --- /dev/null +++ b/gemfiles/modular/x_std_libs/r2.6/libs.gemfile @@ -0,0 +1,3 @@ +eval_gemfile "../../erb/r2.6/v2.2.gemfile" +eval_gemfile "../../mutex_m/r2/v0.3.gemfile" +eval_gemfile "../../stringio/r2/v3.0.gemfile" diff --git a/gemfiles/modular/x_std_libs/r2/libs.gemfile b/gemfiles/modular/x_std_libs/r2/libs.gemfile new file mode 100644 index 00000000..441c4f03 --- /dev/null +++ b/gemfiles/modular/x_std_libs/r2/libs.gemfile @@ -0,0 +1,3 @@ +eval_gemfile "../../erb/r2/v3.0.gemfile" +eval_gemfile "../../mutex_m/r2/v0.3.gemfile" +eval_gemfile "../../stringio/r2/v3.0.gemfile" diff --git a/gemfiles/modular/x_std_libs/r3.1/libs.gemfile b/gemfiles/modular/x_std_libs/r3.1/libs.gemfile new file mode 100644 index 00000000..bdab5bde --- /dev/null +++ b/gemfiles/modular/x_std_libs/r3.1/libs.gemfile @@ -0,0 +1,3 @@ +eval_gemfile "../../erb/r3.1/v4.0.gemfile" +eval_gemfile "../../mutex_m/r3/v0.3.gemfile" +eval_gemfile "../../stringio/r3/v3.0.gemfile" diff --git a/gemfiles/modular/x_std_libs/r3/libs.gemfile b/gemfiles/modular/x_std_libs/r3/libs.gemfile new file mode 100644 index 00000000..c293a3dd --- /dev/null +++ b/gemfiles/modular/x_std_libs/r3/libs.gemfile @@ -0,0 +1,3 @@ +eval_gemfile "../../erb/r3/v5.0.gemfile" +eval_gemfile "../../mutex_m/r3/v0.3.gemfile" +eval_gemfile "../../stringio/r3/v3.0.gemfile" diff --git a/gemfiles/modular/x_std_libs/vHEAD.gemfile b/gemfiles/modular/x_std_libs/vHEAD.gemfile new file mode 100644 index 00000000..acc5ccbf --- /dev/null +++ b/gemfiles/modular/x_std_libs/vHEAD.gemfile @@ -0,0 +1,3 @@ +eval_gemfile "../erb/vHEAD.gemfile" +eval_gemfile "../mutex_m/vHEAD.gemfile" +eval_gemfile "../stringio/vHEAD.gemfile" diff --git a/gemfiles/ruby_2_3_hashie_v0.gemfile b/gemfiles/ruby_2_3_hashie_v0.gemfile index fe08e312..3d9948b0 100644 --- a/gemfiles/ruby_2_3_hashie_v0.gemfile +++ b/gemfiles/ruby_2_3_hashie_v0.gemfile @@ -15,3 +15,5 @@ eval_gemfile("modular/logger_v1_2.gemfile") eval_gemfile("modular/multi_xml_v0_5.gemfile") eval_gemfile("modular/rack_v1_2.gemfile") + +eval_gemfile("modular/x_std_libs/r2.3/libs.gemfile") diff --git a/gemfiles/ruby_2_3_hashie_v1.gemfile b/gemfiles/ruby_2_3_hashie_v1.gemfile index 0cbdaec1..5d97162b 100644 --- a/gemfiles/ruby_2_3_hashie_v1.gemfile +++ b/gemfiles/ruby_2_3_hashie_v1.gemfile @@ -15,3 +15,5 @@ eval_gemfile("modular/logger_v1_2.gemfile") eval_gemfile("modular/multi_xml_v0_5.gemfile") eval_gemfile("modular/rack_v1_2.gemfile") + +eval_gemfile("modular/x_std_libs/r2.3/libs.gemfile") diff --git a/gemfiles/ruby_2_3_hashie_v2.gemfile b/gemfiles/ruby_2_3_hashie_v2.gemfile index 3d0484d0..9a8d02f0 100644 --- a/gemfiles/ruby_2_3_hashie_v2.gemfile +++ b/gemfiles/ruby_2_3_hashie_v2.gemfile @@ -15,3 +15,5 @@ eval_gemfile("modular/logger_v1_2.gemfile") eval_gemfile("modular/multi_xml_v0_5.gemfile") eval_gemfile("modular/rack_v1_2.gemfile") + +eval_gemfile("modular/x_std_libs/r2.3/libs.gemfile") diff --git a/gemfiles/ruby_2_3_hashie_v3.gemfile b/gemfiles/ruby_2_3_hashie_v3.gemfile index 452620e9..ea7cd525 100644 --- a/gemfiles/ruby_2_3_hashie_v3.gemfile +++ b/gemfiles/ruby_2_3_hashie_v3.gemfile @@ -15,3 +15,5 @@ eval_gemfile("modular/logger_v1_2.gemfile") eval_gemfile("modular/multi_xml_v0_5.gemfile") eval_gemfile("modular/rack_v1_2.gemfile") + +eval_gemfile("modular/x_std_libs/r2.3/libs.gemfile") diff --git a/gemfiles/ruby_2_3_hashie_v4.gemfile b/gemfiles/ruby_2_3_hashie_v4.gemfile index aba8c483..37e16961 100644 --- a/gemfiles/ruby_2_3_hashie_v4.gemfile +++ b/gemfiles/ruby_2_3_hashie_v4.gemfile @@ -15,3 +15,5 @@ eval_gemfile("modular/logger_v1_2.gemfile") eval_gemfile("modular/multi_xml_v0_5.gemfile") eval_gemfile("modular/rack_v1_2.gemfile") + +eval_gemfile("modular/x_std_libs/r2.3/libs.gemfile") diff --git a/gemfiles/ruby_2_3_hashie_v5.gemfile b/gemfiles/ruby_2_3_hashie_v5.gemfile index 19515c83..e888ef7d 100644 --- a/gemfiles/ruby_2_3_hashie_v5.gemfile +++ b/gemfiles/ruby_2_3_hashie_v5.gemfile @@ -15,3 +15,5 @@ eval_gemfile("modular/logger_v1_2.gemfile") eval_gemfile("modular/multi_xml_v0_5.gemfile") eval_gemfile("modular/rack_v1_2.gemfile") + +eval_gemfile("modular/x_std_libs/r2.3/libs.gemfile") diff --git a/gemfiles/ruby_2_4.gemfile b/gemfiles/ruby_2_4.gemfile index ebbc746d..36a5018d 100644 --- a/gemfiles/ruby_2_4.gemfile +++ b/gemfiles/ruby_2_4.gemfile @@ -15,3 +15,5 @@ eval_gemfile("modular/logger_v1_2.gemfile") eval_gemfile("modular/multi_xml_v0_5.gemfile") eval_gemfile("modular/rack_v1_6.gemfile") + +eval_gemfile("modular/x_std_libs/r2.4/libs.gemfile") diff --git a/gemfiles/ruby_2_5.gemfile b/gemfiles/ruby_2_5.gemfile index 9c78b4de..191c0014 100644 --- a/gemfiles/ruby_2_5.gemfile +++ b/gemfiles/ruby_2_5.gemfile @@ -15,3 +15,5 @@ eval_gemfile("modular/logger_v1_5.gemfile") eval_gemfile("modular/multi_xml_v0_6.gemfile") eval_gemfile("modular/rack_v2.gemfile") + +eval_gemfile("modular/x_std_libs/r2.6/libs.gemfile") diff --git a/gemfiles/ruby_2_6.gemfile b/gemfiles/ruby_2_6.gemfile index c90a047f..547d3f94 100644 --- a/gemfiles/ruby_2_6.gemfile +++ b/gemfiles/ruby_2_6.gemfile @@ -2,9 +2,6 @@ source "https://rubygems.org" -gem "mutex_m", "~> 0.2" -gem "stringio", "~> 3.0" - gemspec path: "../" eval_gemfile("modular/faraday_v2.gemfile") @@ -18,3 +15,5 @@ eval_gemfile("modular/logger_v1_5.gemfile") eval_gemfile("modular/multi_xml_v0_6.gemfile") eval_gemfile("modular/rack_v3.gemfile") + +eval_gemfile("modular/x_std_libs/r2.6/libs.gemfile") diff --git a/gemfiles/ruby_2_7.gemfile b/gemfiles/ruby_2_7.gemfile index 2da4dda0..1a3262a4 100644 --- a/gemfiles/ruby_2_7.gemfile +++ b/gemfiles/ruby_2_7.gemfile @@ -2,9 +2,6 @@ source "https://rubygems.org" -gem "mutex_m", "~> 0.2" -gem "stringio", "~> 3.0" - gemspec path: "../" eval_gemfile("modular/faraday_v2.gemfile") @@ -18,3 +15,5 @@ eval_gemfile("modular/logger_v1_7.gemfile") eval_gemfile("modular/multi_xml_v0_6.gemfile") eval_gemfile("modular/rack_v3.gemfile") + +eval_gemfile("modular/x_std_libs/r3.1/libs.gemfile") diff --git a/gemfiles/ruby_3_0.gemfile b/gemfiles/ruby_3_0.gemfile index 7fed3524..92db0fcb 100644 --- a/gemfiles/ruby_3_0.gemfile +++ b/gemfiles/ruby_3_0.gemfile @@ -2,9 +2,6 @@ source "https://rubygems.org" -gem "mutex_m", "~> 0.2" -gem "stringio", "~> 3.0" - gemspec path: "../" eval_gemfile("modular/faraday_v2.gemfile") @@ -18,3 +15,5 @@ eval_gemfile("modular/logger_v1_7.gemfile") eval_gemfile("modular/multi_xml_v0_6.gemfile") eval_gemfile("modular/rack_v3.gemfile") + +eval_gemfile("modular/x_std_libs/r3.1/libs.gemfile") diff --git a/gemfiles/ruby_3_1.gemfile b/gemfiles/ruby_3_1.gemfile index 7fed3524..92db0fcb 100644 --- a/gemfiles/ruby_3_1.gemfile +++ b/gemfiles/ruby_3_1.gemfile @@ -2,9 +2,6 @@ source "https://rubygems.org" -gem "mutex_m", "~> 0.2" -gem "stringio", "~> 3.0" - gemspec path: "../" eval_gemfile("modular/faraday_v2.gemfile") @@ -18,3 +15,5 @@ eval_gemfile("modular/logger_v1_7.gemfile") eval_gemfile("modular/multi_xml_v0_6.gemfile") eval_gemfile("modular/rack_v3.gemfile") + +eval_gemfile("modular/x_std_libs/r3.1/libs.gemfile") diff --git a/gemfiles/ruby_3_2.gemfile b/gemfiles/ruby_3_2.gemfile index 562e0116..7c4e1ec7 100644 --- a/gemfiles/ruby_3_2.gemfile +++ b/gemfiles/ruby_3_2.gemfile @@ -2,9 +2,6 @@ source "https://rubygems.org" -gem "mutex_m", "~> 0.2" -gem "stringio", "~> 3.0" - gemspec path: "../" eval_gemfile("modular/faraday_v2.gemfile") @@ -18,3 +15,5 @@ eval_gemfile("modular/logger_v1_7.gemfile") eval_gemfile("modular/multi_xml_v0_7.gemfile") eval_gemfile("modular/rack_v3.gemfile") + +eval_gemfile("modular/x_std_libs/r3/libs.gemfile") diff --git a/gemfiles/ruby_3_3.gemfile b/gemfiles/ruby_3_3.gemfile index 562e0116..7c4e1ec7 100644 --- a/gemfiles/ruby_3_3.gemfile +++ b/gemfiles/ruby_3_3.gemfile @@ -2,9 +2,6 @@ source "https://rubygems.org" -gem "mutex_m", "~> 0.2" -gem "stringio", "~> 3.0" - gemspec path: "../" eval_gemfile("modular/faraday_v2.gemfile") @@ -18,3 +15,5 @@ eval_gemfile("modular/logger_v1_7.gemfile") eval_gemfile("modular/multi_xml_v0_7.gemfile") eval_gemfile("modular/rack_v3.gemfile") + +eval_gemfile("modular/x_std_libs/r3/libs.gemfile") diff --git a/gemfiles/style.gemfile b/gemfiles/style.gemfile index bd9f436e..4fd57066 100644 --- a/gemfiles/style.gemfile +++ b/gemfiles/style.gemfile @@ -2,9 +2,8 @@ source "https://rubygems.org" -gem "mutex_m", "~> 0.2" -gem "stringio", "~> 3.0" - gemspec path: "../" eval_gemfile("modular/style.gemfile") + +eval_gemfile("modular/x_std_libs/r3/libs.gemfile") diff --git a/gemfiles/unlocked_deps.gemfile b/gemfiles/unlocked_deps.gemfile index dd719981..31c29e3e 100644 --- a/gemfiles/unlocked_deps.gemfile +++ b/gemfiles/unlocked_deps.gemfile @@ -11,3 +11,5 @@ eval_gemfile("modular/documentation.gemfile") eval_gemfile("modular/style.gemfile") eval_gemfile("modular/optional.gemfile") + +eval_gemfile("modular/x_std_libs.gemfile") diff --git a/oauth2.gemspec b/oauth2.gemspec index 4a70ce85..58fb10c1 100644 --- a/oauth2.gemspec +++ b/oauth2.gemspec @@ -148,10 +148,57 @@ Thanks, @pboling / @galtzo # Development dependencies that require strictly newer Ruby versions should be in a "gemfile", # and preferably a modular one (see gemfiles/modular/*.gemfile). - # Dev, Test, & Release Tasks spec.add_development_dependency("addressable", "~> 2.8", ">= 2.8.7") # ruby>= 2.2 spec.add_development_dependency("backports", "~> 3.25", ">= 3.25.1") # ruby>= 0 - spec.add_development_dependency("kettle-dev", "~> 1.1", ">= 1.1.7") # ruby>= 2.3 spec.add_development_dependency("nkf", "~> 0.2") # ruby>= 2.3 spec.add_development_dependency("rexml", "~> 3.2", ">= 3.2.5") # ruby>= 0 + + # Dev, Test, & Release Tasks + spec.add_development_dependency("kettle-dev", "~> 1.1", ">= 1.1.9") # ruby>= 2.3 + + # Security + spec.add_development_dependency("bundler-audit", "~> 0.9.2") # ruby>= 2.0.0 + + # Tasks + spec.add_development_dependency("rake", "~> 13.0") # ruby>= 2.2.0 + + # Debugging + spec.add_development_dependency("require_bench", "~> 1.0", ">= 1.0.4") # ruby>= 2.2.0 + + # Testing + spec.add_development_dependency("appraisal2", "~> 3.0") # ruby>= 1.8.7, for testing against multiple versions of dependencies + spec.add_development_dependency("kettle-test", "~> 1.0") # ruby>= 2.3 + spec.add_development_dependency("rspec-pending_for", "~> 0.0", ">= 0.0.17") # ruby>= 2.3, used to skip specs on incompatible Rubies + + # Releasing + spec.add_development_dependency("ruby-progressbar", "~> 1.13") # ruby>= 0 + spec.add_development_dependency("stone_checksums", "~> 1.0", ">= 1.0.2") # ruby>= 2.2.0 + + # Git integration (optional) + # The 'git' gem is optional; oauth2 falls back to shelling out to `git` if it is not present. + # The current release of the git gem depends on activesupport, which makes it too heavy to depend on directly + # spec.add_dependency("git", ">= 1.19.1") # ruby>= 2.3 + + # Development tasks + # The cake is a lie. erb v2.2, the oldest release on RubyGems.org, was never compatible with Ruby 2.3. + # This means we have no choice but to use the erb that shipped with Ruby 2.3 + # /opt/hostedtoolcache/Ruby/2.3.8/x64/lib/ruby/gems/2.3.0/gems/erb-2.2.2/lib/erb.rb:670:in `prepare_trim_mode': undefined method `match?' for "-":String (NoMethodError) + # spec.add_development_dependency("erb", ">= 2.2") # ruby>= 2.3.0, not SemVer, old rubies get dropped in a patch. + spec.add_development_dependency("gitmoji-regex", "~> 1.0", ">= 1.0.3") # ruby>= 2.3.0 + + # HTTP recording for deterministic specs + # It seems that somehow just having a newer version of appraisal installed breaks + # Ruby 2.3 and 2.4 even if their bundle specifies an older version, + # and as a result it can only be a dependency in the appraisals. + # | An error occurred while loading spec_helper. + # | Failure/Error: require "vcr" + # | + # | NoMethodError: + # | undefined method `delete_prefix' for "CONTENT_LENGTH":String + # | # ./spec/config/vcr.rb:3:in `require' + # | # ./spec/config/vcr.rb:3:in `' + # | # ./spec/spec_helper.rb:8:in `require_relative' + # | # ./spec/spec_helper.rb:8:in `' + # spec.add_development_dependency("vcr", ">= 4") # 6.0 claims to support ruby>= 2.3, but fails on ruby 2.4 + # spec.add_development_dependency("webmock", ">= 3") # Last version to support ruby>= 2.3 end From 90ef38326eaf530c8d7f6e58a74d488c759f59cd Mon Sep 17 00:00:00 2001 From: "Peter H. Boling" Date: Sun, 7 Sep 2025 22:59:19 -0600 Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=92=9A=20Use=20backports/2.5.0/string?= =?UTF-8?q?/delete=5Fprefix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gemfiles/modular/erb/r2.4/v2.2.gemfile | 6 ++++++ gemfiles/modular/x_std_libs/r2.4/libs.gemfile | 2 +- spec/ext/backports.rb | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 gemfiles/modular/erb/r2.4/v2.2.gemfile diff --git a/gemfiles/modular/erb/r2.4/v2.2.gemfile b/gemfiles/modular/erb/r2.4/v2.2.gemfile new file mode 100644 index 00000000..5777e7e3 --- /dev/null +++ b/gemfiles/modular/erb/r2.4/v2.2.gemfile @@ -0,0 +1,6 @@ +# Ruby>= 2.3.0 (claimed, but not true, minimum support is Ruby 2.4) +# Last version supporting Ruby <= 2.6 +gem "erb", "~> 2.2.2" + +# Pin CGI to a version compatible with Ruby 2.4. +gem "cgi", "~> 0.1.1" diff --git a/gemfiles/modular/x_std_libs/r2.4/libs.gemfile b/gemfiles/modular/x_std_libs/r2.4/libs.gemfile index c1bcbd8f..5a3c5b6c 100644 --- a/gemfiles/modular/x_std_libs/r2.4/libs.gemfile +++ b/gemfiles/modular/x_std_libs/r2.4/libs.gemfile @@ -1,3 +1,3 @@ -eval_gemfile "../../erb/r2.6/v2.2.gemfile" +eval_gemfile "../../erb/r2.4/v2.2.gemfile" eval_gemfile "../../mutex_m/r2.4/v0.1.gemfile" eval_gemfile "../../stringio/r2.4/v0.0.2.gemfile" diff --git a/spec/ext/backports.rb b/spec/ext/backports.rb index 21f76e1c..322d8f4d 100644 --- a/spec/ext/backports.rb +++ b/spec/ext/backports.rb @@ -1,3 +1,4 @@ # frozen_string_literal: true require "backports/2.5.0/hash/transform_keys" +require "backports/2.5.0/string/delete_prefix" From 6c16e3d239372b5936664064647379f970071685 Mon Sep 17 00:00:00 2001 From: "Peter H. Boling" Date: Sun, 7 Sep 2025 23:10:13 -0600 Subject: [PATCH 6/6] =?UTF-8?q?=F0=9F=94=A5=20dep-heads=20workflow=20super?= =?UTF-8?q?sedes=20current=5Fruntime=5Fheads?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/current-runtime-heads.yml | 87 --------------------- 1 file changed, 87 deletions(-) delete mode 100644 .github/workflows/current-runtime-heads.yml diff --git a/.github/workflows/current-runtime-heads.yml b/.github/workflows/current-runtime-heads.yml deleted file mode 100644 index eb769656..00000000 --- a/.github/workflows/current-runtime-heads.yml +++ /dev/null @@ -1,87 +0,0 @@ -# Targets the evergreen latest release of ruby, truffleruby, and jruby -# and tests against the HEAD of runtime dependencies -name: Runtime Deps @ HEAD - -permissions: - contents: read - -env: - K_SOUP_COV_DO: false - -on: - push: - branches: - - 'main' - - '*-stable' - tags: - - '!*' # Do not execute on tags - pull_request: - branches: - - '*' - # Allow manually triggering the workflow. - workflow_dispatch: - -# Cancels all previous workflow runs for the same branch that have not yet completed. -concurrency: - # The concurrency group contains the workflow name and the branch name. - group: "${{ github.workflow }}-${{ github.ref }}" - cancel-in-progress: true - -jobs: - test: - name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }} - if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" - runs-on: ubuntu-latest - continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }} - env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps - BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile - strategy: - matrix: - include: - # Ruby 3.4 - - ruby: "ruby" - appraisal: "current-runtime-heads" - exec_cmd: "rake test" - gemfile: "Appraisal.root" - rubygems: latest - bundler: latest - - # truffleruby-24.1 - # (according to documentation: targets Ruby 3.3 compatibility) - # (according to runtime: targets Ruby 3.2 compatibility) - - ruby: "truffleruby" - appraisal: "current-runtime-heads" - exec_cmd: "rake test" - gemfile: "Appraisal.root" - rubygems: default - bundler: default - - # jruby-10.0 (targets Ruby 3.4 compatibility) - - ruby: "jruby" - appraisal: "current-runtime-heads" - exec_cmd: "rake test" - gemfile: "Appraisal.root" - rubygems: default - bundler: default - - steps: - - name: Checkout - uses: actions/checkout@v5 - - - name: Setup Ruby & RubyGems - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby }} - rubygems: ${{ matrix.rubygems }} - bundler: ${{ matrix.bundler }} - bundler-cache: false - - # Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root) - # We need to do this first to get appraisal installed. - # NOTE: This does not use the primary Gemfile at all. - - name: Install Root Appraisal - run: bundle - - name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }} - run: bundle exec appraisal ${{ matrix.appraisal }} bundle - - name: Tests for ${{ matrix.ruby }}@${{ matrix.appraisal }} via ${{ matrix.exec_cmd }} - run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}

AltStyle によって変換されたページ (->オリジナル) /