def create_nonexistant_resource(self, path):
        source_path = create_tempfile(dedent("""
            <!ENTITY SourceString "Source String">
        """))
        source_resource = silme.SilmeResource(DTDParser, source_path)

        return silme.SilmeResource(
            DTDParser, path,
            source_resource=source_resource
        )
 def test_init_missing_resource(self):
     """
     If the translated resource doesn't exist and no source resource
     is given, raise an IOError.
     """
     path = os.path.join(tempfile.mkdtemp(), 'does', 'not', 'exist.dtd')
     with assert_raises(IOError):
         silme.SilmeResource(DTDParser, path, source_resource=None)
コード例 #3
0
 def test_init_missing_resource(self):
     """
     If the translated resource doesn't exist and no source resource
     is given, raise a ParseError.
     """
     path = os.path.join(tempfile.mkdtemp(), "does", "not", "exist.dtd")
     with pytest.raises(ParseError):
         silme.SilmeResource(DTDParser, path, source_resource=None)
    def test_quotes(self):
        input_strings = dedent("""
            <!ENTITY SingleQuote "\'">
            <!ENTITY SingleQuoteHTMLEntity "\&apos;">
            <!ENTITY SingleQuoteUnicode "\u0027">
            <!ENTITY DoubleQuote '\"'>
            <!ENTITY DoubleQuoteHTMLEntity "\&quot;">
            <!ENTITY DoubleQuoteUnicode "\u0022">
        """)

        # Make sure path contains 'mobile/android/base'
        dirname = os.path.join(tempfile.mkdtemp(), 'mobile', 'android', 'base')
        os.makedirs(dirname)

        fd, path = tempfile.mkstemp(dir=dirname)
        with os.fdopen(fd, 'w') as f:
            f.write(input_strings)

        resource = self.parse(path)

        # Unescape quotes when parsing
        assert_attributes_equal(resource.translations[0], strings={None: "'"})
        assert_attributes_equal(resource.translations[1], strings={None: "'"})
        assert_attributes_equal(resource.translations[2], strings={None: "'"})
        assert_attributes_equal(resource.translations[3], strings={None: '"'})
        assert_attributes_equal(resource.translations[4], strings={None: '"'})
        assert_attributes_equal(resource.translations[5], strings={None: '"'})

        # Escape quotes when saving
        translated_resource = silme.SilmeResource(
            DTDParser, path, source_resource=resource
        )
        translated_resource.translations[0].strings[None] = "Single Quote '"
        translated_resource.translations[3].strings[None] = 'Double Quote "'

        translated_resource.save(self.locale)

        expected_string = dedent("""
            <!ENTITY SingleQuote "Single Quote \&apos;">
            <!ENTITY SingleQuoteHTMLEntity "\&apos;">
            <!ENTITY SingleQuoteUnicode "\&apos;">
            <!ENTITY DoubleQuote 'Double Quote \&quot;'>
            <!ENTITY DoubleQuoteHTMLEntity "\&quot;">
            <!ENTITY DoubleQuoteUnicode "\&quot;">
        """)
        self.assert_file_content(path, expected_string)