Example #1
0
 def config_create_default(self):
     cfg = SConfig()
     cfg.set_value('car.suv.QM6.transmission', 'cvt')
     cfg.set_value('car.sedan.SM6.transmission', 'cvt')
     cfgfile = self.def_folder + 'vehicle'
     cfg.store(cfgfile)
     load_vehicle = self.read_all(cfgfile).strip()
     self.assertTrue(Expected.default_vehicle == load_vehicle)
 def check_upsert(self):
     db = SSimpleDB(self.db_file, SConfig(self.config_file))
     data = {
         'SNumber':  '0000000000',
         'Integer':  1234,
         'Date':     datetime.datetime.now().date(),
     }
     items = {
         'data': data
     }
     db.upsert('inspection', **items)
     data = {
         'SNumber':  '0000000000',
         'Alter2':   'Five5',
         'DateTime': sa.sql.func.now(),
     }
     items = {
         'data': data
     }
     db.upsert('inspection', **items)
     for i in range(10):
         data = {
             'SNumber':  '%010d' % i,
             'Integer':  9 - i,
             'Alter1':   '%05d' % i,
         }
         items = {
             'data': data
         }
         db.upsert('inspection', **items)
     del db
    def check_query(self):
        db = SSimpleDB(self.db_file, SConfig(self.config_file))
        columns = ['SNumber', 'Integer', 'Float', 'Alter1', 'Alter2']
        options = {
            'wheres': {
                'Alter1': ['00000', '00005'],
                'Alter2': 'Five5',
            },
            'operate': SSimpleDB.OP_AND,
            'page': 0,
            'size': 4,
        }
        data = db.query('inspection', *columns, **options)
        self.assertTrue(len(data) == 1)
        data = data[0]
        self.assertTrue(data[0] == '0000000000')
        self.assertTrue(data[1] == 9)
        self.assertTrue(data[2] is None)
        self.assertTrue(data[3] == '00000')
        self.assertTrue(data[4] == 'Five5')

        columns = []
        options = {
            'wheres': {
                'Alter1': ['00000', '00005'],
                'Alter2': 'Five5',
            },
            'operate': SSimpleDB.OP_OR,
            'page': 0,
            'size': 4,
        }
        data = db.query('inspection', *columns, **options)
        self.assertTrue(len(data) == 2)
        for item in data:
            self.assertTrue(item[0] in ['0000000000', '0000000005'])
    def check_rename_columns(self):
        DBCONFIG = '''
tables:
    - name: inspection
      columns:
        - [SNumber, String10, NotNull, CollateNocase, Unique, PrimaryKey]
        - [Pass, String5]
        - [AString, String20]
        - [Integer, Integer, NotNull]
        - [DateTime, DateTime]
        - [Date, Date]
      migrate:
        operation: rename
        columns:
            Pass: Alter2
'''
        self.to_file(self.config_file, DBCONFIG)
        db = SSimpleDB(self.db_file, SConfig(self.config_file))
        columns = ['SNumber', 'Integer', 'Pass']
        options = {
            'wheres': {
                'Pass': '******',
            },
            'operate': SSimpleDB.OP_AND,
            'page': 0,
            'size': 4,
        }
        self.assertTrue(db.count('inspection', *columns, **options) == 1)
        db.vacuum()
        del db
 def check_count(self):
     db = SSimpleDB(self.db_file, SConfig(self.config_file))
     self.assertTrue(db.count('inspection') == 10)
     columns = []
     options = {
         'wheres': {
             'Alter1': ['00000', '005'],
             'Alter2': 'Five5',
         },
         'operate': SSimpleDB.OP_OR,
         'page': 0,
         'size': 4,
     }
     self.assertTrue(db.count('inspection', *columns, **options) == 2)
     columns = ['SNumber', 'Integer', 'Float', 'Alter1', 'Alter2']
     options = {
         'wheres': {
             'Alter1': ['00000', '00005'],
             'Alter2': 'Five5',
         },
         'operate': SSimpleDB.OP_AND,
         'page': 0,
         'size': 4,
     }
     self.assertTrue(db.count('inspection', *columns, **options) == 1)
    def test_config_vars(self):
        yml_string = '''
vehicle:
    sedan:
        fuel: [disel, gasoline]
        wheels: 4
    suv:
        fuel: [disel, gasoline]
        wheels: 4
'''
        vehicle_file = '/tmp/test/vehicle.yml'
        self.to_file(vehicle_file, yml_string)
        cfg = SConfig(vehicle_file)
        # self.DEBUG = True

        testcase = (
            (True, cfg, 'Sedan has 4 tires.',
             'Sedan has @vehicle.sedan.wheels tires.', ''),
            (True, cfg, 'Engine is two types - disel,gasoline.',
             'Engine is two types - @{vehicle.suv.fuel}.', ''),
            (True, cfg, 'Engine is two types - @vehicle.suv.fuel.',
             'Engine is two types - @vehicle.suv.fuel.', ''),
            (True, None, 'Engine is two types - @{vehicle.suv.fuel}.',
             'Engine is two types - @{vehicle.suv.fuel}.', ''),
        )

        for case in testcase:
            rv, config, expected, string, keyvalue = case
            if keyvalue:
                self._set_environ(keyvalue)

            assert rv == (expected == SStrExpand.config_vars(config, string))
