Skip to content

Use require_relative instead of require #311

@tikkss

Description

@tikkss

Background

require searches in $LOAD_PATH. require will perform unnecessary searches if the user's environment includes many entries in $LOAD_PATH.

In contrast, require_relative avoids this unnecessary searches and does not depend on $LOAD_PATH because it uses a relative path.

Solution

Replacing require with require_relative only for loading test-unit's own internal files.
This change does not affect require used to load external libraries or gems, which should continue to use require.

There are many occurrences, so updating them all at once might be too large for a single PR to review effectively.
Which approach would be preferable?

  1. Make multiple small PRs (e.g., per directory/module)
  2. Make one large PR with all changes

The files where changes are needed are listed below:

$ git grep --files-with-matches -P 'require.+test/unit' -- :^doc/
bin/test-unit
lib/test-unit.rb
lib/test/unit.rb
lib/test/unit/assertions.rb
lib/test/unit/auto-runner-loader.rb
lib/test/unit/autorunner.rb
lib/test/unit/collector/descendant.rb
lib/test/unit/collector/dir.rb
lib/test/unit/collector/load.rb
lib/test/unit/collector/objectspace.rb
lib/test/unit/collector/xml.rb
lib/test/unit/color-scheme.rb
lib/test/unit/data.rb
lib/test/unit/error.rb
lib/test/unit/notification.rb
lib/test/unit/omission.rb
lib/test/unit/pending.rb
lib/test/unit/runner/console.rb
lib/test/unit/runner/emacs.rb
lib/test/unit/runner/xml.rb
lib/test/unit/test-suite-creator.rb
lib/test/unit/testcase.rb
lib/test/unit/testresult.rb
lib/test/unit/testsuite.rb
lib/test/unit/ui/console/testrunner.rb
lib/test/unit/ui/emacs/testrunner.rb
lib/test/unit/ui/testrunner.rb
lib/test/unit/ui/testrunnermediator.rb
lib/test/unit/ui/xml/testrunner.rb
lib/test/unit/util/observable.rb
sample/test_adder.rb
sample/test_subtracter.rb
sample/test_user.rb
test-unit.gemspec
test/collector/test-descendant.rb
test/collector/test-load.rb
test/collector/test_dir.rb
test/collector/test_objectspace.rb
test/run.rb
test/test-assertions.rb
test/test-attribute-matcher.rb
test/test-emacs-runner.rb
test/test-error.rb
test/test-failure.rb
test/test-fault-location-detector.rb
test/test-notification.rb
test/test-omission.rb
test/test-pending.rb
test/test-priority.rb
test/test-test-case.rb
test/test-test-result.rb
test/test-test-suite-creator.rb
test/test-test-suite.rb
test/ui/test_testrunmediator.rb
test/util/test-method-owner-finder.rb
test/util/test-output.rb
test/util/test_backtracefilter.rb
test/util/test_observable.rb
test/util/test_procwrapper.rb

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions