mirror of
https://github.com/lidarr/Lidarr
synced 2025-02-23 14:30:49 +00:00
Fixed: NRE when tagging an album with omitted media
This commit is contained in:
parent
223d493d05
commit
c4b7e04a96
2 changed files with 21 additions and 6 deletions
|
@ -325,7 +325,7 @@ public void should_ignore_non_parsable_id3v23_date()
|
|||
tag.OriginalReleaseDate.HasValue.Should().BeFalse();
|
||||
}
|
||||
|
||||
private TrackFile GivenPopulatedTrackfile()
|
||||
private TrackFile GivenPopulatedTrackfile(int mediumOffset)
|
||||
{
|
||||
var meta = Builder<ArtistMetadata>.CreateNew().Build();
|
||||
var artist = Builder<Artist>.CreateNew()
|
||||
|
@ -337,6 +337,8 @@ private TrackFile GivenPopulatedTrackfile()
|
|||
.Build();
|
||||
|
||||
var media = Builder<Medium>.CreateListOfSize(2).Build() as List<Medium>;
|
||||
media.ForEach(x => x.Number += mediumOffset);
|
||||
|
||||
var release = Builder<AlbumRelease>.CreateNew()
|
||||
.With(x => x.Album = album)
|
||||
.With(x => x.Media = media)
|
||||
|
@ -349,9 +351,9 @@ private TrackFile GivenPopulatedTrackfile()
|
|||
.With(x => x.AlbumRelease = release)
|
||||
.With(x => x.ArtistMetadata = meta)
|
||||
.TheFirst(5)
|
||||
.With(x => x.MediumNumber = 1)
|
||||
.With(x => x.MediumNumber = 1 + mediumOffset)
|
||||
.TheNext(5)
|
||||
.With(x => x.MediumNumber = 2)
|
||||
.With(x => x.MediumNumber = 2 + mediumOffset)
|
||||
.Build() as List<Track>;
|
||||
release.Tracks = tracks;
|
||||
|
||||
|
@ -366,12 +368,24 @@ private TrackFile GivenPopulatedTrackfile()
|
|||
[Test]
|
||||
public void get_metadata_should_not_fail_with_missing_country()
|
||||
{
|
||||
var file = GivenPopulatedTrackfile();
|
||||
var file = GivenPopulatedTrackfile(0);
|
||||
var tag = Subject.GetTrackMetadata(file);
|
||||
|
||||
tag.MusicBrainzReleaseCountry.Should().BeNull();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_fail_if_media_has_been_omitted()
|
||||
{
|
||||
// make sure that we aren't relying on index of items in
|
||||
// Media being the same as the medium number
|
||||
|
||||
var file = GivenPopulatedTrackfile(100);
|
||||
var tag = Subject.GetTrackMetadata(file);
|
||||
|
||||
tag.Media.Should().NotBeNull();
|
||||
}
|
||||
|
||||
[TestCase("nin.mp3")]
|
||||
public void write_tags_should_update_trackfile_size_and_modified(string filename)
|
||||
{
|
||||
|
@ -381,7 +395,7 @@ public void write_tags_should_update_trackfile_size_and_modified(string filename
|
|||
|
||||
GivenFileCopy(filename);
|
||||
|
||||
var file = GivenPopulatedTrackfile();
|
||||
var file = GivenPopulatedTrackfile(0);
|
||||
|
||||
file.Path = copiedFile;
|
||||
Subject.WriteTags(file, false, true);
|
||||
|
|
|
@ -107,7 +107,8 @@ public AudioTag GetTrackMetadata(TrackFile trackfile)
|
|||
Album = album.Title,
|
||||
Disc = (uint)track.MediumNumber,
|
||||
DiscCount = (uint)release.Media.Count,
|
||||
Media = release.Media[track.MediumNumber - 1].Format,
|
||||
// We may have omitted media so index in the list isn't the same as medium number
|
||||
Media = release.Media.SingleOrDefault(x => x.Number == track.MediumNumber).Format,
|
||||
Date = release.ReleaseDate,
|
||||
Year = (uint)album.ReleaseDate?.Year,
|
||||
OriginalReleaseDate = album.ReleaseDate,
|
||||
|
|
Loading…
Reference in a new issue