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)
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)
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)
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)
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)
def test_update(self): update.UpdateJSON(self._oldpath, self._newpath) updated = xjson.loads(self._oldpath) self.assertEqual(self._EXPECTED_JSON, updated)
def test_update_list(self): update.UpdateJSON(self._oldpathlist, self._newpathlist) updated = xjson.loads(self._oldpathlist) self.assertEqual(self._EXPECTED_LIST_JSON, updated)