Bug #14626
closedOne failing test on trunk 58fbe69a5b and OSX
Description
I'm using ruby/trunk on 58fbe69a5b. When I run make test-all TESTS='rubygems/test_require.rb'
Run options: "--ruby=./miniruby -I../ruby/lib -I. -I.ext/common ../ruby/tool/runruby.rb --extout=.ext -- --disable-gems" --excludes-dir=../ruby/test/excludes --name=!/memory_leak/
# Running tests:
[ 2/21] TestGemRequire#test_dash_i_beats_gems = 0.05 s
1) Error:
TestGemRequire#test_dash_i_beats_gems:
NameError: uninitialized constant HELLO
/Users/bti/code/ruby/test/rubygems/test_require.rb:65:in `test_dash_i_beats_gems'
Finished tests in 0.656300s, 31.9976 tests/s, 135.6087 assertions/s.
21 tests, 89 assertions, 0 failures, 1 errors, 1 skips
Here are my current environment details:
- osx 10.13.2
- ruby trunk 58fbe69a5b
Is their a guide somewhere for git bisecting ruby trunk. I'm using https://github.com/ko1/rubyhackchallenge/blob/master/EN/2_mri_structure.md#assumptions and I'm not sure about the best way of doing it.
I'm running make test-all from my build folder but do I need to run ../ruby/configure .... and make install everytime I checkout a previous version? I feel dumb of asking those questions.
Thanks a lot in advance
Updated by Benoit_Tigeot (Benoit Tigeot) over 6 years ago
- Description updated (diff)
Updated by Benoit_Tigeot (Benoit Tigeot) over 6 years ago
I will follow this guide http://engineering.appfolio.com/appfolio-engineering/2016/6/7/git-bisect-to-find-a-ruby-regression
Updated by MSP-Greg (Greg L) over 6 years ago
but do I need to run
Most build systems do perform configure
, make
, and make install
before testing.
If you want to run tests on an existing build, you can run something like the following (when in the test folder):
ruby runner.rb --show-skip -I./lib rubygems
ruby runner.rb --show-skip -I./lib rubygems/test_require.rb
Re your particular issue, it's odd, as this test is passing in many other builds, but as I recall (I'm a windows guy), MacOS uses clang(?)
Anyway, the assert immediately before your failure is requiring the file defining the HELLO constant, and it's not generating a failure. So, either a different file is being loaded (unlikely), or your build isn't parsing the file generated by the following:
File.open(c_rb, 'w') { |f| f.write "class Object; HELLO = 'world' end" }
You might try using that statement with an appropriate filename, require the file, and see if the constant exists. Then again, I keep thinking something is really strange, or, I'm missing something. There have been changes that involve parsing, maybe the string needs a "\n" at the end? Just a wild guess...
Greg
Updated by Benoit_Tigeot (Benoit Tigeot) over 6 years ago
Thanks a lot for the help.
Localy I have this setup https://github.com/ko1/rubyhackchallenge/blob/master/EN/2_mri_structure.md#assumptions
code/
ruby/ <- git cloned directory
build/ <- build directory (*.o files and other compilation artifacts are stored here)
install/ <- install directory (workdir/install/bin/ruby is the installed binary)
The naive command I run is
cd ~/code/ruby && autoconf && cd ~/code/build && ../ruby/configure --prefix=$PWD/../install --enable-shared --with-openssl-dir="$(brew --prefix openssl)" --with-readline-dir="$(brew --prefix readline)" --disable-libedit && make -j && make install-nodoc && clear; make test-all TESTS='rubygems/test_require.rb'
The failing test appears between ruby version v2_2_9 and v2_3_0 when this tests was introduced. I will stop bisecting and instead ask rubygems team. :)
Updated by hsbt (Hiroshi SHIBATA) over 6 years ago
- Status changed from Open to Assigned
- Assignee set to ko1 (Koichi Sasada)
I couldn't reproduce with make -C build_dir test-all TESTS="rubygems/test_require.rb"
~/D/g/r/ruby (trunk) > mk test-all TESTS="rubygems/test_require.rb"
make: Entering directory '/Users/hsbt/Documents/github.com/ruby/ruby/.x86_64-darwin'
Run options: "--ruby=./miniruby -I../lib -I. -I.ext/common ../tool/runruby.rb --extout=.ext -- --disable-gems" --excludes-dir=../test/excludes --name=!/memory_leak/
# Running tests:
Finished tests in 0.784839s, 26.7571 tests/s, 114.6732 assertions/s.
21 tests, 90 assertions, 0 failures, 0 errors, 1 skips
ruby -v: ruby 2.6.0dev (2018-03-26 trunk 62923) [x86_64-darwin17]
make: Leaving directory '/Users/hsbt/Documents/github.com/ruby/ruby/.x86_64-darwin'
Updated by MSP-Greg (Greg L) over 6 years ago
Benoit_Tigeot (Benoit Tigeot) wrote:
The failing test appears between ruby version v2_2_9 and v2_3_0 when this tests was introduced.
Thanks for rechecking. On Windows, using ruby 2.3.7p407 (2018-02-01 revision 62148) [x64-mingw32]
, I ran the file using the current trunk test suite (commented out MJIT statements), and the test passed.
I will stop bisecting and instead ask rubygems team. :)
Re my previous post, part of what I was trying to point out is that a failed test may not necessarily show a bug in the code it was designed to test. It may, sometimes just by chance, show a bug in methods unrelated to the test's purpose.
Regardless, since I can't repo, I can't help any further. Hopefully, someone else can repo it or you can provide more information clarifying the cause.
Greg
Updated by jeremyevans0 (Jeremy Evans) about 5 years ago
- Status changed from Assigned to Closed