def test_unicode_slash_removal(s): if os.name == "nt": pat = FileFromPattern(u'C:\\a\\b\\<unislash>') s.assertEquals(pat.format(s.b), 'C:\\a\\b\\foo_bar.ogg') else: pat = FileFromPattern(u'/a/b/<unislash>') s.assertEquals(pat.format(s.b), '/a/b/foo_bar.ogg')
def test_escape_slash(s): fpat = FileFromPattern('<~filename>') pat = Pattern('<~filename>') wpat = FileFromPattern(r'\\<artist>\\ "<title>') s.assertEquals(fpat.format(s.a), "_path_to_a.mp3") s.assertEquals(pat.format(s.a), "/path/to/a.mp3") s.assertEquals(wpat.format(s.a), "\\Artist\\ \"Title5.mp3")
def test_ext_case_preservation(s): x = s.AudioFile({ '~filename':'/tmp/Xx.Flac', 'title':'Xx' }) # If pattern has a particular ext, preserve case of ext p1 = FileFromPattern('<~basename>') s.assertEquals(p1.format(x), 'Xx.Flac') p2 = FileFromPattern('<title>.FLAC') s.assertEquals(p2.format(x), 'Xx.FLAC') # If pattern doesn't have a particular ext, lowercase ext p3 = FileFromPattern('<title>') s.assertEquals(p3.format(x), 'Xx.flac')
def test_ext_case_preservation(s): x = s.AudioFile({'~filename': '/tmp/Xx.Flac', 'title': 'Xx'}) # If pattern has a particular ext, preserve case of ext p1 = FileFromPattern('<~basename>') s.assertEquals(p1.format(x), 'Xx.Flac') p2 = FileFromPattern('<title>.FLAC') s.assertEquals(p2.format(x), 'Xx.FLAC') # If pattern doesn't have a particular ext, lowercase ext p3 = FileFromPattern('<title>') s.assertEquals(p3.format(x), 'Xx.flac')
def test_escape_slash(s): fpat = FileFromPattern('<~filename>') pat = Pattern('<~filename>') wpat = FileFromPattern(r'\\<artist>\\ "<title>') s.assertEquals(fpat.format(s.a), "_path_to_a.mp3") s.assertEquals(pat.format(s.a), "/path/to/a.mp3") if os.name != "nt": s.assertEquals(wpat.format(s.a), "\\Artist\\ \"Title5.mp3") else: # FIXME.. pass
def test_raw_slash_preservation(s): if os.name == "nt": pat = FileFromPattern('C:\\a\\b\\<genre>') s.assertEquals(pat.format(s.a), 'C:\\a\\b\\.mp3') s.assertEquals(pat.format(s.b), 'C:\\a\\b\\.ogg') s.assertEquals(pat.format(s.c), 'C:\\a\\b\\_, _.flac') else: pat = FileFromPattern('/a/b/<genre>') s.assertEquals(pat.format(s.a), '/a/b/.mp3') s.assertEquals(pat.format(s.b), '/a/b/.ogg') s.assertEquals(pat.format(s.c), '/a/b/_, _.flac')
def test_specialcase_anti_ext(s): p1 = FileFromPattern('<~filename>') p2 = FileFromPattern('<~dirname>_<~basename>') s.assertEquals(p1.format(s.a), p2.format(s.a)) s.assertEquals(p1.format(s.a), '_path_to_a.mp3') s.assertEquals(p1.format(s.b), p2.format(s.b)) s.assertEquals(p1.format(s.b), '_path_to_b.ogg') s.assertEquals(p1.format(s.c), p2.format(s.c)) s.assertEquals(p1.format(s.c), '_one_more_a.flac')
def __preview(self, songs): model = self.view.get_model() if songs is None: songs = [row[0] for row in model] pattern = self.combo.get_child().get_text().decode("utf-8") try: pattern = FileFromPattern(pattern) except ValueError: qltk.ErrorMessage( self, _("Path is not absolute"), _("The pattern\n\t<b>%s</b>\ncontains / but " "does not start from root. To avoid misnamed " "folders, root your pattern by starting " "it with / or ~/.") % (util.escape(pattern))).run() return else: if self.combo.get_child().get_text(): self.combo.prepend_text(self.combo.get_child().get_text()) self.combo.write(const.NBP) orignames = [song["~filename"] for song in songs] newnames = [pattern.format(song) for song in songs] for f in self.filters: if f.active: newnames = f.filter_list(orignames, newnames) model.clear() for song, newname in zip(songs, newnames): basename = fsdecode(song("~basename")) newname = fsdecode(newname) model.append(row=[song, basename, newname]) self.preview.set_sensitive(False) self.save.set_sensitive(bool(self.combo.get_child().get_text())) for song in songs: if not song.is_file: self.set_sensitive(False) break else: self.set_sensitive(True)
def __preview(self, songs): model = self.view.get_model() if songs is None: songs = [row[0] for row in model] pattern = self.combo.child.get_text().decode("utf-8") try: pattern = FileFromPattern(pattern) except ValueError: qltk.ErrorMessage( self, _("Path is not absolute"), _("The pattern\n\t<b>%s</b>\ncontains / but " "does not start from root. To avoid misnamed " "folders, root your pattern by starting " "it with / or ~/.")%( util.escape(pattern))).run() return else: if self.combo.child.get_text(): self.combo.prepend_text(self.combo.child.get_text()) self.combo.write(const.NBP) orignames = [song["~filename"] for song in songs] newnames = [util.fsdecode(util.fsencode(pattern.format(song))) for song in songs] for f in self.filters: if f.active: newnames = f.filter_list(orignames, newnames) model.clear() for song, newname in zip(songs, newnames): basename = util.fsdecode(song("~basename")) model.append(row=[song, basename, newname]) self.preview.set_sensitive(False) self.save.set_sensitive(bool(self.combo.child.get_text())) for song in songs: if not song.is_file: self.set_sensitive(False) break else: self.set_sensitive(True)
def test_same2(s): fpat = FileFromPattern('<~filename>') pat = Pattern('<~filename>') s.assertEquals(fpat.format_list(s.a), set([fpat.format(s.a)])) s.assertEquals(pat.format_list(s.a), set([pat.format(s.a)]))
def test_number_dot_title_dot(s): pat = FileFromPattern('<tracknumber>. <title>.') s.assertEquals(pat.format(s.a), '05. Title5..mp3') s.assertEquals(pat.format(s.b), '06. Title6..ogg') s.assertEquals(pat.format(s.c), '. test_subdir..flac')
def test_backslash_conversion_win32(s): if os.name == 'nt': pat = FileFromPattern(r'Z:\<artist>\<title>') s.assertEquals(pat.format(s.a), 'Z:\Artist\Title5.mp3')
def test_raw_slash_preservation(s): pat = FileFromPattern('/a/b/<genre>') s.assertEquals(pat.format(s.a), '/a/b/.mp3') s.assertEquals(pat.format(s.b), '/a/b/.ogg') s.assertEquals(pat.format(s.c), '/a/b/_, _.flac')
def test_tracknumber_decimals(s): pat = FileFromPattern('<tracknumber>. <title>') s.assertEquals(pat.format(s.a), '05. Title5.mp3') s.assertEquals(pat.format(s.e), '0007. Title7.mp3')
def test_unicode_slash_removal(s): pat = FileFromPattern(u'/a/b/<unislash>') s.assertEquals(pat.format(s.b), '/a/b/foo_bar.ogg')
def test_backslash_conversion_win32(s): if os.name == 'nt': pat = FileFromPattern(r'Z:\<artist>\<title>') s.assertEquals(pat.format(s.a), 'Z:/Artist/Title5.mp3')