Package translate :: Package convert :: Module test_po2ts
[hide private]
[frames] | no frames]

Source Code for Module translate.convert.test_po2ts

 1  #!/usr/bin/env python 
 2   
 3  from translate.convert import po2ts 
 4  from translate.convert import test_convert 
 5  from translate.misc import wStringIO 
 6  from translate.storage import po 
 7   
8 -class TestPO2TS:
9 - def po2ts(self, posource):
10 """helper that converts po source to ts source without requiring files""" 11 inputfile = wStringIO.StringIO(posource) 12 inputpo = po.pofile(inputfile) 13 convertor = po2ts.po2ts() 14 outputts = convertor.convertstore(inputpo) 15 return outputts
16
17 - def singleelement(self, storage):
18 """checks that the pofile contains a single non-header element, and returns it""" 19 assert len(storage.units) == 1 20 return storage.units[0]
21
22 - def test_simpleunit(self):
23 """checks that a simple po entry definition converts properly to a ts entry""" 24 minipo = r'''#: term.cpp 25 msgid "Term" 26 msgstr "asdf"''' 27 tsfile = self.po2ts(minipo) 28 print tsfile 29 assert "<name>term.cpp</name>" in tsfile 30 assert "<source>Term</source>" in tsfile 31 assert "<translation>asdf</translation>" in tsfile 32 assert "<comment>" not in tsfile
33
34 - def test_fullunit(self):
35 """check that an entry with various settings is converted correctly""" 36 posource = '''# Translator comment 37 #. Automatic comment 38 #: location.cpp:100 39 msgid "Source" 40 msgstr "Target" 41 ''' 42 tsfile = self.po2ts(posource) 43 print tsfile 44 # The other section are a duplicate of test_simplentry 45 # FIXME need to think about auto vs trans comments maybe in TS v1.1 46 assert "<comment>Translator comment</comment>" in tsfile
47
48 - def test_fuzzyunit(self):
49 """check that we handle fuzzy units correctly""" 50 posource = '''#: term.cpp 51 #, fuzzy 52 msgid "Source" 53 msgstr "Target"''' 54 tsfile = self.po2ts(posource) 55 print tsfile 56 assert '''<translation type="unfinished">Target</translation>''' in tsfile
57
58 - def test_obsolete(self):
59 """test that we can take back obsolete messages""" 60 posource = '''#. (obsolete) 61 #: term.cpp 62 msgid "Source" 63 msgstr "Target"''' 64 tsfile = self.po2ts(posource) 65 print tsfile 66 assert '''<translation type="obsolete">Target</translation>''' in tsfile
67
68 - def test_duplicates(self):
69 """test that we can handle duplicates in the same context block""" 70 posource = '''#: @@@#1 71 msgid "English" 72 msgstr "a" 73 74 #: @@@#3 75 msgid "English" 76 msgstr "b" 77 ''' 78 tsfile = self.po2ts(posource) 79 print tsfile 80 assert tsfile.find("English") != tsfile.rfind("English")
81 82
83 -class TestPO2TSCommand(test_convert.TestConvertCommand, TestPO2TS):
84 """Tests running actual po2ts commands on files""" 85 convertmodule = po2ts 86
87 - def test_help(self):
88 """tests getting help""" 89 options = test_convert.TestConvertCommand.test_help(self) 90 options = self.help_check(options, "-c CONTEXT, --context=CONTEXT") 91 options = self.help_check(options, "-t TEMPLATE, --template=TEMPLATE", last=True)
92