summaryrefslogtreecommitdiff
path: root/spec
AgeCommit message (Collapse)Author
2023-03-22Added assertion values for Amazon Linux 2023Hiroshi SHIBATA
2023-03-17When running `bundle lock --update <name>`, checkout locked revision of ↵David Rodríguez
unrelated git sources directly Since Bundler 2.4, we will try to checkout any branch specified in the Gemfile, while until Bundler 2.3 we would directly checkout the locked revision. This should not make any difference in most situations, but in some edge cases, like if the branch specified in the `Gemfile` has been renamed, but the locked revision still exist, it causes an error now while before it would update the lockfile without issues. I debated which behavior was best, since I was not sure. But my conclusion is that if the situation does not require expiring the lockfile source in favor of the Gemfile source, we should use the locked revision directly and proceed happily. So I restored Bundler 2.3 behavior. I think this is consistent with how yanked gems are handled, for example. Of course, if explicitly updating the git source itself, or all gems, we will still get any errors like missing branches related to the git source.
2023-03-17Don´t consider platform specific candidates when `force_ruby_platform` setDavid Rodríguez
This was working fine for direct dependencies using `force_ruby_platform` explicitly through Gemfile, but not for indirect dependencies. In general, indirect dependencies do not have this property set, but in truffleruby this is different and the default value is to have it set.
2023-03-17Don't ignore pre-releases when there's only one candidateDavid Rodríguez
This should be a very rare edge case, however, it does happen when using a .dev version of Bundler because in that case, that's the only version that the resolver considers, and it should not be ignored. We could've special cased this specifically for Bundler, but I think it does make sense for every gem.
2023-03-17Normalize git sourcesDavid Rodríguez
Just like gem sources, a "style-only" change, like adding a trailing slash, should not expire them.
2023-03-17[rubygems/rubygems] Fix incorrect error message when multiple platforms are ↵David Rodríguez
locked https://github.com/rubygems/rubygems/commit/24d2bf9cb2
2023-03-17[rubygems/rubygems] Remove unnecessary `specific_local_platform` test helperDavid Rodríguez
https://github.com/rubygems/rubygems/commit/86b574824d
2023-03-17[rubygems/rubygems] Simplify `lockfile_platforms` helperDavid Rodríguez
To make it easier to change the default platforms that get locked later. https://github.com/rubygems/rubygems/commit/255c4012ec
2023-03-17[rubygems/rubygems] Remove unnecessary `local` helperDavid Rodríguez
https://github.com/rubygems/rubygems/commit/27ed6870ce
2023-03-17[rubygems/rubygems] Use more common linux platform for specsDavid Rodríguez
https://github.com/rubygems/rubygems/commit/3841a58095
2023-03-17[rubygems/rubygems] Use splatted args to `lockfile_platforms_for`David Rodríguez
Nicer :) https://github.com/rubygems/rubygems/commit/c0ab2893c3
2023-03-16[rubygems/rubygems] Applied Layout/SpaceAroundOperators copHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/3139587be9
2023-03-15[rubygems/rubygems] Use OpenSSL::Digest instead of digest stdlibHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/69aa007679
2023-03-15rb_ary_sum: don't enter fast path if initial isn't a native numeric type.Jean Boussier
[Bug #19530] If the initial value isn't one of the special cased types, we directly jump to the slow path. Notes: Merged: https://github.com/ruby/ruby/pull/7519
2023-03-10[rubygems/rubygems] Use `RbSys::ExtensionTask` when creating new rust gemsIan Ker-Seymer
https://github.com/rubygems/rubygems/commit/125f9fece9
2023-03-10Accept `sleep(nil)` as sleep forever. (#7484)Samuel Williams
Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2023-03-09Fix commit missNobuyoshi Nakada
2023-03-08Disable color mode of test-syntax-suggest when on dumb terminalNobuyoshi Nakada
The compliation-mode of Emacs sets TERM to "dumb" and does not support coloring.
2023-03-07[rubygems/rubygems] Respect --no-install option for git: sourcesJulie Haehn
Currently, the --no-install option to `bundle package` is totally ignored for git sources. This can have very strange effects if you have: - a git-sourced gem, - with native extensions, - whose extconf.rb script depends on another gem, - which is installed from Rubygems in the gemfile. In that circumstance, `bundle package --no-install --all` will download the Rubygems dependencies to `vendor/cache` but NOT install them. It will also check out the git gems to `vendor/cache` (good), and attempt to build their native extensions (bad!). The native extension build will fail because the extconf.rb script crashes, since the dependency it needs is missing. I implemented a fix for this in `source/git.rb`, since this is analogous to what's happening in `source/rubygems.rb`. I do admit though the whole thing is a little strange though - an "install" method that.... proceeds to look at a global flag to not install anything. Add test to confirm cache respects the --no-install flag https://github.com/rubygems/rubygems/commit/5a77d1c397 Co-authored-by: KJ Tsanaktsidis <kj@kjtsanaktsidis.id.au>
2023-03-07[rubygems/rubygems] Better suggestion when `bundler/setup` fails due to ↵David Rodríguez
missing gems If the original `BUNDLE_GEMFILE` is different from the default, then the suggestion wouldn't work as is. Before: ``` $ util/rubocop Could not find rubocop-1.30.1 in locally installed gems Run `bundle install` to install missing gems. $ rubygems git:(better-cmd-suggestion) ✗ bundle install Could not locate Gemfile ``` After: ``` $ util/rubocop Could not find rubocop-1.30.1 in locally installed gems Run `bundle install --gemfile /path/to/rubygems/bundler/tool/bundler/lint_gems.rb` to install missing gems. $ bundle install --gemfile /path/to/rubygems/bundler/tool/bundler/lint_gems.rb Fetching gem metadata from https://rubygems.org/......... Using ast 2.4.2 Using bundler 2.4.7 Using parser 3.1.2.0 Using rainbow 3.1.1 Using parallel 1.22.1 Using regexp_parser 2.5.0 Using rubocop-ast 1.18.0 Using rexml 3.2.5 Using ruby-progressbar 1.11.0 Using unicode-display_width 2.1.0 Fetching rubocop 1.30.1 Installing rubocop 1.30.1 Using rubocop-performance 1.14.2 Bundle complete! 2 Gemfile dependencies, 12 gems now installed. Use `bundle info [gemname]` to see where a bundled gem is installed. $ util/rubocop Inspecting 345 files ......................................................................................................................................................................................................................................................................................................................................................... 345 files inspected, no offenses detected ``` https://github.com/rubygems/rubygems/commit/bf1320d805
2023-03-06s/mjit/rjit/Takashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7462
2023-03-06s/MJIT/RJIT/Takashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7462
2023-03-03[rubygems/rubygems] Alias CurrentRuby#mswin?, mswin64?, mingw?, x64_mingw? ↵johnnyshields
to #windows?. (This is done instead of logging a deprecation warning.) https://github.com/rubygems/rubygems/commit/b9fcc7c0ab
2023-03-02[rubygems/rubygems] Replace lockfile with `.locked`Tony Hsu
https://github.com/rubygems/rubygems/commit/203f3e3802
2023-03-02[rubygems/rubygems] Regenerate lockfile if spec list is invalid/empty.Ellen Marie Dash
https://github.com/rubygems/rubygems/commit/d2c56315e2
2023-03-01[rubygems/rubygems] Auto-heal on corrupted lockfile with missing depsDaniel Colson
Following up on https://github.com/rubygems/rubygems/pull/6355, which turned a crash into a nicer error message, this commit auto-heals the corrupt lockfile instead. In this particular case (a corrupt Gemfile.lock with missing dependencies) the LazySpecification will not have accurate dependency information, we have to materialize the SpecSet to determine there are missing dependencies. We've already got a way to handle this, via `SpecSet#incomplete_specs`, but it wasn't quite working for this case because we'd get to `@incomplete_specs += lookup[name]` and `lookup[name]` would be empty for the dependency. With this commit we catch it a bit earlier, marking the parent spec containing the missing dependency as incomplete. https://github.com/rubygems/rubygems/commit/486ecb8f20
2023-02-27Skip a spec failing on masterTakashi Kokubun
https://github.com/ruby/ruby/actions/runs/4286361460/jobs/7466545010 http://ci.rvm.jp/results/trunk_gcc9@ruby-sp2-docker/4462424 http://ci.rvm.jp/results/trunk_clang_13@ruby-sp2-docker/4462422
2023-02-27Update to ruby/spec@e7dc804Benoit Daloze
2023-02-27Update to ruby/mspec@dc2eb26Benoit Daloze
2023-02-25Assigning `nil` to fiber storage deletes the association. (#7378)Samuel Williams
Also avoid allocations when looking up `Fiber#storage` if not needed. Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2023-02-23[rubygems/rubygems] lint fix againMercedes Bernard
https://github.com/rubygems/rubygems/commit/118d28ad27
2023-02-23[rubygems/rubygems] lint fixMercedes Bernard
https://github.com/rubygems/rubygems/commit/de3b69f1a7
2023-02-23[rubygems/rubygems] add safe_load_marshal for gem::version and gem::specMercedes Bernard
https://github.com/rubygems/rubygems/commit/2ea2ead1b3
2023-02-23[rubygems/rubygems] test Bundler::Fetcher that error raised when attempting ↵Mercedes Bernard
load unexpected class https://github.com/rubygems/rubygems/commit/795e796a9e
2023-02-23[rubygems/rubygems] test rubygems_integration that error raised when ↵Mercedes Bernard
attempting load unexpected class https://github.com/rubygems/rubygems/commit/9798718b3b
2023-02-23[rubygems/rubygems] add test for private load_marshal methodMercedes Bernard
https://github.com/rubygems/rubygems/commit/3a772125b8
2023-02-23[rubygems/rubygems] make Bundler.load_marshal privateMercedes Bernard
https://github.com/rubygems/rubygems/commit/4909d071d2
2023-02-22Use `BigDecimal::VERSION` instead of `RUBY_VERSION`Nobuyoshi Nakada
2023-02-21Marshal.load: restore instance variables on RegexpJean Boussier
[Bug #19439] The instance variables were restore on the Regexp source, not the regexp itself. Unfortunately we have a bit of a chicken and egg problem. The source holds the encoding, and the encoding need to be set on the source to be able to instantiate the Regexp. So the instance variables have to be read on the `source`. To correct this we transfert the instance variables after instantiating the Regexp. The only way to avoid this would be to read the instance variable twice and rewind. Notes: Merged: https://github.com/ruby/ruby/pull/7323
2023-02-21Merge rubygems/bundler masterHiroshi SHIBATA
Pick from https://github.com/rubygems/rubygems/commit/e9304aed7e43308b99e70c2f7b92028315fee8a5 Notes: Merged: https://github.com/ruby/ruby/pull/7345
2023-02-21[rubygems/rubygems] Give a better message when Gemfile branch does not existDavid Rodríguez
https://github.com/rubygems/rubygems/commit/cb4fc41cbc Notes: Merged: https://github.com/ruby/ruby/pull/7345
2023-02-21[rubygems/rubygems] Fix crash in pub grub involving empty rangesDavid Rodríguez
https://github.com/rubygems/rubygems/commit/0f168516f7 Notes: Merged: https://github.com/ruby/ruby/pull/7345
2023-02-21[rubygems/rubygems] Update pub_grubJohn Hawthorn
* Replaces the wording of "is forbidden" with "cannot be used" * Fixes the method signature of VersionRange::Empty#eql? https://github.com/rubygems/rubygems/commit/8c6b3f130b Co-authored-by: Daniel Colson <danieljamescolson@gmail.com> Notes: Merged: https://github.com/ruby/ruby/pull/7345
2023-02-21[rubygems/rubygems] Sync with pub_grub main branchDavid Rodríguez
We became a bit out of sync lately. https://github.com/rubygems/rubygems/commit/6161a2610a Notes: Merged: https://github.com/ruby/ruby/pull/7345
2023-02-21[rubygems/rubygems] Restore better error message when locked ref does not existDavid Rodríguez
https://github.com/rubygems/rubygems/commit/c8e024359f Notes: Merged: https://github.com/ruby/ruby/pull/7345
2023-02-20Update some ruby specs for the new message format of NoMethodErrorYusuke Endoh
Notes: Merged: https://github.com/ruby/ruby/pull/6950
2023-02-17BigDecimal changed #remainder's specTakashi Kokubun
This test is no longer passing: ``` 1) BigDecimal#remainder returns NaN if Infinity is involved FAILED Expected Infinity.nan? to be truthy but was false /home/runner/work/ruby/ruby/src/spec/ruby/library/bigdecimal/remainder_spec.rb:58:in `block (2 levels) in <top (required)>' /home/runner/work/ruby/ruby/src/spec/ruby/library/bigdecimal/remainder_spec.rb:4:in `<top (required)>' ``` https://github.com/ruby/bigdecimal/pull/243
2023-02-13Marshal.load: also freeze extended objectsJean Boussier
[Bug #19427] The `proc` wouldn't be called either, that fixes both. Notes: Merged: https://github.com/ruby/ruby/pull/7284
2023-02-10[DOC] Move old ChangeLog files to doc/ChangeLog (#7293)Takashi Kokubun
Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2023-02-09[rubygems/rubygems] Avoid crashing with a corrupted lockfileDaniel Colson
I did a bad thing (script that edits the Gemfile.lock directly) and ended up with a Gemfile.lock that was completely missing some indirect dependencies. While this is my fault and an error is reasonable, I noticed that the error got progressively less friendly in recent versions of bundler. Something similar came up in https://github.com/rubygems/rubygems/issues/6210, and this commit would have helped with that case as well (although we've already handled this a different way with #6219). Details: --- Back on Bundler 2.2.23, a corrupt lockfile like this would cause a helpful error: ``` Unable to find a spec satisfying minitest (>= 5.1) in the set. Perhaps the lockfile is corrupted? ``` Bundler 2.3.26 gave a helpful warning: ``` Warning: Your lockfile was created by an old Bundler that left some things out. Because of the missing DEPENDENCIES, we can only install gems one at a time, instead of installing 16 at a time. You can fix this by adding the missing gems to your Gemfile, running bundle install, and then removing the gems from your Gemfile. The missing gems are: * minitest depended upon by activesupport ``` But then continued on and crashed while trying to report the unmet dependency: ``` --- ERROR REPORT TEMPLATE ------------------------------------------------------- NoMethodError: undefined method `full_name' for nil:NilClass lib/bundler/installer/parallel_installer.rb:127:in `block (2 levels) in check_for_unmet_dependencies' ... ``` Bundler 2.4.0 and up crash as above when jobs=1, but crash even harder when run in parallel: ``` --- ERROR REPORT TEMPLATE ------------------------------------------------------- fatal: No live threads left. Deadlock? 3 threads, 3 sleeps current:0x00007fa6b6704660 main thread:0x00007fa6b6704660 * #<Thread:0x000000010833b130 sleep_forever> rb_thread_t:0x00007fa6b6704660 native:0x0000000108985600 int:0 * #<Thread:0x0000000108dea630@Parallel Installer Worker #0 tmp/1/gems/system/gems/bundler-2.5.0.dev/lib/bundler/worker.rb:90 sleep_forever> rb_thread_t:0x00007fa6b67f67c0 native:0x0000700009a62000 int:0 * #<Thread:0x0000000108dea4a0@Parallel Installer Worker #1 tmp/1/gems/system/gems/bundler-2.5.0.dev/lib/bundler/worker.rb:90 sleep_forever> rb_thread_t:0x00007fa6b67f63c0 native:0x0000700009c65000 int:0 <internal:thread_sync>:18:in `pop' tmp/1/gems/system/gems/bundler-2.5.0.dev/lib/bundler/worker.rb:42:in `deq' ... ``` Changes --- This commit fixes the confusing thread deadlock crash by detecting if dependencies are missing such that we'll never be able to enqueue. When that happens we treat it as a failure so the install can finish. That gets us back to the `NoMethodError`, which this commit fixes by using a different warning in the case where no spec is found. https://github.com/rubygems/rubygems/commit/d73001a21d