Fix failing test TestFileOperationJob.ActionCreateFolder
authorSam Spilsbury <smspillaz@gmail.com>
Sun, 16 Jun 2013 03:28:52 +0000 (11:28 +0800)
committerSam Spilsbury <smspillaz@gmail.com>
Mon, 17 Jun 2013 00:57:47 +0000 (08:57 +0800)
CFileOperationJob::SetFileOperation expects the destination directory
in which the file operation is to take place when creating a folder
and not the final path of the created folder (that is contained
in the CFileItem passed to it)

xbmc/test/TestUtils.cpp
xbmc/test/TestUtils.h
xbmc/utils/test/TestFileOperationJob.cpp

index 7344217..1a67028 100644 (file)
@@ -45,8 +45,8 @@ public:
     char tmp[MAX_PATH];
     int fd;
 
-    m_ptempFilePath = CSpecialProtocol::TranslatePath("special://temp/");
-    m_ptempFilePath += "xbmctempfileXXXXXX";
+    m_ptempFileDirectory = CSpecialProtocol::TranslatePath("special://temp/");
+    m_ptempFilePath = m_ptempFileDirectory + "xbmctempfileXXXXXX";
     m_ptempFilePath += suffix;
     if (m_ptempFilePath.length() >= MAX_PATH)
     {
@@ -85,8 +85,13 @@ public:
   {
     return m_ptempFilePath;
   }
+  CStdString getTempFileDirectory() const
+  {
+    return m_ptempFileDirectory;
+  }
 private:
   CStdString m_ptempFilePath;
+  CStdString m_ptempFileDirectory;
 };
 
 CXBMCTestUtils::CXBMCTestUtils()
@@ -146,6 +151,14 @@ CStdString CXBMCTestUtils::TempFilePath(XFILE::CFile const* const tempfile)
   return f->getTempFilePath();
 }
 
+CStdString CXBMCTestUtils::TempFileDirectory(XFILE::CFile const* const tempfile)
+{
+  if (!tempfile)
+    return "";
+  CTempFile const* const f = static_cast<CTempFile const* const>(tempfile);
+  return f->getTempFileDirectory();
+}
+
 XFILE::CFile *CXBMCTestUtils::CreateCorruptedFile(CStdString const& strFileName,
   CStdString const& suffix)
 {
index 3196d14..7edff00 100644 (file)
@@ -54,6 +54,9 @@ public:
   /* Function to get path of a tempfile */
   CStdString TempFilePath(XFILE::CFile const* const tempfile);
 
+  /* Get the containing directory of a tempfile */
+  CStdString TempFileDirectory(XFILE::CFile const* const tempfile);
+
   /* Functions to get variables used in the TestFileFactory tests. */
   std::vector<CStdString> &getTestFileFactoryReadUrls();
 
index 550c3f8..d836a65 100644 (file)
@@ -185,7 +185,6 @@ TEST(TestFileOperationJob, ActionReplace)
   EXPECT_TRUE(XFILE::CDirectory::Remove(destpath));
 }
 
-// This test will fail until ActionCreateFolder has a proper implementation
 TEST(TestFileOperationJob, ActionCreateFolder)
 {
   XFILE::CFile *tmpfile;
@@ -195,6 +194,10 @@ TEST(TestFileOperationJob, ActionCreateFolder)
 
   ASSERT_TRUE((tmpfile = XBMC_CREATETEMPFILE("")));
   tmpfilepath = XBMC_TEMPFILEPATH(tmpfile);
+
+  CStdString tmpfiledirectory =
+    CXBMCTestUtils::Instance().TempFileDirectory(tmpfile);
+
   tmpfile->Close();
 
   destpath = tmpfilepath;
@@ -207,7 +210,7 @@ TEST(TestFileOperationJob, ActionCreateFolder)
   item->Select(true);
   items.Add(item);
 
-  job.SetFileOperation(CFileOperationJob::ActionCreateFolder, items, destpath);
+  job.SetFileOperation(CFileOperationJob::ActionCreateFolder, items, tmpfiledirectory);
   EXPECT_EQ(CFileOperationJob::ActionCreateFolder, job.GetAction());
 
   EXPECT_TRUE(job.DoWork());