diff options
author | Emile Anclin <none@none> | 2015-12-08 12:25:14 +0200 |
---|---|---|
committer | Emile Anclin <none@none> | 2015-12-08 12:25:14 +0200 |
commit | 52e7f75cf72087c1151887687f157d533761311a (patch) | |
tree | a63ed22b2fe92f7ca60fec8a9e16ccb6a57292f7 | |
parent | dcc867ebb3dada5e9f959a20b0a01ee0a8206785 (diff) | |
download | pylint-git-52e7f75cf72087c1151887687f157d533761311a.tar.gz |
Give a nice error message when Graphviz is not installed. Closes issue #168.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | pylint/pyreverse/main.py | 17 |
2 files changed, 22 insertions, 0 deletions
@@ -2,6 +2,11 @@ ChangeLog for Pylint -------------------- -- + * Don't crash if graphviz is not installed, instead emit a + warning letting the user to know. + + Closes issue #168. + * Accept only functions and methods for the deprecated-method checker. This prevents a crash which can occur when an object doesn't have diff --git a/pylint/pyreverse/main.py b/pylint/pyreverse/main.py index 0e7f87e58..e56c9dd93 100644 --- a/pylint/pyreverse/main.py +++ b/pylint/pyreverse/main.py @@ -21,6 +21,7 @@ from __future__ import print_function import os +import subprocess import sys from pylint.config import ConfigurationMixIn @@ -91,6 +92,19 @@ this disables -f values")), #( ('quiet', #dict(help='run quietly', action='store_true', short='q')), ) +def _check_graphviz_available(output_format): + """check if we need graphviz for different output format""" + try: + subprocess.call(['dot', '-V'], stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + except OSError: + print("The output format '%s' is currently not available.\n" + "Please install 'Graphviz' to have other output formats " + "than 'dot' or 'vcg'." % output_format) + sys.exit(32) + + + class Run(ConfigurationMixIn): """base class providing common behaviour for pyreverse commands""" @@ -100,6 +114,9 @@ class Run(ConfigurationMixIn): ConfigurationMixIn.__init__(self, usage=__doc__) insert_default_options() args = self.load_command_line_configuration() + if self.config.output_format not in ('dot', 'vcg'): + _check_graphviz_available(self.config.output_format) + sys.exit(self.run(args)) def run(self, args): |