mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-20 21:43:33 -07: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 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture
|
||||||
tag.OriginalReleaseDate.HasValue.Should().BeFalse();
|
tag.OriginalReleaseDate.HasValue.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
private TrackFile GivenPopulatedTrackfile()
|
private TrackFile GivenPopulatedTrackfile(int mediumOffset)
|
||||||
{
|
{
|
||||||
var meta = Builder<ArtistMetadata>.CreateNew().Build();
|
var meta = Builder<ArtistMetadata>.CreateNew().Build();
|
||||||
var artist = Builder<Artist>.CreateNew()
|
var artist = Builder<Artist>.CreateNew()
|
||||||
|
@ -337,6 +337,8 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var media = Builder<Medium>.CreateListOfSize(2).Build() as List<Medium>;
|
var media = Builder<Medium>.CreateListOfSize(2).Build() as List<Medium>;
|
||||||
|
media.ForEach(x => x.Number += mediumOffset);
|
||||||
|
|
||||||
var release = Builder<AlbumRelease>.CreateNew()
|
var release = Builder<AlbumRelease>.CreateNew()
|
||||||
.With(x => x.Album = album)
|
.With(x => x.Album = album)
|
||||||
.With(x => x.Media = media)
|
.With(x => x.Media = media)
|
||||||
|
@ -349,9 +351,9 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture
|
||||||
.With(x => x.AlbumRelease = release)
|
.With(x => x.AlbumRelease = release)
|
||||||
.With(x => x.ArtistMetadata = meta)
|
.With(x => x.ArtistMetadata = meta)
|
||||||
.TheFirst(5)
|
.TheFirst(5)
|
||||||
.With(x => x.MediumNumber = 1)
|
.With(x => x.MediumNumber = 1 + mediumOffset)
|
||||||
.TheNext(5)
|
.TheNext(5)
|
||||||
.With(x => x.MediumNumber = 2)
|
.With(x => x.MediumNumber = 2 + mediumOffset)
|
||||||
.Build() as List<Track>;
|
.Build() as List<Track>;
|
||||||
release.Tracks = tracks;
|
release.Tracks = tracks;
|
||||||
|
|
||||||
|
@ -366,12 +368,24 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture
|
||||||
[Test]
|
[Test]
|
||||||
public void get_metadata_should_not_fail_with_missing_country()
|
public void get_metadata_should_not_fail_with_missing_country()
|
||||||
{
|
{
|
||||||
var file = GivenPopulatedTrackfile();
|
var file = GivenPopulatedTrackfile(0);
|
||||||
var tag = Subject.GetTrackMetadata(file);
|
var tag = Subject.GetTrackMetadata(file);
|
||||||
|
|
||||||
tag.MusicBrainzReleaseCountry.Should().BeNull();
|
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")]
|
[TestCase("nin.mp3")]
|
||||||
public void write_tags_should_update_trackfile_size_and_modified(string filename)
|
public void write_tags_should_update_trackfile_size_and_modified(string filename)
|
||||||
{
|
{
|
||||||
|
@ -381,7 +395,7 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture
|
||||||
|
|
||||||
GivenFileCopy(filename);
|
GivenFileCopy(filename);
|
||||||
|
|
||||||
var file = GivenPopulatedTrackfile();
|
var file = GivenPopulatedTrackfile(0);
|
||||||
|
|
||||||
file.Path = copiedFile;
|
file.Path = copiedFile;
|
||||||
Subject.WriteTags(file, false, true);
|
Subject.WriteTags(file, false, true);
|
||||||
|
|
|
@ -107,7 +107,8 @@ namespace NzbDrone.Core.MediaFiles
|
||||||
Album = album.Title,
|
Album = album.Title,
|
||||||
Disc = (uint)track.MediumNumber,
|
Disc = (uint)track.MediumNumber,
|
||||||
DiscCount = (uint)release.Media.Count,
|
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,
|
Date = release.ReleaseDate,
|
||||||
Year = (uint)album.ReleaseDate?.Year,
|
Year = (uint)album.ReleaseDate?.Year,
|
||||||
OriginalReleaseDate = album.ReleaseDate,
|
OriginalReleaseDate = album.ReleaseDate,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue