[rubygems/rubygems] Fix test warnings

Since `rake package` started printing to stdout by default, we get these
warnings printed when running rubygems tests:

```
$ rake
Run options: --seed 6097

# Running:

...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................mkdir -p pkg
mkdir -p pkg/pkgr-1.2.3
rm -f pkg/pkgr-1.2.3/x
ln x pkg/pkgr-1.2.3/x
rm -f pkg/pkgr-1.2.3/y
ln y pkg/pkgr-1.2.3/y
cd pkg/pkgr-1.2.3
cd -
....

Finished in 50.578889s, 43.0812 runs/s, 134.8191 assertions/s.
2179 runs, 6819 assertions, 0 failures, 0 errors, 0 skips
Coverage report generated for Unit Tests to /home/deivid/Code/rubygems/coverage. 8080 / 8978 LOC (90.0%) covered.
```

The reason is that, although these tests wrap the
`Rake.application["package"].invoke` with a `capture_io` block, the rake
application initialization happens outside of this block, and a copy of
`$stdout` is saved in there, and that's where the task prints. So the
`capture_io` `$stdout` and `$stderr` dance is not effective.

To fix, we move the `Rake` application initialization inside the
`capture_io` block.

https://github.com/rubygems/rubygems/commit/7f6e2398a5
This commit is contained in:
David Rodríguez 2020-05-21 18:52:30 +02:00 committed by Hiroshi SHIBATA
parent 8739bc449f
commit b35793e0e7
Notes: git 2020-06-05 07:33:34 +09:00

View File

@ -8,8 +8,6 @@ class TestGemPackageTask < Gem::TestCase
def setup
super
Rake.application = Rake::Application.new
@original_rake_fileutils_verbosity = RakeFileUtils.verbose_flag
end
@ -31,6 +29,8 @@ class TestGemPackageTask < Gem::TestCase
g.summary = 'summary'
end
Rake.application = Rake::Application.new
pkg = Gem::PackageTask.new(gem) do |p|
p.package_files << "y"
end
@ -57,22 +57,24 @@ class TestGemPackageTask < Gem::TestCase
g.summary = 'summary'
end
pkg = Gem::PackageTask.new(gem) do |p|
p.package_files << "y"
end
_, err = capture_io do
Rake.application = Rake::Application.new
assert_equal %w[x y], pkg.package_files
Dir.chdir @tempdir do
FileUtils.touch 'x'
FileUtils.touch 'y'
_, err = capture_io do
Rake.application['package'].invoke
pkg = Gem::PackageTask.new(gem) do |p|
p.package_files << "y"
end
assert_empty err
assert_equal %w[x y], pkg.package_files
Dir.chdir @tempdir do
FileUtils.touch 'x'
FileUtils.touch 'y'
Rake.application['package'].invoke
end
end
assert_empty err
end
def test_gem_package_with_current_platform