Patch:
{{{
diff --git a/django/core/management/commands/compilemessages.py
b/django/core/management/commands/compilemessages.py
index dbadac0..75f3c57 100644
--- a/django/core/management/commands/compilemessages.py
+++ b/django/core/management/commands/compilemessages.py
@@ -108,9 +108,9 @@ class Command(BaseCommand):
# Check writability on first location
if i == 0 and not is_writable(npath(base_path + '.mo')):
- self.stderr.write("The po files under %s are in a
seemingly not writable location. "
- "mo files will not be updated/created."
% dirpath)
- return
+ raise CommandError("The po files under %s are in a
seemingly "
+ "not writable location. mo files will
not "
+ "be updated/created." % dirpath)
args = [self.program] + self.program_options + ['-o',
npath(base_path + '.mo'), npath(base_path + '.po')]
}}}
With this change, the output is exactly the same, but the exit code
reflects the failure and the --traceback option works.
I don't quite have the motivation to write tests for this change :-/
--
Ticket URL: <https://code.djangoproject.com/ticket/24384>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
Comment (by claudep):
The reason of the current behaviour is that `compilemessages` run
`compile_messages` for all paths of `settings.LOCALE_PATHS`. The idea was
to not stop running the command if only one path is read-only but not the
others. When #24159 will be fixed, it's probable that `compile_messages`
will be launched for all apps in `INSTALLED_APPS`. Then we don't want to
fail when some app is read-only (maybe a third-party app in a non-readable
location).
--
Ticket URL: <https://code.djangoproject.com/ticket/24384#comment:1>
Comment (by aaugustin):
We have a problem akin to test discovery here. I think the right solution
is to ignore anything outside the current working directory and error if a
non-writable location is encountered.
--
Ticket URL: <https://code.djangoproject.com/ticket/24384#comment:2>
Comment (by claudep):
See #21732 for the initial use case about non-writable paths.
Ignoring paths outside current directory could be a solution, but might be
backwards incompatible.
--
Ticket URL: <https://code.djangoproject.com/ticket/24384#comment:3>
* stage: Unreviewed => Accepted
--
Ticket URL: <https://code.djangoproject.com/ticket/24384#comment:4>
* owner: nobody => Claude Paroz
* status: new => assigned
--
Ticket URL: <https://code.djangoproject.com/ticket/24384#comment:5>
* has_patch: 0 => 1
Comment:
[https://github.com/django/django/pull/10027 PR]
--
Ticket URL: <https://code.djangoproject.com/ticket/24384#comment:6>
* stage: Accepted => Ready for checkin
--
Ticket URL: <https://code.djangoproject.com/ticket/24384#comment:7>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"a77f21880dfb0631ea0adb22d47909915cbfc3a9" a77f2188]:
{{{
#!CommitTicketReference repository=""
revision="a77f21880dfb0631ea0adb22d47909915cbfc3a9"
Fixed #24384 -- Allowed compilemessages to continue running after nonfatal
errors.
Thanks Aymeric Augustin for the report and Carlton Gibson and Tim Graham
for
the reviews.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/24384#comment:8>