def test_impossible_backslash(self): # It may be impossible to generate a single '\' in the md5sum digest, # because each '\' is escaped (as '\\') in the digest. We'll # test for it anyway, for full coverage. fp, _ = util.from_checksum_format(r'fake_checksum \.qza') fp2, _ = util.from_checksum_format(r'\fake_checksum \.qza') self.assertEqual(fp, r'\.qza') self.assertEqual(fp2, r'\.qza')
def test_from_hard(self): fp, chks = util.from_checksum_format( r'\939aaaae6098ebdab049b0f3abe7b68c filepath/\n/with/\\newline' + '\n') # newline from a checksum "file" self.assertEqual(fp, 'filepath/\n/with/\\newline') self.assertEqual(chks, '939aaaae6098ebdab049b0f3abe7b68c')
def test_from_hard(self): fp, chks = util.from_checksum_format( r'\939aaaae6098ebdab049b0f3abe7b68c filepath/\n/with/\\newline' + '\n') # newline from a checksum "file" self.assertEqual(fp, 'filepath/\n/with/\\newline') self.assertEqual(chks, '939aaaae6098ebdab049b0f3abe7b68c')
def validate_checksums(self): if not isinstance(self._fmt, self.get_format_class('5')): return ChecksumDiff({}, {}, {}) obs = dict(x for x in md5sum_directory(str(self.root_dir)).items() if x[0] != self._fmt.CHECKSUM_FILE) exp = dict(from_checksum_format(line) for line in (self.root_dir / self._fmt.CHECKSUM_FILE).open().readlines() ) obs_keys = set(obs) exp_keys = set(exp) added = {x: obs[x] for x in obs_keys - exp_keys} removed = {x: exp[x] for x in exp_keys - obs_keys} changed = {x: (exp[x], obs[x]) for x in exp_keys & obs_keys if exp[x] != obs[x]} return ChecksumDiff(added=added, removed=removed, changed=changed)
def validate_checksums(self): if not isinstance(self._fmt, self.get_format_class('5')): return ChecksumDiff({}, {}, {}) obs = dict(x for x in md5sum_directory(str(self.root_dir)).items() if x[0] != self._fmt.CHECKSUM_FILE) exp = dict(from_checksum_format(line) for line in (self.root_dir / self._fmt.CHECKSUM_FILE).open().readlines() ) obs_keys = set(obs) exp_keys = set(exp) added = {x: obs[x] for x in obs_keys - exp_keys} removed = {x: exp[x] for x in exp_keys - obs_keys} changed = {x: (exp[x], obs[x]) for x in exp_keys & obs_keys if exp[x] != obs[x]} return ChecksumDiff(added=added, removed=removed, changed=changed)
def check_roundtrip(self, filepath, checksum): line = util.to_checksum_format(filepath, checksum) new_fp, new_chks = util.from_checksum_format(line) self.assertEqual(new_fp, filepath) self.assertEqual(new_chks, checksum)
def test_from_legacy_format(self): fp, chks = util.from_checksum_format( r'0ed29022ace300b4d96847882daaf0ef *this/means/binary/mode') self.assertEqual(fp, 'this/means/binary/mode') self.assertEqual(chks, '0ed29022ace300b4d96847882daaf0ef')
def test_from_simple(self): fp, chks = util.from_checksum_format( 'd9724aeba59d8cea5265f698b2c19684 this/is/a/filepath') self.assertEqual(fp, 'this/is/a/filepath') self.assertEqual(chks, 'd9724aeba59d8cea5265f698b2c19684')
def test_filepath_with_leading_backslashes(self): line = r'\d41d8cd98f00b204e9800998ecf8427e \\\\\\.qza' fp, chks = util.from_checksum_format(line) self.assertEqual(fp, r'\\\.qza') self.assertEqual(chks, 'd41d8cd98f00b204e9800998ecf8427e')
def check_roundtrip(self, filepath, checksum): line = util.to_checksum_format(filepath, checksum) new_fp, new_chks = util.from_checksum_format(line) self.assertEqual(new_fp, filepath) self.assertEqual(new_chks, checksum)
def test_from_legacy_format(self): fp, chks = util.from_checksum_format( r'0ed29022ace300b4d96847882daaf0ef *this/means/binary/mode') self.assertEqual(fp, 'this/means/binary/mode') self.assertEqual(chks, '0ed29022ace300b4d96847882daaf0ef')
def test_from_simple(self): fp, chks = util.from_checksum_format( 'd9724aeba59d8cea5265f698b2c19684 this/is/a/filepath') self.assertEqual(fp, 'this/is/a/filepath') self.assertEqual(chks, 'd9724aeba59d8cea5265f698b2c19684')