class TestFile(TestCase): def setUp(self): from pycdstar.media import File with NamedTemporaryFile(delete=False, suffix='ä ö,ü.ß') as fp: fp.write(b"""test""") self.file = File(fp.name) def test_clean_name(self): self.assertTrue(self.file.clean_name.endswith('a_o_u.ss')) def test_size(self): self.assertEqual(self.file.size, 4) self.assertEqual(self.file.size_h, '4.0B') self.assertEqual(self.file.format_size(1000000000000000000000000000), '827.2YiB') def test_md5(self): self.assertEqual(self.file.md5, '098f6bcd4621d373cade4e832627b4f6') def test_create_object(self): self.file.temporary = True obj, md, bitstreams = self.file.create_object(Mock()) self.assertIn('original', bitstreams) self.assertFalse(os.path.exists(self.file.path)) def test_create_object_fail(self): """Make sure obj.delete() is called when adding a bitstream fails.""" class Object(Mock): def add_bitstream(self, *args, **kw): raise ValueError obj = Object() with self.assertRaises(ValueError): self.file.create_object(Mock(get_object=lambda: obj)) self.assertTrue(obj.delete.called) def tearDown(self): if os.path.exists(self.file.path): os.remove(self.file.path)