Exemplo n.º 1
0
    def test_tracebacks_for_exceptions(self):
        bundle = FluentBundle('en-US', [
            FtlResource(dedent_ftl('''
            foo = { $arg }
            '''),
                        filename='firstfile.ftl'),
            FtlResource(dedent_ftl('''

            bar = { $arg }
            '''),
                        filename='secondfile.ftl')
        ])

        # Check what our tracebacks produce if we have an error. This is hard to
        # do, since we catch most errors, so we construct a special value that
        # will blow up despite our best efforts.

        class BadType(FluentNumber, int):
            def format(self, locale):
                1 / 0

        for filename, msg_id, line_number in [("firstfile.ftl", "foo", 2),
                                              ("secondfile.ftl", "bar", 3)]:
            try:
                val, errs = bundle.format(msg_id, {'arg': BadType(0)})
            except ZeroDivisionError:
                tb = traceback.format_exc()
                # We don't get line numbers, but we can at least display the
                # source FTL file and function name
                self.assertIn(
                    'File "{0}", line {1}, in {2}'.format(
                        filename, line_number, msg_id), tb)
            else:
                self.fail('Expected ZeroDivisionError')
Exemplo n.º 2
0
 def test_check_messages_junk(self):
     bundle = FluentBundle(
         'en-US', [FtlResource("unfinished", filename='myfile.ftl')])
     checks = bundle.check_messages()
     self.assertEqual(len(checks), 1)
     check1_name, check1_error = checks[0]
     self.assertEqual(check1_name, None)
     self.assertEqual(type(check1_error), FluentJunkFound)
     self.assertEqual(
         check1_error.message,
         'Junk found:\n  myfile.ftl:1:11: Expected token: "="')
     self.assertEqual(check1_error.annotations[0].message,
                      'Expected token: "="')
Exemplo n.º 3
0
    def test_check_messages_compile_errors(self):
        bundle = FluentBundle('en-US', [
            FtlResource(dedent_ftl('''
        foo = { -missing }
            .bar = { -missing }
        '''),
                        filename='myfile.ftl')
        ])
        checks = bundle.check_messages()
        self.assertEqual(len(checks), 2)
        check1_name, check1_error = checks[0]
        self.assertEqual(check1_name, 'foo')
        self.assertEqual(type(check1_error), FluentReferenceError)
        self.assertEqual(check1_error.args[0],
                         'myfile.ftl:2:9: Unknown term: -missing')

        check2_name, check2_error = checks[1]
        self.assertEqual(check2_name, 'foo.bar')
        self.assertEqual(type(check2_error), FluentReferenceError)
        self.assertEqual(check2_error.args[0],
                         'myfile.ftl:3:14: Unknown term: -missing')