-
Notifications
You must be signed in to change notification settings - Fork 614
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sh fully echoes commands which error exit #147
Conversation
test/test_rake_file_utils.rb
Outdated
|
||
def error_exit_status | ||
@error_exit_status ||= begin | ||
# TODO: over all Rubies and operating systems, determine whether |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Who is going to do this TODO?
If exit behavior isn't going to be checked before merge just delete this comment.
I like this idea. I think a better implementation would be to print out the short command always as-is, then print out the full command again upon failure. If your terminal scroll back is limited the full command may have scrolled off the screen, so printing it again in the failure method would be the best way to ensure it shows up in your error reports. PS: One other problem with rake printing out the command line is that it is not safe to cut and paste back into a shell line because it doesn't apply quoting. |
I've addressed the review points.
Currently, I'd suppose something in Rake already echoes commands given to
I noticed a distinction between single strings and multiple strings being passed to With both, in the case of multiple parameters, the first parameter is a program, and the shell isn't invoked. This causes the problem you mention (I think). The program I'm working with always sends single strings to |
Thanks, I'll check them later
Yeah, I think it's down in the
Yes.
Yes. I don't expect it to be fixed here, just wanted to note it in case you decide to use the other way some time in the future. |
Apparently, a long list of Ruby methods work in this Perlish way. (That list seems to comprise: Of course, Rake is capable of echoing any shelled-out command, even when it succeeds—I think this happens with Anyway, I wonder what the general Ruby convention is (beyond Rake) for echoing or logging such commands, when they are passed as multiple string arguments, to any of the above list of methods. Perhaps, conceivably, people print some indication of the fact that there are multiple arguments, and then echo or log the arguments in separate lines. More probably, I would guess, people generally shell-escape these multiple strings with I notice the relevant method If handled in that way, then an erroneous command, as printed, would be pasteable into the user's shell (so problems potentially could be troubleshot by the user, by easily repeating the command). |
When you say, "not safe," do you mean merely that it won't work? Or does some issue of security arise? I suppose the proper solution includes assembling multiple Since Bash (and many other shells) are upwardly compatible with Bourne, then they should work, too (of course). To summarize, this PR covers the single-string calls to It doesn't shell-escape multiple string arguments to Before this PR, multiple string arguments are printed the same way, but are cut to 42 characters, with '...' invariably added. That doesn't stop some short multiple string arguments from being printed out fully (in effect), of course. BTW, if Again, does a potential security issue exist here? If so, then solving it should be included in this PR. To put it more fully, regarding the issue of properly merging (before printing) multiple string arguments passed to |
With this rakefile: task :default do
sh 'echo', '; rm -rf .'
end when run:
You see
|
It will depend on the command, some won't work, some will do wrong things.
It is possible, but only when the user copy-pastes rake's log line. I think rake can do better, but I don't think this is CVE-worthy.
Yes. Or into a Windows shell if they're running on Windows.
For this PR, no, thus "I don't expect it to be fixed here" because it's a separate issue. I'm sorry it caused confusion.
Yes, and it should. |
Understood. :) Just as a side comment: IMO good human-engineered log output from
|
I'm no opinion for this proposal. @drbrain Can you handle this? |
Hi, I just got bit by this and I believe it good be a good change 👍. It seems like the PR was ready to go at the time? |
I tried to clone hoe and run its test suite. This is what I got:
Then I installed the rake version from this PR, and this is what I got:
Seems better, no? |
It's been 4 years so I think it's safe to assume @drbrain won't handle this 😅. I think this trimming of commands at 42 characters is arbitrary and not helpful so I advocate for removing it. |
@hsbt Can you reevaluate this proposal? Don't want to put any pressure of course, just put it under your radar! Thank you ❤️ |
@deivid-rodriguez Thanks for your reminder. This change seems usefule to debug. |
Indeed, thank you @hsbt! |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint) | [`6.8.0` -> `6.9.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/6.8.0/6.9.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2feslint-plugin/6.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2feslint-plugin/6.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2feslint-plugin/6.8.0/6.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2feslint-plugin/6.8.0/6.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint) | [`6.8.0` -> `6.9.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/6.8.0/6.9.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/6.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fparser/6.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fparser/6.8.0/6.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/6.8.0/6.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [rake](https://github.com/ruby/rake) ([changelog](https://github.com/ruby/rake/blob/v13.0.6/History.rdoc)) | `13.0.6` -> `13.1.0` | [![age](https://developer.mend.io/api/mc/badges/age/rubygems/rake/13.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/rubygems/rake/13.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/rubygems/rake/13.0.6/13.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/rubygems/rake/13.0.6/13.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)</summary> ### [`v6.9.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#690-2023-10-23) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v6.8.0...v6.9.0) ##### Bug Fixes - **eslint-plugin:** \[no-confusing-void-expression] handle unfixable cases ([#​7674](https://github.com/typescript-eslint/typescript-eslint/issues/7674)) ([7e52f27](https://github.com/typescript-eslint/typescript-eslint/commit/7e52f276ed5b8b2c0b76be02cb2e8a77892c10f2)) - **eslint-plugin:** \[no-unsafe-return] allow returning anything if explicitly returning any ([#​7708](https://github.com/typescript-eslint/typescript-eslint/issues/7708)) ([c6124b2](https://github.com/typescript-eslint/typescript-eslint/commit/c6124b2c93a53f11471cce8054388dec7a58f90b)) ##### Features - **eslint-plugin:** \[max-params] don't count `this: void` parameter ([#​7696](https://github.com/typescript-eslint/typescript-eslint/issues/7696)) ([6398d3f](https://github.com/typescript-eslint/typescript-eslint/commit/6398d3fd0a576d8cdc957ec1b57929acacc60ba0)), closes [#​7538](https://github.com/typescript-eslint/typescript-eslint/issues/7538) - **eslint-plugin:** \[naming-convention] add support for default and namespace imports ([#​7269](https://github.com/typescript-eslint/typescript-eslint/issues/7269)) ([bb15aae](https://github.com/typescript-eslint/typescript-eslint/commit/bb15aae877ae260f59aa5e6cfc338b1eefc6d85c)) - **eslint-plugin:** \[no-restricted-imports] support import = require ([#​7709](https://github.com/typescript-eslint/typescript-eslint/issues/7709)) ([4c8edcf](https://github.com/typescript-eslint/typescript-eslint/commit/4c8edcfb7d3cc02d07d2329c87da4377c1cbf969)) - **eslint-plugin:** \[no-unsafe-enum-comparison] add switch suggestion ([#​7691](https://github.com/typescript-eslint/typescript-eslint/issues/7691)) ([53d5263](https://github.com/typescript-eslint/typescript-eslint/commit/53d5263cee8e0b5ddc5de3321d27559c196e5b58)), closes [#​7643](https://github.com/typescript-eslint/typescript-eslint/issues/7643) - **eslint-plugin:** \[prefer-readonly] private fields support ([#​7686](https://github.com/typescript-eslint/typescript-eslint/issues/7686)) ([0e875bf](https://github.com/typescript-eslint/typescript-eslint/commit/0e875bf77a9d94dc74924245fabc36c0ae780977)) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. </details> <details> <summary>typescript-eslint/typescript-eslint (@​typescript-eslint/parser)</summary> ### [`v6.9.0`](https://github.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#690-2023-10-23) [Compare Source](https://github.com/typescript-eslint/typescript-eslint/compare/v6.8.0...v6.9.0) **Note:** Version bump only for package [@​typescript-eslint/parser](https://github.com/typescript-eslint/parser) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. </details> <details> <summary>ruby/rake (rake)</summary> ### [`v13.1.0`](https://github.com/ruby/rake/releases/tag/v13.1.0) [Compare Source](https://github.com/ruby/rake/compare/v13.0.6...v13.1.0) #### What's Changed - Added dependabot.yml for actions by [@​hsbt](https://github.com/hsbt) in [ruby/rake#416 - Add Ruby 3.1 to the CI matrix by [@​petergoldstein](https://github.com/petergoldstein) in [ruby/rake#415 - (Performance) Remove unnecessary I/O syscalls for FileTasks by [@​da2x](https://github.com/da2x) in [ruby/rake#393 - Skip test failure with JRuby by [@​hsbt](https://github.com/hsbt) in [ruby/rake#418 - Bump actions/checkout from 2 to 3 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#417 - Remove bin/rdoc by [@​tnir](https://github.com/tnir) in [ruby/rake#421 - Remove bin/rake by [@​tnir](https://github.com/tnir) in [ruby/rake#422 - Remove bin/bundle by [@​tnir](https://github.com/tnir) in [ruby/rake#425 - Apply RuboCop linting for Ruby 2.3 by [@​tnir](https://github.com/tnir) in [ruby/rake#423 - Update rubocop to work with Ruby 2.4 compatible by [@​tnir](https://github.com/tnir) in [ruby/rake#424 - chore: fix typo in comments by [@​tnir](https://github.com/tnir) in [ruby/rake#429 - Use 'test' as workflow name on Actions by [@​tnir](https://github.com/tnir) in [ruby/rake#427 - docs: update CONTRIBUTING.rdoc by [@​tnir](https://github.com/tnir) in [ruby/rake#428 - Add RuboCop job to Actions by [@​tnir](https://github.com/tnir) in [ruby/rake#426 - Lock minitest-5.15.0 for Ruby 2.2 by [@​hsbt](https://github.com/hsbt) in [ruby/rake#442 - Eagerly require set in thread_pool.rb by [@​jeremyevans](https://github.com/jeremyevans) in [ruby/rake#440 - Avoid creating an unnecessary thread pool by [@​jeremyevans](https://github.com/jeremyevans) in [ruby/rake#441 - Add credit for maintenance in Rake 12/13 by [@​tnir](https://github.com/tnir) in [ruby/rake#443 - Sh fully echoes commands which error exit by [@​MarkDBlackwell](https://github.com/MarkDBlackwell) in [ruby/rake#147 - Correct RuboCop offenses by [@​deivid-rodriguez](https://github.com/deivid-rodriguez) in [ruby/rake#444 - \[StepSecurity] ci: Harden GitHub Actions by [@​step-security-bot](https://github.com/step-security-bot) in [ruby/rake#450 - Bump ruby/setup-ruby from 1.126.0 to 1.127.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#453 - Bump actions/checkout from 3.1.0 to 3.2.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#454 - Bump ruby/setup-ruby from 1.127.0 to 1.131.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#457 - Add ruby 3.2 to test matrix by [@​hanneskaeufler](https://github.com/hanneskaeufler) in [ruby/rake#458 - Bump ruby/setup-ruby from 1.131.0 to 1.133.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#459 - Bump actions/checkout from 3.2.0 to 3.3.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#463 - Bump ruby/setup-ruby from 1.133.0 to 1.133.1 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#462 - Bump ruby/setup-ruby from 1.133.1 to 1.133.2 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#464 - Bump ruby/setup-ruby from 1.133.2 to 1.134.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#466 - Missing 'do' on example by [@​zzak](https://github.com/zzak) in [ruby/rake#467 - Try to use dependabot automerge by [@​hsbt](https://github.com/hsbt) in [ruby/rake#470 - Rewrite auto-merge feature for dependabot by [@​hsbt](https://github.com/hsbt) in [ruby/rake#471 - Bump ruby/setup-ruby from 1.134.0 to 1.137.2 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#469 - Update bundler in Dependabot by [@​ono-max](https://github.com/ono-max) in [ruby/rake#472 - Bump ruby/setup-ruby from 1.137.2 to 1.138.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#473 - Update minitest requirement from 5.15.0 to 5.17.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#474 - Fix grammar in help text by [@​mebezac](https://github.com/mebezac) in [ruby/rake#381 - Try to use ruby/ruby/.github/workflows/ruby_versions.yml@master by [@​hsbt](https://github.com/hsbt) in [ruby/rake#475 - Bump lewagon/wait-on-check-action from 1.2.0 to 1.3.1 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#476 - Use GitHub Pages Action for generating rdoc page by [@​hsbt](https://github.com/hsbt) in [ruby/rake#477 - Bump ruby/setup-ruby from 1.138.0 to 1.143.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#478 - Update minitest requirement from 5.17.0 to 5.18.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#479 - Bump ruby/setup-ruby from 1.143.0 to 1.144.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#480 - Bump ruby/setup-ruby from 1.144.0 to 1.144.1 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#482 - Bump actions/deploy-pages from 1 to 2 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#481 - Bump ruby/setup-ruby from 1.144.1 to 1.144.2 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#484 - Update rubocop requirement from ~> 1.12.1 to ~> 1.48.1 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#485 - Bump ruby/setup-ruby from 1.144.2 to 1.145.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#487 - Update rubocop requirement from ~> 1.48.1 to ~> 1.49.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#488 - Support `#detailed_message` when task failed by [@​ksss](https://github.com/ksss) in [ruby/rake#486 - Debug at stop when task fail by [@​ksss](https://github.com/ksss) in [ruby/rake#489 - Drop to support Ruby 2.2 by [@​hsbt](https://github.com/hsbt) in [ruby/rake#492 - Bump ruby/setup-ruby from 1.145.0 to 1.146.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#491 - Update rubocop requirement from ~> 1.49.0 to ~> 1.50.1 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#493 - Bump up setup-ruby by [@​hsbt](https://github.com/hsbt) in [ruby/rake#497 - Bump ruby/setup-ruby from 1.148.0 to 1.149.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#498 - Update rubocop requirement from ~> 1.50.1 to ~> 1.51.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#499 - Bump ruby/setup-ruby from 1.149.0 to 1.150.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#500 - Update rubocop requirement from ~> 1.51.0 to ~> 1.52.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#502 - Bump ruby/setup-ruby from 1.150.0 to 1.151.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#503 - Update development dependencies by [@​hsbt](https://github.com/hsbt) in [ruby/rake#505 - Bump ruby/setup-ruby from 1.151.0 to 1.152.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#506 - Bump actions/upload-pages-artifact from 1 to 2 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#508 - Bump actions/checkout from 3 to 4 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#513 - Bump ruby/setup-ruby from 1.152.0 to 1.153.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#514 - Bump actions/checkout from 4.0.0 to 4.1.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#516 - Bump ruby/setup-ruby from 1.153.0 to 1.154.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#517 - Bump ruby/setup-ruby from 1.154.0 to 1.155.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#518 - Bump ruby/setup-ruby from 1.155.0 to 1.156.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#519 - Bump actions/checkout from 4.1.0 to 4.1.1 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#520 - Bump ruby/setup-ruby from 1.156.0 to 1.157.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#521 #### New Contributors - [@​petergoldstein](https://github.com/petergoldstein) made their first contribution in [ruby/rake#415 - [@​da2x](https://github.com/da2x) made their first contribution in [ruby/rake#393 - [@​dependabot](https://github.com/dependabot) made their first contribution in [ruby/rake#417 - [@​tnir](https://github.com/tnir) made their first contribution in [ruby/rake#421 - [@​step-security-bot](https://github.com/step-security-bot) made their first contribution in [ruby/rake#450 - [@​hanneskaeufler](https://github.com/hanneskaeufler) made their first contribution in [ruby/rake#458 - [@​ono-max](https://github.com/ono-max) made their first contribution in [ruby/rake#472 - [@​mebezac](https://github.com/mebezac) made their first contribution in [ruby/rake#381 - [@​ksss](https://github.com/ksss) made their first contribution in [ruby/rake#486 **Full Changelog**: ruby/rake@v13.0.6...v13.1.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/powerhome/power-tools). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMS4yIiwidXBkYXRlZEluVmVyIjoiMzcuMzEuNSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [rake](https://github.com/ruby/rake) ([changelog](https://github.com/ruby/rake/blob/v13.0.6/History.rdoc)) | `13.0.6` -> `13.1.0` | [![age](https://developer.mend.io/api/mc/badges/age/rubygems/rake/13.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/rubygems/rake/13.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/rubygems/rake/13.0.6/13.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/rubygems/rake/13.0.6/13.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>ruby/rake (rake)</summary> ### [`v13.1.0`](https://github.com/ruby/rake/releases/tag/v13.1.0) [Compare Source](https://github.com/ruby/rake/compare/v13.0.6...v13.1.0) #### What's Changed - Added dependabot.yml for actions by [@​hsbt](https://github.com/hsbt) in [ruby/rake#416 - Add Ruby 3.1 to the CI matrix by [@​petergoldstein](https://github.com/petergoldstein) in [ruby/rake#415 - (Performance) Remove unnecessary I/O syscalls for FileTasks by [@​da2x](https://github.com/da2x) in [ruby/rake#393 - Skip test failure with JRuby by [@​hsbt](https://github.com/hsbt) in [ruby/rake#418 - Bump actions/checkout from 2 to 3 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#417 - Remove bin/rdoc by [@​tnir](https://github.com/tnir) in [ruby/rake#421 - Remove bin/rake by [@​tnir](https://github.com/tnir) in [ruby/rake#422 - Remove bin/bundle by [@​tnir](https://github.com/tnir) in [ruby/rake#425 - Apply RuboCop linting for Ruby 2.3 by [@​tnir](https://github.com/tnir) in [ruby/rake#423 - Update rubocop to work with Ruby 2.4 compatible by [@​tnir](https://github.com/tnir) in [ruby/rake#424 - chore: fix typo in comments by [@​tnir](https://github.com/tnir) in [ruby/rake#429 - Use 'test' as workflow name on Actions by [@​tnir](https://github.com/tnir) in [ruby/rake#427 - docs: update CONTRIBUTING.rdoc by [@​tnir](https://github.com/tnir) in [ruby/rake#428 - Add RuboCop job to Actions by [@​tnir](https://github.com/tnir) in [ruby/rake#426 - Lock minitest-5.15.0 for Ruby 2.2 by [@​hsbt](https://github.com/hsbt) in [ruby/rake#442 - Eagerly require set in thread_pool.rb by [@​jeremyevans](https://github.com/jeremyevans) in [ruby/rake#440 - Avoid creating an unnecessary thread pool by [@​jeremyevans](https://github.com/jeremyevans) in [ruby/rake#441 - Add credit for maintenance in Rake 12/13 by [@​tnir](https://github.com/tnir) in [ruby/rake#443 - Sh fully echoes commands which error exit by [@​MarkDBlackwell](https://github.com/MarkDBlackwell) in [ruby/rake#147 - Correct RuboCop offenses by [@​deivid-rodriguez](https://github.com/deivid-rodriguez) in [ruby/rake#444 - \[StepSecurity] ci: Harden GitHub Actions by [@​step-security-bot](https://github.com/step-security-bot) in [ruby/rake#450 - Bump ruby/setup-ruby from 1.126.0 to 1.127.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#453 - Bump actions/checkout from 3.1.0 to 3.2.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#454 - Bump ruby/setup-ruby from 1.127.0 to 1.131.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#457 - Add ruby 3.2 to test matrix by [@​hanneskaeufler](https://github.com/hanneskaeufler) in [ruby/rake#458 - Bump ruby/setup-ruby from 1.131.0 to 1.133.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#459 - Bump actions/checkout from 3.2.0 to 3.3.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#463 - Bump ruby/setup-ruby from 1.133.0 to 1.133.1 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#462 - Bump ruby/setup-ruby from 1.133.1 to 1.133.2 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#464 - Bump ruby/setup-ruby from 1.133.2 to 1.134.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#466 - Missing 'do' on example by [@​zzak](https://github.com/zzak) in [ruby/rake#467 - Try to use dependabot automerge by [@​hsbt](https://github.com/hsbt) in [ruby/rake#470 - Rewrite auto-merge feature for dependabot by [@​hsbt](https://github.com/hsbt) in [ruby/rake#471 - Bump ruby/setup-ruby from 1.134.0 to 1.137.2 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#469 - Update bundler in Dependabot by [@​ono-max](https://github.com/ono-max) in [ruby/rake#472 - Bump ruby/setup-ruby from 1.137.2 to 1.138.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#473 - Update minitest requirement from 5.15.0 to 5.17.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#474 - Fix grammar in help text by [@​mebezac](https://github.com/mebezac) in [ruby/rake#381 - Try to use ruby/ruby/.github/workflows/ruby_versions.yml@master by [@​hsbt](https://github.com/hsbt) in [ruby/rake#475 - Bump lewagon/wait-on-check-action from 1.2.0 to 1.3.1 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#476 - Use GitHub Pages Action for generating rdoc page by [@​hsbt](https://github.com/hsbt) in [ruby/rake#477 - Bump ruby/setup-ruby from 1.138.0 to 1.143.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#478 - Update minitest requirement from 5.17.0 to 5.18.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#479 - Bump ruby/setup-ruby from 1.143.0 to 1.144.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#480 - Bump ruby/setup-ruby from 1.144.0 to 1.144.1 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#482 - Bump actions/deploy-pages from 1 to 2 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#481 - Bump ruby/setup-ruby from 1.144.1 to 1.144.2 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#484 - Update rubocop requirement from ~> 1.12.1 to ~> 1.48.1 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#485 - Bump ruby/setup-ruby from 1.144.2 to 1.145.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#487 - Update rubocop requirement from ~> 1.48.1 to ~> 1.49.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#488 - Support `#detailed_message` when task failed by [@​ksss](https://github.com/ksss) in [ruby/rake#486 - Debug at stop when task fail by [@​ksss](https://github.com/ksss) in [ruby/rake#489 - Drop to support Ruby 2.2 by [@​hsbt](https://github.com/hsbt) in [ruby/rake#492 - Bump ruby/setup-ruby from 1.145.0 to 1.146.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#491 - Update rubocop requirement from ~> 1.49.0 to ~> 1.50.1 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#493 - Bump up setup-ruby by [@​hsbt](https://github.com/hsbt) in [ruby/rake#497 - Bump ruby/setup-ruby from 1.148.0 to 1.149.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#498 - Update rubocop requirement from ~> 1.50.1 to ~> 1.51.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#499 - Bump ruby/setup-ruby from 1.149.0 to 1.150.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#500 - Update rubocop requirement from ~> 1.51.0 to ~> 1.52.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#502 - Bump ruby/setup-ruby from 1.150.0 to 1.151.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#503 - Update development dependencies by [@​hsbt](https://github.com/hsbt) in [ruby/rake#505 - Bump ruby/setup-ruby from 1.151.0 to 1.152.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#506 - Bump actions/upload-pages-artifact from 1 to 2 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#508 - Bump actions/checkout from 3 to 4 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#513 - Bump ruby/setup-ruby from 1.152.0 to 1.153.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#514 - Bump actions/checkout from 4.0.0 to 4.1.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#516 - Bump ruby/setup-ruby from 1.153.0 to 1.154.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#517 - Bump ruby/setup-ruby from 1.154.0 to 1.155.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#518 - Bump ruby/setup-ruby from 1.155.0 to 1.156.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#519 - Bump actions/checkout from 4.1.0 to 4.1.1 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#520 - Bump ruby/setup-ruby from 1.156.0 to 1.157.0 by [@​dependabot](https://github.com/dependabot) in [ruby/rake#521 #### New Contributors - [@​petergoldstein](https://github.com/petergoldstein) made their first contribution in [ruby/rake#415 - [@​da2x](https://github.com/da2x) made their first contribution in [ruby/rake#393 - [@​dependabot](https://github.com/dependabot) made their first contribution in [ruby/rake#417 - [@​tnir](https://github.com/tnir) made their first contribution in [ruby/rake#421 - [@​step-security-bot](https://github.com/step-security-bot) made their first contribution in [ruby/rake#450 - [@​hanneskaeufler](https://github.com/hanneskaeufler) made their first contribution in [ruby/rake#458 - [@​ono-max](https://github.com/ono-max) made their first contribution in [ruby/rake#472 - [@​mebezac](https://github.com/mebezac) made their first contribution in [ruby/rake#381 - [@​ksss](https://github.com/ksss) made their first contribution in [ruby/rake#486 **Full Changelog**: ruby/rake@v13.0.6...v13.1.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/powerhome/audiences). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMS41IiwidXBkYXRlZEluVmVyIjoiMzcuMzEuNSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
CASE
FileUtils#sh
truncates (to 42 characters) the echoing of failed shelled-out commands (as determined by their exit status). (BTW, even when the output is redirected to a file, it still truncates, in the same way.)This isn't about shelled-out commands that succeed.
Why truncate the failed ones, anyhow? (And why to 42 characters?) What's the reason or rationale?
Every user wants to know (presumably) exactly which failed command their program was unable to handle, in order to obtain help to make their program work.
Passing a block to
FileUtils#sh
can avoid echoing any failed command, easily. So, any wish to provide some facility to avoid excessive echoing doesn't fully seem to justify this truncation.This truncation of failed commands seems devoid of test coverage (because, if I comment this out, all tests still pass).
(BTW, the truncation seems related to
ENV['RAKE_COLUMNS']
,@terminal_columns
,terminal_width()
, andtruncate_output?()
.)If a program contains long shell commands (which incorporate fully-qualified paths), and if one of them fails, then 42 characters seems unhelpful.
I've been using a program which runs various program-generation recipes. Relatively unsophisticated people use it. It's (arguably) a good representative of a whole category of programs using Rake's
FileUtils#sh
.Usually, when the program I'm using fails (because of external circumstances), the users don't rerun the program with
--trace
(despite Rake's recommendation—perhaps because the program is long-running) but instead simply submit the output as they first received it. And they themselves can't see the full, shelled-out command.As a result, typically the (relatively newby) users aren't submitting the full details of the generated, failed shelled-out commands in their error reports—far from it. At that point, we typically ask them to rerun the program with
--trace
. Typically this delays our troubleshooting by one or more email cycles, or in some cases even blocks our users (they give up).PLAN
Of course, I believe the program I'm using (and others like it—see above) should continue to use
FileUtils#sh
, yet (somehow) I'd like to influence this 42-character truncation.I'd like to remove it.
Even if the truncation were to remain, then I'd like to be able to configure the 42 programmatically, perhaps with a Rake constant. Perhaps 0 (zero) could mean: don't truncate the command at all (for example).
For this purpose, a Rake command-line option would not be useful, because already the (relatively newby) users (of programs like the one mentioned above) don't use
--trace
.Instead, because the relevant, shelled-out commands have failed, I believe they should be echoed in their entirety in any case. Does that make sense?
This pull request accomplishes this last goal. And it includes new tests to cover it.
HISTORY
2005-04-09 7:41:05 "updated changes" commit 5a3950d (toward Rake 0.5.3, and apparently referring to the later 7:41:07 change). File
rake/CHANGES
says "Fixed verbose flag bug in the testing task. Shortened some failure messages."2005-04-09 7:41:07 "shortened error on task failure" commit f022aee. File
rake/lib/rake.rb
began truncating echoed failed commands to 42 characters.2005-04-09 8:43 "updated documentation" commit cdd66db. File
rake/doc/release_notes/rake-0.5.3.rdoc
says "Fixed the verbose flag in the TestTask so that the test code is controlled by the flag. Also shortened up some failure messages. (Thanks to Tobias Luetke for the suggestion.)" (BTW, I believe this is @tobi.)2006-08-12 "removed nested directory from CVS conversion" commit 8f9da2e (toward Rake 0.7.1.3). Renamed file
rake/lib/rake.rb
tolib/rake.rb
.2007-03-31 "added existing and existing! methods to FileList" commit 0c5500a (toward Rake 0.7.3). File
lib/rake.rb
began appending "..." always to echoed, failed commands (even to short ones). It also added a TODO, apparently for further investigation. The TODO includes the mysterious abbreviation "heref" (perhaps meaning "heretofore").2009-03-06 "show all of the sh command if in trace mode" commit 14a4c32 (toward Rake 0.8.4.99). Initiated truncation unless in trace mode.
2009-03-28 "moved FileList to a separate file" commit 0d4416e (toward Rake 0.8.5). Created file
lib/rake/file_utils.rb
, and moved methodsh
to it (fromlib/rake.rb
).2009-05-24 22:45 "fixed problem with :verbose=>false in sh and ruby commands" commit 6afd6fa (toward Rake 0.8.99.1). (This doesn't tell us much.)
2009-05-24 23:05 "refactoring the sh command a bit" commit 5f52524. File
lib/rake/file_utils.rb
removed the TODO; the relevant code was moved to a new private methodcreate_shell_command
, which still truncates failed command echoing to 42 characters.2009-05-24 23:12 "changed nomenclature from shell_command to shell_runner" commit 2865311. Changed the method name to (the current)
create_shell_runner
.