From f5e336747a5c252b2a6fd4ffd6e7da8605654f18 Mon Sep 17 00:00:00 2001 From: Duncan Overbruck Date: Tue, 31 Aug 2021 14:46:43 +0200 Subject: [PATCH] Add permissions test case for set_art event --- beetsplug/permissions.py | 1 - test/test_permissions.py | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/beetsplug/permissions.py b/beetsplug/permissions.py index 5006dc38b..8642eeb99 100644 --- a/beetsplug/permissions.py +++ b/beetsplug/permissions.py @@ -81,7 +81,6 @@ class Permissions(BeetsPlugin): files.append(item.path) dirs.update(dirs_in_library(lib.directory, item.path)) elif album: - files = [] for album_item in album.items(): files.append(album_item.path) dirs.update(dirs_in_library(lib.directory, album_item.path)) diff --git a/test/test_permissions.py b/test/test_permissions.py index ed84798f1..9397fe093 100644 --- a/test/test_permissions.py +++ b/test/test_permissions.py @@ -10,6 +10,7 @@ import unittest from mock import patch, Mock from test.helper import TestHelper +from test._common import touch from beets.util import displayable_path from beetsplug.permissions import (check_permissions, convert_perm, @@ -82,6 +83,25 @@ class PermissionsPluginTest(unittest.TestCase, TestHelper): def test_convert_perm_from_int(self): self.assertEqual(convert_perm(10), 8) + def test_permissions_on_set_art(self): + self.do_set_art(True) + + @patch("os.chmod", Mock()) + def test_failing_permissions_on_set_art(self): + self.do_set_art(False) + + def do_set_art(self, expect_success): + if platform.system() == 'Windows': + self.skipTest('permissions not available on Windows') + self.importer = self.create_importer() + self.importer.run() + album = self.lib.albums().get() + artpath = os.path.join(self.temp_dir, b'cover.jpg') + touch(artpath) + album.set_art(artpath) + self.assertEqual(expect_success, + check_permissions(album.artpath, 0o777)) + def suite(): return unittest.TestLoader().loadTestsFromName(__name__)