summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmile Anclin <none@none>2015-12-08 12:25:14 +0200
committerEmile Anclin <none@none>2015-12-08 12:25:14 +0200
commit52e7f75cf72087c1151887687f157d533761311a (patch)
treea63ed22b2fe92f7ca60fec8a9e16ccb6a57292f7
parentdcc867ebb3dada5e9f959a20b0a01ee0a8206785 (diff)
downloadpylint-git-52e7f75cf72087c1151887687f157d533761311a.tar.gz
Give a nice error message when Graphviz is not installed. Closes issue #168.
-rw-r--r--ChangeLog5
-rw-r--r--pylint/pyreverse/main.py17
2 files changed, 22 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 980e0bd80..2f3aaa664 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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):