findtestdata: test 'relative to test source'-fix
Before the fix is applied this test fails because QFINDTESTDATA will return "/usr/" instead of the folder with the same name in the current directory. The 'usr' folder can't be located 'next to' the application since this does not trigger the issue (QFINDTESTDATA looks for the folder next to the executable early on). So we put it in a subdirectory and change the current working directory to its parent directory. Change-Id: I627679dcb6f2f6954264e23bfc1a71de3bff7203 Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
This commit is contained in:
parent
9e15a93b89
commit
4361c0ee84
@ -134,6 +134,30 @@ void FindTestData::paths()
|
||||
#endif
|
||||
QVERIFY(QFile(testfile_path3).remove());
|
||||
|
||||
#if !defined(Q_OS_WIN)
|
||||
struct ChdirOnReturn
|
||||
{
|
||||
~ChdirOnReturn() { QDir::setCurrent(dir); }
|
||||
QString dir;
|
||||
};
|
||||
|
||||
// When cross-compiling from Windows to a *nix system the __FILE__ path's canonical path is an
|
||||
// empty string, which, when used as a prefix, would cause QFINDTESTDATA to look for files in
|
||||
// root ('/') when trying to look for files relative to the test source.
|
||||
QString usrPath = app_path + "/temp/usr/";
|
||||
QVERIFY(QDir().mkpath(usrPath));
|
||||
{
|
||||
ChdirOnReturn chdirObject{QDir::currentPath()};
|
||||
QDir::setCurrent(app_path + "/temp");
|
||||
QCOMPARE(QTest::qFindTestData("usr/",
|
||||
"C:\\path\\to\\source\\source.cpp",
|
||||
__LINE__,
|
||||
"C:\\path\\to\\build\\").toLower(),
|
||||
usrPath.toLower());
|
||||
}
|
||||
QVERIFY(QDir().rmpath(usrPath));
|
||||
#endif
|
||||
|
||||
// Note, this is expected to generate a warning.
|
||||
// We can't use ignoreMessage, because the warning comes from testlib,
|
||||
// not via a "normal" qWarning. But it's OK, our caller (tst_selftests)
|
||||
|
Loading…
Reference in New Issue
Block a user