Beispiel #1
0
    def test_update_and_backup_cli(self):

        argv = ["--old", self._oldpath, "--new", self._newpath, "--backup"]
        obj = update.UpdateJSON.create(argv)

        updated = xjson.loads(self._oldpath)
        backup = xjson.loads(obj.backuppath)

        self.assertEqual(self._EXPECTED_JSON, updated)
        self.assertEqual(self._OLD_JSON, backup)
Beispiel #2
0
    def test_update_and_backup(self):

        self._backuppath = self._oldpath + '.bak'
        update.UpdateJSON(self._oldpath, self._newpath, backup=True)

        updated = xjson.loads(self._oldpath)
        backup = xjson.loads(self._backuppath)

        self.assertEqual(self._EXPECTED_JSON, updated)
        self.assertEqual(self._OLD_JSON, backup)
Beispiel #3
0
    def test_update_cli(self):

        argv = ["--old", self._oldpath, "--new", self._newpath]
        update.UpdateJSON.create(argv)
        updated = xjson.loads(self._oldpath)

        self.assertEqual(self._EXPECTED_JSON, updated)
Beispiel #4
0
    def __init__(self,
                 oldpath,
                 newpath,
                 schemapath=None,
                 backup=False,
                 backuppath=None,
                 backup_extension='.bak'):
        """
        Constructor.

        oldpath : path to the 'old' (to be updated) JSON file
        newpath : path to the 'new' (to be used to update the old file) JSON file
        schemapath=None : schema to validate both files (OPTIONAL)
        backup=False : flag that marks whether a backup of the old file is required
        backuppath=None : path to the backup file
        backup_extension='.bak' : extension to be appended to the old file (DEFAULT)
        """
        super(UpdateJSON, self).__init__()
        self._l.debug(f"Updating JSON files: old = {oldpath}, new = {newpath}")
        self._is_list = False

        old = xjson.loads(oldpath, schemapath=schemapath)
        new = xjson.loads(newpath, schemapath=schemapath)

        if isinstance(old, typing.List):
            self._is_list = True

        if self._is_list:
            old = {"list": old}
            new = {"list": new}

        old.update(new)

        if backup:
            if not backuppath:
                self.backuppath = oldpath + backup_extension
            else:
                self.backuppath = backuppath
            shutil.copy(oldpath, self.backuppath)

        if self._is_list:
            old = old['list']

        xjson.dumps(oldpath, old)
Beispiel #5
0
    def _convert(self):
        """This method converts the loaded JSON file into a YAML file."""

        json_data = xjson.loads(self.jfile_path)

        with io.open(self.yfile_path, 'w', encoding='utf8') as f:
            yaml.dump(json_data,
                      f,
                      default_flow_style=False,
                      allow_unicode=True)
Beispiel #6
0
    def test_update(self):

        update.UpdateJSON(self._oldpath, self._newpath)
        updated = xjson.loads(self._oldpath)

        self.assertEqual(self._EXPECTED_JSON, updated)
Beispiel #7
0
    def test_update_list(self):

        update.UpdateJSON(self._oldpathlist, self._newpathlist)
        updated = xjson.loads(self._oldpathlist)

        self.assertEqual(self._EXPECTED_LIST_JSON, updated)