From 162c7215a974308c79543476c3b3d0bb123f3d51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 02:12:01 +0000 Subject: [PATCH 1/4] Bump github/codeql-action in the github-actions group across 1 directory Bumps the github-actions group with 1 update in the / directory: [github/codeql-action](https://github.com/github/codeql-action). Updates `github/codeql-action` from 4.32.4 to 4.32.5 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/89a39a4e59826350b863aa6b6252a07ad50cf83e...c793b717bc78562f491db7b0e93a3a178b099162) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.32.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] --- .github/workflows/check_sast.yml | 8 ++++---- .github/workflows/scorecards.yml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/check_sast.yml b/.github/workflows/check_sast.yml index dee4ca0ee9a767..6fed88a6e6d8cc 100644 --- a/.github/workflows/check_sast.yml +++ b/.github/workflows/check_sast.yml @@ -95,17 +95,17 @@ jobs: run: sudo rm /usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb - name: Initialize CodeQL - uses: github/codeql-action/init@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/init@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 with: languages: ${{ matrix.language }} trap-caching: false debug: true - name: Autobuild - uses: github/codeql-action/autobuild@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/autobuild@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/analyze@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 with: category: '/language:${{ matrix.language }}' upload: False @@ -135,7 +135,7 @@ jobs: continue-on-error: true - name: Upload SARIF - uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/upload-sarif@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 with: sarif_file: sarif-results/${{ matrix.language }}.sarif continue-on-error: true diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index c956e47bb04c5a..907519cb4d6621 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -73,6 +73,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard (optional). # Commenting out will disable upload of results to your repo's Code Scanning dashboard - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4 + uses: github/codeql-action/upload-sarif@c793b717bc78562f491db7b0e93a3a178b099162 # v4.32.5 with: sarif_file: results.sarif From 571ce8d77968edcae4d908353f68b6d66d483131 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Thu, 20 Feb 2025 10:55:09 -0600 Subject: [PATCH 2/4] [ruby/stringio] Add tests for read-only methods on frozen StringIO See #120 https://github.com/ruby/stringio/commit/8cba5aac0a --- test/stringio/test_stringio.rb | 96 ++++++++++++++++++++++++++++------ 1 file changed, 81 insertions(+), 15 deletions(-) diff --git a/test/stringio/test_stringio.rb b/test/stringio/test_stringio.rb index 024906261efaac..656c0bb91d25c5 100644 --- a/test/stringio/test_stringio.rb +++ b/test/stringio/test_stringio.rb @@ -359,6 +359,9 @@ def test_open def test_isatty assert_equal(false, StringIO.new("").isatty) + assert_equal(false, StringIO.new("").tty?) + assert_nothing_raised { StringIO.new("").freeze.isatty} + assert_nothing_raised { StringIO.new("").freeze.tty?} end def test_fsync @@ -368,6 +371,7 @@ def test_fsync def test_sync assert_equal(true, StringIO.new("").sync) assert_equal(false, StringIO.new("").sync = false) + assert_nothing_raised { StringIO.new("").freeze.sync} end def test_set_fcntl @@ -420,8 +424,8 @@ def test_closed assert_equal(false, f.closed?) f.close assert_equal(true, f.closed?) - ensure - f.close unless f.closed? + f.freeze + assert_nothing_raised { f.closed? } end def test_closed_read @@ -431,8 +435,8 @@ def test_closed_read assert_equal(false, f.closed_read?) f.close_read assert_equal(true, f.closed_read?) - ensure - f.close unless f.closed? + f.freeze + assert_nothing_raised { f.closed_read? } end def test_closed_write @@ -442,8 +446,8 @@ def test_closed_write assert_equal(false, f.closed_write?) f.close_write assert_equal(true, f.closed_write?) - ensure - f.close unless f.closed? + f.freeze + assert_nothing_raised { f.closed_write? } end def test_dup @@ -469,8 +473,8 @@ def test_lineno f.lineno = 1000 assert_equal([1000, "baz\n"], [f.lineno, f.gets]) assert_equal([1001, nil], [f.lineno, f.gets]) - ensure - f.close unless f.closed? + f.freeze + assert_nothing_raised { f.lineno } end def test_pos @@ -483,8 +487,8 @@ def test_pos assert_equal([4, "bar\n"], [f.pos, f.gets]) assert_equal([8, "baz\n"], [f.pos, f.gets]) assert_equal([12, nil], [f.pos, f.gets]) - ensure - f.close unless f.closed? + f.freeze + assert_nothing_raised { f.pos } end def test_reopen @@ -508,13 +512,10 @@ def test_seek assert_raise(Errno::EINVAL) { f.seek(1, 3) } f.close assert_raise(IOError) { f.seek(0) } - ensure - f.close unless f.closed? - end - - def test_seek_frozen_string f = StringIO.new(-"1234") assert_equal(0, f.seek(1)) + ensure + f.close unless f.closed? end def test_each_byte @@ -837,11 +838,17 @@ def test_pread buf = "stale".b assert_equal "stale".b, StringIO.new("").pread(0, 0, buf) assert_equal "stale".b, buf + + assert_nothing_raised { StringIO.new("pread").freeze.pread(3, 0)} end def test_size f = StringIO.new("1234") assert_equal(4, f.size) + assert_equal(4, f.length) + f.freeze + assert_nothing_raised { f.size } + assert_nothing_raised { f.length } end # This test is should in ruby/test_method.rb @@ -1105,6 +1112,65 @@ def test_chilled_string_set_enocoding end end + def test_eof + f = StringIO.new + assert_equal(true, f.eof) + assert_equal(true, f.eof?) + f.ungetc("1234") + assert_equal(false, f.eof) + assert_equal(false, f.eof?) + f.freeze + assert_nothing_raised { f.eof } + assert_nothing_raised { f.eof? } + end + + def test_pid + f = StringIO.new + assert_equal(nil, f.pid) + f.freeze + assert_nothing_raised { f.pid } + end + + def test_fileno + f = StringIO.new + assert_equal(nil, f.fileno) + f.freeze + assert_nothing_raised { f.fileno } + end + + def test_external_encoding + f = StringIO.new + assert_equal(Encoding.find("external"), f.external_encoding) + f = StringIO.new("1234".encode("UTF-16BE")) + assert_equal(Encoding::UTF_16BE, f.external_encoding) + f.freeze + assert_nothing_raised { f.external_encoding } + end + + def test_string + f = StringIO.new + assert_equal("", f.string) + f = StringIO.new("1234") + assert_equal("1234", f.string) + f.freeze + assert_nothing_raised { f.string } + end + + def test_initialize_copy + f = StringIO.new("1234") + f.read(1) + f2 = f.dup + assert_equal(1, f2.pos) + f.read(1) + assert_equal(2, f2.pos) + f.ungetc("56") + assert_equal(0, f2.pos) + assert_equal("5634", f2.string) + f.freeze + f2 = f.dup + assert_not_predicate(f2, :frozen?) + end + private def assert_string(content, encoding, str, mesg = nil) From 8d64eb685401c794a45e489096e0b153a8d62b88 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 13 Feb 2026 13:13:27 +0900 Subject: [PATCH 3/4] [ruby/stringio] Allow read-only methods to work with frozen StringIO Fix https://github.com/ruby/stringio/pull/120 https://github.com/ruby/stringio/commit/b0e3ce88b3 --- ext/stringio/stringio.c | 47 ++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c index b4aa6ac5a8f9e4..09757a283eaf7c 100644 --- a/ext/stringio/stringio.c +++ b/ext/stringio/stringio.c @@ -62,6 +62,7 @@ struct StringIO { int count; }; +static struct StringIO *get_strio_for_read(VALUE self); static VALUE strio_init(int, VALUE *, struct StringIO *, VALUE); static VALUE strio_unget_bytes(struct StringIO *, const char *, long); static long strio_write(VALUE self, VALUE str); @@ -126,8 +127,14 @@ static const rb_data_type_t strio_data_type = { static struct StringIO* get_strio(VALUE self) { - struct StringIO *ptr = check_strio(rb_io_taint_check(self)); + rb_check_frozen(self); + return get_strio_for_read(self); +} +static struct StringIO* +get_strio_for_read(VALUE self) +{ + struct StringIO *ptr = check_strio(self); if (!ptr) { rb_raise(rb_eIOError, "uninitialized stream"); } @@ -155,6 +162,7 @@ strio_substr(struct StringIO *ptr, long pos, long len, rb_encoding *enc) } #define StringIO(obj) get_strio(obj) +#define StringIOForRead(obj) get_strio_for_read(obj) #define STRIO_READABLE FL_USER4 #define STRIO_WRITABLE FL_USER5 @@ -182,7 +190,7 @@ static VALUE sym_exception; static struct StringIO* readable(VALUE strio) { - struct StringIO *ptr = StringIO(strio); + struct StringIO *ptr = StringIOForRead(strio); if (!READABLE(strio)) { rb_raise(rb_eIOError, "not opened for reading"); } @@ -387,7 +395,8 @@ strio_init(int argc, VALUE *argv, struct StringIO *ptr, VALUE self) static VALUE strio_finalize(VALUE self) { - struct StringIO *ptr = StringIO(self); + struct StringIO *ptr = check_strio(self); + if (!ptr) return Qnil; RB_OBJ_WRITE(self, &ptr->string, Qnil); ptr->flags &= ~FMODE_READWRITE; return self; @@ -439,7 +448,7 @@ strio_s_new(int argc, VALUE *argv, VALUE klass) static VALUE strio_false(VALUE self) { - StringIO(self); + StringIOForRead(self); return Qfalse; } @@ -449,7 +458,7 @@ strio_false(VALUE self) static VALUE strio_nil(VALUE self) { - StringIO(self); + StringIOForRead(self); return Qnil; } @@ -459,7 +468,7 @@ strio_nil(VALUE self) static VALUE strio_self(VALUE self) { - StringIO(self); + StringIOForRead(self); return self; } @@ -469,7 +478,7 @@ strio_self(VALUE self) static VALUE strio_0(VALUE self) { - StringIO(self); + StringIOForRead(self); return INT2FIX(0); } @@ -479,7 +488,7 @@ strio_0(VALUE self) static VALUE strio_first(VALUE self, VALUE arg) { - StringIO(self); + StringIOForRead(self); return arg; } @@ -489,7 +498,7 @@ strio_first(VALUE self, VALUE arg) static VALUE strio_unimpl(int argc, VALUE *argv, VALUE self) { - StringIO(self); + StringIOForRead(self); rb_notimplement(); UNREACHABLE; @@ -517,7 +526,7 @@ strio_unimpl(int argc, VALUE *argv, VALUE self) static VALUE strio_get_string(VALUE self) { - return StringIO(self)->string; + return StringIOForRead(self)->string; } /* @@ -650,7 +659,7 @@ strio_close_write(VALUE self) static VALUE strio_closed(VALUE self) { - StringIO(self); + StringIOForRead(self); if (!CLOSED(self)) return Qfalse; return Qtrue; } @@ -671,7 +680,7 @@ strio_closed(VALUE self) static VALUE strio_closed_read(VALUE self) { - StringIO(self); + StringIOForRead(self); if (READABLE(self)) return Qfalse; return Qtrue; } @@ -692,7 +701,7 @@ strio_closed_read(VALUE self) static VALUE strio_closed_write(VALUE self) { - StringIO(self); + StringIOForRead(self); if (WRITABLE(self)) return Qfalse; return Qtrue; } @@ -738,7 +747,7 @@ strio_copy(VALUE copy, VALUE orig) orig = rb_convert_type(orig, T_DATA, "StringIO", "to_strio"); if (copy == orig) return copy; - ptr = StringIO(orig); + ptr = StringIOForRead(orig); old_ptr = check_strio(copy); if (old_ptr) { old_string = old_ptr->string; @@ -762,7 +771,7 @@ strio_copy(VALUE copy, VALUE orig) static VALUE strio_get_lineno(VALUE self) { - return LONG2NUM(StringIO(self)->lineno); + return LONG2NUM(StringIOForRead(self)->lineno); } /* @@ -850,7 +859,7 @@ strio_reopen(int argc, VALUE *argv, VALUE self) static VALUE strio_get_pos(VALUE self) { - return LONG2NUM(StringIO(self)->pos); + return LONG2NUM(StringIOForRead(self)->pos); } /* @@ -942,7 +951,7 @@ strio_seek(int argc, VALUE *argv, VALUE self) static VALUE strio_get_sync(VALUE self) { - StringIO(self); + StringIOForRead(self); return Qtrue; } @@ -1863,7 +1872,7 @@ strio_syswrite_nonblock(int argc, VALUE *argv, VALUE self) static VALUE strio_size(VALUE self) { - VALUE string = StringIO(self)->string; + VALUE string = StringIOForRead(self)->string; if (NIL_P(string)) { return INT2FIX(0); } @@ -1915,7 +1924,7 @@ strio_truncate(VALUE self, VALUE len) static VALUE strio_external_encoding(VALUE self) { - struct StringIO *ptr = StringIO(self); + struct StringIO *ptr = StringIOForRead(self); return rb_enc_from_encoding(get_enc(ptr)); } From 1008a469499bbbefb31f59a1b2cbb6ce0120bbfa Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 18 Feb 2026 14:21:45 +0900 Subject: [PATCH 4/4] [ruby/rubygems] Show release date with bundle outdated https://github.com/ruby/rubygems/commit/300cc0c223 --- lib/bundler/cli/outdated.rb | 26 +++++++++++- lib/bundler/man/bundle-outdated.1 | 24 +++++------ lib/bundler/man/bundle-outdated.1.ronn | 24 +++++------ spec/bundler/commands/newgem_spec.rb | 2 +- spec/bundler/commands/outdated_spec.rb | 56 +++++++++++++------------- spec/bundler/commands/platform_spec.rb | 4 +- 6 files changed, 79 insertions(+), 57 deletions(-) diff --git a/lib/bundler/cli/outdated.rb b/lib/bundler/cli/outdated.rb index 0c8ba3ebf73063..ae827dbb4b97ca 100644 --- a/lib/bundler/cli/outdated.rb +++ b/lib/bundler/cli/outdated.rb @@ -199,7 +199,11 @@ def print_gem(current_spec, active_spec, dependency, groups) end spec_outdated_info = "#{active_spec.name} (newest #{spec_version}, " \ - "installed #{current_version}#{dependency_version})" + "installed #{current_version}#{dependency_version}" + + release_date = release_date_for(active_spec) + spec_outdated_info += ", released #{release_date}" unless release_date.empty? + spec_outdated_info += ")" output_message = if options[:parseable] spec_outdated_info.to_s @@ -218,6 +222,7 @@ def gem_column_for(current_spec, active_spec, dependency, groups) dependency = dependency.requirement if dependency ret_val = [active_spec.name, current_version, spec_version, dependency.to_s, groups.to_s] + ret_val << release_date_for(active_spec) ret_val << loaded_from_for(active_spec).to_s if Bundler.ui.debug? ret_val end @@ -283,11 +288,28 @@ def print_indented(matrix) end def table_header - header = ["Gem", "Current", "Latest", "Requested", "Groups"] + header = ["Gem", "Current", "Latest", "Requested", "Groups", "Release Date"] header << "Path" if Bundler.ui.debug? header end + def release_date_for(spec) + return "" unless spec.respond_to?(:date) + + date = spec.date + return "" unless date + + return "" unless Gem.const_defined?(:DEFAULT_SOURCE_DATE_EPOCH) + default_date = Time.at(Gem::DEFAULT_SOURCE_DATE_EPOCH).utc + default_date = Time.utc(default_date.year, default_date.month, default_date.day) + + date = date.utc if date.respond_to?(:utc) + + return "" if date == default_date + + date.strftime("%Y-%m-%d") + end + def justify(row, sizes) row.each_with_index.map do |element, index| element.ljust(sizes[index]) diff --git a/lib/bundler/man/bundle-outdated.1 b/lib/bundler/man/bundle-outdated.1 index 28d361754a3d35..b1ddd0d31530a6 100644 --- a/lib/bundler/man/bundle-outdated.1 +++ b/lib/bundler/man/bundle-outdated.1 @@ -61,42 +61,42 @@ The 3 filtering options do not affect the resolution of versions, merely what ve If the regular output shows the following: .IP "" 4 .nf -* Gem Current Latest Requested Groups -* faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test -* hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default -* headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test +* Gem Current Latest Requested Groups Release Date +* faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test 2024\-02\-05 +* hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default 2023\-11\-10 +* headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test 2022\-08\-19 .fi .IP "" 0 .P \fB\-\-filter\-major\fR would only show: .IP "" 4 .nf -* Gem Current Latest Requested Groups -* hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default +* Gem Current Latest Requested Groups Release Date +* hashie 1\.2\.0 3\.4\.6 = 1\.2\.0 default 2023\-11\-10 .fi .IP "" 0 .P \fB\-\-filter\-minor\fR would only show: .IP "" 4 .nf -* Gem Current Latest Requested Groups -* headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test +* Gem Current Latest Requested Groups Release Date +* headless 2\.2\.3 2\.3\.1 = 2\.2\.3 test 2022\-08\-19 .fi .IP "" 0 .P \fB\-\-filter\-patch\fR would only show: .IP "" 4 .nf -* Gem Current Latest Requested Groups -* faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test +* Gem Current Latest Requested Groups Release Date +* faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test 2024\-02\-05 .fi .IP "" 0 .P Filter options can be combined\. \fB\-\-filter\-minor\fR and \fB\-\-filter\-patch\fR would show: .IP "" 4 .nf -* Gem Current Latest Requested Groups -* faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test +* Gem Current Latest Requested Groups Release Date +* faker 1\.6\.5 1\.6\.6 ~> 1\.4 development, test 2024\-02\-05 .fi .IP "" 0 .P diff --git a/lib/bundler/man/bundle-outdated.1.ronn b/lib/bundler/man/bundle-outdated.1.ronn index 6f67a31977b946..2c692c929be617 100644 --- a/lib/bundler/man/bundle-outdated.1.ronn +++ b/lib/bundler/man/bundle-outdated.1.ronn @@ -82,29 +82,29 @@ in the output. If the regular output shows the following: - * Gem Current Latest Requested Groups - * faker 1.6.5 1.6.6 ~> 1.4 development, test - * hashie 1.2.0 3.4.6 = 1.2.0 default - * headless 2.2.3 2.3.1 = 2.2.3 test + * Gem Current Latest Requested Groups Release Date + * faker 1.6.5 1.6.6 ~> 1.4 development, test 2024-02-05 + * hashie 1.2.0 3.4.6 = 1.2.0 default 2023-11-10 + * headless 2.2.3 2.3.1 = 2.2.3 test 2022-08-19 `--filter-major` would only show: - * Gem Current Latest Requested Groups - * hashie 1.2.0 3.4.6 = 1.2.0 default + * Gem Current Latest Requested Groups Release Date + * hashie 1.2.0 3.4.6 = 1.2.0 default 2023-11-10 `--filter-minor` would only show: - * Gem Current Latest Requested Groups - * headless 2.2.3 2.3.1 = 2.2.3 test + * Gem Current Latest Requested Groups Release Date + * headless 2.2.3 2.3.1 = 2.2.3 test 2022-08-19 `--filter-patch` would only show: - * Gem Current Latest Requested Groups - * faker 1.6.5 1.6.6 ~> 1.4 development, test + * Gem Current Latest Requested Groups Release Date + * faker 1.6.5 1.6.6 ~> 1.4 development, test 2024-02-05 Filter options can be combined. `--filter-minor` and `--filter-patch` would show: - * Gem Current Latest Requested Groups - * faker 1.6.5 1.6.6 ~> 1.4 development, test + * Gem Current Latest Requested Groups Release Date + * faker 1.6.5 1.6.6 ~> 1.4 development, test 2024-02-05 Combining all three `filter` options would be the same result as providing none of them. diff --git a/spec/bundler/commands/newgem_spec.rb b/spec/bundler/commands/newgem_spec.rb index 754dd3f31f3f24..15564544e35e06 100644 --- a/spec/bundler/commands/newgem_spec.rb +++ b/spec/bundler/commands/newgem_spec.rb @@ -1764,7 +1764,7 @@ def create_temporary_dir(dir) it "configures the crate such that `cargo test` works", :ruby_repo, :mri_only do env = setup_rust_env gem_path = bundled_app(gem_name) - result = sys_exec("cargo test", env: env, dir: gem_path) + result = sys_exec("cargo test", env: env, dir: gem_path, timeout: 300) expect(result).to include("1 passed") end diff --git a/spec/bundler/commands/outdated_spec.rb b/spec/bundler/commands/outdated_spec.rb index d8633d12e82b4c..e5460e55a5ab9c 100644 --- a/spec/bundler/commands/outdated_spec.rb +++ b/spec/bundler/commands/outdated_spec.rb @@ -30,7 +30,7 @@ bundle "outdated", raise_on_error: false expected_output = <<~TABLE.gsub("x", "\\\h").tr(".", "\.").strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date activesupport 2.3.5 3.0 = 2.3.5 default foo 1.0 xxxxxxx 1.0 xxxxxxx >= 0 default weakling 0.0.3 0.2 ~> 0.0.1 default @@ -53,7 +53,7 @@ bundle "outdated", raise_on_error: false expected_output = <<~TABLE - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date AAA 1.0.0 2.0.0 = 1.0.0 default TABLE @@ -92,7 +92,7 @@ bundle "outdated", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date activesupport 2.3.5 3.0 = 2.3.5 development, test terranova 8 9 = 8 default TABLE @@ -142,9 +142,9 @@ bundle "outdated --verbose", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups Path + Gem Current Latest Requested Groups Release Date Path activesupport 2.3.5 3.0 = 2.3.5 default - terranova 8 9 = 8 default #{default_bundle_path("specifications/terranova-9.gemspec")} + terranova 8 9 = 8 default #{default_bundle_path("specifications/terranova-9.gemspec")} TABLE expect(out).to end_with(expected_output) @@ -197,7 +197,7 @@ def test_group_option(group) test_group_option("default") expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date terranova 8 9 = 8 default TABLE @@ -208,7 +208,7 @@ def test_group_option(group) test_group_option("development") expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date activesupport 2.3.5 3.0 = 2.3.5 development, test duradura 7.0 8.0 = 7.0 development, test TABLE @@ -220,7 +220,7 @@ def test_group_option(group) test_group_option("test") expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date activesupport 2.3.5 3.0 = 2.3.5 development, test duradura 7.0 8.0 = 7.0 development, test TABLE @@ -257,7 +257,7 @@ def test_group_option(group) bundle "outdated --groups", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date bar 2.0.0 3.0.0 TABLE @@ -299,7 +299,7 @@ def test_group_option(group) bundle "outdated --groups", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date activesupport 2.3.5 3.0 = 2.3.5 development, test duradura 7.0 8.0 = 7.0 development, test terranova 8 9 = 8 default @@ -343,7 +343,7 @@ def test_group_option(group) bundle "outdated --local", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date activesupport 2.3.4 2.3.5 = 2.3.4 default TABLE @@ -454,7 +454,7 @@ def test_group_option(group) bundle "outdated foo", raise_on_error: false expected_output = <<~TABLE.gsub("x", "\\\h").tr(".", "\.").strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date foo 1.0 xxxxxxx 1.0 xxxxxxx >= 0 default TABLE @@ -491,7 +491,7 @@ def test_group_option(group) bundle "outdated zeitwerk", raise_on_error: false expected_output = <<~TABLE.tr(".", "\.").strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date zeitwerk 1.0.0 2.0.0 >= 0 default TABLE @@ -539,7 +539,7 @@ def test_group_option(group) bundle "outdated --pre", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date activesupport 2.3.5 3.0.0.beta = 2.3.5 default TABLE @@ -562,7 +562,7 @@ def test_group_option(group) bundle "outdated", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date activesupport 3.0.0.beta.1 3.0.0.beta.2 = 3.0.0.beta.1 default TABLE @@ -598,7 +598,7 @@ def test_group_option(group) bundle :outdated, "filter-strict": true, raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date weakling 0.0.3 0.0.5 ~> 0.0.1 default TABLE @@ -614,7 +614,7 @@ def test_group_option(group) bundle :outdated, strict: true, raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date weakling 0.0.3 0.0.5 ~> 0.0.1 default TABLE @@ -659,7 +659,7 @@ def test_group_option(group) bundle :outdated, :"filter-strict" => true, "filter-patch" => true, :raise_on_error => false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date weakling 0.0.3 0.0.5 >= 0.0.1 default TABLE @@ -681,7 +681,7 @@ def test_group_option(group) bundle :outdated, :"filter-strict" => true, "filter-minor" => true, :raise_on_error => false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date weakling 0.0.3 0.1.5 >= 0.0.1 default TABLE @@ -703,7 +703,7 @@ def test_group_option(group) bundle :outdated, :"filter-strict" => true, "filter-major" => true, :raise_on_error => false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date weakling 0.0.3 1.1.5 >= 0.0.1 default TABLE @@ -847,7 +847,7 @@ def test_group_option(group) bundle "outdated", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date laduradura 5.15.2 5.15.3 = 5.15.2 default TABLE @@ -1149,7 +1149,7 @@ def test_group_option(group) bundle "outdated --patch --filter-patch", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date major 1.0.0 1.0.1 >= 0 default minor 1.0.0 1.0.1 >= 0 default patch 1.0.0 1.0.1 >= 0 default @@ -1162,7 +1162,7 @@ def test_group_option(group) bundle "outdated --minor --filter-minor", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date major 1.0.0 1.1.0 >= 0 default minor 1.0.0 1.1.0 >= 0 default TABLE @@ -1216,7 +1216,7 @@ def test_group_option(group) bundle "outdated --patch --filter-patch", raise_on_error: false, env: { "DEBUG_RESOLVER" => "1" } expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date bar 2.0.3 2.0.5 foo 1.4.3 1.4.4 >= 0 default TABLE @@ -1228,7 +1228,7 @@ def test_group_option(group) bundle "outdated --patch --filter-patch", raise_on_error: false, env: { "DEBUG" => "1" } expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups Path + Gem Current Latest Requested Groups Release Date Path bar 2.0.3 2.0.5 foo 1.4.3 1.4.4 >= 0 default TABLE @@ -1260,7 +1260,7 @@ def test_group_option(group) bundle "outdated --only-explicit", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date weakling 0.2 0.3 >= 0 default TABLE @@ -1310,7 +1310,7 @@ def test_group_option(group) bundle "outdated", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date nokogiri 1.11.1 1.11.2 >= 0 default TABLE @@ -1359,7 +1359,7 @@ def test_group_option(group) bundle "outdated", raise_on_error: false expected_output = <<~TABLE.strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date mini_portile2 2.5.2 2.5.3 >= 0 default TABLE diff --git a/spec/bundler/commands/platform_spec.rb b/spec/bundler/commands/platform_spec.rb index 71ccbb0909bdaa..1e233e0917b026 100644 --- a/spec/bundler/commands/platform_spec.rb +++ b/spec/bundler/commands/platform_spec.rb @@ -1143,7 +1143,7 @@ def should_be_patchlevel_fixnum bundle "outdated", raise_on_error: false expected_output = <<~TABLE.gsub("x", "\\\h").tr(".", "\.").strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date activesupport 2.3.5 3.0 = 2.3.5 default foo 1.0 xxxxxxx 1.0 xxxxxxx >= 0 default TABLE @@ -1169,7 +1169,7 @@ def should_be_patchlevel_fixnum bundle "outdated", raise_on_error: false expected_output = <<~TABLE.gsub("x", "\\\h").tr(".", "\.").strip - Gem Current Latest Requested Groups + Gem Current Latest Requested Groups Release Date activesupport 2.3.5 3.0 = 2.3.5 default foo 1.0 xxxxxxx 1.0 xxxxxxx >= 0 default TABLE