示例#1
0
 def setUp(self):
     self.parser = BlockdiagOptions(blockdiag)
示例#2
0
 def setUp(self):
     self.parser = BlockdiagOptions(blockdiag)
示例#3
0
class TestBootParams(unittest.TestCase):
    def setUp(self):
        self.parser = BlockdiagOptions(blockdiag)

    def test_type_option_svg(self):
        options = self.parser.parse(['-Tsvg', 'input.diag'])
        self.assertEqual(options.output, 'input.svg')

        options = self.parser.parse(['-TSVG', 'input.diag'])
        self.assertEqual(options.output, 'input.svg')

        options = self.parser.parse(['-TSvg', 'input.diag'])
        self.assertEqual(options.output, 'input.svg')

        options = self.parser.parse(['-TSvg', 'input.test.diag'])
        self.assertEqual(options.output, 'input.test.svg')

    def test_type_option_png(self):
        options = self.parser.parse(['-Tpng', 'input.diag'])
        self.assertEqual(options.output, 'input.png')

    @with_pdf
    def test_type_option_pdf(self):
        options = self.parser.parse(['-Tpdf', 'input.diag'])
        self.assertEqual(options.output, 'input.pdf')

    def test_invalid_type_option(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['-Tsvgz', 'input.diag'])

    def test_separate_option_svg(self):
        self.parser.parse(['-Tsvg', '--separate', 'input.diag'])

    def test_separate_option_png(self):
        self.parser.parse(['-Tpng', '--separate', 'input.diag'])

    @with_pdf
    def test_separate_option_pdf(self):
        self.parser.parse(['-Tpdf', '--separate', 'input.diag'])

    def test_svg_nodoctype_option(self):
        self.parser.parse(['-Tsvg', '--nodoctype', 'input.diag'])

    def test_png_nodoctype_option(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['-Tpng', '--nodoctype', 'input.diag'])

    def test_pdf_nodoctype_option(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['-Tpdf', '--nodoctype', 'input.diag'])

    def test_svg_notransparency_option(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['-Tsvg', '--no-transparency', 'input.diag'])

    def test_png_notransparency_option(self):
        self.parser.parse(['-Tpng', '--no-transparency', 'input.diag'])

    def test_pdf_notransparency_option(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['-Tpdf', '--no-transparency', 'input.diag'])

    def test_config_option(self):
        try:
            tmp = tempfile.mkstemp()
            self.parser.parse(['-c', tmp[1], 'input.diag'])
        finally:
            os.close(tmp[0])
            os.unlink(tmp[1])

    def test_config_option_with_bom(self):
        try:
            tmp = tempfile.mkstemp()
            fp = io.open(tmp[0], 'wt', encoding='utf-8-sig')
            fp.write(u("[blockdiag]\n"))
            fp.close()

            self.parser.parse(['-c', tmp[1], 'input.diag'])
        finally:
            os.unlink(tmp[1])

    def test_invalid_config_option(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['-c', '/unknown_config_file', 'input.diag'])

    def test_invalid_dir_config_option(self):
        try:
            tmp = tempfile.mkdtemp()

            with self.assertRaises(RuntimeError):
                self.parser.parse(['-c', tmp, 'input.diag'])
        finally:
            os.rmdir(tmp)

    def test_config_option_fontpath(self):
        try:
            tmp = tempfile.mkstemp()
            config = u("[blockdiag]\nfontpath = /path/to/font\n")
            io.open(tmp[0], 'wt', encoding='utf-8-sig').write(config)

            options = self.parser.parse(['-c', tmp[1], 'input.diag'])
            self.assertEqual(options.font, ['/path/to/font'])
        finally:
            os.unlink(tmp[1])

    def test_exist_font_config_option(self):
        try:
            fd, path = tempfile.mkstemp()
            os.close(fd)

            options = self.parser.parse(['-f', path, 'input.diag'])
            self.assertEqual(options.font, [path])
            fontpath = detectfont(options)
            self.assertEqual(fontpath, path)
        finally:
            os.unlink(path)

    def test_not_exist_font_config_option(self):
        with self.assertRaises(RuntimeError):
            args = ['-f', '/font_is_not_exist', 'input.diag']
            options = self.parser.parse(args)
            detectfont(options)

    def test_not_exist_font_config_option2(self):
        with self.assertRaises(RuntimeError):
            args = [
                '-f', '/font_is_not_exist', '-f', '/font_is_not_exist2',
                'input.diag'
            ]
            options = self.parser.parse(args)
            detectfont(options)

    def test_no_size_option(self):
        options = self.parser.parse(['input.diag'])
        self.assertEqual(None, options.size)

    def test_size_option(self):
        options = self.parser.parse(['--size', '480x360', 'input.diag'])
        self.assertEqual([480, 360], options.size)

    def test_invalid_size_option1(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['--size', '480-360', 'input.diag'])

    def test_invalid_size_option2(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['--size', '480', 'input.diag'])

    def test_invalid_size_option3(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['--size', 'foobar', 'input.diag'])

    def test_not_exist_fontmap_config(self):
        with self.assertRaises(RuntimeError):
            args = ['--fontmap', '/fontmap_is_not_exist', 'input.diag']
            options = self.parser.parse(args)
            fontpath = detectfont(options)
            self.assertTrue(fontpath)

    def test_unknown_image_driver(self):
        from blockdiag.drawer import DiagramDraw
        from blockdiag.elements import Diagram

        with self.assertRaises(RuntimeError):
            DiagramDraw('unknown', Diagram())
