Skip to content

Commit

Permalink
findtestdata: test 'relative to test source'-fix
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
Morten242 committed Jun 22, 2018
1 parent 9e15a93 commit 4361c0e
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions tests/auto/testlib/selftests/findtestdata/findtestdata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 4361c0e

Please sign in to comment.