예제 #1
0
 def setUp(self):
     """
     Initialize configuration data used in all other tests.
     """
     # load project config
     self.config = Config(reference.project_root_path, False,
                          reference.config_file_path)
     # check if root directory exists
     self.assertTrue(os.path.isdir(self.config.root))
     # check if all XML files exist
     for language in self.config.languages:
         filename = self.config.resource_file_path(language)
         self.assertTrue(os.path.isfile(filename))
 def setUp(self):
     """
     Initialize configuration data used in all other tests.
     """
     # load project config
     self.config = Config(reference.project_root_path, False, reference.config_file_path)
     # check if root directory exists
     self.assertTrue( os.path.isdir( self.config.root ) )
     # check if all XML files exist
     for language in self.config.languages:
         filename = self.config.resource_file_path(language)
         self.assertTrue( os.path.isfile(filename) )
예제 #3
0
class TestImporterAndroid(unittest.TestCase):
    def _load_resources(self, language, load_resources_method):
        """
        Use AndroidImporter object and load resources from XML files.
        It calls load_resources_method on an AndroidImporter object,
        passing language and parsed XML tree. Param load_resources_method
        is one of:
        
        * AndroidImporter._load_strings
        * AndroidImporter._load_string_arrays
        * AndroidImporter._load_quantity_strings
        
        Return a dictionary mapping language codes to resource arrays.
        """

        imp = AndroidImporter()
        xml_file_path = self.config.resource_file_path(language)
        xml_file = open(xml_file_path)
        xml_tree = etree.parse(xml_file)
        if load_resources_method == AndroidImporter._load_strings:
            return imp._load_strings(language, xml_tree)
        elif load_resources_method == AndroidImporter._load_string_arrays:
            return imp._load_string_arrays(language, xml_tree)
        elif load_resources_method == AndroidImporter._load_quantity_strings:
            return imp._load_quantity_strings(language, xml_tree)
        else:
            self.fail("This method is not allowed: %s" % load_resources_method)

    def setUp(self):
        """
        Initialize configuration data used in all other tests.
        """
        # load project config
        self.config = Config(reference.project_root_path, False,
                             reference.config_file_path)
        # check if root directory exists
        self.assertTrue(os.path.isdir(self.config.root))
        # check if all XML files exist
        for language in self.config.languages:
            filename = self.config.resource_file_path(language)
            self.assertTrue(os.path.isfile(filename))

    def testLoadResourcesHelperFunctionWorks(self):
        for language in self.config.languages:
            strings = self._load_resources(language,
                                           AndroidImporter._load_strings)
            arrays = self._load_resources(language,
                                          AndroidImporter._load_string_arrays)
            quantity = self._load_resources(
                language, AndroidImporter._load_quantity_strings)
            self.assertTrue(len(strings) > 0)
            self.assertTrue(len(arrays) > 0)
            self.assertTrue(len(quantity) > 0)

    def testLoadsAllStringsForAllLanguages(self):
        for language in self.config.languages:
            strings = self._load_resources(language,
                                           AndroidImporter._load_strings)
            self.assertEqual(len(strings), reference.string_count[language])

    def testLoadsAllStringArraysForAllLanguages(self):
        for language in self.config.languages:
            arrays = self._load_resources(language,
                                          AndroidImporter._load_string_arrays)
            self.assertEqual(len(arrays),
                             reference.string_array_count[language])

    def testLoadsAllQuantityStringsForAllLanguages(self):
        for language in self.config.languages:
            arrays = self._load_resources(
                language, AndroidImporter._load_quantity_strings)
            self.assertEqual(len(arrays),
                             reference.quantity_strings_count[language])
