Skip to content

When latex fails, make sure it does not write a dvi. #10348

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 30, 2018

Conversation

anntzer
Copy link
Contributor

@anntzer anntzer commented Jan 30, 2018

PR #10180 added some tests checking that when the latex subprocess used
by usetex fails, a RuntimeError does propagate up to the Python process.
It originally passed the CI, but since its merge, various CIs have been
failing on the test that a text with $22_2_2$ (an invalid tex
construct) fails when usetex is set.

This is because while latex --interaction=nonstopmode does exit with
error code 1 when processing a file with that construct, the error is
"benign" enough that it still writes a dvi before exiting (the contents
are simply as if the input was $22_{22}$). The dvi goes into the tex
cache and later CI runs pick up the cached dvi instead of running the
subprocess, thus failing the test.

The solution is to use --halt-on-error on top of nonstopmode, see e.g.
https://tex.stackexchange.com/questions/258814/what-is-the-difference-between-interaction-nonstopmode-and-halt-on-error (and to clear your tex cache).

Note that before the PR, there would similarly be the weird behavior
(for the user) that the first attempt to use a "benignly" invalid tex
construct would trigger an exception, but latter attempts would not (for
the same reason as above).

attn @efiring
labeling as rc as it's a CI issue.

PR Summary

PR Checklist

  • Has Pytest style unit tests
  • Code is PEP 8 compliant
  • New features are documented, with examples if plot related
  • Documentation is sphinx and numpydoc compliant
  • Added an entry to doc/users/next_whats_new/ if major new feature (follow instructions in README.rst there)
  • Documented in doc/api/api_changes.rst if API changed in a backward-incompatible way

PR 10180 added some tests checking that when the latex subprocess used
by usetex fails, a RuntimeError does propagate up to the Python process.
It originally passed the CI, but since its merge, various CIs have been
failing on the test that a text with `$22_2_2$` (an invalid tex
construct) fails when usetex is set.

This is because while `latex --interaction=nonstopmode` does exit with
error code 1 when processing a file with that construct, the error is
"benign" enough that it still writes a dvi before exiting (the contents
are simply as if the input was `$22_{22}$`).  The dvi goes into the tex
cache and later CI runs pick up the cached dvi instead of running the
subprocess, thus failing the test.

The solution is to use --halt-on-error on top of nonstopmode, see e.g.
https://tex.stackexchange.com/questions/258814/what-is-the-difference-between-interaction-nonstopmode-and-halt-on-error (and to clear your tex cache).

Note that before the PR, there would similarly be the weird behavior
(for the user) that the first attempt to use a "benignly" invalid tex
construct would trigger an exception, but latter attempts would not (for
the same reason as above).
@anntzer anntzer added Release critical For bugs that make the library unusable (segfaults, incorrect plots, etc) and major regressions. topic: testing labels Jan 30, 2018
@anntzer anntzer added this to the v2.2 milestone Jan 30, 2018
Copy link
Member

@jklymak jklymak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job tracking down that error. I wondered what was going on - very sporadic errors.

@efiring efiring merged commit 3db8a0d into matplotlib:master Jan 30, 2018
@anntzer anntzer deleted the stricter-texmanager branch January 30, 2018 17:45
@QuLogic QuLogic modified the milestones: needs sorting, v2.2.0 Feb 12, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Release critical For bugs that make the library unusable (segfaults, incorrect plots, etc) and major regressions. topic: testing
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants