def test_dirs_refused(self): d = tempfile.mkdtemp() try: tp = os.path.join(d, 'test.tar') with open(tp, 'wb') as fh: with self.assertRaisesRegexp(ValueError, 'not a regular'): create_tar_from_files(fh, {'test': d}) finally: shutil.rmtree(d)
def test_create_tar_basic(self): d = tempfile.mkdtemp() try: files = self._create_files(d) tp = os.path.join(d, 'test.tar') with open(tp, 'wb') as fh: create_tar_from_files(fh, files) # Output should be deterministic. self.assertEqual(file_hash(tp), 'cd16cee6f13391abd94dfa435d2633b61ed727f1') with tarfile.open(tp, 'r') as tf: self._verify_basic_tarfile(tf) finally: shutil.rmtree(d)
def test_create_tar_basic(self): d = tempfile.mkdtemp() try: files = self._create_files(d) tp = os.path.join(d, 'test.tar') with open(tp, 'wb') as fh: create_tar_from_files(fh, files) # Output should be deterministic. self.assertEqual(file_hash(tp), '01cd314e277f060e98c7de6c8ea57f96b3a2065c') with tarfile.open(tp, 'r') as tf: self._verify_basic_tarfile(tf) finally: shutil.rmtree(d)
def test_executable_preserved(self): d = tempfile.mkdtemp() try: p = os.path.join(d, 'exec') with open(p, 'wb') as fh: fh.write('#!/bin/bash\n') os.chmod(p, MODE_STANDARD | stat.S_IXUSR) tp = os.path.join(d, 'test.tar') with open(tp, 'wb') as fh: create_tar_from_files(fh, {'exec': p}) self.assertEqual(file_hash(tp), '357e1b81c0b6cfdfa5d2d118d420025c3c76ee93') with tarfile.open(tp, 'r') as tf: m = tf.getmember('exec') self.assertEqual(m.mode, MODE_STANDARD | stat.S_IXUSR) finally: shutil.rmtree(d)
def test_setuid_setgid_refused(self): d = tempfile.mkdtemp() try: uid = os.path.join(d, 'setuid') gid = os.path.join(d, 'setgid') with open(uid, 'a'): pass with open(gid, 'a'): pass os.chmod(uid, MODE_STANDARD | stat.S_ISUID) os.chmod(gid, MODE_STANDARD | stat.S_ISGID) tp = os.path.join(d, 'test.tar') with open(tp, 'wb') as fh: with self.assertRaisesRegexp(ValueError, 'cannot add file with setuid'): create_tar_from_files(fh, {'test': uid}) with self.assertRaisesRegexp(ValueError, 'cannot add file with setuid'): create_tar_from_files(fh, {'test': gid}) finally: shutil.rmtree(d)
def test_create_tar_basic(self): d = tempfile.mkdtemp() try: files = self._create_files(d) tp = os.path.join(d, "test.tar") with open(tp, "wb") as fh: create_tar_from_files(fh, files) # Output should be deterministic. Checking for Python version because of Bug 1735396. if sys.version_info.major == 3 and sys.version_info.minor <= 8: self.assertEqual(file_hash(tp), "01cd314e277f060e98c7de6c8ea57f96b3a2065c") # The else statement below assumes Python 3.9 and newer. else: self.assertEqual(file_hash(tp), "50fe1aaadf0d44abb69bdea174b4dd6cdb4f4898") with tarfile.open(tp, "r") as tf: self._verify_basic_tarfile(tf) finally: shutil.rmtree(d)