]> granicus.if.org Git - taglib/commitdiff
New utility class to make sure temporary files are always deleted
authorLukáš Lalinský <lalinsky@gmail.com>
Mon, 2 Nov 2009 19:53:15 +0000 (19:53 +0000)
committerLukáš Lalinský <lalinsky@gmail.com>
Mon, 2 Nov 2009 19:53:15 +0000 (19:53 +0000)
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1043988 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

tests/test_aiff.cpp
tests/test_asf.cpp
tests/test_fileref.cpp
tests/test_flac.cpp
tests/test_id3v2.cpp
tests/test_mp4.cpp
tests/test_ogg.cpp
tests/test_oggflac.cpp
tests/test_riff.cpp
tests/utils.h

index be94b07f74b507da02edcd25c7ae43563d1775ee..54f9370286f8f414df35f9deb307c29cb30a2abf 100644 (file)
@@ -19,12 +19,11 @@ public:
 
   void testReading()
   {
-    string filename = copyFile("empty", ".aiff");
+    ScopedFileCopy copy("empty", ".aiff");
+    string filename = copy.fileName();
 
     RIFF::AIFF::File *f = new RIFF::AIFF::File(filename.c_str());
     CPPUNIT_ASSERT_EQUAL(689, f->audioProperties()->bitrate());
-
-    deleteFile(filename);
   }
 
 };
index 2b1e7aa4912a19428e6f3617f29b4985d8fc49bd..8de44ea4aca295b2e9ac47ec01d7c36acae41da3 100644 (file)
@@ -39,7 +39,8 @@ public:
 
   void testSaveMultipleValues()
   {
-    string newname = copyFile("silence-1", ".wma");
+    ScopedFileCopy copy("silence-1", ".wma");
+    string newname = copy.fileName();
 
     ASF::File *f = new ASF::File(newname.c_str());
     ASF::AttributeList values;
@@ -52,13 +53,12 @@ public:
     f = new ASF::File(newname.c_str());
     CPPUNIT_ASSERT_EQUAL(2, (int)f->tag()->attributeListMap()["WM/AlbumTitle"].size());
     delete f;
-
-    deleteFile(newname);
   }
 
   void testSaveStream()
   {
-    string newname = copyFile("silence-1", ".wma");
+    ScopedFileCopy copy("silence-1", ".wma");
+    string newname = copy.fileName();
 
     ASF::File *f = new ASF::File(newname.c_str());
     ASF::AttributeList values;
@@ -72,13 +72,12 @@ public:
     f = new ASF::File(newname.c_str());
     CPPUNIT_ASSERT_EQUAL(43, f->tag()->attributeListMap()["WM/AlbumTitle"][0].stream());
     delete f;
-
-    deleteFile(newname);
   }
 
   void testSaveLanguage()
   {
-    string newname = copyFile("silence-1", ".wma");
+    ScopedFileCopy copy("silence-1", ".wma");
+    string newname = copy.fileName();
 
     ASF::File *f = new ASF::File(newname.c_str());
     ASF::AttributeList values;
@@ -94,8 +93,6 @@ public:
     CPPUNIT_ASSERT_EQUAL(32, f->tag()->attributeListMap()["WM/AlbumTitle"][0].stream());
     CPPUNIT_ASSERT_EQUAL(56, f->tag()->attributeListMap()["WM/AlbumTitle"][0].language());
     delete f;
-
-    deleteFile(newname);
   }
 
 };
index b0247a3962a21e042403ea26fc0157dcc2819421..bc0c5fe18110bdaa30fa668142456d9866864daa 100644 (file)
@@ -38,7 +38,8 @@ public:
 
   void fileRefSave(const string &filename, const string &ext)
   {
-    string newname = copyFile(filename, ext);
+    ScopedFileCopy copy(filename, ext);
+    string newname = copy.fileName();
 
     FileRef *f = new FileRef(newname.c_str());
     CPPUNIT_ASSERT(!f->isNull());
@@ -77,8 +78,6 @@ public:
     CPPUNIT_ASSERT_EQUAL(f->tag()->track(), TagLib::uint(7));
     CPPUNIT_ASSERT_EQUAL(f->tag()->year(), TagLib::uint(2080));
     delete f;
-
-    deleteFile(newname);
   }
 
   void testMusepack()
index acccc871c261d56af736bfbf5195d6a71a441244..0901c69f71a15b98b3bb8520eada7d21d2ad98ef 100644 (file)
@@ -20,7 +20,8 @@ public:
 
   void testMultipleCommentBlocks()
   {
-    string newname = copyFile("multiple-vc", ".flac");
+    ScopedFileCopy copy("multiple-vc", ".flac");
+    string newname = copy.fileName();
 
     FLAC::File *f = new FLAC::File(newname.c_str());
     CPPUNIT_ASSERT_EQUAL(String("Artist 1"), f->tag()->artist());
@@ -31,8 +32,6 @@ public:
     f = new FLAC::File(newname.c_str());
     CPPUNIT_ASSERT_EQUAL(String("The Artist"), f->tag()->artist());
     delete f;
-
-    deleteFile(newname);
   }
 
 };
