From cd80ddbff9fb6650e053b41b6d332b3646f88a2c Mon Sep 17 00:00:00 2001 From: David Date: Sat, 15 Nov 2014 17:56:59 -0500 Subject: [PATCH 1/4] Run cleanup if extracted Run cleanup if executed add to SentinelImportTask as well alternative method cleanup() already checks self.extracted --- beets/importer.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/beets/importer.py b/beets/importer.py index 16a2b123b..b3d3e2a3d 100644 --- a/beets/importer.py +++ b/beets/importer.py @@ -504,6 +504,9 @@ class ImportTask(object): move=session.config['move']) self._emit_imported(session.lib) + if isinstance(self, ArchiveImportTask): + self.cleanup() + def cleanup(self, copy=False, delete=False, move=False): """Remove and prune imported paths. """ From 38f056a30c02666a1661952f1057dc861e4d160e Mon Sep 17 00:00:00 2001 From: David Date: Sun, 16 Nov 2014 21:33:03 -0500 Subject: [PATCH 2/4] Adding tests for #1067 --- test/test_importer.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/test/test_importer.py b/test/test_importer.py index 110c4a967..e4aa32099 100644 --- a/test/test_importer.py +++ b/test/test_importer.py @@ -334,6 +334,38 @@ class NonAutotaggedImportTest(_common.TestCase, ImportHelper): self.assertTrue(os.path.islink(filename)) self.assertEqual(os.readlink(filename), mediafile.path) +class RmTempTest(unittest.TestCase, ImportHelper): + """Tests that temporarily extracted archives are properly removed + after usage. + """ + + def setUp(self): + self.setup_beets() + self.want_resume = False + self.config['incremental'] = False + self._old_home = None + + def tearDown(self): + self.teardown_beets() + + def test_rm(self): + zip_path = self.create_archive() + archive_task = importer.ArchiveImportTask(zip_path) + archive_task.extract() + tmp_path = archive_task.toppath + self._setup_import_session(autotag=False, import_dir=tmp_path) + self.assertTrue(os.path.exists(tmp_path)) + archive_task.finalize(self) + self.assertFalse(os.path.exists(tmp_path)) + + def create_archive(self): + (handle, path) = mkstemp(dir=self.temp_dir) + os.close(handle) + archive = ZipFile(path, mode='w') + archive.write(os.path.join(_common.RSRC, 'full.mp3'), + 'full.mp3') + archive.close() + return path class ImportZipTest(unittest.TestCase, ImportHelper): From e1ff258ce56666c3a187e5de2f272c96ae845334 Mon Sep 17 00:00:00 2001 From: David Date: Sun, 16 Nov 2014 21:39:58 -0500 Subject: [PATCH 3/4] Move function to increase DRY --- test/test_importer.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/test/test_importer.py b/test/test_importer.py index e4aa32099..52c8a0f39 100644 --- a/test/test_importer.py +++ b/test/test_importer.py @@ -334,6 +334,17 @@ class NonAutotaggedImportTest(_common.TestCase, ImportHelper): self.assertTrue(os.path.islink(filename)) self.assertEqual(os.readlink(filename), mediafile.path) + +def create_archive(session): + (handle, path) = mkstemp(dir=session.temp_dir) + os.close(handle) + archive = ZipFile(path, mode='w') + archive.write(os.path.join(_common.RSRC, 'full.mp3'), + 'full.mp3') + archive.close() + return path + + class RmTempTest(unittest.TestCase, ImportHelper): """Tests that temporarily extracted archives are properly removed after usage. @@ -349,7 +360,7 @@ class RmTempTest(unittest.TestCase, ImportHelper): self.teardown_beets() def test_rm(self): - zip_path = self.create_archive() + zip_path = create_archive(self) archive_task = importer.ArchiveImportTask(zip_path) archive_task.extract() tmp_path = archive_task.toppath @@ -376,7 +387,7 @@ class ImportZipTest(unittest.TestCase, ImportHelper): self.teardown_beets() def test_import_zip(self): - zip_path = self.create_archive() + zip_path = create_archive(self) self.assertEqual(len(self.lib.items()), 0) self.assertEqual(len(self.lib.albums()), 0) @@ -385,15 +396,6 @@ class ImportZipTest(unittest.TestCase, ImportHelper): self.assertEqual(len(self.lib.items()), 1) self.assertEqual(len(self.lib.albums()), 1) - def create_archive(self): - (handle, path) = mkstemp(dir=self.temp_dir) - os.close(handle) - archive = ZipFile(path, mode='w') - archive.write(os.path.join(_common.RSRC, 'full.mp3'), - 'full.mp3') - archive.close() - return path - class ImportTarTest(ImportZipTest): From 5f1f6bbd04029e7135156cad9a09d0e871f431de Mon Sep 17 00:00:00 2001 From: David Date: Sun, 16 Nov 2014 21:53:33 -0500 Subject: [PATCH 4/4] Remove function from RmTempTest --- test/test_importer.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/test/test_importer.py b/test/test_importer.py index 52c8a0f39..18f16254a 100644 --- a/test/test_importer.py +++ b/test/test_importer.py @@ -369,14 +369,6 @@ class RmTempTest(unittest.TestCase, ImportHelper): archive_task.finalize(self) self.assertFalse(os.path.exists(tmp_path)) - def create_archive(self): - (handle, path) = mkstemp(dir=self.temp_dir) - os.close(handle) - archive = ZipFile(path, mode='w') - archive.write(os.path.join(_common.RSRC, 'full.mp3'), - 'full.mp3') - archive.close() - return path class ImportZipTest(unittest.TestCase, ImportHelper):