diff options
author | Lars Wirzenius <liw@liw.fi> | 2014-01-10 10:51:34 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2014-01-10 10:51:34 +0000 |
commit | 35b540244c0303f516f4cbd7ebdc2439190d8986 (patch) | |
tree | fb0e2523e29c4d23fc700f99ceaaa46d9db5acae | |
parent | 0825b046af42257471d535cd3882f1301042606c (diff) | |
download | obnam-35b540244c0303f516f4cbd7ebdc2439190d8986.tar.gz |
Ensure all common file metadata keys are allowed
-rw-r--r-- | obnamlib/repo_dummy.py | 27 | ||||
-rw-r--r-- | obnamlib/repo_interface.py | 36 | ||||
-rw-r--r-- | test-gpghome/random_seed | bin | 600 -> 600 bytes |
3 files changed, 55 insertions, 8 deletions
diff --git a/obnamlib/repo_dummy.py b/obnamlib/repo_dummy.py index f1fcaa2d..53b33c74 100644 --- a/obnamlib/repo_dummy.py +++ b/obnamlib/repo_dummy.py @@ -250,14 +250,10 @@ class DummyClient(object): raise obnamlib.RepositoryFileDoesNotExistInGeneration( self.name, self.make_generation_spec(gen_id), filename) - _integer_keys = ( - obnamlib.REPO_FILE_MTIME_SEC, - ) - def get_file_key(self, gen_id, filename, key): self._require_generation(gen_id) self._require_file(gen_id, filename) - if key in self._integer_keys: + if key in obnamlib.REPO_FILE_INTEGER_KEYS: default = 0 else: default = '' @@ -620,7 +616,26 @@ class RepositoryFormatDummy(obnamlib.RepositoryInterface): client.set_file_key(generation_id, filename, key, value) def get_allowed_file_keys(self): - return [obnamlib.REPO_FILE_TEST_KEY, obnamlib.REPO_FILE_MTIME_SEC] + return [ + obnamlib.REPO_FILE_TEST_KEY, + obnamlib.REPO_FILE_MODE, + obnamlib.REPO_FILE_MTIME_SEC, + obnamlib.REPO_FILE_MTIME_NSEC, + obnamlib.REPO_FILE_ATIME_SEC, + obnamlib.REPO_FILE_ATIME_NSEC, + obnamlib.REPO_FILE_NLINK, + obnamlib.REPO_FILE_SIZE, + obnamlib.REPO_FILE_UID, + obnamlib.REPO_FILE_GID, + obnamlib.REPO_FILE_BLOCKS, + obnamlib.REPO_FILE_DEV, + obnamlib.REPO_FILE_INO, + obnamlib.REPO_FILE_USERNAME, + obnamlib.REPO_FILE_GROUPNAME, + obnamlib.REPO_FILE_SYMLINK_TARGET, + obnamlib.REPO_FILE_XATTR_BLOB, + obnamlib.REPO_FILE_MD5, + ] def get_file_chunk_ids(self, generation_id, filename): client = self._client_list.get_client_by_generation_id(generation_id) diff --git a/obnamlib/repo_interface.py b/obnamlib/repo_interface.py index 5010ea58..ee9e81f4 100644 --- a/obnamlib/repo_interface.py +++ b/obnamlib/repo_interface.py @@ -1450,15 +1450,47 @@ class RepositoryInterfaceTests(unittest.TestCase): # pragma: no cover def test_has_list_of_allowed_file_keys(self): self.assertEqual(type(self.repo.get_allowed_file_keys()), list) + def test_all_common_file_metadata_keys_are_allowed(self): + common = [ + REPO_FILE_MODE, + REPO_FILE_MTIME_SEC, + REPO_FILE_MTIME_NSEC, + REPO_FILE_ATIME_SEC, + REPO_FILE_ATIME_NSEC, + REPO_FILE_NLINK, + REPO_FILE_SIZE, + REPO_FILE_UID, + REPO_FILE_GID, + REPO_FILE_BLOCKS, + REPO_FILE_DEV, + REPO_FILE_INO, + REPO_FILE_USERNAME, + REPO_FILE_GROUPNAME, + REPO_FILE_SYMLINK_TARGET, + REPO_FILE_XATTR_BLOB, + REPO_FILE_MD5, + ] + for key in common: + self.assertTrue( + key in self.repo.get_allowed_file_keys(), + 'key %s (%d) not in allowed file keys' % + (_key_name(key), key)) + def test_gets_all_allowed_file_keys(self): gen_id = self.create_generation() self.repo.add_file(gen_id, '/foo/bar') for key in self.repo.get_allowed_file_keys(): value = self.repo.get_file_key(gen_id, '/foo/bar', key) if key in REPO_FILE_INTEGER_KEYS: - self.assertEqual(type(value), int) + self.assertEqual( + type(value), int, + msg='key %s (%d) has value %s which is not an int' % + (_key_name(key), key, repr(value))) else: - self.assertEqual(type(value), str) + self.assertEqual( + type(value), str, + msg='key %s (%d) has value %s which is not a str' % + (_key_name(key), key, repr(value))) def test_has_empty_string_for_file_test_key(self): gen_id = self.create_generation() diff --git a/test-gpghome/random_seed b/test-gpghome/random_seed Binary files differindex 19a89568..a4480bbf 100644 --- a/test-gpghome/random_seed +++ b/test-gpghome/random_seed |