[libcalamares] Add tests for file-overwrite
This commit is contained in:
parent
f89951716e
commit
862b7e34df
@ -49,6 +49,8 @@ private Q_SLOTS:
|
|||||||
void testCreationResult();
|
void testCreationResult();
|
||||||
void testTargetPath();
|
void testTargetPath();
|
||||||
void testCreateTarget();
|
void testCreateTarget();
|
||||||
|
void testCreateTargetExists();
|
||||||
|
void testCreateTargetOverwrite();
|
||||||
void testCreateTargetBasedirs();
|
void testCreateTargetBasedirs();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -96,31 +98,32 @@ TestPaths::init()
|
|||||||
m_gs->insert( "rootMountPoint", "/tmp" );
|
m_gs->insert( "rootMountPoint", "/tmp" );
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestPaths::testCreationResult()
|
void
|
||||||
|
TestPaths::testCreationResult()
|
||||||
{
|
{
|
||||||
using Code = CalamaresUtils::CreationResult::Code;
|
using Code = CalamaresUtils::CreationResult::Code;
|
||||||
|
|
||||||
for( auto c : { Code::OK, Code::AlreadyExists, Code::Failed, Code::Invalid } )
|
for ( auto c : { Code::OK, Code::AlreadyExists, Code::Failed, Code::Invalid } )
|
||||||
{
|
{
|
||||||
auto r = CalamaresUtils::CreationResult( c );
|
auto r = CalamaresUtils::CreationResult( c );
|
||||||
QVERIFY( r.path().isEmpty() );
|
QVERIFY( r.path().isEmpty() );
|
||||||
QCOMPARE( r.path(), QString() );
|
QCOMPARE( r.path(), QString() );
|
||||||
// Get a warning from Clang if we're not covering everything
|
// Get a warning from Clang if we're not covering everything
|
||||||
switch( r.code() )
|
switch ( r.code() )
|
||||||
{
|
{
|
||||||
case Code::OK:
|
case Code::OK:
|
||||||
QVERIFY( !r.failed() );
|
QVERIFY( !r.failed() );
|
||||||
QVERIFY( r );
|
QVERIFY( r );
|
||||||
break;
|
break;
|
||||||
case Code::AlreadyExists:
|
case Code::AlreadyExists:
|
||||||
QVERIFY( !r.failed() );
|
QVERIFY( !r.failed() );
|
||||||
QVERIFY( !r );
|
QVERIFY( !r );
|
||||||
break;
|
break;
|
||||||
case Code::Failed:
|
case Code::Failed:
|
||||||
case Code::Invalid:
|
case Code::Invalid:
|
||||||
QVERIFY( r.failed() );
|
QVERIFY( r.failed() );
|
||||||
QVERIFY( !r );
|
QVERIFY( !r );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,6 +171,75 @@ TestPaths::testCreateTarget()
|
|||||||
QVERIFY( !fi2.exists() );
|
QVERIFY( !fi2.exists() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct GSRollback
|
||||||
|
{
|
||||||
|
GSRollback( const QString& key )
|
||||||
|
: m_key( key )
|
||||||
|
, m_value( Calamares::JobQueue::instance()->globalStorage()->value( key ) )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
~GSRollback() { Calamares::JobQueue::instance()->globalStorage()->insert( m_key, m_value ); }
|
||||||
|
QString m_key;
|
||||||
|
QVariant m_value;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
TestPaths::testCreateTargetExists()
|
||||||
|
{
|
||||||
|
static const char ltestFile[] = "cala-test-world";
|
||||||
|
GSRollback g( QStringLiteral( "rootMountPoint" ) );
|
||||||
|
|
||||||
|
QTemporaryDir d;
|
||||||
|
d.setAutoRemove( true );
|
||||||
|
Calamares::JobQueue::instance()->globalStorage()->insert( QStringLiteral( "rootMountPoint" ), d.path() );
|
||||||
|
|
||||||
|
QVERIFY( QFileInfo( d.path() ).exists() );
|
||||||
|
auto r = m_system->createTargetFile( ltestFile, "Hello" );
|
||||||
|
QVERIFY( r );
|
||||||
|
QVERIFY( r.path().endsWith( QString( ltestFile ) ) );
|
||||||
|
QCOMPARE( QFileInfo( d.filePath( QString( ltestFile ) ) ).size(), 5 );
|
||||||
|
|
||||||
|
r = m_system->createTargetFile( ltestFile, "Goodbye" );
|
||||||
|
QVERIFY( !r.failed() ); // It didn't fail!
|
||||||
|
QVERIFY( !r ); // But not unqualified success, either
|
||||||
|
|
||||||
|
QVERIFY( r.path().isEmpty() );
|
||||||
|
QCOMPARE( QFileInfo( d.filePath( QString( ltestFile ) ) ).size(), 5 ); // Unchanged!
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TestPaths::testCreateTargetOverwrite()
|
||||||
|
{
|
||||||
|
static const char ltestFile[] = "cala-test-world";
|
||||||
|
GSRollback g( QStringLiteral( "rootMountPoint" ) );
|
||||||
|
|
||||||
|
QTemporaryDir d;
|
||||||
|
d.setAutoRemove( true );
|
||||||
|
Calamares::JobQueue::instance()->globalStorage()->insert( QStringLiteral( "rootMountPoint" ), d.path() );
|
||||||
|
|
||||||
|
QVERIFY( QFileInfo( d.path() ).exists() );
|
||||||
|
auto r = m_system->createTargetFile( ltestFile, "Hello" );
|
||||||
|
QVERIFY( r );
|
||||||
|
QVERIFY( r.path().endsWith( QString( ltestFile ) ) );
|
||||||
|
QCOMPARE( QFileInfo( d.filePath( QString( ltestFile ) ) ).size(), 5 );
|
||||||
|
|
||||||
|
r = m_system->createTargetFile( ltestFile, "Goodbye", CalamaresUtils::System::WriteMode::KeepExisting );
|
||||||
|
QVERIFY( !r.failed() ); // It didn't fail!
|
||||||
|
QVERIFY( !r ); // But not unqualified success, either
|
||||||
|
|
||||||
|
QVERIFY( r.path().isEmpty() );
|
||||||
|
QCOMPARE( QFileInfo( d.filePath( QString( ltestFile ) ) ).size(), 5 ); // Unchanged!
|
||||||
|
|
||||||
|
r = m_system->createTargetFile( ltestFile, "Goodbye", CalamaresUtils::System::WriteMode::Overwrite );
|
||||||
|
QVERIFY( !r.failed() ); // It didn't fail!
|
||||||
|
QVERIFY( r ); // Total success
|
||||||
|
|
||||||
|
QVERIFY( r.path().endsWith( QString( ltestFile ) ) );
|
||||||
|
QCOMPARE( QFileInfo( d.filePath( QString( ltestFile ) ) ).size(), 7 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
struct DirRemover
|
struct DirRemover
|
||||||
{
|
{
|
||||||
DirRemover( const QString& base, const QString& dir )
|
DirRemover( const QString& base, const QString& dir )
|
||||||
|
Loading…
Reference in New Issue
Block a user