ruby-i18n / i18n

Internationalization (i18n) library for Ruby
MIT License
977 stars 408 forks source link

[BUG] pry is not required during testing #607

Closed dvzrv closed 2 years ago

dvzrv commented 2 years ago

What I tried to do

What I expected to happen

Not require pry.

What actually happened

The rake test call fails because it tries to find pry.

Versions of i18n, rails, and anything else you think is necessary

i18n 1.9.0 (but many earlier versions are affected I guess).

radar commented 2 years ago

rake test runs fine on my machine. Please include the output from that command here, as well as the exact commit you're on.

dvzrv commented 2 years ago

rake test runs fine on my machine. Please include the output from that command here, as well as the exact commit you're on.

That is likely because pry is available in your environment. When it is not, rake fails:

/usr/bin/ruby -w -I"lib:lib:test" /usr/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb "test/api/all_features_test.rb" "test/api/cascade_test.rb" "test/api/chain_test.rb" "test/api/fallbacks_test.rb" "test/api/key_value_test.rb" "test/api/memoize_test.rb" "test/api/override_test.rb" "test/api/pluralization_test.rb" "test/api/simple_test.rb" "test/backend/cache_file_test.rb" "test/backend/cache_test.rb" "test/backend/cascade_test.rb" "test/backend/chain_test.rb" "test/backend/exceptions_test.rb" "test/backend/fallbacks_test.rb" "test/backend/interpolation_compiler_test.rb" "test/backend/key_value_test.rb" "test/backend/memoize_test.rb" "test/backend/metadata_test.rb" "test/backend/pluralization_fallback_test.rb" "test/backend/pluralization_scope_test.rb" "test/backend/pluralization_test.rb" "test/backend/simple_test.rb" "test/backend/transliterator_test.rb" "test/gettext/api_test.rb" "test/gettext/backend_test.rb" "test/i18n/exceptions_test.rb" "test/i18n/gettext_plural_keys_test.rb" "test/i18n/interpolate_test.rb" "test/i18n/load_path_test.rb" "test/i18n/middleware_test.rb" "test/i18n_test.rb" "test/locale/fallbacks_test.rb" "test/locale/tag/rfc4646_test.rb" "test/locale/tag/simple_test.rb" "test/utils_test.rb"
/usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/resolver.rb:278:in `block in verify_gemfile_dependencies_are_found!': Could not find gem 'pry' in locally installed gems. (Bundler::GemNotFound)
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/resolver.rb:253:in `each'
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/resolver.rb:253:in `verify_gemfile_dependencies_are_found!'
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/resolver.rb:50:in `start'
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/resolver.rb:23:in `resolve'
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/definition.rb:256:in `resolve'
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/definition.rb:477:in `materialize'
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/definition.rb:228:in `specs_for'
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/runtime.rb:18:in `setup'
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler.rb:149:in `setup'
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/setup.rb:20:in `block in <top (required)>'
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/ui/shell.rb:136:in `with_level'
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/ui/shell.rb:88:in `silence'
    from /usr/lib/ruby/gems/3.0.0/gems/bundler-2.2.26/lib/bundler/setup.rb:20:in `<top (required)>'
    from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:160:in `require'
    from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:160:in `rescue in require'
    from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:149:in `require'
    from /build/ruby-i18n/src/i18n-1.9.0/test/test_helper.rb:2:in `<top (required)>'
    from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /build/ruby-i18n/src/i18n-1.9.0/test/api/all_features_test.rb:1:in `<top (required)>'
    from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb:21:in `block in <main>'
    from /usr/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb:6:in `select'
    from /usr/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb:6:in `<main>'
<internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- bundler/setup (LoadError)
    from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /build/ruby-i18n/src/i18n-1.9.0/test/test_helper.rb:2:in `<top (required)>'
    from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /build/ruby-i18n/src/i18n-1.9.0/test/api/all_features_test.rb:1:in `<top (required)>'
    from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from <internal:/usr/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
    from /usr/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb:21:in `block in <main>'
    from /usr/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb:6:in `select'
    from /usr/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb:6:in `<main>'
rake aborted!
Command failed with status (1): [ruby -w -I"lib:lib:test" /usr/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/rake_test_loader.rb "test/api/all_features_test.rb" "test/api/cascade_test.rb" "test/api/chain_test.rb" "test/api/fallbacks_test.rb" "test/api/key_value_test.rb" "test/api/memoize_test.rb" "test/api/override_test.rb" "test/api/pluralization_test.rb" "test/api/simple_test.rb" "test/backend/cache_file_test.rb" "test/backend/cache_test.rb" "test/backend/cascade_test.rb" "test/backend/chain_test.rb" "test/backend/exceptions_test.rb" "test/backend/fallbacks_test.rb" "test/backend/interpolation_compiler_test.rb" "test/backend/key_value_test.rb" "test/backend/memoize_test.rb" "test/backend/metadata_test.rb" "test/backend/pluralization_fallback_test.rb" "test/backend/pluralization_scope_test.rb" "test/backend/pluralization_test.rb" "test/backend/simple_test.rb" "test/backend/transliterator_test.rb" "test/gettext/api_test.rb" "test/gettext/backend_test.rb" "test/i18n/exceptions_test.rb" "test/i18n/gettext_plural_keys_test.rb" "test/i18n/interpolate_test.rb" "test/i18n/load_path_test.rb" "test/i18n/middleware_test.rb" "test/i18n_test.rb" "test/locale/fallbacks_test.rb" "test/locale/tag/rfc4646_test.rb" "test/locale/tag/simple_test.rb" "test/utils_test.rb" ]

Full build log: ruby-i18n-1.9.0-build.log

dvzrv commented 2 years ago

I am sorry if this ticket stems from lack of understanding of where things are actually supposed to be defined in a ruby project :smile:

Going forward I am also fine to just removing the Gemfile before running rake test. This seems to be no problem in regards to the build and the test run, as long as required dependencies for the tests are met (which they are).

I guess a comment in the Gemfile would nonetheless be helpful for users, packagers and developers to understand which gems are required during testing or introspection, etc.

dvzrv commented 2 years ago

When looking at the specification for .gemspec files, it seems that the development dependencies (which include those required for testing), should actually be included in the .gemspec file via spec.add_development_dependency.

This would clarify this to any user and leave it up to you to define whatever you like in the Gemfile if I understand correctly (but probably the pure testing requirements should only be listed in the .gemspec).

Do you mind if I open a PR for doing that?

radar commented 2 years ago

Just a sanity check: did you run bundle install before running rake test?

Secondly: does bundle exec rake test execute fine?

dvzrv commented 2 years ago

Just a sanity check: did you run bundle install before running rake test?

No, as I'm relying on system-wide installed packages in the packaging context.

Secondly: does bundle exec rake test execute fine?

I can check tomorrow, but from the looks of it, it seems as if that would probably download gems from the internet (and in a packaging context we rely on system-wide installed packages).