Code

Opened 3 years ago

Closed 3 years ago

#17054 closed Bug (fixed)

Django test suite does not run if gettext not installed

Reported by: jsdalton Owned by: nobody
Component: Testing framework Version: master
Severity: Release blocker Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

This commit:

https://github.com/django/django/commit/5cc3dad1181745dc46af7b3494c0db7f8800fbd4#diff-25

Converts the import of commands.tests in regression_tests/i18n from a * import to an explicit list.

The problem is that those tests are conditionally imported in commands.tests based on whether the user has certain commands installed on their command line (xgettext and msgfmt to be exact). If those commands are not installed, the tests aren't loaded and the import in the main i18n.tests file fails. The result is that it's not possible to run the test suite:

$ ./runtests.py --settings=test_sqlite i18n
Traceback (most recent call last):
  File "./runtests.py", line 286, in <module>
    failures = django_tests(int(options.verbosity), options.interactive, options.failfast, args)
  File "./runtests.py", line 153, in django_tests
    failures = test_runner.run_tests(test_labels, extra_tests=extra_tests)
  File "/Users/jsdalton/webs/testproject/src/django/django/test/simple.py", line 353, in run_tests
    suite = self.build_suite(test_labels, extra_tests)
  File "/Users/jsdalton/webs/testproject/src/django/django/test/simple.py", line 243, in build_suite
    suite.addTest(build_suite(app))
  File "/Users/jsdalton/webs/testproject/src/django/django/test/simple.py", line 72, in build_suite
    test_module = get_tests(app_module)
  File "/Users/jsdalton/webs/testproject/src/django/django/test/simple.py", line 33, in get_tests
    test_module = import_module('.'.join(prefix + [TEST_MODULE]))
  File "/Users/jsdalton/webs/testproject/src/django/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Users/jsdalton/webs/testproject/src/django/tests/regressiontests/i18n/tests.py", line 25, in <module>
    from .commands.tests import NoWrapExtractorTests, IgnoredExtractorTests, MessageCompilationTests, PoFileTests, BasicExtractorTests, JavascriptExtractorTests, CopyPluralFormsExtractorTests, SymlinkExtractorTests, ExtractorTests
ImportError: cannot import name NoWrapExtractorTests

Easy fix is convert this line back to a * import. Better fix is....??? I'll think about it.

Attachments (1)

17054.patch (2.5 KB) - added by aaugustin 3 years ago.

Download all attachments as: .zip

Change History (6)

comment:1 Changed 3 years ago by jsdalton

  • Has patch set
  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

comment:2 Changed 3 years ago by aaugustin

  • Severity changed from Normal to Release blocker
  • Triage Stage changed from Unreviewed to Accepted
  • Type changed from Uncategorized to Bug

Changed 3 years ago by aaugustin

comment:3 Changed 3 years ago by aaugustin

Idea for a better fixed attached -- not tested.

comment:4 Changed 3 years ago by jsdalton

Thanks Aymeric. This patch does the trick for me and looks like a solid solution to the problem.

comment:5 Changed 3 years ago by aaugustin

  • Resolution set to fixed
  • Status changed from new to closed

In [17013]:

Fixed #17054 -- Ensured the test suite runs when gettext isn't available, after r16981.

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.