class TestImporterAndroid(unittest.TestCase):

    def _load_resources(self, language,  load_resources_method):
        """
        Use AndroidImporter object and load resources from XML files.
        It calls load_resources_method on an AndroidImporter object,
        passing language and parsed XML tree. Param load_resources_method
        is one of:
        
        * AndroidImporter._load_strings
        * AndroidImporter._load_string_arrays
        * AndroidImporter._load_quantity_strings
        
        Return a dictionary mapping language codes to resource arrays.
        """
        
        imp = AndroidImporter()
        xml_file_path = self.config.resource_file_path(language)
        xml_file = open(xml_file_path)
        xml_tree = etree.parse(xml_file)
        if load_resources_method == AndroidImporter._load_strings:
            return imp._load_strings(language, xml_tree)
        elif load_resources_method == AndroidImporter._load_string_arrays:
            return imp._load_string_arrays(language, xml_tree)
        elif load_resources_method == AndroidImporter._load_quantity_strings:
            return imp._load_quantity_strings(language, xml_tree)
        else:
            self.fail("This method is not allowed: %s" % load_resources_method)
    
    def setUp(self):
        """
        Initialize configuration data used in all other tests.
        """
        # load project config
        self.config = Config(reference.project_root_path, False, reference.config_file_path)
        # check if root directory exists
        self.assertTrue( os.path.isdir( self.config.root ) )
        # check if all XML files exist
        for language in self.config.languages:
            filename = self.config.resource_file_path(language)
            self.assertTrue( os.path.isfile(filename) )
    
    def testLoadResourcesHelperFunctionWorks(self):
        for language in self.config.languages:
            strings = self._load_resources(language,  AndroidImporter._load_strings)
            arrays = self._load_resources(language,  AndroidImporter._load_string_arrays)
            quantity = self._load_resources( language,  AndroidImporter._load_quantity_strings)
            self.assertTrue( len(strings) > 0 )
            self.assertTrue( len(arrays) > 0 )
            self.assertTrue( len(quantity) > 0 )
    
    def testLoadsAllStringsForAllLanguages(self):
        for language in self.config.languages:
            strings = self._load_resources( language,  AndroidImporter._load_strings )
            self.assertEqual( len(strings), reference.string_count[language] )
    
    def testLoadsAllStringArraysForAllLanguages(self):
        for language in self.config.languages:
            arrays = self._load_resources( language,  AndroidImporter._load_string_arrays )
            self.assertEqual( len(arrays),  reference.string_array_count[language] )
            
    def testLoadsAllQuantityStringsForAllLanguages(self):
        for language in self.config.languages:
            arrays = self._load_resources( language,  AndroidImporter._load_quantity_strings )
            self.assertEqual( len(arrays),  reference.quantity_strings_count[language] )
예제 #5
0
from mst import const
from mst.exceptions import MstException

print("Mobile String Toolkit generator, v%s\nCopyright (C) 2014 by Krzysztof Narkiewicz <*****@*****.**>\n" % const.version)

try:
    parser = argparse.ArgumentParser(description='')
    parser.add_argument('-r', '--project-root', required=True, nargs=1, help='Path to project root directory')
    parser.add_argument('-C', '--csv-loader', nargs=1, metavar='FILE', help='Load data from CSV file')
    parser.add_argument('-G', '--google-loader', nargs=4, metavar=('EMAIL', 'PASSWORD', 'SPREADSHEET', 'WORKSHEET'), help='Load data from Google Docs spreadsheet')
    parser.add_argument('-c', '--config', nargs=1, default=['mst.cfg'], help='Configuration file')
    parser.add_argument('-v',  '--verbose',  action='store_true',  help='Verbose mode')
    args = parser.parse_args()

    # load configuration from project root
    config = Config( args.project_root[0],  args.verbose, args.config[0] )
    Log.init(args.verbose)
    
    # create loader - this will also load resources data
    if args.csv_loader == None and args.google_loader != None:
        loader = Factory.create_loader( Factory.LOADER_GOOGLEDOCS, args.google_loader )
    elif args.csv_loader != None and args.google_loader == None:
        loader = Factory.create_loader( Factory.LOADER_CSV, args.csv_loader )
    else:
        raise MstException("""No loader defined in command line. I don't know how to load translations. RTF(riendly)M.""")

    key_id = Factory.create_key_id(config.generator)

    # create a spreadsheet with loaded data
    sheet = Spreadsheet(key_id, loader.data, config.languages)