def test_jarrer(self): copier = Jarrer() copier.add('foo/bar', GeneratedFile('foobar')) copier.add('foo/qux', GeneratedFile('fooqux')) copier.add('foo/deep/nested/directory/file', GeneratedFile('fooz')) copier.add('bar', GeneratedFile('bar')) copier.add('qux/foo', GeneratedFile('quxfoo')) copier.add('qux/bar', GeneratedFile('')) dest = MockDest() copier.copy(dest) self.check_jar(dest, copier) copier.remove('foo') copier.add('test', GeneratedFile('test')) copier.copy(dest) self.check_jar(dest, copier) copier.remove('test') copier.add('test', GeneratedFile('replaced-content')) copier.copy(dest) self.check_jar(dest, copier) copier.copy(dest) self.check_jar(dest, copier) preloaded = ['qux/bar', 'bar'] copier.preload(preloaded) copier.copy(dest) dest.seek(0) jar = JarReader(fileobj=dest) self.assertEqual([f.filename for f in jar], preloaded + [p for p in copier.paths() if not p in preloaded]) self.assertEqual(jar.last_preloaded, preloaded[-1])
def test_jarrer(self): copier = Jarrer() copier.add("foo/bar", GeneratedFile("foobar")) copier.add("foo/qux", GeneratedFile("fooqux")) copier.add("foo/deep/nested/directory/file", GeneratedFile("fooz")) copier.add("bar", GeneratedFile("bar")) copier.add("qux/foo", GeneratedFile("quxfoo")) copier.add("qux/bar", GeneratedFile("")) dest = MockDest() copier.copy(dest) self.check_jar(dest, copier) copier.remove("foo") copier.add("test", GeneratedFile("test")) copier.copy(dest) self.check_jar(dest, copier) copier.remove("test") copier.add("test", GeneratedFile("replaced-content")) copier.copy(dest) self.check_jar(dest, copier) copier.copy(dest) self.check_jar(dest, copier) preloaded = ["qux/bar", "bar"] copier.preload(preloaded) copier.copy(dest) dest.seek(0) jar = JarReader(fileobj=dest) self.assertEqual([f.filename for f in jar], preloaded + [p for p in copier.paths() if not p in preloaded]) self.assertEqual(jar.last_preloaded, preloaded[-1])
def test_jarrer_compress(self): copier = Jarrer() copier.add("foo/bar", GeneratedFile(b"ffffff")) copier.add("foo/qux", GeneratedFile(b"ffffff"), compress=False) dest = MockDest() copier.copy(dest) self.check_jar(dest, copier) dest.seek(0) jar = JarReader(fileobj=dest) self.assertTrue(jar["foo/bar"].compressed) self.assertFalse(jar["foo/qux"].compressed)
def test_jarrer_compress(self): copier = Jarrer() copier.add('foo/bar', GeneratedFile('ffffff')) copier.add('foo/qux', GeneratedFile('ffffff'), compress=False) dest = MockDest() copier.copy(dest) self.check_jar(dest, copier) dest.seek(0) jar = JarReader(fileobj=dest) self.assertTrue(jar['foo/bar'].compressed) self.assertFalse(jar['foo/qux'].compressed)
def test_jarrer(self): copier = Jarrer() copier.add("foo/bar", GeneratedFile(b"foobar")) copier.add("foo/qux", GeneratedFile(b"fooqux")) copier.add("foo/deep/nested/directory/file", GeneratedFile(b"fooz")) copier.add("bar", GeneratedFile(b"bar")) copier.add("qux/foo", GeneratedFile(b"quxfoo")) copier.add("qux/bar", GeneratedFile(b"")) dest = MockDest() copier.copy(dest) self.check_jar(dest, copier) copier.remove("foo") copier.add("test", GeneratedFile(b"test")) copier.copy(dest) self.check_jar(dest, copier) copier.remove("test") copier.add("test", GeneratedFile(b"replaced-content")) copier.copy(dest) self.check_jar(dest, copier) copier.copy(dest) self.check_jar(dest, copier) preloaded = ["qux/bar", "bar"] copier.preload(preloaded) copier.copy(dest) dest.seek(0) jar = JarReader(fileobj=dest) self.assertEqual( [f.filename for f in jar], preloaded + [p for p in copier.paths() if p not in preloaded], ) self.assertEqual(jar.last_preloaded, preloaded[-1])
def test_jar(self): s = MockDest() with JarWriter(fileobj=s) as jar: jar.add("foo", b"foo") self.assertRaises(JarWriterError, jar.add, "foo", b"bar") jar.add("bar", b"aaaaaaaaaaaaanopqrstuvwxyz") jar.add("baz/qux", b"aaaaaaaaaaaaanopqrstuvwxyz", False) jar.add("baz\\backslash", b"aaaaaaaaaaaaaaa") files = [j for j in JarReader(fileobj=s)] self.assertEqual(files[0].filename, "foo") self.assertFalse(files[0].compressed) self.assertEqual(files[0].read(), b"foo") self.assertEqual(files[1].filename, "bar") self.assertTrue(files[1].compressed) self.assertEqual(files[1].read(), b"aaaaaaaaaaaaanopqrstuvwxyz") self.assertEqual(files[2].filename, "baz/qux") self.assertFalse(files[2].compressed) self.assertEqual(files[2].read(), b"aaaaaaaaaaaaanopqrstuvwxyz") if os.sep == "\\": self.assertEqual( files[3].filename, "baz/backslash", "backslashes in filenames on Windows should get normalized", ) else: self.assertEqual( files[3].filename, "baz\\backslash", "backslashes in filenames on POSIX platform are untouched", ) s = MockDest() with JarWriter(fileobj=s, compress=False) as jar: jar.add("bar", b"aaaaaaaaaaaaanopqrstuvwxyz") jar.add("foo", b"foo") jar.add("baz/qux", b"aaaaaaaaaaaaanopqrstuvwxyz", True) jar = JarReader(fileobj=s) files = [j for j in jar] self.assertEqual(files[0].filename, "bar") self.assertFalse(files[0].compressed) self.assertEqual(files[0].read(), b"aaaaaaaaaaaaanopqrstuvwxyz") self.assertEqual(files[1].filename, "foo") self.assertFalse(files[1].compressed) self.assertEqual(files[1].read(), b"foo") self.assertEqual(files[2].filename, "baz/qux") self.assertTrue(files[2].compressed) self.assertEqual(files[2].read(), b"aaaaaaaaaaaaanopqrstuvwxyz") self.assertTrue("bar" in jar) self.assertTrue("foo" in jar) self.assertFalse("baz" in jar) self.assertTrue("baz/qux" in jar) self.assertTrue(jar["bar"], files[1]) self.assertTrue(jar["foo"], files[0]) self.assertTrue(jar["baz/qux"], files[2]) s.seek(0) jar = JarReader(fileobj=s) self.assertTrue("bar" in jar) self.assertTrue("foo" in jar) self.assertFalse("baz" in jar) self.assertTrue("baz/qux" in jar) files[0].seek(0) self.assertEqual(jar["bar"].filename, files[0].filename) self.assertEqual(jar["bar"].compressed, files[0].compressed) self.assertEqual(jar["bar"].read(), files[0].read()) files[1].seek(0) self.assertEqual(jar["foo"].filename, files[1].filename) self.assertEqual(jar["foo"].compressed, files[1].compressed) self.assertEqual(jar["foo"].read(), files[1].read()) files[2].seek(0) self.assertEqual(jar["baz/qux"].filename, files[2].filename) self.assertEqual(jar["baz/qux"].compressed, files[2].compressed) self.assertEqual(jar["baz/qux"].read(), files[2].read())
def test_jar(self): s = MockDest() with JarWriter(fileobj=s) as jar: jar.add('foo', 'foo') self.assertRaises(JarWriterError, jar.add, 'foo', 'bar') jar.add('bar', 'aaaaaaaaaaaaanopqrstuvwxyz') jar.add('baz/qux', 'aaaaaaaaaaaaanopqrstuvwxyz', False) jar.add('baz\\backslash', 'aaaaaaaaaaaaaaa') files = [j for j in JarReader(fileobj=s)] self.assertEqual(files[0].filename, 'foo') self.assertFalse(files[0].compressed) self.assertEqual(files[0].read(), 'foo') self.assertEqual(files[1].filename, 'bar') self.assertTrue(files[1].compressed) self.assertEqual(files[1].read(), 'aaaaaaaaaaaaanopqrstuvwxyz') self.assertEqual(files[2].filename, 'baz/qux') self.assertFalse(files[2].compressed) self.assertEqual(files[2].read(), 'aaaaaaaaaaaaanopqrstuvwxyz') if os.sep == '\\': self.assertEqual(files[3].filename, 'baz/backslash', 'backslashes in filenames on Windows should get normalized') else: self.assertEqual(files[3].filename, 'baz\\backslash', 'backslashes in filenames on POSIX platform are untouched') s = MockDest() with JarWriter(fileobj=s, compress=False) as jar: jar.add('bar', 'aaaaaaaaaaaaanopqrstuvwxyz') jar.add('foo', 'foo') jar.add('baz/qux', 'aaaaaaaaaaaaanopqrstuvwxyz', True) jar = JarReader(fileobj=s) files = [j for j in jar] self.assertEqual(files[0].filename, 'bar') self.assertFalse(files[0].compressed) self.assertEqual(files[0].read(), 'aaaaaaaaaaaaanopqrstuvwxyz') self.assertEqual(files[1].filename, 'foo') self.assertFalse(files[1].compressed) self.assertEqual(files[1].read(), 'foo') self.assertEqual(files[2].filename, 'baz/qux') self.assertTrue(files[2].compressed) self.assertEqual(files[2].read(), 'aaaaaaaaaaaaanopqrstuvwxyz') self.assertTrue('bar' in jar) self.assertTrue('foo' in jar) self.assertFalse('baz' in jar) self.assertTrue('baz/qux' in jar) self.assertTrue(jar['bar'], files[1]) self.assertTrue(jar['foo'], files[0]) self.assertTrue(jar['baz/qux'], files[2]) s.seek(0) jar = JarReader(fileobj=s) self.assertTrue('bar' in jar) self.assertTrue('foo' in jar) self.assertFalse('baz' in jar) self.assertTrue('baz/qux' in jar) files[0].seek(0) self.assertEqual(jar['bar'].filename, files[0].filename) self.assertEqual(jar['bar'].compressed, files[0].compressed) self.assertEqual(jar['bar'].read(), files[0].read()) files[1].seek(0) self.assertEqual(jar['foo'].filename, files[1].filename) self.assertEqual(jar['foo'].compressed, files[1].compressed) self.assertEqual(jar['foo'].read(), files[1].read()) files[2].seek(0) self.assertEqual(jar['baz/qux'].filename, files[2].filename) self.assertEqual(jar['baz/qux'].compressed, files[2].compressed) self.assertEqual(jar['baz/qux'].read(), files[2].read())
def test_jar(self): s = MockDest() with JarWriter(fileobj=s, optimize=self.optimize) as jar: jar.add('foo', 'foo') self.assertRaises(JarWriterError, jar.add, 'foo', 'bar') jar.add('bar', 'aaaaaaaaaaaaanopqrstuvwxyz') jar.add('baz/qux', 'aaaaaaaaaaaaanopqrstuvwxyz', False) files = [j for j in JarReader(fileobj=s)] self.assertEqual(files[0].filename, 'foo') self.assertFalse(files[0].compressed) self.assertEqual(files[0].read(), 'foo') self.assertEqual(files[1].filename, 'bar') self.assertTrue(files[1].compressed) self.assertEqual(files[1].read(), 'aaaaaaaaaaaaanopqrstuvwxyz') self.assertEqual(files[2].filename, 'baz/qux') self.assertFalse(files[2].compressed) self.assertEqual(files[2].read(), 'aaaaaaaaaaaaanopqrstuvwxyz') s = MockDest() with JarWriter(fileobj=s, compress=False, optimize=self.optimize) as jar: jar.add('bar', 'aaaaaaaaaaaaanopqrstuvwxyz') jar.add('foo', 'foo') jar.add('baz/qux', 'aaaaaaaaaaaaanopqrstuvwxyz', True) jar = JarReader(fileobj=s) files = [j for j in jar] self.assertEqual(files[0].filename, 'bar') self.assertFalse(files[0].compressed) self.assertEqual(files[0].read(), 'aaaaaaaaaaaaanopqrstuvwxyz') self.assertEqual(files[1].filename, 'foo') self.assertFalse(files[1].compressed) self.assertEqual(files[1].read(), 'foo') self.assertEqual(files[2].filename, 'baz/qux') self.assertTrue(files[2].compressed) self.assertEqual(files[2].read(), 'aaaaaaaaaaaaanopqrstuvwxyz') self.assertTrue('bar' in jar) self.assertTrue('foo' in jar) self.assertFalse('baz' in jar) self.assertTrue('baz/qux' in jar) self.assertTrue(jar['bar'], files[1]) self.assertTrue(jar['foo'], files[0]) self.assertTrue(jar['baz/qux'], files[2]) s.seek(0) jar = JarReader(fileobj=s) self.assertTrue('bar' in jar) self.assertTrue('foo' in jar) self.assertFalse('baz' in jar) self.assertTrue('baz/qux' in jar) files[0].seek(0) self.assertEqual(jar['bar'].filename, files[0].filename) self.assertEqual(jar['bar'].compressed, files[0].compressed) self.assertEqual(jar['bar'].read(), files[0].read()) files[1].seek(0) self.assertEqual(jar['foo'].filename, files[1].filename) self.assertEqual(jar['foo'].compressed, files[1].compressed) self.assertEqual(jar['foo'].read(), files[1].read()) files[2].seek(0) self.assertEqual(jar['baz/qux'].filename, files[2].filename) self.assertEqual(jar['baz/qux'].compressed, files[2].compressed) self.assertEqual(jar['baz/qux'].read(), files[2].read())
def test_jar(self): s = MockDest() with JarWriter(fileobj=s, optimize=self.optimize) as jar: jar.add('foo', 'foo') self.assertRaises(JarWriterError, jar.add, 'foo', 'bar') jar.add('bar', 'aaaaaaaaaaaaanopqrstuvwxyz') jar.add('baz/qux', 'aaaaaaaaaaaaanopqrstuvwxyz', False) jar.add('baz\\backslash', 'aaaaaaaaaaaaaaa') files = [j for j in JarReader(fileobj=s)] self.assertEqual(files[0].filename, 'foo') self.assertFalse(files[0].compressed) self.assertEqual(files[0].read(), 'foo') self.assertEqual(files[1].filename, 'bar') self.assertTrue(files[1].compressed) self.assertEqual(files[1].read(), 'aaaaaaaaaaaaanopqrstuvwxyz') self.assertEqual(files[2].filename, 'baz/qux') self.assertFalse(files[2].compressed) self.assertEqual(files[2].read(), 'aaaaaaaaaaaaanopqrstuvwxyz') if os.sep == '\\': self.assertEqual(files[3].filename, 'baz/backslash', 'backslashes in filenames on Windows should get normalized') else: self.assertEqual(files[3].filename, 'baz\\backslash', 'backslashes in filenames on POSIX platform are untouched') s = MockDest() with JarWriter(fileobj=s, compress=False, optimize=self.optimize) as jar: jar.add('bar', 'aaaaaaaaaaaaanopqrstuvwxyz') jar.add('foo', 'foo') jar.add('baz/qux', 'aaaaaaaaaaaaanopqrstuvwxyz', True) jar = JarReader(fileobj=s) files = [j for j in jar] self.assertEqual(files[0].filename, 'bar') self.assertFalse(files[0].compressed) self.assertEqual(files[0].read(), 'aaaaaaaaaaaaanopqrstuvwxyz') self.assertEqual(files[1].filename, 'foo') self.assertFalse(files[1].compressed) self.assertEqual(files[1].read(), 'foo') self.assertEqual(files[2].filename, 'baz/qux') self.assertTrue(files[2].compressed) self.assertEqual(files[2].read(), 'aaaaaaaaaaaaanopqrstuvwxyz') self.assertTrue('bar' in jar) self.assertTrue('foo' in jar) self.assertFalse('baz' in jar) self.assertTrue('baz/qux' in jar) self.assertTrue(jar['bar'], files[1]) self.assertTrue(jar['foo'], files[0]) self.assertTrue(jar['baz/qux'], files[2]) s.seek(0) jar = JarReader(fileobj=s) self.assertTrue('bar' in jar) self.assertTrue('foo' in jar) self.assertFalse('baz' in jar) self.assertTrue('baz/qux' in jar) files[0].seek(0) self.assertEqual(jar['bar'].filename, files[0].filename) self.assertEqual(jar['bar'].compressed, files[0].compressed) self.assertEqual(jar['bar'].read(), files[0].read()) files[1].seek(0) self.assertEqual(jar['foo'].filename, files[1].filename) self.assertEqual(jar['foo'].compressed, files[1].compressed) self.assertEqual(jar['foo'].read(), files[1].read()) files[2].seek(0) self.assertEqual(jar['baz/qux'].filename, files[2].filename) self.assertEqual(jar['baz/qux'].compressed, files[2].compressed) self.assertEqual(jar['baz/qux'].read(), files[2].read())