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)
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 "\'"> <!ENTITY SingleQuoteUnicode "\u0027"> <!ENTITY DoubleQuote '\"'> <!ENTITY DoubleQuoteHTMLEntity "\""> <!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 \'"> <!ENTITY SingleQuoteHTMLEntity "\'"> <!ENTITY SingleQuoteUnicode "\'"> <!ENTITY DoubleQuote 'Double Quote \"'> <!ENTITY DoubleQuoteHTMLEntity "\""> <!ENTITY DoubleQuoteUnicode "\""> """) self.assert_file_content(path, expected_string)