Beispiel #1
    def test_analyze_error(self, check_output_mock):
        """Test whether an exception is thrown in case of errors"""

        check_output_mock.side_effect = subprocess.CalledProcessError(-1, "command", output=b'output')

        reverse = Reverse()
        kwargs = {
            'module_path': os.path.join(self.repo_path, "perceval"),
        with self.assertRaises(GraalError):
            _ = reverse.analyze(**kwargs)
    def test_analyze(self):
        """Test whether Reverse returns the expected fields data"""

        reverse = Reverse()
        kwargs = {
            'module_path': os.path.join(self.repo_path, "perceval"),
        result = reverse.analyze(**kwargs)

        self.assertIn('classes', result)
        self.assertTrue(type(result['classes']), dict)
        self.assertIn('nodes', result['classes'])
        self.assertTrue(type(result['classes']['nodes']), list)
        self.assertIn('links', result['classes'])
        self.assertTrue(type(result['classes']['links']), list)
        self.assertIn('packages', result)
        self.assertTrue(type(result['packages']), dict)
        self.assertTrue(type(result['packages']['nodes']), list)
        self.assertIn('links', result['packages'])
        self.assertTrue(type(result['packages']['links']), list)
Beispiel #3
class DependencyAnalyzer:
    """Class to obtain a graph representation of package and class dependencies information
    from a Python module. Such a representation can be then used to plot an UML diagram using common
    visualization libraries.
    def __init__(self):
        self.reverse = Reverse()

    def analyze(self, module_path):
        """Analyze the content of a Python project using Pyreverse

        :param module_path: folder path

        :returns a dict containing the results of the analysis, like the one below
          'image_path': ..
        kwargs = {'module_path': module_path}
        analysis = self.reverse.analyze(**kwargs)

        return analysis