Opened 13 years ago

Closed 13 years ago

#17054 closed Bug (fixed)

Django test suite does not run if gettext not installed

Reported by: Jim Dalton Owned by: nobody
Component: Testing framework Version: dev
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 Aymeric Augustin 13 years ago.

Download all attachments as: .zip

Change History (6)

comment:1 by Jim Dalton, 13 years ago

Has patch: set

comment:2 by Aymeric Augustin, 13 years ago

Severity: NormalRelease blocker
Triage Stage: UnreviewedAccepted
Type: UncategorizedBug

by Aymeric Augustin, 13 years ago

Attachment: 17054.patch added

comment:3 by Aymeric Augustin, 13 years ago

Idea for a better fixed attached -- not tested.

comment:4 by Jim Dalton, 13 years ago

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

comment:5 by Aymeric Augustin, 13 years ago

Resolution: fixed
Status: newclosed

In [17013]:

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

Note: See TracTickets for help on using tickets.
Back to Top