summaryrefslogtreecommitdiff
path: root/indra/llfilesystem/tests/lldir_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llfilesystem/tests/lldir_test.cpp')
-rw-r--r--indra/llfilesystem/tests/lldir_test.cpp429
1 files changed, 214 insertions, 215 deletions
diff --git a/indra/llfilesystem/tests/lldir_test.cpp b/indra/llfilesystem/tests/lldir_test.cpp
index 60265cade6..4fa5769f65 100644
--- a/indra/llfilesystem/tests/lldir_test.cpp
+++ b/indra/llfilesystem/tests/lldir_test.cpp
@@ -6,33 +6,35 @@
* $LicenseInfo:firstyear=2008&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
- *
+ *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
- *
+ *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
+ *
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
#include "linden_common.h"
+#include <filesystem>
#include "llstring.h"
#include "tests/StringVec.h"
#include "../lldir.h"
#include "../lldiriterator.h"
#include "../test/lltut.h"
+#include "../test/namedtempfile.h"
#include "stringize.h"
#include <boost/assign/list_of.hpp>
@@ -190,228 +192,228 @@ struct LLDir_Dummy: public LLDir
namespace tut
{
- struct LLDirTest
+ struct LLDirTest
{
};
typedef test_group<LLDirTest> LLDirTest_t;
typedef LLDirTest_t::object LLDirTest_object_t;
tut::LLDirTest_t tut_LLDirTest("LLDir");
- template<> template<>
- void LLDirTest_object_t::test<1>()
- // getDirDelimiter
- {
- ensure("getDirDelimiter", !gDirUtilp->getDirDelimiter().empty());
- }
-
- template<> template<>
- void LLDirTest_object_t::test<2>()
- // getBaseFileName
- {
- std::string delim = gDirUtilp->getDirDelimiter();
- std::string rawFile = "foo";
- std::string rawFileExt = "foo.bAr";
- std::string rawFileNullExt = "foo.";
- std::string rawExt = ".bAr";
- std::string rawDot = ".";
- std::string pathNoExt = "aa" + delim + "bb" + delim + "cc" + delim + "dd" + delim + "ee";
- std::string pathExt = pathNoExt + ".eXt";
- std::string dottedPathNoExt = "aa" + delim + "bb" + delim + "cc.dd" + delim + "ee";
- std::string dottedPathExt = dottedPathNoExt + ".eXt";
-
- // foo[.bAr]
-
- ensure_equals("getBaseFileName/r-no-ext/no-strip-exten",
- gDirUtilp->getBaseFileName(rawFile, false),
- "foo");
-
- ensure_equals("getBaseFileName/r-no-ext/strip-exten",
- gDirUtilp->getBaseFileName(rawFile, true),
- "foo");
-
- ensure_equals("getBaseFileName/r-ext/no-strip-exten",
- gDirUtilp->getBaseFileName(rawFileExt, false),
- "foo.bAr");
-
- ensure_equals("getBaseFileName/r-ext/strip-exten",
- gDirUtilp->getBaseFileName(rawFileExt, true),
- "foo");
-
- // foo.
+ template<> template<>
+ void LLDirTest_object_t::test<1>()
+ // getDirDelimiter
+ {
+ ensure("getDirDelimiter", !gDirUtilp->getDirDelimiter().empty());
+ }
+
+ template<> template<>
+ void LLDirTest_object_t::test<2>()
+ // getBaseFileName
+ {
+ std::string delim = gDirUtilp->getDirDelimiter();
+ std::string rawFile = "foo";
+ std::string rawFileExt = "foo.bAr";
+ std::string rawFileNullExt = "foo.";
+ std::string rawExt = ".bAr";
+ std::string rawDot = ".";
+ std::string pathNoExt = "aa" + delim + "bb" + delim + "cc" + delim + "dd" + delim + "ee";
+ std::string pathExt = pathNoExt + ".eXt";
+ std::string dottedPathNoExt = "aa" + delim + "bb" + delim + "cc.dd" + delim + "ee";
+ std::string dottedPathExt = dottedPathNoExt + ".eXt";
+
+ // foo[.bAr]
+
+ ensure_equals("getBaseFileName/r-no-ext/no-strip-exten",
+ gDirUtilp->getBaseFileName(rawFile, false),
+ "foo");
+
+ ensure_equals("getBaseFileName/r-no-ext/strip-exten",
+ gDirUtilp->getBaseFileName(rawFile, true),
+ "foo");
+
+ ensure_equals("getBaseFileName/r-ext/no-strip-exten",
+ gDirUtilp->getBaseFileName(rawFileExt, false),
+ "foo.bAr");
+
+ ensure_equals("getBaseFileName/r-ext/strip-exten",
+ gDirUtilp->getBaseFileName(rawFileExt, true),
+ "foo");
+
+ // foo.
+
+ ensure_equals("getBaseFileName/rn-no-ext/no-strip-exten",
+ gDirUtilp->getBaseFileName(rawFileNullExt, false),
+ "foo.");
+
+ ensure_equals("getBaseFileName/rn-no-ext/strip-exten",
+ gDirUtilp->getBaseFileName(rawFileNullExt, true),
+ "foo");
+
+ // .bAr
+ // interesting case - with no basename, this IS the basename, not the extension.
+
+ ensure_equals("getBaseFileName/e-ext/no-strip-exten",
+ gDirUtilp->getBaseFileName(rawExt, false),
+ ".bAr");
+
+ ensure_equals("getBaseFileName/e-ext/strip-exten",
+ gDirUtilp->getBaseFileName(rawExt, true),
+ ".bAr");
+
+ // .
+
+ ensure_equals("getBaseFileName/d/no-strip-exten",
+ gDirUtilp->getBaseFileName(rawDot, false),
+ ".");
+
+ ensure_equals("getBaseFileName/d/strip-exten",
+ gDirUtilp->getBaseFileName(rawDot, true),
+ ".");
+
+ // aa/bb/cc/dd/ee[.eXt]
+
+ ensure_equals("getBaseFileName/no-ext/no-strip-exten",
+ gDirUtilp->getBaseFileName(pathNoExt, false),
+ "ee");
- ensure_equals("getBaseFileName/rn-no-ext/no-strip-exten",
- gDirUtilp->getBaseFileName(rawFileNullExt, false),
- "foo.");
+ ensure_equals("getBaseFileName/no-ext/strip-exten",
+ gDirUtilp->getBaseFileName(pathNoExt, true),
+ "ee");
- ensure_equals("getBaseFileName/rn-no-ext/strip-exten",
- gDirUtilp->getBaseFileName(rawFileNullExt, true),
- "foo");
-
- // .bAr
- // interesting case - with no basename, this IS the basename, not the extension.
-
- ensure_equals("getBaseFileName/e-ext/no-strip-exten",
- gDirUtilp->getBaseFileName(rawExt, false),
- ".bAr");
-
- ensure_equals("getBaseFileName/e-ext/strip-exten",
- gDirUtilp->getBaseFileName(rawExt, true),
- ".bAr");
-
- // .
-
- ensure_equals("getBaseFileName/d/no-strip-exten",
- gDirUtilp->getBaseFileName(rawDot, false),
- ".");
-
- ensure_equals("getBaseFileName/d/strip-exten",
- gDirUtilp->getBaseFileName(rawDot, true),
- ".");
-
- // aa/bb/cc/dd/ee[.eXt]
-
- ensure_equals("getBaseFileName/no-ext/no-strip-exten",
- gDirUtilp->getBaseFileName(pathNoExt, false),
- "ee");
-
- ensure_equals("getBaseFileName/no-ext/strip-exten",
- gDirUtilp->getBaseFileName(pathNoExt, true),
- "ee");
-
- ensure_equals("getBaseFileName/ext/no-strip-exten",
- gDirUtilp->getBaseFileName(pathExt, false),
- "ee.eXt");
-
- ensure_equals("getBaseFileName/ext/strip-exten",
- gDirUtilp->getBaseFileName(pathExt, true),
- "ee");
-
- // aa/bb/cc.dd/ee[.eXt]
-
- ensure_equals("getBaseFileName/d-no-ext/no-strip-exten",
- gDirUtilp->getBaseFileName(dottedPathNoExt, false),
- "ee");
-
- ensure_equals("getBaseFileName/d-no-ext/strip-exten",
- gDirUtilp->getBaseFileName(dottedPathNoExt, true),
- "ee");
-
- ensure_equals("getBaseFileName/d-ext/no-strip-exten",
- gDirUtilp->getBaseFileName(dottedPathExt, false),
- "ee.eXt");
-
- ensure_equals("getBaseFileName/d-ext/strip-exten",
- gDirUtilp->getBaseFileName(dottedPathExt, true),
- "ee");
- }
-
- template<> template<>
- void LLDirTest_object_t::test<3>()
- // getDirName
- {
- std::string delim = gDirUtilp->getDirDelimiter();
- std::string rawFile = "foo";
- std::string rawFileExt = "foo.bAr";
- std::string pathNoExt = "aa" + delim + "bb" + delim + "cc" + delim + "dd" + delim + "ee";
- std::string pathExt = pathNoExt + ".eXt";
- std::string dottedPathNoExt = "aa" + delim + "bb" + delim + "cc.dd" + delim + "ee";
- std::string dottedPathExt = dottedPathNoExt + ".eXt";
+ ensure_equals("getBaseFileName/ext/no-strip-exten",
+ gDirUtilp->getBaseFileName(pathExt, false),
+ "ee.eXt");
- // foo[.bAr]
+ ensure_equals("getBaseFileName/ext/strip-exten",
+ gDirUtilp->getBaseFileName(pathExt, true),
+ "ee");
- ensure_equals("getDirName/r-no-ext",
- gDirUtilp->getDirName(rawFile),
- "");
+ // aa/bb/cc.dd/ee[.eXt]
- ensure_equals("getDirName/r-ext",
- gDirUtilp->getDirName(rawFileExt),
- "");
+ ensure_equals("getBaseFileName/d-no-ext/no-strip-exten",
+ gDirUtilp->getBaseFileName(dottedPathNoExt, false),
+ "ee");
- // aa/bb/cc/dd/ee[.eXt]
+ ensure_equals("getBaseFileName/d-no-ext/strip-exten",
+ gDirUtilp->getBaseFileName(dottedPathNoExt, true),
+ "ee");
- ensure_equals("getDirName/no-ext",
- gDirUtilp->getDirName(pathNoExt),
- "aa" + delim + "bb" + delim + "cc" + delim + "dd");
+ ensure_equals("getBaseFileName/d-ext/no-strip-exten",
+ gDirUtilp->getBaseFileName(dottedPathExt, false),
+ "ee.eXt");
- ensure_equals("getDirName/ext",
- gDirUtilp->getDirName(pathExt),
- "aa" + delim + "bb" + delim + "cc" + delim + "dd");
+ ensure_equals("getBaseFileName/d-ext/strip-exten",
+ gDirUtilp->getBaseFileName(dottedPathExt, true),
+ "ee");
+ }
+
+ template<> template<>
+ void LLDirTest_object_t::test<3>()
+ // getDirName
+ {
+ std::string delim = gDirUtilp->getDirDelimiter();
+ std::string rawFile = "foo";
+ std::string rawFileExt = "foo.bAr";
+ std::string pathNoExt = "aa" + delim + "bb" + delim + "cc" + delim + "dd" + delim + "ee";
+ std::string pathExt = pathNoExt + ".eXt";
+ std::string dottedPathNoExt = "aa" + delim + "bb" + delim + "cc.dd" + delim + "ee";
+ std::string dottedPathExt = dottedPathNoExt + ".eXt";
+
+ // foo[.bAr]
+
+ ensure_equals("getDirName/r-no-ext",
+ gDirUtilp->getDirName(rawFile),
+ "");
+
+ ensure_equals("getDirName/r-ext",
+ gDirUtilp->getDirName(rawFileExt),
+ "");
+
+ // aa/bb/cc/dd/ee[.eXt]
+
+ ensure_equals("getDirName/no-ext",
+ gDirUtilp->getDirName(pathNoExt),
+ "aa" + delim + "bb" + delim + "cc" + delim + "dd");
+
+ ensure_equals("getDirName/ext",
+ gDirUtilp->getDirName(pathExt),
+ "aa" + delim + "bb" + delim + "cc" + delim + "dd");
+
+ // aa/bb/cc.dd/ee[.eXt]
+
+ ensure_equals("getDirName/d-no-ext",
+ gDirUtilp->getDirName(dottedPathNoExt),
+ "aa" + delim + "bb" + delim + "cc.dd");
+
+ ensure_equals("getDirName/d-ext",
+ gDirUtilp->getDirName(dottedPathExt),
+ "aa" + delim + "bb" + delim + "cc.dd");
+ }
- // aa/bb/cc.dd/ee[.eXt]
+ template<> template<>
+ void LLDirTest_object_t::test<4>()
+ // getExtension
+ {
+ std::string delim = gDirUtilp->getDirDelimiter();
+ std::string rawFile = "foo";
+ std::string rawFileExt = "foo.bAr";
+ std::string rawFileNullExt = "foo.";
+ std::string rawExt = ".bAr";
+ std::string rawDot = ".";
+ std::string pathNoExt = "aa" + delim + "bb" + delim + "cc" + delim + "dd" + delim + "ee";
+ std::string pathExt = pathNoExt + ".eXt";
+ std::string dottedPathNoExt = "aa" + delim + "bb" + delim + "cc.dd" + delim + "ee";
+ std::string dottedPathExt = dottedPathNoExt + ".eXt";
- ensure_equals("getDirName/d-no-ext",
- gDirUtilp->getDirName(dottedPathNoExt),
- "aa" + delim + "bb" + delim + "cc.dd");
+ // foo[.bAr]
- ensure_equals("getDirName/d-ext",
- gDirUtilp->getDirName(dottedPathExt),
- "aa" + delim + "bb" + delim + "cc.dd");
- }
+ ensure_equals("getExtension/r-no-ext",
+ gDirUtilp->getExtension(rawFile),
+ "");
- template<> template<>
- void LLDirTest_object_t::test<4>()
- // getExtension
- {
- std::string delim = gDirUtilp->getDirDelimiter();
- std::string rawFile = "foo";
- std::string rawFileExt = "foo.bAr";
- std::string rawFileNullExt = "foo.";
- std::string rawExt = ".bAr";
- std::string rawDot = ".";
- std::string pathNoExt = "aa" + delim + "bb" + delim + "cc" + delim + "dd" + delim + "ee";
- std::string pathExt = pathNoExt + ".eXt";
- std::string dottedPathNoExt = "aa" + delim + "bb" + delim + "cc.dd" + delim + "ee";
- std::string dottedPathExt = dottedPathNoExt + ".eXt";
+ ensure_equals("getExtension/r-ext",
+ gDirUtilp->getExtension(rawFileExt),
+ "bar");
- // foo[.bAr]
+ // foo.
- ensure_equals("getExtension/r-no-ext",
- gDirUtilp->getExtension(rawFile),
- "");
+ ensure_equals("getExtension/rn-no-ext",
+ gDirUtilp->getExtension(rawFileNullExt),
+ "");
- ensure_equals("getExtension/r-ext",
- gDirUtilp->getExtension(rawFileExt),
- "bar");
+ // .bAr
+ // interesting case - with no basename, this IS the basename, not the extension.
- // foo.
+ ensure_equals("getExtension/e-ext",
+ gDirUtilp->getExtension(rawExt),
+ "");
- ensure_equals("getExtension/rn-no-ext",
- gDirUtilp->getExtension(rawFileNullExt),
- "");
+ // .
- // .bAr
- // interesting case - with no basename, this IS the basename, not the extension.
+ ensure_equals("getExtension/d",
+ gDirUtilp->getExtension(rawDot),
+ "");
- ensure_equals("getExtension/e-ext",
- gDirUtilp->getExtension(rawExt),
- "");
+ // aa/bb/cc/dd/ee[.eXt]
- // .
+ ensure_equals("getExtension/no-ext",
+ gDirUtilp->getExtension(pathNoExt),
+ "");
- ensure_equals("getExtension/d",
- gDirUtilp->getExtension(rawDot),
- "");
+ ensure_equals("getExtension/ext",
+ gDirUtilp->getExtension(pathExt),
+ "ext");
- // aa/bb/cc/dd/ee[.eXt]
-
- ensure_equals("getExtension/no-ext",
- gDirUtilp->getExtension(pathNoExt),
- "");
-
- ensure_equals("getExtension/ext",
- gDirUtilp->getExtension(pathExt),
- "ext");
-
- // aa/bb/cc.dd/ee[.eXt]
+ // aa/bb/cc.dd/ee[.eXt]
- ensure_equals("getExtension/d-no-ext",
- gDirUtilp->getExtension(dottedPathNoExt),
- "");
+ ensure_equals("getExtension/d-no-ext",
+ gDirUtilp->getExtension(dottedPathNoExt),
+ "");
- ensure_equals("getExtension/d-ext",
- gDirUtilp->getExtension(dottedPathExt),
- "ext");
- }
+ ensure_equals("getExtension/d-ext",
+ gDirUtilp->getExtension(dottedPathExt),
+ "ext");
+ }
std::string makeTestFile( const std::string& dir, const std::string& file )
{
@@ -425,23 +427,19 @@ namespace tut
return path;
}
- std::string makeTestDir( const std::string& dirbase )
+ std::string makeTestDir( )
{
- int counter;
- std::string uniqueDir;
- bool foundUnused;
- std::string delim = gDirUtilp->getDirDelimiter();
-
- for (counter=0, foundUnused=false; !foundUnused; counter++ )
- {
- char counterStr[3];
- sprintf(counterStr, "%02d", counter);
- uniqueDir = dirbase + counterStr;
- foundUnused = ! ( LLFile::isdir(uniqueDir) || LLFile::isfile(uniqueDir) );
- }
- ensure("test directory '" + uniqueDir + "' creation failed", !LLFile::mkdir(uniqueDir));
-
- return uniqueDir + delim; // HACK - apparently, the trailing delimiter is needed...
+ auto p = NamedTempFile::temp_path();
+ std::filesystem::create_directories(p.native());
+
+ std::string ret = p.string();
+
+ // There's an implicit assumtion all over this code that the returned path ends with "/" (or "\")
+
+ if(ret.size() >= 1 && ret[ ret.size()-1 ] != std::filesystem::path::preferred_separator )
+ ret += std::filesystem::path::preferred_separator;
+
+ return ret;
}
static const char* DirScanFilename[5] = { "file1.abc", "file2.abc", "file1.xyz", "file2.xyz", "file1.mno" };
@@ -487,7 +485,7 @@ namespace tut
}
}
}
-
+
template<> template<>
void LLDirTest_object_t::test<5>()
// LLDirIterator::next
@@ -497,8 +495,9 @@ namespace tut
// Create the same 5 file names of the two directories
- std::string dir1 = makeTestDir(dirTemp + "LLDirIterator");
- std::string dir2 = makeTestDir(dirTemp + "LLDirIterator");
+ std::string dir1 = makeTestDir();
+ std::string dir2 = makeTestDir();
+
std::string dir1files[5];
std::string dir2files[5];
for (int i=0; i<5; i++)