def testLibrsyncDeltaFileCreation(librsyncTestfile, tempDir): signature = librsyncSignature(librsyncTestfile, base64Encoded=False) deltafile = os.path.join(tempDir, 'delta') librsyncDeltaFile(librsyncTestfile, signature.strip(), deltafile) assert os.path.exists(deltafile), "No delta file was created" expectedDelta = 'rs\x026F\x00\x04\x8a\x00' with open(deltafile, "r") as f: assert expectedDelta == f.read()
def testLibrsyncPatchFileCreatesNewFileBasedOnDelta(librsyncTestfile, tempDir): baseFile = librsyncTestfile signature = librsyncSignature(baseFile, False) newFile = os.path.join(tempDir, 'oldnew.txt') shutil.copy(baseFile, newFile) additionalText = u"Und diese Zeile hier macht den Unterschied." with codecs.open(newFile, 'a', 'utf-8') as nf: nf.write("\n\n{0}\n".format(additionalText)) deltaFileForNewFile = os.path.join(tempDir, 'newDelta.delta') librsyncDeltaFile(newFile, signature, deltaFileForNewFile) expectedDelta = ( 'rs\x026B\x04\xb8Die NASA konnte wieder ein Funksignal der ' 'Sonde New Horizons empfangen. Damit scheint sicher, dass ' 'das Man\xc3\xb6ver ein Erfolg war und nun jede Menge Daten ' 'zu erwarten sind. Bis die alle auf der Erde sind, wird es ' 'aber dauern.\n\nDie NASA feiert eine "historische Nacht": ' 'Die Sonde New Horizons ist am Zwergplaneten Pluto ' 'vorbeigeflogen und hat kurz vor drei Uhr MESZ wieder Kontakt ' 'mit der Erde aufgenommen. Jubel, rotwei\xc3\x9fblaue ' 'F\xc3\xa4hnchen und stehende Ovationen pr\xc3\xa4gten die ' 'Stimmung im John Hopkins Labor in Maryland. Digital stellten ' 'sich prominente Gratulanten ein, von Stephen Hawking mit ' 'einer Videobotschaft bis zu US-Pr\xc3\xa4sident Barack Obama ' 'per Twitter.\n\n"Hallo Welt"\n\nDas erste Funksignal New ' 'Horizons nach dem Vorbeiflug am Pluto brachte noch keine ' 'wissenschaftlichen Ergebnisse oder neue Fotos, sondern ' 'Telemetriedaten der Sonde selbst. Das war so geplant. ' 'Aus diesen Informationen geht hervor, dass es New Horizons ' 'gut geht, dass sie ihren Kurs h\xc3\xa4lt und die ' 'vorausberechnete Menge an Speichersektoren belegt ist. ' 'Daraus schlie\xc3\x9fen die Verantwortlichen der NASA, dass ' 'auch tats\xc3\xa4chlich wissenschaftliche Informationen im ' 'geplanten Ausma\xc3\x9f gesammelt wurden.\n\nUnd diese Zeile ' 'hier macht den Unterschied.\n\x00') with open(deltaFileForNewFile, "rb") as f: assert expectedDelta == f.read() fileBasedOnDelta = os.path.join(tempDir, 'newnew.txt') librsyncPatchFile(baseFile, deltaFileForNewFile, fileBasedOnDelta) with open(newFile, "r") as newF: with open(fileBasedOnDelta, "r") as newF2: assert newF.readlines() == newF2.readlines() with codecs.open(fileBasedOnDelta, "r", 'utf-8') as newF2: assert any(additionalText in line for line in newF2)
def testLibrsyncPatchFileDoesNotAlterIfUnneeded(librsyncTestfile, tempDir): baseFile = librsyncTestfile signature = librsyncSignature(baseFile, False) deltaFile = os.path.join(tempDir, 'base.delta') librsyncDeltaFile(baseFile, signature, deltaFile) assert os.path.exists(deltaFile) expectedDelta = "rs\x026F\x00\x04\x8a\x00" with open(deltaFile, "rb") as f: assert expectedDelta == f.read() newFile = os.path.join(tempDir, 'newFile.txt') librsyncPatchFile(baseFile, deltaFile, newFile) assert os.path.exists(newFile) with open(newFile, "r") as newF: with open(baseFile, "r") as baseF: assert baseF.readlines() == newF.readlines()
def depot_librsyncSignature(self, filename): try: return librsyncSignature(filename) except Exception as e: raise BackendIOError(u"Failed to get librsync signature: %s" % e)
def testLibrsyncSignatureCreation(librsyncTestfile): signature = librsyncSignature(librsyncTestfile, base64Encoded=False) assert 'rs\x016\x00\x00\x08\x00\x00\x00\x00\x08\xff\xae5\xd0\x80f\xbc}F)\xb0M' == signature
def testLibrsyncSignatureBase64Encoded(librsyncTestfile): assert 'cnMBNgAACAAAAAAI/6410IBmvH1GKbBN\n' == librsyncSignature(librsyncTestfile)
#! /usr/bin/env python # -*- coding: utf-8 -*- import sys from OPSI.Util import librsyncSignature if __name__ == '__main__': for name in sys.argv[1:]: print("Sig of {0}: {1}".format(name, librsyncSignature(name).strip()))