def test_issue133(self): scanner = Scanner() scanner.queue_folder("folder") scanner.run() track = Track.select().first() self.assertNotIn("\x00", track.title)
def setUp(self): super().setUp() with db_session: FolderManager.add("Folder", "tests/assets/folder") scanner = Scanner() scanner.queue_folder("Folder") scanner.run() self.trackid = Track.get().id
def test_issue(self): subdir = os.path.join(self.__dir, " ") os.makedirs(subdir) shutil.copyfile("tests/assets/folder/silence.mp3", os.path.join(subdir, "silence.mp3")) scanner = Scanner() scanner.queue_folder("folder") scanner.run() del scanner
def test_issue(self): os.mkdir(os.path.join(self.__dir.encode(), b"\xe6")) shutil.copyfile( "tests/assets/folder/silence.mp3", os.path.join(self.__dir.encode(), b"\xe6", b"silence.mp3"), ) with db_session: scanner = Scanner() scanner.queue_folder("folder") scanner.run()
def setUp(self): super(TranscodingTestCase, self).setUp() self._patch_client() with db_session: folder = FolderManager.add("Folder", "tests/assets/folder") scanner = Scanner() scanner.queue_folder("Folder") scanner.run() self.trackid = Track.get().id
def setUp(self): super().setUp() with db_session: FolderManager.add("folder", os.path.abspath("tests/assets/folder")) scanner = Scanner() scanner.queue_folder("folder") scanner.run() self.trackid = Track.select().first().id self.userid = User.get(name="alice").id
def test_issue(self): firstsubdir = tempfile.mkdtemp(dir=self.__dir) subdir = firstsubdir for _ in range(4): subdir = tempfile.mkdtemp(dir=subdir) shutil.copyfile( "tests/assets/folder/silence.mp3", os.path.join(subdir, "silence.mp3") ) with db_session: scanner = Scanner() scanner.queue_folder("folder") scanner.run() shutil.rmtree(firstsubdir) with db_session: scanner = Scanner() scanner.queue_folder("folder") scanner.run()
class ScannerTestCase(unittest.TestCase): def setUp(self): db.init_database("sqlite:") with db_session: folder = FolderManager.add("folder", os.path.abspath("tests/assets/folder")) self.assertIsNotNone(folder) self.folderid = folder.id self.__scan() def tearDown(self): db.release_database() @contextmanager def __temporary_track_copy(self): track = db.Track.select().first() with tempfile.NamedTemporaryFile( dir=os.path.dirname(track.path)) as tf: with io.open(track.path, "rb") as f: tf.write(f.read()) yield tf def __scan(self, force=False): self.scanner = Scanner(force=force) self.scanner.queue_folder("folder") self.scanner.run() commit() @db_session def test_scan(self): self.assertEqual(db.Track.select().count(), 1) self.assertRaises(TypeError, self.scanner.queue_folder, None) self.assertRaises(TypeError, self.scanner.queue_folder, db.Folder[self.folderid]) @db_session def test_rescan(self): self.__scan() self.assertEqual(db.Track.select().count(), 1) @db_session def test_force_rescan(self): self.__scan(True) self.assertEqual(db.Track.select().count(), 1) @db_session def test_scan_file(self): self.scanner.scan_file("/some/inexistent/path") commit() self.assertEqual(db.Track.select().count(), 1) @db_session def test_remove_file(self): track = db.Track.select().first() self.assertRaises(TypeError, self.scanner.remove_file, None) self.assertRaises(TypeError, self.scanner.remove_file, track) self.scanner.remove_file("/some/inexistent/path") commit() self.assertEqual(db.Track.select().count(), 1) self.scanner.remove_file(track.path) self.scanner.prune() commit() self.assertEqual(db.Track.select().count(), 0) self.assertEqual(db.Album.select().count(), 0) self.assertEqual(db.Artist.select().count(), 0) @db_session def test_move_file(self): track = db.Track.select().first() self.assertRaises(TypeError, self.scanner.move_file, None, "string") self.assertRaises(TypeError, self.scanner.move_file, track, "string") self.assertRaises(TypeError, self.scanner.move_file, "string", None) self.assertRaises(TypeError, self.scanner.move_file, "string", track) self.scanner.move_file("/some/inexistent/path", track.path) commit() self.assertEqual(db.Track.select().count(), 1) self.scanner.move_file(track.path, track.path) commit() self.assertEqual(db.Track.select().count(), 1) self.assertRaises(Exception, self.scanner.move_file, track.path, "/some/inexistent/path") with self.__temporary_track_copy() as tf: self.__scan() self.assertEqual(db.Track.select().count(), 2) self.scanner.move_file(tf.name, track.path) commit() self.assertEqual(db.Track.select().count(), 1) track = db.Track.select().first() new_path = track.path.replace("silence", "silence_moved") self.scanner.move_file(track.path, new_path) commit() self.assertEqual(db.Track.select().count(), 1) self.assertEqual(track.path, new_path) @db_session def test_rescan_corrupt_file(self): track = db.Track.select().first() with self.__temporary_track_copy() as tf: self.__scan() self.assertEqual(db.Track.select().count(), 2) tf.seek(0, 0) tf.write(b"\x00" * 4096) tf.truncate() self.__scan(True) self.assertEqual(db.Track.select().count(), 1) @db_session def test_rescan_removed_file(self): track = db.Track.select().first() with self.__temporary_track_copy() as tf: self.__scan() self.assertEqual(db.Track.select().count(), 2) self.__scan() self.assertEqual(db.Track.select().count(), 1) @db_session def test_scan_tag_change(self): folder = db.Folder[self.folderid] with self.__temporary_track_copy() as tf: self.__scan() copy = db.Track.get(path=tf.name) self.assertEqual(copy.artist.name, "Some artist") self.assertEqual(copy.album.name, "Awesome album") tags = mutagen.File(copy.path, easy=True) tags["artist"] = "Renamed artist" tags["album"] = "Crappy album" tags.save() self.__scan(True) self.assertEqual(copy.artist.name, "Renamed artist") self.assertEqual(copy.album.name, "Crappy album") self.assertIsNotNone(db.Artist.get(name="Some artist")) self.assertIsNotNone(db.Album.get(name="Awesome album")) def test_stats(self): stats = self.scanner.stats() self.assertEqual(stats.added.artists, 1) self.assertEqual(stats.added.albums, 1) self.assertEqual(stats.added.tracks, 1) self.assertEqual(stats.deleted.artists, 0) self.assertEqual(stats.deleted.albums, 0) self.assertEqual(stats.deleted.tracks, 0)
def do_scan(self): scanner = Scanner() scanner.queue_folder("folder") scanner.run() del scanner