index 0a105069970c2bc28af6223dc494d6ea71138540..64f6461f1d1d597d3ea9d8a0ffc9b5824d37476a 100644 (file)
@@ -242,7 +242,8 @@ public:
 
   void testPOPMFromFile()
   {
-    string newname = copyFile("xing", ".mp3");
+    ScopedFileCopy copy("xing", ".mp3");
+    string newname = copy.fileName();
 
     ID3v2::PopularimeterFrame *f = new ID3v2::PopularimeterFrame();
     f->setEmail("email@example.com");
@@ -256,7 +257,6 @@ public:
     MPEG::File bar(newname.c_str());
     CPPUNIT_ASSERT_EQUAL(String("email@example.com"), dynamic_cast<ID3v2::PopularimeterFrame *>(bar.ID3v2Tag()->frameList("POPM").front())->email());
     CPPUNIT_ASSERT_EQUAL(200, dynamic_cast<ID3v2::PopularimeterFrame *>(bar.ID3v2Tag()->frameList("POPM").front())->rating());
-    deleteFile(newname);
   }
 
   // http://bugs.kde.org/show_bug.cgi?id=150481
@@ -369,7 +369,8 @@ public:
   void testSaveUTF16Comment()
   {
     String::Type defaultEncoding = ID3v2::FrameFactory::instance()->defaultTextEncoding();
-    string newname = copyFile("xing", ".mp3");
+    ScopedFileCopy copy("xing", ".mp3");
+    string newname = copy.fileName();
     ID3v2::FrameFactory::instance()->setDefaultTextEncoding(String::UTF16);
     MPEG::File foo(newname.c_str());
     foo.strip();
@@ -377,7 +378,6 @@ public:
     foo.save();
     MPEG::File bar(newname.c_str());
     CPPUNIT_ASSERT_EQUAL(String("Test comment!"), bar.tag()->comment());
-    deleteFile(newname);
     ID3v2::FrameFactory::instance()->setDefaultTextEncoding(defaultEncoding);
   }
 
index ad1195dfb6988fcdaa187ca63cf10528afd8dc20..a5b301bc5c0ab1273383533afab6909a1c13e5fe 100644 (file)
@@ -38,7 +38,8 @@ public:
 
   void testUpdateStco()
   {
-    string filename = copyFile("no-tags", ".3g2");
+    ScopedFileCopy copy("no-tags", ".3g2");
+    string filename = copy.fileName();
 
     MP4::File *f = new MP4::File(filename.c_str());
     f->tag()->setArtist(ByteVector(3000, 'x'));
@@ -80,13 +81,12 @@ public:
     }
 
     delete f;
-
-    deleteFile(filename);
   }
 
   void testFreeForm()
   {
-    string filename = copyFile("has-tags", ".m4a");
+    ScopedFileCopy copy("has-tags", ".m4a");
+    string filename = copy.fileName();
 
     MP4::File *f = new MP4::File(filename.c_str());
     CPPUNIT_ASSERT(f->tag()->itemListMap().contains("----:com.apple.iTunes:iTunNORM"));
@@ -99,13 +99,12 @@ public:
     CPPUNIT_ASSERT_EQUAL(String("Bar"), f->tag()->itemListMap()["----:org.kde.TagLib:Foo"].toStringList()[0]);
     f->save();
     delete f;
-
-    deleteFile(filename);
   }
 
   void testSaveExisingWhenIlstIsLast()
   {
-    string filename = copyFile("ilst-is-last", ".m4a");
+    ScopedFileCopy copy("ilst-is-last", ".m4a");
+    string filename = copy.fileName();
 
     MP4::File *f = new MP4::File(filename.c_str());
     CPPUNIT_ASSERT_EQUAL(String("82,164"), f->tag()->itemListMap()["----:com.apple.iTunes:replaygain_track_minmax"].toStringList()[0]);
@@ -118,13 +117,12 @@ public:
     CPPUNIT_ASSERT_EQUAL(String("82,164"), f->tag()->itemListMap()["----:com.apple.iTunes:replaygain_track_minmax"].toStringList()[0]);
     CPPUNIT_ASSERT_EQUAL(String("Pearl Jam"), f->tag()->artist());
     CPPUNIT_ASSERT_EQUAL(String("foo"), f->tag()->comment());
-
-    deleteFile(filename);
   }
 
   void test64BitAtom()
   {
-    string filename = copyFile("64bit", ".mp4");
+    ScopedFileCopy copy("64bit", ".mp4");
+    string filename = copy.fileName();
 
     MP4::File *f = new MP4::File(filename.c_str());
     CPPUNIT_ASSERT_EQUAL(true, f->tag()->itemListMap()["cpil"].toBool());
@@ -144,8 +142,6 @@ public:
     moov = atoms->atoms[0];
     // original size + 'pgap' size + padding
     CPPUNIT_ASSERT_EQUAL(long(77 + 25 + 974), moov->length);
-
-    deleteFile(filename);
   }
 
   void testGnre()