Example #7
0
 def config_merge(self):
     cfg = SConfig(self.def_folder + 'vehicle')
     cfg.collecting(self.user_folder + 'vehicle')
     cfg.store()
     cfgfile = self.user_folder + 'vehicle'
     load_vehicle = self.read_all(cfgfile).strip()
     self.assertTrue(Expected.overlay_user_vehicle == load_vehicle)
Example #8
0
 def config_create_user(self):
     cfg = SConfig()
     cfg.set_value('car.suv.QM6.transmission', 'CVT')
     cfg.set_value('car.suv.QM6.color', 'cloud-perl')
     cfgfile = self.user_folder + 'vehicle'
     cfg.store(cfgfile)
     load_vehicle = self.read_all(cfgfile).strip()
     self.assertTrue(Expected.user_vehicle == load_vehicle)
    def check_create(self):
        DBCONFIG = '''
tables:
    - name: inspection
      columns:
        - [SNumber, String10, NotNull, CollateNocase, Unique, PrimaryKey]
        - [Integer, Integer, NotNull]
        - [Float, Float]
        - [Bool, Boolean]
        - [DateTime, DateTime]
'''
        self.to_file(self.config_file, DBCONFIG)
        dbconfig = SConfig(self.config_file)
        db = SSimpleDB(self.db_file, dbconfig)
        del db
    def test_convert(self):
        yml_string = '''
vehicle:
    sedan:
        fuel: [disel, gasoline]
        wheels: 4
    suv:
        fuel: [disel, gasoline]
        wheels: 4
link: $ENV_LINK
link2: "@link"
'''
        vehicle_file = '/tmp/test/vehicle.yml'
        self.to_file(vehicle_file, yml_string)
        cfg = SConfig(vehicle_file)
        # self.DEBUG = True

        testcase = (
            (True, cfg, 'Sedan has 4 tires.',
             'Sedan has @vehicle.sedan.wheels tires.', ''),
            (True, cfg, 'Engine is two types - disel,gasoline.',
             'Engine is two types - @{vehicle.suv.fuel}.', ''),
            (True, cfg, 'Engine is two types - @vehicle.suv.fuel.',
             'Engine is two types - @vehicle.suv.fuel.', ''),
            (True, None, 'Engine is two types - @{vehicle.suv.fuel}.',
             'Engine is two types - @{vehicle.suv.fuel}.', ''),
            (True, cfg, 'All vehicle has not 4 tires.',
             'All vehicle has not $VEHICLE_TIRES tires.',
             'VEHICLE_TIRES=@{vehicle.sedan.wheels}'),
            (True, cfg, '$ENV_LINK', '$ENV_LINK', 'ENV_LINK=@link'),
            (True, None, '@link', '$ENV_LINK', 'ENV_LINK=@link'),
        )

        for case in testcase:
            rv, config, expected, string, keyvalue = case
            if keyvalue:
                self._set_environ(keyvalue)
            result = SStrExpand.convert(string, config=config)
            assert rv == (expected == result)

        self._set_environ('ENV_LINK=@link2')
        try:
            SStrExpand.convert('@link', config=cfg)
            assert False
        except SStrExpand.Error:
            pass
