Changeset View
Changeset View
Standalone View
Standalone View
swh/model/tests/test_cli.py
Show All 39 Lines | def test_directory_id(self): | ||||
"""identify an entire directory""" | """identify an entire directory""" | ||||
self.make_from_tarball(self.tmpdir_name) | self.make_from_tarball(self.tmpdir_name) | ||||
path = os.path.join(self.tmpdir_name, b'sample-folder') | path = os.path.join(self.tmpdir_name, b'sample-folder') | ||||
result = self.runner.invoke(cli.identify, | result = self.runner.invoke(cli.identify, | ||||
['--type', 'directory', path]) | ['--type', 'directory', path]) | ||||
self.assertPidOK(result, | self.assertPidOK(result, | ||||
'swh:1:dir:e8b0f1466af8608c8a3fb9879db172b887e80759') | 'swh:1:dir:e8b0f1466af8608c8a3fb9879db172b887e80759') | ||||
def test_origin_id(self): | |||||
"""identify an origin URL""" | |||||
url = 'https://github.com/torvalds/linux' | |||||
result = self.runner.invoke(cli.identify, ['--type', 'origin', url]) | |||||
self.assertPidOK(result, | |||||
'swh:1:ori:b63a575fe3faab7692c9f38fb09d4bb45651bb0f') | |||||
def test_symlink(self): | def test_symlink(self): | ||||
"""identify symlink --- both itself and target""" | """identify symlink --- both itself and target""" | ||||
regular = os.path.join(self.tmpdir_name, b'foo.txt') | regular = os.path.join(self.tmpdir_name, b'foo.txt') | ||||
link = os.path.join(self.tmpdir_name, b'bar.txt') | link = os.path.join(self.tmpdir_name, b'bar.txt') | ||||
open(regular, 'w').write('foo\n') | open(regular, 'w').write('foo\n') | ||||
os.symlink(os.path.basename(regular), link) | os.symlink(os.path.basename(regular), link) | ||||
result = self.runner.invoke(cli.identify, [link]) | result = self.runner.invoke(cli.identify, [link]) | ||||
Show All 23 Lines | def test_hide_filename(self): | ||||
for filename, content in self.contents.items(): | for filename, content in self.contents.items(): | ||||
path = os.path.join(self.tmpdir_name, filename) | path = os.path.join(self.tmpdir_name, filename) | ||||
result = self.runner.invoke(cli.identify, | result = self.runner.invoke(cli.identify, | ||||
['--type', 'content', '--no-filename', | ['--type', 'content', '--no-filename', | ||||
path]) | path]) | ||||
self.assertPidOK(result, | self.assertPidOK(result, | ||||
'swh:1:cnt:' + hash_to_hex(content['sha1_git'])) | 'swh:1:cnt:' + hash_to_hex(content['sha1_git'])) | ||||
def test_auto_id(self): | def test_auto_content(self): | ||||
"""automatic object type: file or directory, depending on argument""" | """automatic object type detection: content""" | ||||
with tempfile.NamedTemporaryFile(prefix='swh.model.cli') as f: | with tempfile.NamedTemporaryFile(prefix='swh.model.cli') as f: | ||||
result = self.runner.invoke(cli.identify, [f.name]) | result = self.runner.invoke(cli.identify, [f.name]) | ||||
self.assertEqual(result.exit_code, 0) | self.assertEqual(result.exit_code, 0) | ||||
self.assertRegex(result.output, r'^swh:\d+:cnt:') | self.assertRegex(result.output, r'^swh:\d+:cnt:') | ||||
def test_auto_directory(self): | |||||
"""automatic object type detection: directory""" | |||||
with tempfile.TemporaryDirectory(prefix='swh.model.cli') as dirname: | with tempfile.TemporaryDirectory(prefix='swh.model.cli') as dirname: | ||||
result = self.runner.invoke(cli.identify, [dirname]) | result = self.runner.invoke(cli.identify, [dirname]) | ||||
self.assertEqual(result.exit_code, 0) | self.assertEqual(result.exit_code, 0) | ||||
self.assertRegex(result.output, r'^swh:\d+:dir:') | self.assertRegex(result.output, r'^swh:\d+:dir:') | ||||
def test_auto_origin(self): | |||||
"""automatic object type detection: origin""" | |||||
result = self.runner.invoke(cli.identify, | |||||
['https://github.com/torvalds/linux']) | |||||
self.assertEqual(result.exit_code, 0) | |||||
self.assertRegex(result.output, r'^swh:\d+:ori:') | |||||
def test_verify_content(self): | def test_verify_content(self): | ||||
"""identifier verification""" | """identifier verification""" | ||||
self.make_contents(self.tmpdir_name) | self.make_contents(self.tmpdir_name) | ||||
for filename, content in self.contents.items(): | for filename, content in self.contents.items(): | ||||
expected_id = 'swh:1:cnt:' + hash_to_hex(content['sha1_git']) | expected_id = 'swh:1:cnt:' + hash_to_hex(content['sha1_git']) | ||||
# match | # match | ||||
path = os.path.join(self.tmpdir_name, filename) | path = os.path.join(self.tmpdir_name, filename) | ||||
Show All 10 Lines |