From a9ffcf0d601b18d1d8e4b9b401a0f04a518b6029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tadej=20Jane=C5=BE?= Date: Fri, 10 Jun 2016 09:45:22 +0200 Subject: [PATCH] Add ``--warning-is-error`` option to setup.py command --- CHANGES | 2 +- sphinx/setup_command.py | 8 ++++++-- tests/test_setup_command.py | 22 ++++++++++++++++++++++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 1963e281b..4304e49ea 100644 --- a/CHANGES +++ b/CHANGES @@ -52,7 +52,7 @@ Features added * #2597: Show warning messages as darkred * latex, allow image dimensions using px unit (default is 96px=1in) * Show warnings if invalid dimension units found -* #2650: Add ``--warning-is-error`` option to setup.py command +* #2663: Add ``--warning-is-error`` option to setup.py command Bugs fixed diff --git a/sphinx/setup_command.py b/sphinx/setup_command.py index 0a29685a4..7df8bd6e8 100644 --- a/sphinx/setup_command.py +++ b/sphinx/setup_command.py @@ -73,6 +73,7 @@ class BuildDoc(Command): ('build-dir=', None, 'Build directory'), ('config-dir=', 'c', 'Location of the configuration directory'), ('builder=', 'b', 'The builder to use. Defaults to "html"'), + ('warning-is-error', 'W', 'Turn warning into errors'), ('project=', None, 'The documented project\'s name'), ('version=', None, 'The short X.Y version'), ('release=', None, 'The full version, including alpha/beta/rc tags'), @@ -82,13 +83,15 @@ class BuildDoc(Command): ('copyright', None, 'The copyright string'), ('pdb', None, 'Start pdb on exception'), ] - boolean_options = ['fresh-env', 'all-files', 'link-index'] + boolean_options = ['fresh-env', 'all-files', 'warning-is-error', + 'link-index'] def initialize_options(self): self.fresh_env = self.all_files = False self.pdb = False self.source_dir = self.build_dir = None self.builder = 'html' + self.warning_is_error = False self.project = '' self.version = '' self.release = '' @@ -162,7 +165,8 @@ class BuildDoc(Command): app = Sphinx(self.source_dir, self.config_dir, self.builder_target_dir, self.doctree_dir, self.builder, confoverrides, status_stream, - freshenv=self.fresh_env) + freshenv=self.fresh_env, + warningiserror=self.warning_is_error) try: app.build(force_all=self.all_files) diff --git a/tests/test_setup_command.py b/tests/test_setup_command.py index 77c9ade46..c92f6220f 100644 --- a/tests/test_setup_command.py +++ b/tests/test_setup_command.py @@ -108,3 +108,25 @@ def test_build_sphinx_return_nonzero_status(pkgroot, proc): print(out) print(err) assert proc.returncode != 0, 'expect non-zero status for setup.py' + + +@with_setup_command(root) +def test_build_sphinx_warning_return_zero_status(pkgroot, proc): + srcdir = (pkgroot / 'doc') + (srcdir / 'contents.txt').write_text( + 'See :ref:`unexisting-reference-label`') + out, err = proc.communicate() + print(out) + print(err) + assert proc.returncode == 0 + + +@with_setup_command(root, '--warning-is-error') +def test_build_sphinx_warning_is_error_return_nonzero_status(pkgroot, proc): + srcdir = (pkgroot / 'doc') + (srcdir / 'contents.txt').write_text( + 'See :ref:`unexisting-reference-label`') + out, err = proc.communicate() + print(out) + print(err) + assert proc.returncode != 0, 'expect non-zero status for setup.py'