Ejemplo n.º 1
0
    def test_writer(self):
        """Tests the writer"""

        import sys
        sys.argv = ['']

        self.assertRaises(
            SystemExit,
            mute_stderr(grapher.main))

        self.assertEqual(
            0,
            grapher.main(['dbnav.sqlite/user?id=1']))
Ejemplo n.º 2
0
    def do_POST(self):  # noqa
        from dbnav.command import navigator, exporter, differ, executer
        from dbnav.command import grapher

        commands = {
            'navigator': navigator,
            'exporter': exporter,
            'differ': differ,
            'executer': executer,
            'grapher': grapher
        }

        parts = self.path.split('/')
        command = parts[1]
        if command == 'server-status':
            self.send_response(200)
            self.end_headers()
            return
        if command == 'server-stop':
            self.send_response(200)
            self.end_headers()
            self.server.active = False
            return
        if command not in commands:
            self.send_error(404)
            return

        args = json.loads(self.rfile.read(
            int(self.headers.getheader('content-length'))))

        try:
            items = mute_stderr(commands[command].execute)(args)
            self.send_response(200)
            self.send_header('Content-Type', 'application/json')
            self.end_headers()
            self.wfile.write(json.dumps(items, cls=Encoder))
        except BaseException as e:
            logger.debug(e)
            self.send_response(500)
            self.send_header('Content-Type', 'application/json')
            self.end_headers()
            self.wfile.write(json.dumps({
                '__cls__': str(e.__class__.__name__),
                'message': e.message,
                'traceback': as_json(traceback.extract_tb(sys.exc_info()[2]))
            }))
Ejemplo n.º 3
0
    def test_writer(self):
        """Tests the writer"""

        import sys
        sys.argv = ['']

        self.assertRaises(
            SystemExit,
            mute_stderr(navigator.main),
            ['-K'])

        self.assertEqual(
            0,
            navigator.main())
        self.assertEqual(
            -1,
            navigator.main(['dbnav.sqlite/unknown?']))
Ejemplo n.º 4
0
    def test_writer(self):
        """Tests the writer"""

        import sys
        sys.argv = ['']

        self.assertRaises(
            SystemExit,
            mute_stderr(executer.main)
        )

        self.assertEqual(
            0,
            executer.main(['dbnav.sqlite/user?id=1', '-s', 'select 1'])
        )
        self.assertEqual(
            -1,
            executer.main(
                ['dbnav.sqlite/user?id=1', '-s', 'select * from unknown'])
        )
Ejemplo n.º 5
0
    def test_isolation(self):
        """Tests the --isolate-statements option"""

        self.assertEqual(
            0,
            executer.main([
                'dbnav.sqlite/user',
                '--isolate-statements',
                '--mute-errors',
                '-s',
                'select blub; select 1;'
            ])
        )
        self.assertEqual(
            0,
            mute_stderr(executer.main)([
                'dbnav.sqlite/user',
                '--isolate-statements',
                '-s',
                'select blub; select 1;'
            ])
        )