@@ -168,7 +164,8 @@ public:
 
   void testCovrWrite()
   {
-    string filename = copyFile("has-tags", ".m4a");
+    ScopedFileCopy copy("has-tags", ".m4a");
+    string filename = copy.fileName();
 
     MP4::File *f = new MP4::File(filename.c_str());
     CPPUNIT_ASSERT(f->tag()->itemListMap().contains("covr"));
@@ -189,8 +186,6 @@ public:
     CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[2].format());
     CPPUNIT_ASSERT_EQUAL(TagLib::uint(3), l[2].data().size());
     delete f;
-
-    deleteFile(filename);
   }
 
 };
index be81877eb30a192140a4059ef4bfdfb33735965c..9e845096dc840f4424d36c6f7c23baf8b42dc10e 100644 (file)
@@ -23,7 +23,8 @@ public:
 
   void testSimple()
   {
-    string newname = copyFile("empty", ".ogg");
+    ScopedFileCopy copy("empty", ".ogg");
+    string newname = copy.fileName();
 
     Vorbis::File *f = new Vorbis::File(newname.c_str());
     f->tag()->setArtist("The Artist");
@@ -33,13 +34,12 @@ public:
     f = new Vorbis::File(newname.c_str());
     CPPUNIT_ASSERT_EQUAL(String("The Artist"), f->tag()->artist());
     delete f;
-
-    deleteFile(newname);
   }
 
   void testSplitPackets()
   {
-    string newname = copyFile("empty", ".ogg");
+    ScopedFileCopy copy("empty", ".ogg");
+    string newname = copy.fileName();
 
     Vorbis::File *f = new Vorbis::File(newname.c_str());
     f->tag()->addField("test", ByteVector(128 * 1024, 'x') + ByteVector(1, '\0'));
@@ -49,8 +49,6 @@ public:
     f = new Vorbis::File(newname.c_str());
     CPPUNIT_ASSERT_EQUAL(19, f->lastPageHeader()->pageSequenceNumber());
     delete f;
-
-    deleteFile(newname);
   }
 
 };
index a29a27a67273fd025984d844c2bc736b4e99646b..c1837175362cad2c966f2e8aea134dfbaa499f29 100644 (file)
@@ -21,7 +21,8 @@ public:
 
   void testFramingBit()
   {
-    string newname = copyFile("empty_flac", ".oga");
+    ScopedFileCopy copy("empty_flac", ".oga");
+    string newname = copy.fileName();
 
     Ogg::FLAC::File *f = new Ogg::FLAC::File(newname.c_str());
     f->tag()->setArtist("The Artist");
@@ -36,7 +37,6 @@ public:
     CPPUNIT_ASSERT_EQUAL(9134, size);
 
     delete f;
-    //deleteFile(newname);
   }
 
 };
index 34ab84ec60b5f73a45ff3396ee1b16cb952d19c7..ac7f40d71c095ae9f383d36d31772e7dcc2c23bd 100644 (file)
@@ -35,7 +35,8 @@ public:
 
   void testPadding()
   {
-    string filename = copyFile("empty", ".aiff");
+    ScopedFileCopy copy("empty", ".aiff");
+    string filename = copy.fileName();
 
     PublicRIFF *f = new PublicRIFF(filename.c_str());
     CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f->chunkName(2));
@@ -72,8 +73,6 @@ public:
 
     CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f->chunkName(2));
     CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), f->chunkData(2));
-
-    deleteFile(filename);
   }
 
 };
index edcd3c3d4e87c32c145b1678dd85dca807cdab5b..bc566d2d76deb94771dec9a835389edc5d868c0e 100644 (file)
@@ -25,3 +25,25 @@ inline void deleteFile(const string &filename)
 {
   remove(filename.c_str());
 }
+
+class ScopedFileCopy
+{
+public:
+  ScopedFileCopy(const string &filename, const string &ext)
+  {
+    m_filename = copyFile(filename, ext);
+  }
+
+  ~ScopedFileCopy()
+  {
+    deleteFile(m_filename);
+  }
+
+  string fileName()
+  {
+    return m_filename;
+  }
+
+private:
+  string m_filename;
+};