From 3b62636e837c2474d461609225b0aa4256eae7c3 Mon Sep 17 00:00:00 2001 From: Taloth Saldono Date: Sat, 14 Nov 2020 21:20:03 +0100 Subject: [PATCH] Fixed: Truncating too long filenames with unicode characters (cherry picked from commit 158e31d54aab2419e79b3a7b2f3ef918954a440b) --- .../TruncatedTrackTitlesFixture.cs | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/TruncatedTrackTitlesFixture.cs b/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/TruncatedTrackTitlesFixture.cs index f297c6f33..f345e3614 100644 --- a/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/TruncatedTrackTitlesFixture.cs +++ b/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/TruncatedTrackTitlesFixture.cs @@ -156,5 +156,45 @@ namespace NzbDrone.Core.Test.OrganizerTests.FileNameBuilderTests result.Should().Be("Lorem ipsum dolor sit amet, consectetur adipiscing elit Maecenas et magna sem Morbi vitae volutpat quam, id porta arcu Orci varius natoque penatibus et magnis dis parturient montes nascetur ridiculus musu Cras - Hail to the King - 01 - First... [MP3-320]"); result.Length.Should().BeLessOrEqualTo(255); } + + [Test] + public void should_truncate_titles_measuring_artist_title_bytes() + { + _artist.Name = "Lor\u00E9m ipsum dolor sit amet, consectetur adipiscing elit Maecenas et magna sem Morbi vitae volutpat quam, id porta arcu Orci varius natoque penatibus et magnis dis parturient montes nascetur ridiculus musu"; + _namingConfig.StandardTrackFormat = "{Artist Name} - {Album Title} - {track:00} - {Track Title} [{Quality Title}]"; + + var result = Subject.BuildTrackFileName(new List { _tracks.First() }, _artist, _album, _trackFile); + result.GetByteCount().Should().BeLessOrEqualTo(255); + + result.Should().Be("Lor\u00E9m ipsum dolor sit amet, consectetur adipiscing elit Maecenas et magna sem Morbi vitae volutpat quam, id porta arcu Orci varius natoque penatibus et magnis dis parturient montes nascetur ridiculus musu - Hail to the King - 01 - First Trac... [MP3-320]"); + } + + [Test] + public void should_truncate_titles_measuring_episode_title_bytes() + { + _artist.Name = "Lorem ipsum dolor sit amet, consectetur adipiscing elit Maecenas et magna sem Morbi vitae volutpat quam, id porta arcu Orci varius natoque penatibus et magnis dis parturient montes nascetur ridiculus musu"; + _namingConfig.StandardTrackFormat = "{Artist Name} - {Album Title} - {track:00} - {Track Title} [{Quality Title}]"; + + _tracks.First().Title = "Episod\u00E9 Track Title"; + + var result = Subject.BuildTrackFileName(new List { _tracks.First() }, _artist, _album, _trackFile); + result.GetByteCount().Should().BeLessOrEqualTo(255); + + result.Should().Be("Lorem ipsum dolor sit amet, consectetur adipiscing elit Maecenas et magna sem Morbi vitae volutpat quam, id porta arcu Orci varius natoque penatibus et magnis dis parturient montes nascetur ridiculus musu - Hail to the King - 01 - Episod\u00E9 Tr... [MP3-320]"); + } + + [Test] + public void should_truncate_titles_measuring_episode_title_bytes_middle() + { + _artist.Name = "Lorem ipsum dolor sit amet, consectetur adipiscing elit Maecenas et magna sem Morbi vitae volutpat quam, id porta arcu Orci varius natoque penatibus et magnis dis parturient montes nascetur ridiculus musu"; + _namingConfig.StandardTrackFormat = "{Artist Name} - {Album Title} - {track:00} - {Track Title} [{Quality Title}]"; + + _tracks.First().Title = "Episode Track T\u00E9tle"; + + var result = Subject.BuildTrackFileName(new List { _tracks.First() }, _artist, _album, _trackFile); + result.GetByteCount().Should().BeLessOrEqualTo(255); + + result.Should().Be("Lorem ipsum dolor sit amet, consectetur adipiscing elit Maecenas et magna sem Morbi vitae volutpat quam, id porta arcu Orci varius natoque penatibus et magnis dis parturient montes nascetur ridiculus musu - Hail to the King - 01 - Episode Tra... [MP3-320]"); + } } }