banshee r3917 - in trunk/banshee: . src/Core/Banshee.Core/Banshee.Streaming tests/Banshee.Core
- From: gburt svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r3917 - in trunk/banshee: . src/Core/Banshee.Core/Banshee.Streaming tests/Banshee.Core
- Date: Tue, 13 May 2008 00:20:22 +0100 (BST)
Author: gburt
Date: Mon May 12 23:20:22 2008
New Revision: 3917
URL: http://svn.gnome.org/viewvc/banshee?rev=3917&view=rev
Log:
2008-05-12 Gabriel Burt <gabriel burt gmail com>
* src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs: Patch
from Nicholas Parker working around bug in TagLib# where setting the genre
to string [] {null} would crash.
* tests/Banshee.Core/TaglibReadWriteTests.cs: Unit test for above fix.
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs
trunk/banshee/tests/Banshee.Core/TaglibReadWriteTests.cs
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs Mon May 12 23:20:22 2008
@@ -58,7 +58,10 @@
TagLib.File file = StreamTagger.ProcessUri (track.Uri);
file.Tag.Performers = new string [] { track.ArtistName };
file.Tag.Album = track.AlbumTitle;
- file.Tag.Genres = new string [] { track.Genre };
+ /* Bug in taglib-sharp-2.0.3.0: Crash if you send it a genre of "{ null }"
+ * on a song with both ID3v1 and ID3v2 metadata. It's happy with "{}", though.
+ * (see http://forum.taglib-sharp.com/viewtopic.php?f=5&t=239 ) */
+ file.Tag.Genres = (track.Genre == null) ? new string[] {} : new string [] { track.Genre };
file.Tag.Title = track.TrackTitle;
file.Tag.Track = (uint)track.TrackNumber;
file.Tag.TrackCount = (uint)track.TrackCount;
Modified: trunk/banshee/tests/Banshee.Core/TaglibReadWriteTests.cs
==============================================================================
--- trunk/banshee/tests/Banshee.Core/TaglibReadWriteTests.cs (original)
+++ trunk/banshee/tests/Banshee.Core/TaglibReadWriteTests.cs Mon May 12 23:20:22 2008
@@ -49,17 +49,28 @@
public void TestSystemIO ()
{
Banshee.IO.Provider.SetProvider (new Banshee.IO.SystemIO.Provider ());
- WriteMetadata (files);
+ WriteMetadata (files, "My Genre");
}
[Test]
public void TestUnixIO ()
{
Banshee.IO.Provider.SetProvider (new Banshee.IO.Unix.Provider ());
- WriteMetadata (files);
+ WriteMetadata (files, "My Genre");
}
- private static void WriteMetadata (string [] files)
+ [Test]
+ public void TestNullGenreBug ()
+ {
+ // Bug in taglib-sharp-2.0.3.0: Crash if you send it a genre of "{ null }" on
+ // a song with both ID3v1 and ID3v2 metadata. It's happy with "{}", though.
+ // (see http://forum.taglib-sharp.com/viewtopic.php?f=5&t=239 )
+ // This tests our workaround.
+ Banshee.IO.Provider.SetProvider (new Banshee.IO.Unix.Provider ());
+ WriteMetadata (files, null);
+ }
+
+ private static void WriteMetadata (string [] files, string genre)
{
SafeUri newuri = null;
bool write_metadata = LibrarySchema.WriteMetadata.Get();
@@ -71,7 +82,7 @@
Banshee.IO.File.Copy (new SafeUri (uri), newuri, true);
- ChangeAndVerify (newuri);
+ ChangeAndVerify (newuri, genre);
});
} finally {
LibrarySchema.WriteMetadata.Set (write_metadata);
@@ -82,7 +93,7 @@
#region Utility methods
- private static void ChangeAndVerify (SafeUri uri)
+ private static void ChangeAndVerify (SafeUri uri, string genre)
{
TagLib.File file = StreamTagger.ProcessUri (uri);
TrackInfo track = new TrackInfo ();
@@ -92,7 +103,7 @@
track.TrackTitle = "My Title";
track.ArtistName = "My Artist";
track.AlbumTitle = "My Album";
- track.Genre = "My Genre";
+ track.Genre = genre;
track.TrackNumber = 4;
track.Disc = 4;
track.Year = 1999;
@@ -109,7 +120,7 @@
Assert.AreEqual ("My Title", track.TrackTitle);
Assert.AreEqual ("My Artist", track.ArtistName);
Assert.AreEqual ("My Album", track.AlbumTitle);
- Assert.AreEqual ("My Genre", track.Genre);
+ Assert.AreEqual (genre, track.Genre);
Assert.AreEqual (4, track.TrackNumber);
Assert.AreEqual (4, track.Disc);
Assert.AreEqual (1999, track.Year);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]