summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/bors.toml24
-rw-r--r--.github/config.yml2
-rw-r--r--.github/workflows/ubuntu-bundler3.yml38
-rw-r--r--.github/workflows/ubuntu-lint.yml24
-rw-r--r--.github/workflows/ubuntu.yml62
-rw-r--r--.travis.yml90
-rw-r--r--CODE_OF_CONDUCT.md143
-rw-r--r--README.md1
-rw-r--r--Rakefile18
-rw-r--r--UPGRADING.md5
-rw-r--r--doc/development/PULL_REQUESTS.md2
-rw-r--r--lib/bundler.rb15
-rw-r--r--lib/bundler/cli/gem.rb2
-rw-r--r--lib/bundler/cli/init.rb2
-rw-r--r--lib/bundler/cli/outdated.rb6
-rw-r--r--lib/bundler/definition.rb24
-rw-r--r--lib/bundler/inline.rb2
-rw-r--r--lib/bundler/resolver.rb2
-rw-r--r--lib/bundler/settings.rb1
-rw-r--r--lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt104
-rw-r--r--lib/bundler/templates/newgem/Gemfile.tt2
-rw-r--r--man/bundle-add.12
-rw-r--r--man/bundle-add.1.txt2
-rw-r--r--man/bundle-binstubs.12
-rw-r--r--man/bundle-binstubs.1.txt2
-rw-r--r--man/bundle-cache.12
-rw-r--r--man/bundle-cache.1.txt2
-rw-r--r--man/bundle-check.12
-rw-r--r--man/bundle-check.1.txt2
-rw-r--r--man/bundle-clean.12
-rw-r--r--man/bundle-clean.1.txt2
-rw-r--r--man/bundle-config.15
-rw-r--r--man/bundle-config.1.txt6
-rw-r--r--man/bundle-config.ronn2
-rw-r--r--man/bundle-doctor.12
-rw-r--r--man/bundle-doctor.1.txt2
-rw-r--r--man/bundle-exec.12
-rw-r--r--man/bundle-exec.1.txt2
-rw-r--r--man/bundle-gem.12
-rw-r--r--man/bundle-gem.1.txt2
-rw-r--r--man/bundle-info.12
-rw-r--r--man/bundle-info.1.txt2
-rw-r--r--man/bundle-init.12
-rw-r--r--man/bundle-init.1.txt2
-rw-r--r--man/bundle-inject.12
-rw-r--r--man/bundle-inject.1.txt2
-rw-r--r--man/bundle-install.12
-rw-r--r--man/bundle-install.1.txt2
-rw-r--r--man/bundle-list.12
-rw-r--r--man/bundle-list.1.txt2
-rw-r--r--man/bundle-lock.12
-rw-r--r--man/bundle-lock.1.txt2
-rw-r--r--man/bundle-open.12
-rw-r--r--man/bundle-open.1.txt2
-rw-r--r--man/bundle-outdated.12
-rw-r--r--man/bundle-outdated.1.txt2
-rw-r--r--man/bundle-platform.12
-rw-r--r--man/bundle-platform.1.txt2
-rw-r--r--man/bundle-pristine.12
-rw-r--r--man/bundle-pristine.1.txt2
-rw-r--r--man/bundle-remove.12
-rw-r--r--man/bundle-remove.1.txt2
-rw-r--r--man/bundle-show.12
-rw-r--r--man/bundle-show.1.txt2
-rw-r--r--man/bundle-update.12
-rw-r--r--man/bundle-update.1.txt2
-rw-r--r--man/bundle-viz.12
-rw-r--r--man/bundle-viz.1.txt2
-rw-r--r--man/bundle.12
-rw-r--r--man/bundle.1.txt2
-rw-r--r--man/gemfile.52
-rw-r--r--man/gemfile.5.txt2
-rw-r--r--spec/commands/config_spec.rb12
-rw-r--r--spec/commands/lock_spec.rb6
-rw-r--r--spec/commands/newgem_spec.rb4
-rw-r--r--spec/commands/show_spec.rb2
-rw-r--r--spec/install/gemfile/gemspec_spec.rb2
-rw-r--r--spec/install/gemfile/platform_spec.rb37
-rw-r--r--spec/install/gems/compact_index_spec.rb2
-rw-r--r--spec/install/gems/resolving_spec.rb12
-rw-r--r--spec/lock/lockfile_spec.rb4
-rw-r--r--spec/quality_spec.rb2
-rw-r--r--spec/realworld/fixtures/warbler/.gitignore1
-rw-r--r--spec/realworld/fixtures/warbler/Gemfile.lock29
-rw-r--r--spec/runtime/require_spec.rb2
-rw-r--r--spec/runtime/setup_spec.rb2
-rw-r--r--spec/support/builders.rb40
-rw-r--r--spec/support/path.rb10
-rw-r--r--spec/support/rubygems_ext.rb26
89 files changed, 465 insertions, 406 deletions
diff --git a/.github/bors.toml b/.github/bors.toml
index 4943eaa057..f3e8512fbb 100644
--- a/.github/bors.toml
+++ b/.github/bors.toml
@@ -1,8 +1,28 @@
status = [
- "continuous-integration/travis-ci/push",
"windows (2.4.x)",
"windows (2.5.x)",
- "windows (2.6.x)"
+ "windows (2.6.x)",
+ "ubuntu_lint",
+ "ubuntu (2.3.8, v2.5.2)",
+ "ubuntu (2.3.8, v2.6.14)",
+ "ubuntu (2.3.8, v2.7.10)",
+ "ubuntu (2.3.8, v3.0.6)",
+ "ubuntu (2.3.8, master)",
+ "ubuntu (2.4.9, v2.6.14)",
+ "ubuntu (2.4.9, v2.7.10)",
+ "ubuntu (2.4.9, v3.0.6)",
+ "ubuntu (2.4.9, master)",
+ "ubuntu (2.5.7, v2.7.10)",
+ "ubuntu (2.5.7, v3.0.6)",
+ "ubuntu (2.5.7, master)",
+ "ubuntu (2.6.5, v3.0.6)",
+ "ubuntu (2.6.5, master)",
+ "ubuntu-bundler3 (2.4.9, v3.0.6)",
+ "ubuntu-bundler3 (2.4.9, master)",
+ "ubuntu-bundler3 (2.5.7, v3.0.6)",
+ "ubuntu-bundler3 (2.5.7, master)",
+ "ubuntu-bundler3 (2.6.5, v3.0.6)",
+ "ubuntu-bundler3 (2.6.5, master)"
]
timeout_sec = 14400
diff --git a/.github/config.yml b/.github/config.yml
index 8557d7477b..31ae06970f 100644
--- a/.github/config.yml
+++ b/.github/config.yml
@@ -1,7 +1,7 @@
newPRWelcomeComment: |
Thanks for opening a pull request and helping make Bundler better! Someone from the Bundler team will take a look at your pull request shortly and leave any feedback. Please make sure that your pull request has tests for any changes or added functionality.
- We use Travis CI to test and make sure your change works functionally and uses acceptable conventions, you can review the current progress of Travis CI in the PR status window below.
+ We use GitHub Actions to test and make sure your change works functionally and uses acceptable conventions, you can review the current progress of GitHub Actions in the PR status window below.
If you have any questions or concerns that you wish to ask, feel free to leave a comment in this PR or join our #bundler channel on [Slack](https://slack.bundler.io/).
diff --git a/.github/workflows/ubuntu-bundler3.yml b/.github/workflows/ubuntu-bundler3.yml
new file mode 100644
index 0000000000..fd9281ebc0
--- /dev/null
+++ b/.github/workflows/ubuntu-bundler3.yml
@@ -0,0 +1,38 @@
+name: ubuntu-bundler3
+
+on:
+ pull_request:
+
+ push:
+ branches:
+ - staging
+ - trying
+
+jobs:
+ ubuntu-bundler3:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ ruby: [ 2.4.9, 2.5.7, 2.6.5 ]
+ rgv: [ v3.0.6, master ]
+ env:
+ RGV: ${{ matrix.rgv }}
+ steps:
+ - uses: actions/checkout@v1
+ - name: Setup ruby
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: ${{ matrix.ruby }}
+ - name: Prepare dependencies
+ run: |
+ BUNDLER_SPEC_SUB_VERSION=3.0.0 bin/rake override_version
+ bin/rake spec:parallel_deps
+ - name: Run Test
+ run: bin/parallel_rspec spec
+ - name: Run Test with realworld
+ run: bin/rake spec:realworld
+ env:
+ BUNDLER_SPEC_PRE_RECORDED: 1
+ - name: Run Test with sudo
+ run: bin/rake spec:sudo
+ timeout-minutes: 60
diff --git a/.github/workflows/ubuntu-lint.yml b/.github/workflows/ubuntu-lint.yml
new file mode 100644
index 0000000000..e2ee63d362
--- /dev/null
+++ b/.github/workflows/ubuntu-lint.yml
@@ -0,0 +1,24 @@
+name: ubuntu-lint
+
+on:
+ pull_request:
+
+ push:
+ branches:
+ - staging
+ - trying
+
+jobs:
+ ubuntu_lint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v1
+ - name: Setup ruby
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: 2.6.5
+ - name: Install Dependencies
+ run: bin/rake spec:deps
+ - name: Run Lint
+ run: bin/rake rubocop check_rvm_integration man:check
+ timeout-minutes: 15
diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml
new file mode 100644
index 0000000000..b8f51095ed
--- /dev/null
+++ b/.github/workflows/ubuntu.yml
@@ -0,0 +1,62 @@
+name: ubuntu
+
+on:
+ pull_request:
+
+ push:
+ branches:
+ - staging
+ - trying
+
+jobs:
+ ubuntu:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ ruby: [ 2.3.8, 2.4.9, 2.5.7, 2.6.5, head ]
+ rgv: [ v2.5.2, v2.6.14, v2.7.10, v3.0.6, master ]
+ exclude:
+ - ruby: 2.4.9
+ rgv: v2.5.2
+ - ruby: 2.5.7
+ rgv: v2.5.2
+ - ruby: 2.5.7
+ rgv: v2.6.14
+ - ruby: 2.6.5
+ rgv: v2.5.2
+ - ruby: 2.6.5
+ rgv: v2.6.14
+ - ruby: 2.6.5
+ rgv: v2.7.10
+ - ruby: head
+ rgv: v2.5.2
+ - ruby: head
+ rgv: v2.6.14
+ - ruby: head
+ rgv: v2.7.10
+ - ruby: head
+ rgv: v3.0.6
+ env:
+ RGV: ${{ matrix.rgv }}
+ steps:
+ - uses: actions/checkout@v1
+ - name: Setup ruby
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: ${{ matrix.ruby }}
+ - name: Prepare dependencies
+ run: |
+ sudo apt-get install graphviz -y
+ bin/rake spec:parallel_deps
+ - name: Run Test
+ run: bin/parallel_rspec spec
+ continue-on-error: ${{ matrix.ruby == 'head' }}
+ - name: Run Test with realworld
+ run: bin/rake spec:realworld
+ env:
+ BUNDLER_SPEC_PRE_RECORDED: 1
+ continue-on-error: ${{ matrix.ruby == 'head' }}
+ - name: Run Test with sudo
+ run: bin/rake spec:sudo
+ continue-on-error: ${{ matrix.ruby == 'head' }}
+ timeout-minutes: 60
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 8fd329cf3c..0000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-language: ruby
-dist: bionic
-script:
- - bin/parallel_rspec spec
- - sudo -E bin/rake spec:sudo
- - sudo chown -R $(whoami) tmp
- - BUNDLER_SPEC_PRE_RECORDED=1 bin/rake spec:realworld
-
-before_script:
- - travis_retry gem install rake:"~> 12.0"
- - travis_retry bin/rake override_version
- - travis_retry bin/rake spec:parallel_deps
- - if [ "$BUNDLER_SPEC_SUB_VERSION" = "" ];
- then
- travis_retry sudo apt-get install graphviz -y;
- fi
- - if [ "$TRAVIS_RUBY_VERSION" = "2.3.8" ];
- then
- sudo sed -i 's/1000::/1000:Travis:/g' /etc/passwd;
- sudo sed -i '/secure_path/d' /etc/sudoers;
- fi
-
-branches:
- only:
- - master
- - staging
- - trying
- - /.+-dev$/
- - /.+-stable$/
-
-cache:
- directories:
- - tmp/rubocop
-
-notifications:
- slack:
- on_success: change
- on_failure: always
- rooms:
- - secure: JxBi7DDJGkIF/7f/FSN/HUHpvV4EKfQccZHTPd1b2pNJn3GXo6u+tNVbAw2WjxYzPyPQI3ZcYBCU9SEXp/i7VmG8uMzh8Kyildw+miSKYKVb90uYqcsXWzbxwyNBgJLvyDkzST45H5lgnyAicee3WkFes/WDZikIajbH7ztdb04=
-
-rvm:
- - 2.6.5
- - 2.5.7
- - 2.4.9
-
-stages:
- - linting
- - test
-
-env:
- # We need to know if changes to rubygems will break bundler on release
- - RGV=master BUNDLER_SPEC_SUB_VERSION=3.0.0
- - RGV=master
- # Test the latest rubygems release with all of our supported rubies
- - RGV=v3.0.6 BUNDLER_SPEC_SUB_VERSION=3.0.0
- - RGV=v3.0.6
-
-jobs:
- include:
- - rvm: 2.6.5
- script: bin/rake rubocop check_rvm_integration man:check
- stage: linting
- # Ruby 2.3 also tested in 2.x mode
- - rvm: 2.3.8
- env: RGV=master
- stage: test
- - rvm: 2.3.8
- env: RGV=v3.0.6
- stage: test
- # Ruby 2.5, Rubygems 2.7
- - rvm: 2.5.7
- env: RGV=v2.7.10
- stage: test
- # Ruby 2.4, Rubygems 2.6
- - rvm: 2.4.9
- env: RGV=v2.6.14
- stage: test
- # Ruby 2.3, Rubygems 2.5
- - rvm: 2.3.8
- env: RGV=v2.5.2
- stage: test
- # Ruby-head (we want to know how we're doing, but not fail the build)
- - rvm: ruby-head
- env: RGV=master
- stage: test
-
- allow_failures:
- - rvm: ruby-head
- env: RGV=master
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 34a95f3b32..8baf88f806 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,136 +1,81 @@
# Bundler Code of Conduct
-## When Something Happens
-
-If you see a Code of Conduct violation, follow these steps:
-
-1. Let the person know that what they did is not appropriate and ask them to stop and/or edit their message(s).
-2. That person should immediately stop the behavior and correct the issue.
-3. If this doesn't happen, or if you're uncomfortable speaking up, [contact admins](#contacting-admins).
-4. As soon as available, an admin will join, identify themselves, and take [further action (see below)](#further-enforcement), starting with a warning, then temporary deactivation, then long-term deactivation.
-
-When reporting, please include any relevant details, links, screenshots, context, or other information that may be used to better understand and resolve the situation.
-
-**The admin team will prioritize the well-being and comfort of the recipients of the violation over the comfort of the violator.** See [some examples below](#enforcement-examples).
-
## Our Pledge
-In the interest of fostering an open and welcoming environment, we as members of the Bundler community pledge to making participation in our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, technical preferences, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-- Using welcoming and inclusive language.
-- Being respectful of differing viewpoints and experiences.
-- Gracefully accepting constructive feedback.
-- Focusing on what is best for the community.
-- Showing empathy and kindness towards other community members.
-
-Examples of unacceptable behavior by participants include:
-
-- The use of sexualized language or imagery and unwelcome sexual attention or advances, including when simulated online. The only exception to sexual topics is channels/spaces specifically for topics of sexual identity.
-- Trolling, insulting/derogatory comments, and personal or political attacks.
-- Casual mention of slavery or indentured servitude and/or false comparisons of one's occupation or situation to slavery. Please consider using or asking about alternate terminology when referring to such metaphors in technology.
-- Making light of/making mocking comments about trigger warnings and content warnings.
-- Public or private harassment, deliberate intimidation, or threats.
-- Publishing others' private information, such as a physical or electronic address, without explicit permission. This includes any sort of "outing" of any aspect of someone's identity without their consent.
-- Publishing screenshots or quotes, especially from identity channels, without all quoted users' _explicit_ consent.
-- Publishing or telling others that a member belongs to a particular identity channel without asking their consent first.
-- Publishing of non-harassing private communication.
-- Any of the above even when [presented as "ironic" or "joking"](https://en.wikipedia.org/wiki/Hipster_racism).
-- Any attempt to present "reverse-ism" versions of the above as violations. Examples of reverse-isms are "reverse racism", "reverse sexism", "heterophobia", and "cisphobia".
-- Unsolicited explanations under the assumption that someone doesn't already know it. Ask before you teach! Don't assume what people's knowledge gaps are.
-- [Feigning or exaggerating surprise](https://www.recurse.com/manual#no-feigned-surprise) when someone admits to not knowing something.
-- "[Well-actuallies](https://www.recurse.com/manual#no-well-actuallys)"
-- Other conduct which could reasonably be considered inappropriate in a professional or community setting.
-
-## Scope
-
-This Code of Conduct applies both within community spaces and in other spaces involving the community. This includes the GitHub repository, the Bundler Slack instance, the Bundler Twitter community, private email communications in the context of the community, and any events where members of the community are participating, as well as adjacent communities and venues affecting the community's members.
-
-Depending on the violation, the admins may decide that violations of this code of conduct that have happened outside of the scope of the community may deem an individual unwelcome, and take appropriate action to maintain the comfort and safety of its members.
+We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
-This Code of Conduct is detailed for the purpose of removing ambiguity, not for the sake of strictness. It is the sincere hope of admins that it helps foster mutual understanding, and the creation of a space where everyone can participate in a way relevant to the project itself, without things going horribly due to accidental/well-intentioned toe stepping. Please be kind to one another!
+We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
-## Admin Enforcement Process
-
-Once the admins get involved, they will follow a documented series of steps and do their best to preserve the well-being of community members. This section covers actual concrete steps.
-
-### Contacting Admins
-
-You may get in touch with the Bundler admin team through any of the following methods:
-
-- Email [the Bundler maintainers](https://bundler.io/contributors.html) as a group at [team@bundler.io](mailto:team@bundler.io).
-- Directly message any maintainer in private (through Slack, Twitter, email, or other available option) if that is more comfortable
-
-### Further Enforcement
-
-If you've already followed the [initial enforcement steps](#enforcement), these are the steps admins will take for further enforcement, as needed:
-
-1. Repeat the request to stop.
-2. If the person doubles down, they will be removed from the discussion (where possible), and given an official warning.
-3. If the behavior continues or is repeated later, the person will be blocked/deactivated for 24 hours.
-4. If the behavior continues or is repeated after the temporary deactivation, a long-term (6-12mo) deactivation will be used.
+## Our Standards
-On top of this, admins may remove any offending messages, images, contributions, etc, as they deem necessary.
+Examples of behavior that contributes to a positive environment for our community include:
-Admins reserve full rights to skip any of these steps, at their discretion, if the violation is considered to be a serious and/or immediate threat to the health and well-being of members of the community. These include any threats, serious physical or verbal attacks, and other such behavior that would be completely unacceptable in any social setting that puts our members at risk.
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the overall community
-Members expelled from events or venues with any sort of paid attendance will not be refunded.
+Examples of unacceptable behavior include:
-### Who Watches the Watchers?
+* The use of sexualized language or imagery, and sexual attention or advances of any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email address, without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a professional setting
-Admins and other leaders who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the community's leadership. These may include anything from removal from the admin team to a permanent ban from the community.
+## Enforcement Responsibilities
-### Enforcement Examples
+Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
-#### The Best Case
+Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
-The vast majority of situations work out like this, in our experience. This interaction is common, and generally positive.
+## Scope
-> Alex: "Yeah I used X and it was really crazy!"
+This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
-> Patt: "Hey, could you not use that word? What about 'ridiculous' instead?"
+## Enforcement
-> Alex: "oh sorry, sure." -> edits old message to say "it was really confusing!"
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at team@bundler.io, or directly contacting project team members via email or Slack. All complaints will be reviewed and investigated promptly and fairly.
-#### The Admin Case
+All community leaders are obligated to respect the privacy and security of the reporter of any incident.
-Sometimes, though, you need to get admins involved. Admins will do their best to resolve conflicts, but people who were harmed by something **will take priority**.
+## Enforcement Guidelines
-> Patt: "Honestly, sometimes I just really hate using $language and anyone who uses it probably sucks at their job."
+Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
-> Alex: "Whoa there, could you dial it back a bit? There's a CoC thing about attacking folks' tech use like that."
+### 1. Correction
-> Patt: "I'm not attacking anyone, are you deaf?"
+**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
-> Alex: _DMs admin_ "hey uh. Can someone look at #general? Patt is getting a bit aggro. I tried to nudge them about it, but nope."
+**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
-> MxAdmin1: <joins #general> "Hey Patt, admin here. Could you tone it down? This sort of attack is really not okay in this space."
+### 2. Warning
-> Patt: "Leave me alone I haven't said anything bad wtf is wrong with you."
+**Community Impact**: A violation through a single incident or series of actions.
-> MxAdmin1: _removes patt_ _DMs patt_ "I mean it. Please refer to the CoC over at bundler.io/conduct.html if you have questions, but you can consider this an actual warning. I'd appreciate it if you reworded your messages in #general, since they made folks there uncomfortable. Let's try and be kind, yeah?"
+**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
-> Patt: _Replies to DM_ "@mxadmin1 Okay sorry. I'm just frustrated and I'm kinda burnt out and I guess I got carried away. I'll DM Alex a note apologizing and edit my messages. Sorry for the trouble."
+### 3. Temporary Ban
-> MxAdmin1: _Replies to DM_ "@patt Thanks for that. I hear you on the stress. Burnout sucks :/. Have a good one!"
+**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
-#### The Nope Case
+**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
-> PepeTheFrog🐸: "Hi, I am a literal actual nazi and I think white supremacists are quite fashionable."
+### 4. Permanent Ban
-> Patt: "NOOOOPE. OH NOPE NOPE."
+**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
-> Alex: "JFC NO. NOPE. `/admin nope nope nope @ #javascript`"
+**Consequence**: A permanent ban from any sort of public interaction within the community.
-> MxAdmin1: "👀 Nope. NOPE NOPE NOPE. 🔥"
+## Attribution
-> PepeTheFrog🐸 has been deactivated.
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0,
+available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
-## Attribution
+Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
-This Code of Conduct is adapted from the [package.community Code of Conduct], adapted from the [WeAllJS Code of Conduct](https://wealljs.org/code-of-conduct), itself adapted from [Contributor Covenant](https://contributor-covenant.org) version 1.4, available at [https://contributor-covenant.org/version/1/4](https://contributor-covenant.org/version/1/4), as well as the LGBTQ in Technology Slack [Code of Conduct](https://lgbtq.technology/coc.html).
+[homepage]: https://www.contributor-covenant.org
-Additional thanks to [Contributor Covenant](https://contributor-covenant.org) for the [default code of conduct](https://github.com/rubygems/bundler/blob/master/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt) included in generated gems.
+For answers to common questions about this code of conduct, see the FAQ at
+https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.
diff --git a/README.md b/README.md
index 406300ae32..7df7e6651d 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,4 @@
[![Version ](https://img.shields.io/gem/v/bundler.svg?style=flat)](https://rubygems.org/gems/bundler)
-[![Build Status](https://img.shields.io/travis/rubygems/bundler/master.svg?style=flat)](https://travis-ci.org/rubygems/bundler)
[![Inline docs ](https://inch-ci.org/github/rubygems/bundler.svg?style=flat)](https://inch-ci.org/github/rubygems/bundler)
[![Slack ](https://bundler-slackin.herokuapp.com/badge.svg)](https://bundler-slackin.herokuapp.com)
diff --git a/Rakefile b/Rakefile
index eac9148c60..4a17296ee7 100644
--- a/Rakefile
+++ b/Rakefile
@@ -55,7 +55,23 @@ namespace :spec do
end
desc "Run the spec suite with the sudo tests"
- task :sudo => %w[set_sudo spec]
+ task :sudo => %w[set_sudo] do
+ require "open3"
+ output, status = Open3.capture2e("sudo", "cp", "/etc/sudoers", "tmp/old_sudoers")
+ raise "Couldn't read sudoers file: #{output}" unless status.success?
+
+ begin
+ output, status = Open3.capture2e("sudo sed -i '/secure_path/d' /etc/sudoers")
+ raise "Couldn't configure sudo to preserve path: #{output}" unless status.success?
+
+ raise "Couldn't configure sudo correctly to preserve path" unless `ruby -v` == `sudo -E ruby -v`
+
+ sh("sudo -E bin/rspec")
+ ensure
+ system("sudo", "cp", "tmp/old_sudoers", "/etc/sudoers")
+ system("sudo", "chown", "-R", ENV["USER"], "tmp")
+ end
+ end
task :set_sudo do
ENV["BUNDLER_SUDO_TESTS"] = "1"
diff --git a/UPGRADING.md b/UPGRADING.md
index e26ad3bdb9..611a73a6d4 100644
--- a/UPGRADING.md
+++ b/UPGRADING.md
@@ -4,8 +4,7 @@
The following is a summary of the changes that we plan to introduce in Bundler
3, why we will be making those changes, and what the deprecation process will
-look like. All these deprecations will be printed by default in the upcoming
-Bundler 2.1 release.
+look like. All these deprecations are printed by default in the Bundler 2.1 release.
If you don't want to deal with deprecations right now and want to toggle them
off, you can do it through configuration. Set the `BUNDLE_SILENCE_DEPRECATIONS`
@@ -30,7 +29,7 @@ them.
The CLI defines a set of commands and options that can be used by our users to
create command lines that bundler can understand. There's a number of changes
-that we plan to make to this set of commands and options.
+in the upcoming 3 version.
* Flags passed to `bundle install` that relied on being remembered across invocations have been deprecated.
diff --git a/doc/development/PULL_REQUESTS.md b/doc/development/PULL_REQUESTS.md
index 313a885033..09428f057f 100644
--- a/doc/development/PULL_REQUESTS.md
+++ b/doc/development/PULL_REQUESTS.md
@@ -8,7 +8,7 @@ Before you submit a pull request, please remember to do the following:
## Code formatting
-Make sure the code formatting and styling adheres to the guidelines. We use RuboCop for this. Lack of formatting adherence will result in automatic Travis build failures.
+Make sure the code formatting and styling adheres to the guidelines. We use RuboCop for this. Lack of formatting adherence will result in automatic GitHub Actions build failures.
$ bin/rubocop -a
diff --git a/lib/bundler.rb b/lib/bundler.rb
index df345539c8..23ed848d86 100644
--- a/lib/bundler.rb
+++ b/lib/bundler.rb
@@ -285,7 +285,13 @@ module Bundler
def app_config_path
if app_config = ENV["BUNDLE_APP_CONFIG"]
- Pathname.new(app_config).expand_path(root)
+ app_config_pathname = Pathname.new(app_config)
+
+ if app_config_pathname.absolute?
+ app_config_pathname
+ else
+ app_config_pathname.expand_path(root)
+ end
else
root.join(".bundle")
end
@@ -451,6 +457,10 @@ EOF
Bundler.settings[:system_bindir] || Bundler.rubygems.gem_bindir
end
+ def preferred_gemfile_name
+ Bundler.settings[:init_gems_rb] ? "gems.rb" : "Gemfile"
+ end
+
def use_system_gems?
configured_bundle_path.use_system_gems?
end
@@ -512,7 +522,8 @@ EOF
Your user account isn't allowed to install to the system RubyGems.
You can cancel this installation and run:
- bundle install --path vendor/bundle
+ bundle config set --local path 'vendor/bundle'
+ bundle install
to install the gems into ./vendor/bundle/, or you can enter your password
and install the bundled gems to RubyGems using sudo.
diff --git a/lib/bundler/cli/gem.rb b/lib/bundler/cli/gem.rb
index ad074d1120..d5cfd91a86 100644
--- a/lib/bundler/cli/gem.rb
+++ b/lib/bundler/cli/gem.rb
@@ -63,7 +63,7 @@ module Bundler
ensure_safe_gem_name(name, constant_array)
templates = {
- "Gemfile.tt" => "Gemfile",
+ "#{Bundler.preferred_gemfile_name}.tt" => Bundler.preferred_gemfile_name,
"lib/newgem.rb.tt" => "lib/#{namespaced_path}.rb",
"lib/newgem/version.rb.tt" => "lib/#{namespaced_path}/version.rb",
"newgem.gemspec.tt" => "#{name}.gemspec",
diff --git a/lib/bundler/cli/init.rb b/lib/bundler/cli/init.rb
index 65dd08dfe9..f45871ce9c 100644
--- a/lib/bundler/cli/init.rb
+++ b/lib/bundler/cli/init.rb
@@ -41,7 +41,7 @@ module Bundler
private
def gemfile
- @gemfile ||= Bundler.settings[:init_gems_rb] ? "gems.rb" : "Gemfile"
+ @gemfile ||= Bundler.preferred_gemfile_name
end
end
end
diff --git a/lib/bundler/cli/outdated.rb b/lib/bundler/cli/outdated.rb
index 3d4922f8b5..5f065654b1 100644
--- a/lib/bundler/cli/outdated.rb
+++ b/lib/bundler/cli/outdated.rb
@@ -76,6 +76,8 @@ module Bundler
next unless gems.empty? || gems.include?(current_spec.name)
active_spec = retrieve_active_spec(definition, current_spec)
+ next unless active_spec
+
next unless filter_options_patch.empty? || update_present_via_semver_portions(current_spec, active_spec, options)
gem_outdated = Gem::Version.new(active_spec.version) > Gem::Version.new(current_spec.version)
@@ -144,6 +146,8 @@ module Bundler
end
def retrieve_active_spec(definition, current_spec)
+ return unless current_spec.match_platform(Bundler.local_platform)
+
if strict
active_spec = definition.find_resolved_spec(current_spec)
else
@@ -231,8 +235,6 @@ module Bundler
end
def update_present_via_semver_portions(current_spec, active_spec, options)
- return false if active_spec.nil?
-
current_major = current_spec.version.segments.first
active_major = active_spec.version.segments.first
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index efd7618194..fca7d35aaa 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -117,7 +117,7 @@ module Bundler
end
@unlocking ||= @unlock[:ruby] ||= (!@locked_ruby_version ^ !@ruby_version)
- add_current_platform unless Bundler.frozen_bundle?
+ add_platforms unless Bundler.frozen_bundle?
converge_path_sources_to_gemspec_sources
@path_changes = converge_paths
@@ -523,10 +523,6 @@ module Bundler
raise InvalidOption, "Unable to remove the platform `#{platform}` since the only platforms are #{@platforms.join ", "}"
end
- def add_current_platform
- current_platforms.each {|platform| add_platform(platform) }
- end
-
def find_resolved_spec(current_spec)
specs.find_by_name_and_platform(current_spec.name, current_spec.platform)
end
@@ -548,6 +544,12 @@ module Bundler
private
+ def add_platforms
+ (@dependencies.flat_map(&:expanded_platforms) + current_platforms).uniq.each do |platform|
+ add_platform(platform)
+ end
+ end
+
def current_platforms
current_platform = Bundler.local_platform
[].tap do |platforms|
@@ -892,17 +894,7 @@ module Bundler
dependencies.each do |dep|
dep = Dependency.new(dep, ">= 0") unless dep.respond_to?(:name)
next if !remote && !dep.current_platform?
- platforms = dep.gem_platforms(sorted_platforms)
- if platforms.empty? && !Bundler.settings[:disable_platform_warnings]
- mapped_platforms = dep.expanded_platforms
- Bundler.ui.warn \
- "The dependency #{dep} will be unused by any of the platforms Bundler is installing for. " \
- "Bundler is installing for #{@platforms.join ", "} but the dependency " \
- "is only for #{mapped_platforms.join ", "}. " \
- "To add those platforms to the bundle, " \
- "run `bundle lock --add-platform #{mapped_platforms.join " "}`."
- end
- platforms.each do |p|
+ dep.gem_platforms(sorted_platforms).each do |p|
deps << DepProxy.new(dep, p) if remote || p == generic_local_platform
end
end
diff --git a/lib/bundler/inline.rb b/lib/bundler/inline.rb
index f1f77a7a9c..59211193d4 100644
--- a/lib/bundler/inline.rb
+++ b/lib/bundler/inline.rb
@@ -58,7 +58,7 @@ def gemfile(install = false, options = {}, &gemfile)
Bundler.ui = install ? ui : Bundler::UI::Silent.new
if install || definition.missing_specs?
- Bundler.settings.temporary(:inline => true, :disable_platform_warnings => true) do
+ Bundler.settings.temporary(:inline => true) do
installer = Bundler::Installer.install(Bundler.root, definition, :system => true)
installer.post_install_messages.each do |name, message|
Bundler.ui.info "Post-install message from #{name}:\n#{message}"
diff --git a/lib/bundler/resolver.rb b/lib/bundler/resolver.rb
index 8b029cc0dc..61bb648598 100644
--- a/lib/bundler/resolver.rb
+++ b/lib/bundler/resolver.rb
@@ -75,7 +75,7 @@ module Bundler
return unless debug?
debug_info = yield
debug_info = debug_info.inspect unless debug_info.is_a?(String)
- warn debug_info.split("\n").map {|s| " " * depth + s }
+ warn debug_info.split("\n").map {|s| "BUNDLER: " + " " * depth + s }
end
def debug?
diff --git a/lib/bundler/settings.rb b/lib/bundler/settings.rb
index afbb02397c..23ae66efa0 100644
--- a/lib/bundler/settings.rb
+++ b/lib/bundler/settings.rb
@@ -22,7 +22,6 @@ module Bundler
disable_exec_load
disable_local_branch_check
disable_multisource
- disable_platform_warnings
disable_shared_gems
disable_version_check
force_ruby_platform
diff --git a/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt b/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt
index 7dfd14aab9..175b821a62 100644
--- a/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt
+++ b/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt
@@ -2,73 +2,83 @@
## Our Pledge
-In the interest of fostering an open and welcoming environment, we as
-contributors and maintainers pledge to making participation in our project and
-our community a harassment-free experience for everyone, regardless of age, body
-size, disability, ethnicity, gender identity and expression, level of experience,
-nationality, personal appearance, race, religion, or sexual identity and
-orientation.
+We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
## Our Standards
-Examples of behavior that contributes to creating a positive environment
-include:
+Examples of behavior that contributes to a positive environment for our community include:
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the overall community
-Examples of unacceptable behavior by participants include:
+Examples of unacceptable behavior include:
-* The use of sexualized language or imagery and unwelcome sexual attention or
-advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
+* The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
-* Publishing others' private information, such as a physical or electronic
- address, without explicit permission
+* Publishing others' private information, such as a physical or email
+ address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
-## Our Responsibilities
+## Enforcement Responsibilities
-Project maintainers are responsible for clarifying the standards of acceptable
-behavior and are expected to take appropriate and fair corrective action in
-response to any instances of unacceptable behavior.
+Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
-Project maintainers have the right and responsibility to remove, edit, or
-reject comments, commits, code, wiki edits, issues, and other contributions
-that are not aligned to this Code of Conduct, or to ban temporarily or
-permanently any contributor for other behaviors that they deem inappropriate,
-threatening, offensive, or harmful.
+Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
## Scope
-This Code of Conduct applies both within project spaces and in public spaces
-when an individual is representing the project or its community. Examples of
-representing a project or community include using an official project e-mail
-address, posting via an official social media account, or acting as an appointed
-representative at an online or offline event. Representation of a project may be
-further defined and clarified by project maintainers.
+This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
## Enforcement
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported by contacting the project team at <%= config[:email] %>. All
-complaints will be reviewed and investigated and will result in a response that
-is deemed necessary and appropriate to the circumstances. The project team is
-obligated to maintain confidentiality with regard to the reporter of an incident.
-Further details of specific enforcement policies may be posted separately.
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at <%= config[:email] %>. All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series of actions.
-Project maintainers who do not follow or enforce the Code of Conduct in good
-faith may face temporary or permanent repercussions as determined by other
-members of the project's leadership.
+**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within the community.
## Attribution
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
-available at [https://contributor-covenant.org/version/1/4][version]
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0,
+available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
+
+Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
+
+[homepage]: https://www.contributor-covenant.org
-[homepage]: https://contributor-covenant.org
-[version]: https://contributor-covenant.org/version/1/4/
+For answers to common questions about this code of conduct, see the FAQ at
+https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.
diff --git a/lib/bundler/templates/newgem/Gemfile.tt b/lib/bundler/templates/newgem/Gemfile.tt
index 7b0296068b..b689e2e804 100644
--- a/lib/bundler/templates/newgem/Gemfile.tt
+++ b/lib/bundler/templates/newgem/Gemfile.tt
@@ -3,7 +3,7 @@ source "https://rubygems.org"
# Specify your gem's dependencies in <%= config[:name] %>.gemspec
gemspec
-gem "rake", "~> 12.0"
+gem "rake", "~> 13.0"
<%- if config[:ext] -%>
gem "rake-compiler"
<%- end -%>
diff --git a/man/bundle-add.1 b/man/bundle-add.1
index b8ba117f9a..fba54c9a00 100644
--- a/man/bundle-add.1
+++ b/man/bundle-add.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-ADD" "1" "February 2020" "" ""
+.TH "BUNDLE\-ADD" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-add\fR \- Add gem to the Gemfile and run bundle install
diff --git a/man/bundle-add.1.txt b/man/bundle-add.1.txt
index c37785553a..4f62003cd1 100644
--- a/man/bundle-add.1.txt
+++ b/man/bundle-add.1.txt
@@ -55,4 +55,4 @@ OPTIONS
- February 2020 BUNDLE-ADD(1)
+ March 2020 BUNDLE-ADD(1)
diff --git a/man/bundle-binstubs.1 b/man/bundle-binstubs.1
index 23c7520d4b..3658227a1f 100644
--- a/man/bundle-binstubs.1
+++ b/man/bundle-binstubs.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-BINSTUBS" "1" "February 2020" "" ""
+.TH "BUNDLE\-BINSTUBS" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-binstubs\fR \- Install the binstubs of the listed gems
diff --git a/man/bundle-binstubs.1.txt b/man/bundle-binstubs.1.txt
index 73fde9a21f..4af00f26c7 100644
--- a/man/bundle-binstubs.1.txt
+++ b/man/bundle-binstubs.1.txt
@@ -45,4 +45,4 @@ BUNDLE INSTALL --BINSTUBS
- February 2020 BUNDLE-BINSTUBS(1)
+ March 2020 BUNDLE-BINSTUBS(1)
diff --git a/man/bundle-cache.1 b/man/bundle-cache.1
index 446ce6b94b..939a1ac3bf 100644
--- a/man/bundle-cache.1
+++ b/man/bundle-cache.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-CACHE" "1" "February 2020" "" ""
+.TH "BUNDLE\-CACHE" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-cache\fR \- Package your needed \fB\.gem\fR files into your application
diff --git a/man/bundle-cache.1.txt b/man/bundle-cache.1.txt
index 37262f3466..d988c32c8b 100644
--- a/man/bundle-cache.1.txt
+++ b/man/bundle-cache.1.txt
@@ -75,4 +75,4 @@ REMOTE FETCHING
- February 2020 BUNDLE-CACHE(1)
+ March 2020 BUNDLE-CACHE(1)
diff --git a/man/bundle-check.1 b/man/bundle-check.1
index 0ba17223e9..05f3e79435 100644
--- a/man/bundle-check.1
+++ b/man/bundle-check.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-CHECK" "1" "February 2020" "" ""
+.TH "BUNDLE\-CHECK" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-check\fR \- Verifies if dependencies are satisfied by installed gems
diff --git a/man/bundle-check.1.txt b/man/bundle-check.1.txt
index dc58dc36a5..8be2da2bdd 100644
--- a/man/bundle-check.1.txt
+++ b/man/bundle-check.1.txt
@@ -30,4 +30,4 @@ OPTIONS
- February 2020 BUNDLE-CHECK(1)
+ March 2020 BUNDLE-CHECK(1)
diff --git a/man/bundle-clean.1 b/man/bundle-clean.1
index 462aa03913..353674f243 100644
--- a/man/bundle-clean.1
+++ b/man/bundle-clean.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-CLEAN" "1" "February 2020" "" ""
+.TH "BUNDLE\-CLEAN" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-clean\fR \- Cleans up unused gems in your bundler directory
diff --git a/man/bundle-clean.1.txt b/man/bundle-clean.1.txt
index febc88666b..fef5085aa1 100644
--- a/man/bundle-clean.1.txt
+++ b/man/bundle-clean.1.txt
@@ -23,4 +23,4 @@ OPTIONS
- February 2020 BUNDLE-CLEAN(1)
+ March 2020 BUNDLE-CLEAN(1)
diff --git a/man/bundle-config.1 b/man/bundle-config.1
index 58be36c5c6..e2f7e2b932 100644
--- a/man/bundle-config.1
+++ b/man/bundle-config.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-CONFIG" "1" "February 2020" "" ""
+.TH "BUNDLE\-CONFIG" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-config\fR \- Set bundler configuration options
@@ -187,9 +187,6 @@ The following is a list of all configuration keys and their purpose\. You can le
\fBdisable_multisource\fR (\fBBUNDLE_DISABLE_MULTISOURCE\fR): When set, Gemfiles containing multiple sources will produce errors instead of warnings\. Use \fBbundle config unset disable_multisource\fR to unset\.
.
.IP "\(bu" 4
-\fBdisable_platform_warnings\fR (\fBBUNDLE_DISABLE_PLATFORM_WARNINGS\fR): Disable warnings during bundle install when a dependency is unused on the current platform\.
-.
-.IP "\(bu" 4
\fBdisable_shared_gems\fR (\fBBUNDLE_DISABLE_SHARED_GEMS\fR): Stop Bundler from accessing gems installed to RubyGems\' normal location\.
.
.IP "\(bu" 4
diff --git a/man/bundle-config.1.txt b/man/bundle-config.1.txt
index d6632792e5..39d90cd2a7 100644
--- a/man/bundle-config.1.txt
+++ b/man/bundle-config.1.txt
@@ -214,10 +214,6 @@ LIST OF AVAILABLE KEYS
files containing multiple sources will produce errors instead of
warnings. Use bundle config unset disable_multisource to unset.
- o disable_platform_warnings (BUNDLE_DISABLE_PLATFORM_WARNINGS): Dis-
- able warnings during bundle install when a dependency is unused on
- the current platform.
-
o disable_shared_gems (BUNDLE_DISABLE_SHARED_GEMS): Stop Bundler from
accessing gems installed to RubyGems' normal location.
@@ -526,4 +522,4 @@ CONFIGURE BUNDLER DIRECTORIES
- February 2020 BUNDLE-CONFIG(1)
+ March 2020 BUNDLE-CONFIG(1)
diff --git a/man/bundle-config.ronn b/man/bundle-config.ronn
index 6b0e044cd3..b241bba505 100644
--- a/man/bundle-config.ronn
+++ b/man/bundle-config.ronn
@@ -181,8 +181,6 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html).
When set, Gemfiles containing multiple sources will produce errors
instead of warnings.
Use `bundle config unset disable_multisource` to unset.
-* `disable_platform_warnings` (`BUNDLE_DISABLE_PLATFORM_WARNINGS`):
- Disable warnings during bundle install when a dependency is unused on the current platform.
* `disable_shared_gems` (`BUNDLE_DISABLE_SHARED_GEMS`):
Stop Bundler from accessing gems installed to RubyGems' normal location.
* `disable_version_check` (`BUNDLE_DISABLE_VERSION_CHECK`):
diff --git a/man/bundle-doctor.1 b/man/bundle-doctor.1
index 96c23653fc..80cbcbf79b 100644
--- a/man/bundle-doctor.1
+++ b/man/bundle-doctor.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-DOCTOR" "1" "February 2020" "" ""
+.TH "BUNDLE\-DOCTOR" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-doctor\fR \- Checks the bundle for common problems
diff --git a/man/bundle-doctor.1.txt b/man/bundle-doctor.1.txt
index 6fd76e94b1..dfe685ca76 100644
--- a/man/bundle-doctor.1.txt
+++ b/man/bundle-doctor.1.txt
@@ -41,4 +41,4 @@ OPTIONS
- February 2020 BUNDLE-DOCTOR(1)
+ March 2020 BUNDLE-DOCTOR(1)
diff --git a/man/bundle-exec.1 b/man/bundle-exec.1
index 5aa9739312..87707ecd92 100644
--- a/man/bundle-exec.1
+++ b/man/bundle-exec.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-EXEC" "1" "February 2020" "" ""
+.TH "BUNDLE\-EXEC" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-exec\fR \- Execute a command in the context of the bundle
diff --git a/man/bundle-exec.1.txt b/man/bundle-exec.1.txt
index eb4457903d..169400d5c7 100644
--- a/man/bundle-exec.1.txt
+++ b/man/bundle-exec.1.txt
@@ -175,4 +175,4 @@ RUBYGEMS PLUGINS
- February 2020 BUNDLE-EXEC(1)
+ March 2020 BUNDLE-EXEC(1)
diff --git a/man/bundle-gem.1 b/man/bundle-gem.1
index 0f3d7b9d22..3235ad8e5d 100644
--- a/man/bundle-gem.1
+++ b/man/bundle-gem.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-GEM" "1" "February 2020" "" ""
+.TH "BUNDLE\-GEM" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-gem\fR \- Generate a project skeleton for creating a rubygem
diff --git a/man/bundle-gem.1.txt b/man/bundle-gem.1.txt
index 665a488d93..bdaceebc67 100644
--- a/man/bundle-gem.1.txt
+++ b/man/bundle-gem.1.txt
@@ -88,4 +88,4 @@ SEE ALSO
- February 2020 BUNDLE-GEM(1)
+ March 2020 BUNDLE-GEM(1)
diff --git a/man/bundle-info.1 b/man/bundle-info.1
index 2f61645cad..d5ecd40db3 100644
--- a/man/bundle-info.1
+++ b/man/bundle-info.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-INFO" "1" "February 2020" "" ""
+.TH "BUNDLE\-INFO" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-info\fR \- Show information for the given gem in your bundle
diff --git a/man/bundle-info.1.txt b/man/bundle-info.1.txt
index a6de372431..71c40cf08c 100644
--- a/man/bundle-info.1.txt
+++ b/man/bundle-info.1.txt
@@ -18,4 +18,4 @@ OPTIONS
- February 2020 BUNDLE-INFO(1)
+ March 2020 BUNDLE-INFO(1)
diff --git a/man/bundle-init.1 b/man/bundle-init.1
index 5e1c275801..a562f71cd8 100644
--- a/man/bundle-init.1
+++ b/man/bundle-init.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-INIT" "1" "February 2020" "" ""
+.TH "BUNDLE\-INIT" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-init\fR \- Generates a Gemfile into the current working directory
diff --git a/man/bundle-init.1.txt b/man/bundle-init.1.txt
index 2554ff9551..cf18143d80 100644
--- a/man/bundle-init.1.txt
+++ b/man/bundle-init.1.txt
@@ -31,4 +31,4 @@ SEE ALSO
- February 2020 BUNDLE-INIT(1)
+ March 2020 BUNDLE-INIT(1)
diff --git a/man/bundle-inject.1 b/man/bundle-inject.1
index 9a89406062..3cc2b54016 100644
--- a/man/bundle-inject.1
+++ b/man/bundle-inject.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-INJECT" "1" "February 2020" "" ""
+.TH "BUNDLE\-INJECT" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-inject\fR \- Add named gem(s) with version requirements to Gemfile
diff --git a/man/bundle-inject.1.txt b/man/bundle-inject.1.txt
index fed16d971b..9d8d776f70 100644
--- a/man/bundle-inject.1.txt
+++ b/man/bundle-inject.1.txt
@@ -29,4 +29,4 @@ DESCRIPTION
- February 2020 BUNDLE-INJECT(1)
+ March 2020 BUNDLE-INJECT(1)
diff --git a/man/bundle-install.1 b/man/bundle-install.1
index d112e502b9..65da71f475 100644
--- a/man/bundle-install.1
+++ b/man/bundle-install.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-INSTALL" "1" "February 2020" "" ""
+.TH "BUNDLE\-INSTALL" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-install\fR \- Install the dependencies specified in your Gemfile
diff --git a/man/bundle-install.1.txt b/man/bundle-install.1.txt
index 63f90f7db6..59c1ab01ff 100644
--- a/man/bundle-install.1.txt
+++ b/man/bundle-install.1.txt
@@ -398,4 +398,4 @@ SEE ALSO
- February 2020 BUNDLE-INSTALL(1)
+ March 2020 BUNDLE-INSTALL(1)
diff --git a/man/bundle-list.1 b/man/bundle-list.1
index 4bec0f5fab..46e3acd4cc 100644
--- a/man/bundle-list.1
+++ b/man/bundle-list.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-LIST" "1" "February 2020" "" ""
+.TH "BUNDLE\-LIST" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-list\fR \- List all the gems in the bundle
diff --git a/man/bundle-list.1.txt b/man/bundle-list.1.txt
index aa2fa027e9..c860bdf40e 100644
--- a/man/bundle-list.1.txt
+++ b/man/bundle-list.1.txt
@@ -41,4 +41,4 @@ OPTIONS
- February 2020 BUNDLE-LIST(1)
+ March 2020 BUNDLE-LIST(1)
diff --git a/man/bundle-lock.1 b/man/bundle-lock.1
index b96002c99f..a3e5fc4f89 100644
--- a/man/bundle-lock.1
+++ b/man/bundle-lock.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-LOCK" "1" "February 2020" "" ""
+.TH "BUNDLE\-LOCK" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-lock\fR \- Creates / Updates a lockfile without installing
diff --git a/man/bundle-lock.1.txt b/man/bundle-lock.1.txt
index f57cfe6f7d..6444503933 100644
--- a/man/bundle-lock.1.txt
+++ b/man/bundle-lock.1.txt
@@ -90,4 +90,4 @@ PATCH LEVEL OPTIONS
- February 2020 BUNDLE-LOCK(1)
+ March 2020 BUNDLE-LOCK(1)
diff --git a/man/bundle-open.1 b/man/bundle-open.1
index 38dc66c63c..7aa464ac3c 100644
--- a/man/bundle-open.1
+++ b/man/bundle-open.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-OPEN" "1" "February 2020" "" ""
+.TH "BUNDLE\-OPEN" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-open\fR \- Opens the source directory for a gem in your bundle
diff --git a/man/bundle-open.1.txt b/man/bundle-open.1.txt
index 6e5e62c61a..e86569c3cd 100644
--- a/man/bundle-open.1.txt
+++ b/man/bundle-open.1.txt
@@ -26,4 +26,4 @@ DESCRIPTION
- February 2020 BUNDLE-OPEN(1)
+ March 2020 BUNDLE-OPEN(1)
diff --git a/man/bundle-outdated.1 b/man/bundle-outdated.1
index 5ea9a94c60..f6408657e7 100644
--- a/man/bundle-outdated.1
+++ b/man/bundle-outdated.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-OUTDATED" "1" "February 2020" "" ""
+.TH "BUNDLE\-OUTDATED" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-outdated\fR \- List installed gems with newer versions available
diff --git a/man/bundle-outdated.1.txt b/man/bundle-outdated.1.txt
index 781668378d..131e778c48 100644
--- a/man/bundle-outdated.1.txt
+++ b/man/bundle-outdated.1.txt
@@ -128,4 +128,4 @@ FILTERING OUTPUT
- February 2020 BUNDLE-OUTDATED(1)
+ March 2020 BUNDLE-OUTDATED(1)
diff --git a/man/bundle-platform.1 b/man/bundle-platform.1
index 62d0b459d1..080b9703af 100644
--- a/man/bundle-platform.1
+++ b/man/bundle-platform.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-PLATFORM" "1" "February 2020" "" ""
+.TH "BUNDLE\-PLATFORM" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-platform\fR \- Displays platform compatibility information
diff --git a/man/bundle-platform.1.txt b/man/bundle-platform.1.txt
index 09dad1af2f..b253732ae6 100644
--- a/man/bundle-platform.1.txt
+++ b/man/bundle-platform.1.txt
@@ -54,4 +54,4 @@ OPTIONS
- February 2020 BUNDLE-PLATFORM(1)
+ March 2020 BUNDLE-PLATFORM(1)
diff --git a/man/bundle-pristine.1 b/man/bundle-pristine.1
index 554e376d49..5fd65b027a 100644
--- a/man/bundle-pristine.1
+++ b/man/bundle-pristine.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-PRISTINE" "1" "February 2020" "" ""
+.TH "BUNDLE\-PRISTINE" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-pristine\fR \- Restores installed gems to their pristine condition
diff --git a/man/bundle-pristine.1.txt b/man/bundle-pristine.1.txt
index 15fc97e1cd..e15ff2d9e2 100644
--- a/man/bundle-pristine.1.txt
+++ b/man/bundle-pristine.1.txt
@@ -41,4 +41,4 @@ DESCRIPTION
- February 2020 BUNDLE-PRISTINE(1)
+ March 2020 BUNDLE-PRISTINE(1)
diff --git a/man/bundle-remove.1 b/man/bundle-remove.1
index ff09c2293a..f814d62201 100644
--- a/man/bundle-remove.1
+++ b/man/bundle-remove.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-REMOVE" "1" "February 2020" "" ""
+.TH "BUNDLE\-REMOVE" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-remove\fR \- Removes gems from the Gemfile
diff --git a/man/bundle-remove.1.txt b/man/bundle-remove.1.txt
index de6ada1785..f385b75ffb 100644
--- a/man/bundle-remove.1.txt
+++ b/man/bundle-remove.1.txt
@@ -31,4 +31,4 @@ OPTIONS
- February 2020 BUNDLE-REMOVE(1)
+ March 2020 BUNDLE-REMOVE(1)
diff --git a/man/bundle-show.1 b/man/bundle-show.1
index 5b0a4fbc75..a9f7372fde 100644
--- a/man/bundle-show.1
+++ b/man/bundle-show.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-SHOW" "1" "February 2020" "" ""
+.TH "BUNDLE\-SHOW" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-show\fR \- Shows all the gems in your bundle, or the path to a gem
diff --git a/man/bundle-show.1.txt b/man/bundle-show.1.txt
index 9f6d398aec..60450db125 100644
--- a/man/bundle-show.1.txt
+++ b/man/bundle-show.1.txt
@@ -24,4 +24,4 @@ OPTIONS
- February 2020 BUNDLE-SHOW(1)
+ March 2020 BUNDLE-SHOW(1)
diff --git a/man/bundle-update.1 b/man/bundle-update.1
index f2cd2ae13f..7ee7d45d24 100644
--- a/man/bundle-update.1
+++ b/man/bundle-update.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-UPDATE" "1" "February 2020" "" ""
+.TH "BUNDLE\-UPDATE" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-update\fR \- Update your gems to the latest available versions
diff --git a/man/bundle-update.1.txt b/man/bundle-update.1.txt
index 9f186300b6..12eb10b152 100644
--- a/man/bundle-update.1.txt
+++ b/man/bundle-update.1.txt
@@ -387,4 +387,4 @@ RECOMMENDED WORKFLOW
- February 2020 BUNDLE-UPDATE(1)
+ March 2020 BUNDLE-UPDATE(1)
diff --git a/man/bundle-viz.1 b/man/bundle-viz.1
index 7e254d811e..8d29fed38e 100644
--- a/man/bundle-viz.1
+++ b/man/bundle-viz.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE\-VIZ" "1" "February 2020" "" ""
+.TH "BUNDLE\-VIZ" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\-viz\fR \- Generates a visual dependency graph for your Gemfile
diff --git a/man/bundle-viz.1.txt b/man/bundle-viz.1.txt
index b3be153c78..5748e08318 100644
--- a/man/bundle-viz.1.txt
+++ b/man/bundle-viz.1.txt
@@ -36,4 +36,4 @@ OPTIONS
- February 2020 BUNDLE-VIZ(1)
+ March 2020 BUNDLE-VIZ(1)
diff --git a/man/bundle.1 b/man/bundle.1
index 106be370ff..d8e2ab22fa 100644
--- a/man/bundle.1
+++ b/man/bundle.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "BUNDLE" "1" "February 2020" "" ""
+.TH "BUNDLE" "1" "March 2020" "" ""
.
.SH "NAME"
\fBbundle\fR \- Ruby Dependency Management
diff --git a/man/bundle.1.txt b/man/bundle.1.txt
index 0c05713b6d..a7a8ae17ee 100644
--- a/man/bundle.1.txt
+++ b/man/bundle.1.txt
@@ -113,4 +113,4 @@ OBSOLETE
- February 2020 BUNDLE(1)
+ March 2020 BUNDLE(1)
diff --git a/man/gemfile.5 b/man/gemfile.5
index 50e0a64ec9..c6ea5e9185 100644
--- a/man/gemfile.5
+++ b/man/gemfile.5
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "GEMFILE" "5" "February 2020" "" ""
+.TH "GEMFILE" "5" "March 2020" "" ""
.
.SH "NAME"
\fBGemfile\fR \- A format for describing gem dependencies for Ruby programs
diff --git a/man/gemfile.5.txt b/man/gemfile.5.txt
index a4fbce3f3f..c953eb2abb 100644
--- a/man/gemfile.5.txt
+++ b/man/gemfile.5.txt
@@ -646,4 +646,4 @@ SOURCE PRIORITY
- February 2020 GEMFILE(5)
+ March 2020 GEMFILE(5)
diff --git a/spec/commands/config_spec.rb b/spec/commands/config_spec.rb
index 7a45dd0dd7..3a6b72d988 100644
--- a/spec/commands/config_spec.rb
+++ b/spec/commands/config_spec.rb
@@ -35,7 +35,7 @@ RSpec.describe ".bundle/config" do
end
end
- describe "location" do
+ describe "location with a gemfile" do
before :each do
gemfile <<-G
source "#{file_uri_for(gem_repo1)}"
@@ -64,6 +64,16 @@ RSpec.describe ".bundle/config" do
end
end
+ describe "location without a gemfile" do
+ it "works with an absolute path" do
+ ENV["BUNDLE_APP_CONFIG"] = tmp("foo/bar").to_s
+ bundle "config set --local path vendor/bundle"
+
+ expect(bundled_app(".bundle")).not_to exist
+ expect(tmp("foo/bar/config")).to exist
+ end
+ end
+
describe "global" do
before(:each) do
install_gemfile <<-G
diff --git a/spec/commands/lock_spec.rb b/spec/commands/lock_spec.rb
index ad8f1d6f32..466f4b739d 100644
--- a/spec/commands/lock_spec.rb
+++ b/spec/commands/lock_spec.rb
@@ -38,8 +38,8 @@ RSpec.describe "bundle lock" do
actionpack (= 2.3.2)
activerecord (= 2.3.2)
activeresource (= 2.3.2)
- rake (= 12.3.2)
- rake (12.3.2)
+ rake (= 13.0.1)
+ rake (13.0.1)
with_license (1.0)
PLATFORMS
@@ -133,7 +133,7 @@ RSpec.describe "bundle lock" do
end
it "update specific gems using --update" do
- lockfile @lockfile.gsub("2.3.2", "2.3.1").gsub("12.3.2", "10.0.1")
+ lockfile @lockfile.gsub("2.3.2", "2.3.1").gsub("13.0.1", "10.0.1")
bundle "lock --update rails rake"
diff --git a/spec/commands/newgem_spec.rb b/spec/commands/newgem_spec.rb
index e1d457846f..aa185dc1c3 100644
--- a/spec/commands/newgem_spec.rb
+++ b/spec/commands/newgem_spec.rb
@@ -251,7 +251,7 @@ RSpec.describe "bundle gem" do
prepare_gemspec(bundled_app("newgem", "newgem.gemspec"))
- gems = ["rake-12.3.2"]
+ gems = ["rake-13.0.1"]
system_gems gems, :path => :bundle_path, :bundle_dir => bundled_app("newgem")
bundle! "exec rake build", :dir => bundled_app("newgem")
@@ -359,7 +359,7 @@ RSpec.describe "bundle gem" do
it "runs rake without problems" do
bundle! "gem #{gem_name}"
- system_gems ["rake-12.3.2"]
+ system_gems ["rake-13.0.1"]
rakefile = strip_whitespace <<-RAKEFILE
task :default do
diff --git a/spec/commands/show_spec.rb b/spec/commands/show_spec.rb
index 5dd800e7c4..448775e987 100644
--- a/spec/commands/show_spec.rb
+++ b/spec/commands/show_spec.rb
@@ -57,7 +57,7 @@ RSpec.describe "bundle show", :bundler => "< 3" do
it "prints path of all gems in bundle sorted by name" do
bundle! "show --paths"
- expect(out).to include(default_bundle_path("gems", "rake-12.3.2").to_s)
+ expect(out).to include(default_bundle_path("gems", "rake-13.0.1").to_s)
expect(out).to include(default_bundle_path("gems", "rails-2.3.2").to_s)
# Gem names are the last component of their path.
diff --git a/spec/install/gemfile/gemspec_spec.rb b/spec/install/gemfile/gemspec_spec.rb
index b28d70a798..fcda3004f5 100644
--- a/spec/install/gemfile/gemspec_spec.rb
+++ b/spec/install/gemfile/gemspec_spec.rb
@@ -117,7 +117,7 @@ RSpec.describe "bundle install from an existing gemspec" do
build_lib("foo", :path => tmp.join("foo")) do |s|
s.write("Gemfile", "source '#{file_uri_for(gem_repo1)}'\ngemspec")
s.add_dependency "actionpack", "=2.3.2"
- s.add_development_dependency "rake", "=12.3.2"
+ s.add_development_dependency "rake", "=13.0.1"
end
bundle "install", :dir => tmp.join("foo")
diff --git a/spec/install/gemfile/platform_spec.rb b/spec/install/gemfile/platform_spec.rb
index 52e1cf86fa..c637eeee0c 100644
--- a/spec/install/gemfile/platform_spec.rb
+++ b/spec/install/gemfile/platform_spec.rb
@@ -378,7 +378,7 @@ RSpec.describe "bundle install with platform conditionals" do
expect(out).not_to match(/Could not find gem 'some_gem/)
end
- it "prints a helpful warning when a dependency is unused on any platform" do
+ it "resolves all platforms by default and without warning messages" do
simulate_platform "ruby"
simulate_ruby_engine "ruby"
@@ -390,28 +390,27 @@ RSpec.describe "bundle install with platform conditionals" do
bundle! "install"
- expect(err).to include <<-O.strip
-The dependency #{Gem::Dependency.new("rack", ">= 0")} will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
- O
- end
-
- context "when disable_platform_warnings is true" do
- before { bundle! "config set disable_platform_warnings true" }
+ expect(err).to be_empty
- it "does not print the warning when a dependency is unused on any platform" do
- simulate_platform "ruby"
- simulate_ruby_engine "ruby"
-
- gemfile <<-G
- source "#{file_uri_for(gem_repo1)}"
+ lockfile_should_be <<-L
+ GEM
+ remote: #{file_uri_for(gem_repo1)}/
+ specs:
+ rack (1.0.0)
- gem "rack", :platform => [:mingw, :mswin, :x64_mingw, :jruby]
- G
+ PLATFORMS
+ java
+ ruby
+ x64-mingw32
+ x86-mingw32
+ x86-mswin32
- bundle! "install"
+ DEPENDENCIES
+ rack
- expect(out).not_to match(/The dependency (.*) will be unused/)
- end
+ BUNDLED WITH
+ #{Bundler::VERSION}
+ L
end
end
diff --git a/spec/install/gems/compact_index_spec.rb b/spec/install/gems/compact_index_spec.rb
index be6c01aee9..39e25017a6 100644
--- a/spec/install/gems/compact_index_spec.rb
+++ b/spec/install/gems/compact_index_spec.rb
@@ -1015,7 +1015,7 @@ The checksum of /versions does not match the checksum provided by the server! So
source "#{source_uri}"
gem "rails"
G
- deps = [Gem::Dependency.new("rake", "= 12.3.2"),
+ deps = [Gem::Dependency.new("rake", "= 13.0.1"),
Gem::Dependency.new("actionpack", "= 2.3.2"),
Gem::Dependency.new("activerecord", "= 2.3.2"),
Gem::Dependency.new("actionmailer", "= 2.3.2"),
diff --git a/spec/install/gems/resolving_spec.rb b/spec/install/gems/resolving_spec.rb
index 323b28fdb1..315d615604 100644
--- a/spec/install/gems/resolving_spec.rb
+++ b/spec/install/gems/resolving_spec.rb
@@ -79,7 +79,7 @@ RSpec.describe "bundle install with install-time dependencies" do
bundle :install, :env => { "BUNDLER_DEBUG_RESOLVER" => "1" }
- expect(err).to include("Creating possibility state for net_c")
+ expect(err).to include("BUNDLER: Starting resolution")
end
end
@@ -93,7 +93,7 @@ RSpec.describe "bundle install with install-time dependencies" do
bundle :install, :env => { "DEBUG_RESOLVER" => "1" }
- expect(err).to include("Creating possibility state for net_c")
+ expect(err).to include("BUNDLER: Starting resolution")
end
end
@@ -108,8 +108,8 @@ RSpec.describe "bundle install with install-time dependencies" do
bundle :install, :env => { "DEBUG_RESOLVER_TREE" => "1" }
expect(err).to include(" net_b").
- and include("Starting resolution").
- and include("Finished resolution").
+ and include("BUNDLER: Starting resolution").
+ and include("BUNDLER: Finished resolution").
and include("Attempting to activate")
end
end
@@ -233,7 +233,7 @@ RSpec.describe "bundle install with install-time dependencies" do
describe "with a < requirement" do
let(:ruby_requirement) { %("< 5000") }
- let(:error_message_requirement) { Gem::Requirement.new(["< 5000", "= #{RUBY_VERSION}.#{RUBY_PATCHLEVEL}"]).to_s }
+ let(:error_message_requirement) { Gem::Requirement.new(["< 5000", "= #{Bundler::RubyVersion.system.to_gem_version_with_patchlevel}"]).to_s }
it_behaves_like "ruby version conflicts"
end
@@ -241,7 +241,7 @@ RSpec.describe "bundle install with install-time dependencies" do
describe "with a compound requirement" do
let(:reqs) { ["> 0.1", "< 5000"] }
let(:ruby_requirement) { reqs.map(&:dump).join(", ") }
- let(:error_message_requirement) { Gem::Requirement.new(reqs + ["= #{RUBY_VERSION}.#{RUBY_PATCHLEVEL}"]).to_s }
+ let(:error_message_requirement) { Gem::Requirement.new(reqs + ["= #{Bundler::RubyVersion.system.to_gem_version_with_patchlevel}"]).to_s }
it_behaves_like "ruby version conflicts"
end
diff --git a/spec/lock/lockfile_spec.rb b/spec/lock/lockfile_spec.rb
index afcb89ba8a..4a52ee9e3f 100644
--- a/spec/lock/lockfile_spec.rb
+++ b/spec/lock/lockfile_spec.rb
@@ -748,8 +748,8 @@ RSpec.describe "the lockfile format" do
actionpack (= 2.3.2)
activerecord (= 2.3.2)
activeresource (= 2.3.2)
- rake (= 12.3.2)
- rake (12.3.2)
+ rake (= 13.0.1)
+ rake (13.0.1)
PLATFORMS
#{lockfile_platforms}
diff --git a/spec/quality_spec.rb b/spec/quality_spec.rb
index e94addae5e..57ff196744 100644
--- a/spec/quality_spec.rb
+++ b/spec/quality_spec.rb
@@ -158,7 +158,7 @@ RSpec.describe "The library itself" do
it "maintains language quality of sentences used in source code" do
error_messages = []
- exempt = /vendor|vcr_cassettes/
+ exempt = /vendor|vcr_cassettes|CODE_OF_CONDUCT/
lib_tracked_files.split("\x0").each do |filename|
next if filename =~ exempt
error_messages << check_for_expendable_words(filename)
diff --git a/spec/realworld/fixtures/warbler/.gitignore b/spec/realworld/fixtures/warbler/.gitignore
index 6ac0bb4663..d392f0e82c 100644
--- a/spec/realworld/fixtures/warbler/.gitignore
+++ b/spec/realworld/fixtures/warbler/.gitignore
@@ -1,2 +1 @@
*.jar
-Gemfile.lock
diff --git a/spec/realworld/fixtures/warbler/Gemfile.lock b/spec/realworld/fixtures/warbler/Gemfile.lock
new file mode 100644
index 0000000000..6363b8bbd8
--- /dev/null
+++ b/spec/realworld/fixtures/warbler/Gemfile.lock
@@ -0,0 +1,29 @@
+PATH
+ remote: demo
+ specs:
+ demo (1.0)
+
+GEM
+ remote: https://rubygems.org/
+ specs:
+ jruby-jars (9.2.9.0)
+ jruby-rack (1.1.21)
+ rake (13.0.1)
+ rubyzip (1.3.0)
+ warbler (2.0.5)
+ jruby-jars (>= 9.0.0.0)
+ jruby-rack (>= 1.1.1, < 1.3)
+ rake (>= 10.1.0)
+ rubyzip (~> 1.0, < 1.4)
+
+PLATFORMS
+ java
+ ruby
+
+DEPENDENCIES
+ demo!
+ jruby-jars (~> 9.2)
+ warbler (~> 2.0)
+
+BUNDLED WITH
+ 2.2.0.dev
diff --git a/spec/runtime/require_spec.rb b/spec/runtime/require_spec.rb
index a2e6ba7244..3b9021b4fc 100644
--- a/spec/runtime/require_spec.rb
+++ b/spec/runtime/require_spec.rb
@@ -423,7 +423,7 @@ RSpec.describe "Bundler.require with platform specific dependencies" do
source "#{file_uri_for(gem_repo1)}"
platforms :#{not_local_tag} do
- gem "fail", :require => "omgomg"
+ gem "platform_specific", :require => "omgomg"
end
gem "rack", "1.0.0"
diff --git a/spec/runtime/setup_spec.rb b/spec/runtime/setup_spec.rb
index f94efbea6a..363927bbbb 100644
--- a/spec/runtime/setup_spec.rb
+++ b/spec/runtime/setup_spec.rb
@@ -159,7 +159,7 @@ RSpec.describe "Bundler.setup" do
"/gems/actionpack-2.3.2/lib",
"/gems/actionmailer-2.3.2/lib",
"/gems/activesupport-2.3.2/lib",
- "/gems/rake-12.3.2/lib"
+ "/gems/rake-13.0.1/lib"
)
end
diff --git a/spec/support/builders.rb b/spec/support/builders.rb
index 467a9f2ccd..ac56216a85 100644
--- a/spec/support/builders.rb
+++ b/spec/support/builders.rb
@@ -40,7 +40,7 @@ module Spec
build_gem "rails", "2.3.2" do |s|
s.executables = "rails"
- s.add_dependency "rake", "12.3.2"
+ s.add_dependency "rake", "13.0.1"
s.add_dependency "actionpack", "2.3.2"
s.add_dependency "activerecord", "2.3.2"
s.add_dependency "actionmailer", "2.3.2"
@@ -463,7 +463,6 @@ module Spec
Array(versions).each do |version|
spec = builder.new(self, name, version)
- spec.authors = ["no one"] if !spec.authors || spec.authors.empty?
yield spec if block_given?
spec._build(options)
end
@@ -616,15 +615,6 @@ module Spec
def @spec.validate(*); end
end
- case options[:gemspec]
- when false
- # do nothing
- when :yaml
- @files["#{name}.gemspec"] = @spec.to_yaml
- else
- @files["#{name}.gemspec"] = @spec.to_ruby
- end
-
unless options[:no_default]
gem_source = options[:source] || "path@#{path}"
@files = _default_files.
@@ -633,13 +623,24 @@ module Spec
end
@spec.authors = ["no one"]
+ @spec.files = @files.keys
+
+ case options[:gemspec]
+ when false
+ # do nothing
+ when :yaml
+ @spec.files << "#{name}.gemspec"
+ @files["#{name}.gemspec"] = @spec.to_yaml
+ else
+ @spec.files << "#{name}.gemspec"
+ @files["#{name}.gemspec"] = @spec.to_ruby
+ end
@files.each do |file, source|
file = Pathname.new(path).join(file)
FileUtils.mkdir_p(file.dirname)
File.open(file, "w") {|f| f.puts source }
end
- @spec.files = @files.keys
path
end
@@ -748,13 +749,18 @@ module Spec
def _build(opts)
lib_path = super(opts.merge(:path => @context.tmp(".tmp/#{@spec.full_name}"), :no_default => opts[:no_default]))
destination = opts[:path] || _default_path
- Dir.chdir(lib_path) do
- FileUtils.mkdir_p(destination)
-
- @spec.authors = ["that guy"] if !@spec.authors || @spec.authors.empty?
+ FileUtils.mkdir_p(lib_path.join(destination))
- Bundler.rubygems.build(@spec, opts[:skip_validation])
+ if opts[:gemspec] == :yaml || opts[:gemspec] == false
+ Dir.chdir(lib_path) do
+ Bundler.rubygems.build(@spec, opts[:skip_validation])
+ end
+ elsif opts[:skip_validation]
+ @context.gem_command "build --force #{@spec.name}", :dir => lib_path
+ else
+ @context.gem_command! "build #{@spec.name}", :dir => lib_path
end
+
gem_path = File.expand_path("#{@spec.full_name}.gem", lib_path)
if opts[:to_system]
@context.system_gems gem_path, :keep_path => true
diff --git a/spec/support/path.rb b/spec/support/path.rb
index 25206c9832..bfa4865abd 100644
--- a/spec/support/path.rb
+++ b/spec/support/path.rb
@@ -86,8 +86,6 @@ module Spec
root.join(*path)
end
- alias_method :bundled_app1, :bundled_app
-
def bundled_app2(*path)
root = tmp.join("bundled_app2")
FileUtils.mkdir_p(root)
@@ -172,8 +170,8 @@ module Spec
def with_root_gemspec
if ruby_core?
root_gemspec = root.join("bundler.gemspec")
- # `in_repo_root` for Dir.glob in gemspec
- spec = in_repo_root { Gem::Specification.load(gemspec.to_s) }
+ # Dir.chdir for Dir.glob in gemspec
+ spec = Dir.chdir(root) { Gem::Specification.load(gemspec.to_s) }
spec.bindir = "libexec"
File.open(root_gemspec.to_s, "w") {|f| f.write spec.to_ruby }
yield(root_gemspec)
@@ -194,10 +192,6 @@ module Spec
end
end
- def in_repo_root
- Dir.chdir(root) { yield }
- end
-
extend self
private
diff --git a/spec/support/rubygems_ext.rb b/spec/support/rubygems_ext.rb
index b177fc690a..62e2274fbe 100644
--- a/spec/support/rubygems_ext.rb
+++ b/spec/support/rubygems_ext.rb
@@ -4,28 +4,28 @@ require_relative "path"
module Spec
module Rubygems
- DEV_DEPS = {
+ DEV_DEPS = { # rubocop:disable Style/MutableConstant
"automatiek" => "~> 0.3.0",
"parallel_tests" => "~> 2.29",
- "rake" => "~> 12.0",
"ronn" => "~> 0.7.3",
"rspec" => "~> 3.8",
"rubocop" => "= 0.77.0",
"rubocop-performance" => "= 1.5.1",
- }.freeze
+ }
- DEPS = {
+ DEPS = { # rubocop:disable Style/MutableConstant
"rack" => "2.0.8",
"rack-test" => "~> 1.1",
"artifice" => "~> 0.6.0",
"compact_index" => "~> 0.11.0",
"sinatra" => "~> 2.0",
# Rake version has to be consistent for tests to pass
- "rake" => "12.3.2",
+ "rake" => "13.0.1",
"builder" => "~> 3.2",
# ruby-graphviz is used by the viz tests
- "ruby-graphviz" => ">= 0.a",
- }.freeze
+ # for >= Ruby 2.3
+ "ruby-graphviz" => "1.2.4",
+ }
extend self
@@ -106,10 +106,14 @@ module Spec
end
def install_gems(gems)
- deps = gems.map {|name, req| "'#{name}:#{req}'" }.join(" ")
- gem = ENV["GEM_COMMAND"] || "#{Gem.ruby} -S gem --backtrace"
- cmd = "#{gem} install #{deps} --no-document --conservative"
- system(cmd) || raise("Installing gems #{deps} for the tests to use failed!")
+ require "rubygems/dependency_installer"
+
+ gems.each do |name, req|
+ dependency = Gem::Dependency.new(name, req)
+ next unless dependency.matching_specs.empty?
+
+ Gem::DependencyInstaller.new(:document => false).install(dependency)
+ end
end
end
end