示例#4
0
class TestBootParams(unittest.TestCase):
    def setUp(self):
        self.parser = BlockdiagOptions(blockdiag)

    def test_type_option_svg(self):
        options = self.parser.parse(['-Tsvg', 'input.diag'])
        self.assertEqual(options.output, 'input.svg')

        options = self.parser.parse(['-TSVG', 'input.diag'])
        self.assertEqual(options.output, 'input.svg')

        options = self.parser.parse(['-TSvg', 'input.diag'])
        self.assertEqual(options.output, 'input.svg')

        options = self.parser.parse(['-TSvg', 'input.test.diag'])
        self.assertEqual(options.output, 'input.test.svg')

    def test_type_option_png(self):
        options = self.parser.parse(['-Tpng', 'input.diag'])
        self.assertEqual(options.output, 'input.png')

    @with_pdf
    def test_type_option_pdf(self):
        options = self.parser.parse(['-Tpdf', 'input.diag'])
        self.assertEqual(options.output, 'input.pdf')

    def test_invalid_type_option(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['-Tsvgz', 'input.diag'])

    def test_separate_option_svg(self):
        self.parser.parse(['-Tsvg', '--separate', 'input.diag'])

    def test_separate_option_png(self):
        self.parser.parse(['-Tpng', '--separate', 'input.diag'])

    @with_pdf
    def test_separate_option_pdf(self):
        self.parser.parse(['-Tpdf', '--separate', 'input.diag'])

    def test_svg_nodoctype_option(self):
        self.parser.parse(['-Tsvg', '--nodoctype', 'input.diag'])

    def test_png_nodoctype_option(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['-Tpng', '--nodoctype', 'input.diag'])

    def test_pdf_nodoctype_option(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['-Tpdf', '--nodoctype', 'input.diag'])

    def test_svg_notransparency_option(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['-Tsvg', '--no-transparency', 'input.diag'])

    def test_png_notransparency_option(self):
        self.parser.parse(['-Tpng', '--no-transparency', 'input.diag'])

    def test_pdf_notransparency_option(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['-Tpdf', '--no-transparency', 'input.diag'])

    def test_config_option(self):
        try:
            tmp = tempfile.mkstemp()
            self.parser.parse(['-c', tmp[1], 'input.diag'])
        finally:
            os.close(tmp[0])
            os.unlink(tmp[1])

    def test_config_option_with_bom(self):
        try:
            tmp = tempfile.mkstemp()
            fp = io.open(tmp[0], 'wt', encoding='utf-8-sig')
            fp.write(u("[blockdiag]\n"))
            fp.close()

            self.parser.parse(['-c', tmp[1], 'input.diag'])
        finally:
            os.unlink(tmp[1])

    def test_invalid_config_option(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['-c', '/unknown_config_file', 'input.diag'])

    def test_invalid_dir_config_option(self):
        try:
            tmp = tempfile.mkdtemp()

            with self.assertRaises(RuntimeError):
                self.parser.parse(['-c', tmp, 'input.diag'])
        finally:
            os.rmdir(tmp)

    def test_config_option_fontpath(self):
        try:
            tmp = tempfile.mkstemp()
            config = u("[blockdiag]\nfontpath = /path/to/font\n")
            io.open(tmp[0], 'wt', encoding='utf-8-sig').write(config)

            options = self.parser.parse(['-c', tmp[1], 'input.diag'])
            self.assertEqual(options.font, ['/path/to/font'])
        finally:
            os.unlink(tmp[1])

    def test_exist_font_config_option(self):
        try:
            fd, path = tempfile.mkstemp()
            os.close(fd)

            options = self.parser.parse(['-f', path, 'input.diag'])
            self.assertEqual(options.font, [path])
            fontpath = detectfont(options)
            self.assertEqual(fontpath, path)
        finally:
            os.unlink(path)

    def test_not_exist_font_config_option(self):
        with self.assertRaises(RuntimeError):
            args = ['-f', '/font_is_not_exist', 'input.diag']
            options = self.parser.parse(args)
            detectfont(options)

    def test_not_exist_font_config_option2(self):
        with self.assertRaises(RuntimeError):
            args = ['-f', '/font_is_not_exist',
                    '-f', '/font_is_not_exist2', 'input.diag']
            options = self.parser.parse(args)
            detectfont(options)

    def test_no_size_option(self):
        options = self.parser.parse(['input.diag'])
        self.assertEqual(None, options.size)

    def test_size_option(self):
        options = self.parser.parse(['--size', '480x360', 'input.diag'])
        self.assertEqual([480, 360], options.size)

    def test_invalid_size_option1(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['--size', '480-360', 'input.diag'])

    def test_invalid_size_option2(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['--size', '480', 'input.diag'])

    def test_invalid_size_option3(self):
        with self.assertRaises(RuntimeError):
            self.parser.parse(['--size', 'foobar', 'input.diag'])

    def test_not_exist_fontmap_config(self):
        with self.assertRaises(RuntimeError):
            args = ['--fontmap', '/fontmap_is_not_exist', 'input.diag']
            options = self.parser.parse(args)
            fontpath = detectfont(options)
            self.assertTrue(fontpath)

    def test_unknown_image_driver(self):
        from blockdiag.drawer import DiagramDraw
        from blockdiag.elements import Diagram

        with self.assertRaises(RuntimeError):
            DiagramDraw('unknown', Diagram())