[libcalamares] Add tests for relativeCangeDirectory()
This commit is contained in:
parent
0b943e801c
commit
e5fa58b890
@ -304,6 +304,7 @@ calamares_add_test(
|
|||||||
libcalamaresutilstest
|
libcalamaresutilstest
|
||||||
SOURCES
|
SOURCES
|
||||||
utils/Tests.cpp
|
utils/Tests.cpp
|
||||||
|
utils/Runner.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
calamares_add_test(
|
calamares_add_test(
|
||||||
|
@ -70,6 +70,9 @@ private Q_SLOTS:
|
|||||||
void testStringTruncationShorter();
|
void testStringTruncationShorter();
|
||||||
void testStringTruncationDegenerate();
|
void testStringTruncationDegenerate();
|
||||||
|
|
||||||
|
/** @section Test Runner directory-manipulation. */
|
||||||
|
void testRunnerDirs();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void recursiveCompareMap( const QVariantMap& a, const QVariantMap& b, int depth );
|
void recursiveCompareMap( const QVariantMap& a, const QVariantMap& b, int depth );
|
||||||
};
|
};
|
||||||
@ -746,6 +749,94 @@ LibCalamaresTests::testStringTruncationDegenerate()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static QString
|
||||||
|
dirname( const QTemporaryDir& d )
|
||||||
|
{
|
||||||
|
return d.path().split( '/' ).last();
|
||||||
|
}
|
||||||
|
static QString
|
||||||
|
dirname( const QDir& d )
|
||||||
|
{
|
||||||
|
return d.absolutePath().split( '/' ).last();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Method under test
|
||||||
|
extern bool relativeChangeDirectory( QDir& directory, const QString& subdir );
|
||||||
|
|
||||||
|
void
|
||||||
|
LibCalamaresTests::testRunnerDirs()
|
||||||
|
{
|
||||||
|
Logger::setupLogLevel( Logger::LOGDEBUG );
|
||||||
|
|
||||||
|
QDir startDir( QDir::current() );
|
||||||
|
QTemporaryDir tempDir( "./utilstest" );
|
||||||
|
QVERIFY( tempDir.isValid() );
|
||||||
|
QVERIFY( startDir.isReadable() );
|
||||||
|
|
||||||
|
// Test changing "downward"
|
||||||
|
{
|
||||||
|
QDir testDir( QDir::current() );
|
||||||
|
QCOMPARE( startDir, testDir );
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
QDir testDir( QDir::current() );
|
||||||
|
const bool could_change_to_dot = relativeChangeDirectory( testDir, QStringLiteral( "." ) );
|
||||||
|
QVERIFY( could_change_to_dot );
|
||||||
|
QCOMPARE( startDir, testDir );
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// The tempDir was created inside the current directory, we want only the subdir-name
|
||||||
|
QDir testDir( QDir::current() );
|
||||||
|
const bool could_change_to_temp = relativeChangeDirectory( testDir, dirname( tempDir ) );
|
||||||
|
QVERIFY( could_change_to_temp );
|
||||||
|
QVERIFY( startDir != testDir );
|
||||||
|
QVERIFY( testDir.absolutePath().startsWith( startDir.absolutePath() ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test changing to something that doesn't exist
|
||||||
|
{
|
||||||
|
QDir testDir( QDir::current() );
|
||||||
|
const bool could_change_to_bogus = relativeChangeDirectory( testDir, QStringLiteral( "bogus" ) );
|
||||||
|
QVERIFY( !could_change_to_bogus );
|
||||||
|
QCOMPARE( startDir, testDir ); // Must be unchanged
|
||||||
|
}
|
||||||
|
|
||||||
|
// Testing escape-from-start
|
||||||
|
{
|
||||||
|
// Escape briefly from the start
|
||||||
|
QDir testDir( QDir::current() );
|
||||||
|
const bool could_change_to_current
|
||||||
|
= relativeChangeDirectory( testDir, QStringLiteral( "../" ) + dirname( startDir ) );
|
||||||
|
QVERIFY( could_change_to_current );
|
||||||
|
QCOMPARE( startDir, testDir ); // The change succeeded, but net effect is zero
|
||||||
|
|
||||||
|
const bool could_change_to_temp = relativeChangeDirectory(
|
||||||
|
testDir, QStringLiteral( "../" ) + dirname( startDir ) + QStringLiteral( "/./" ) + dirname( tempDir ) );
|
||||||
|
QVERIFY( could_change_to_temp );
|
||||||
|
QVERIFY( startDir != testDir );
|
||||||
|
QVERIFY( testDir.absolutePath().startsWith( startDir.absolutePath() ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// Escape?
|
||||||
|
QDir testDir( QDir::current() );
|
||||||
|
const bool could_change_to_parent = relativeChangeDirectory( testDir, QStringLiteral( "../" ) );
|
||||||
|
QVERIFY( !could_change_to_parent );
|
||||||
|
QCOMPARE( startDir, testDir ); // Change failed
|
||||||
|
|
||||||
|
const bool could_change_to_tmp = relativeChangeDirectory( testDir, QStringLiteral( "/tmp" ) );
|
||||||
|
QVERIFY( !could_change_to_tmp );
|
||||||
|
QCOMPARE( startDir, testDir );
|
||||||
|
|
||||||
|
const bool could_change_to_elsewhere = relativeChangeDirectory( testDir, QStringLiteral( "../src" ) );
|
||||||
|
QVERIFY( !could_change_to_elsewhere );
|
||||||
|
QCOMPARE( startDir, testDir );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QTEST_GUILESS_MAIN( LibCalamaresTests )
|
QTEST_GUILESS_MAIN( LibCalamaresTests )
|
||||||
|
|
||||||
#include "utils/moc-warnings.h"
|
#include "utils/moc-warnings.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user