unotools: don't go belly-up if temp dir is wrong or empty

When a wrong temp directory was set (e.g. wrong path in xcu ist set),
you get a assert in the LO-Debug Version, this patch avoid this assertion.

Change-Id: I192f682860ad9cddf907e4b239eff36b4bd6072d
Reviewed-on: https://gerrit.libreoffice.org/46846
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
This commit is contained in:
Juergen Funk 2017-12-20 13:09:40 +01:00 committed by Thorsten Behrens
parent 1b73ed91e1
commit 26be5f21ce
3 changed files with 36 additions and 5 deletions

View File

@ -27,6 +27,7 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sal_osl,\
$(eval $(call gb_CppunitTest_use_libraries,sal_osl,\
sal \
utl \
))
# the test uses the library created by Module_DLL

View File

@ -32,6 +32,9 @@
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/plugin/TestPlugIn.h>
#include <unotools/tempfile.hxx>
namespace osl_test_file
{
@ -137,8 +140,30 @@ void oldtestfile::test_file_004()
#endif
}
class TempFileTest : public CppUnit::TestFixture
{
public:
TempFileTest() {}
void SetTempNameBaseDirectory()
{ // only testing: of not found the directory
OUString path = utl::TempFile::SetTempNameBaseDirectory("file:///not/found/dir");
CPPUNIT_ASSERT_MESSAGE("SetTempNameBaseDirectory must give a empty string back",
path.isEmpty());
}
CPPUNIT_TEST_SUITE(TempFileTest);
CPPUNIT_TEST(SetTempNameBaseDirectory);
CPPUNIT_TEST_SUITE_END();
};
} // namespace osl_test_file
CPPUNIT_TEST_SUITE_REGISTRATION( osl_test_file::oldtestfile);
CPPUNIT_TEST_SUITE_REGISTRATION( osl_test_file::TempFileTest);
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View File

@ -57,13 +57,18 @@ namespace utl
OUString getParentName( const OUString& aFileName )
{
sal_Int32 lastIndex = aFileName.lastIndexOf( '/' );
OUString aParent = aFileName.copy( 0, lastIndex );
OUString aParent;
if( aParent.endsWith(":") && aParent.getLength() == 6 )
aParent += "/";
if (lastIndex > -1)
{
aParent = aFileName.copy(0, lastIndex);
if( aParent.equalsIgnoreAsciiCase( "file://" ) )
aParent = "file:///";
if (aParent.endsWith(":") && aParent.getLength() == 6)
aParent += "/";
if (aParent.equalsIgnoreAsciiCase("file://"))
aParent = "file:///";
}
return aParent;
}