Example #11
0
    def test_access_keylist(self):
        cfgfile = '/tmp/yaml2/config_list.yml'
        self.to_file(cfgfile, ConfigList.target)
        cfg = SConfig(cfgfile)
        self.assertTrue(cfg.get_value('car.sedan[2].name') == 'K7')
        self.assertTrue(cfg.get_value('car.sedan[1].vendor') == 'Hyundae')
        self.assertTrue(cfg.get_value('car.sedan[0].name') == 'SM6')
        self.assertTrue(cfg.get_value('car.sedan[-2].name') == 'K7')
        self.assertTrue(cfg.get_value('car.sedan[100].name', 'NA') == 'NA')
        self.assertTrue(cfg.get_value('car.sedan[-1].vendor[1]') == 'BMW')
        cfg.set_value('car.sedan[-1].name', 'Overseas')
        self.assertTrue(cfg.get_value('car.sedan[-1].name') == 'Overseas')
        cfg.set_value('car.sedan[-1].vendor[-1]', 'Benz')
        self.assertTrue(cfg.get_value('car.sedan[-1].vendor[-1]') == 'Benz')
        # Append value to list, but it allows only the index is the next number
        cfg.set_value('car.sedan[-1].vendor[3]', 'Audi')
        self.assertTrue(cfg.get_value('car.sedan[-1].vendor[-1]') == 'Audi')
        cfg.set_value('car.suv[0]', 'QM6')
        cfg.set_value('car.suv[1]', 'Tusan')
        cfg.set_value('car.suv[2]', 'Tivoli')
        self.assertTrue(cfg.get_value('car.suv[-1]') == 'Tivoli')

        cfg.delete('car.suv[1]')
        self.assertTrue(cfg.get_value('car.suv[1]') == 'Tivoli')
        cfg.delete('car.sedan[-1].vendor[-1]')
        self.assertTrue(cfg.get_value('car.sedan[-1].vendor[-1]') == 'Benz')
        cfg.set_value('car.suv', None)
        self.assertTrue(cfg.get_value('car.suv') is None)
        cfg.delete('car.suv')
        self.assertTrue(cfg.get_value('car.suv', 'Nothing') == 'Nothing')
        cfg.delete('car.sedan[-1].vendor')
        result = cfg.get_value('car.sedan[-1].vendor', 'Nothing')
        self.assertTrue(result == 'Nothing')
        cfg.store()
Example #12
0
 def test_config_folder(self):
     shutil.rmtree(self.def_folder)
     shutil.rmtree(self.user_folder)
     self.to_file(self.def_folder + 'vehicle', FolderConfig.root)
     self.to_file(self.def_folder + '/folder/sedan', FolderConfig.car_sedan)
     self.to_file(self.def_folder + '/folder/suv', FolderConfig.car_suv)
     cfg = SConfig(self.def_folder + 'vehicle')
     # self.DEBUG = True
     self.dprint('\n' + cfg.dump())
     cfg.collecting(self.user_folder + 'vehicle')
     self.dprint('\n' + cfg.dump())
     cfg.store()
     cfg2 = SConfig(self.user_folder + 'vehicle')
     self.dprint('\n' + cfg.dump())
     self.dprint('\n' + cfg2.dump())
     self.assertTrue(cfg.dump() == cfg2.dump())
     for fname in ['vehicle', 'folder/sedan', 'folder/suv']:
         default_load = self.read_all(self.def_folder + fname).strip()
         user_load = self.read_all(self.user_folder + fname).strip()
         self.assertTrue(default_load == user_load)