[libcalamares] Add tests for filesystem_use service

This commit is contained in:
Adriaan de Groot 2021-02-08 11:21:15 +01:00
parent afdf431b77
commit 75eb2c3cd4
3 changed files with 84 additions and 45 deletions

View File

@ -242,7 +242,10 @@ calamares_add_test(
calamares_add_test(
libcalamarespartitiontest
SOURCES
partition/Global.cpp
partition/Tests.cpp
LIBRARIES
${OPTIONAL_PRIVATE_LIBRARIES}
)
if( KPMcore_FOUND )

View File

@ -8,32 +8,54 @@
*
*/
#include "Tests.h"
#include "PartitionSize.h"
#include "GlobalStorage.h"
#include "utils/Logger.h"
#include <QObject>
#include <QtTest/QtTest>
// Implementation details being tested
extern bool isFilesystemUsedGS( const Calamares::GlobalStorage& gs, const QString& filesystemType );
extern void useFilesystemGS( Calamares::GlobalStorage& gs, const QString& filesystemType, bool used );
using SizeUnit = CalamaresUtils::Partition::SizeUnit;
using PartitionSize = CalamaresUtils::Partition::PartitionSize;
Q_DECLARE_METATYPE( SizeUnit )
#include "utils/Logger.h"
class PartitionServiceTests : public QObject
{
Q_OBJECT
public:
PartitionServiceTests();
~PartitionServiceTests() override;
#include <QtTest/QtTest>
private Q_SLOTS:
void initTestCase();
QTEST_GUILESS_MAIN( PartitionSizeTests )
void testUnitComparison_data();
void testUnitComparison();
PartitionSizeTests::PartitionSizeTests() {}
void testUnitNormalisation_data();
void testUnitNormalisation();
PartitionSizeTests::~PartitionSizeTests() {}
void testFilesystemGS();
};
PartitionServiceTests::PartitionServiceTests() {}
PartitionServiceTests::~PartitionServiceTests() {}
void
PartitionSizeTests::initTestCase()
PartitionServiceTests::initTestCase()
{
}
void
PartitionSizeTests::testUnitComparison_data()
PartitionServiceTests::testUnitComparison_data()
{
QTest::addColumn< SizeUnit >( "u1" );
QTest::addColumn< SizeUnit >( "u2" );
@ -71,7 +93,7 @@ original_compare( SizeUnit m_unit, SizeUnit other_m_unit )
}
void
PartitionSizeTests::testUnitComparison()
PartitionServiceTests::testUnitComparison()
{
QFETCH( SizeUnit, u1 );
QFETCH( SizeUnit, u2 );
@ -98,7 +120,7 @@ constexpr qint64 operator""_qi( unsigned long long m )
}
void
PartitionSizeTests::testUnitNormalisation_data()
PartitionServiceTests::testUnitNormalisation_data()
{
QTest::addColumn< SizeUnit >( "u1" );
QTest::addColumn< int >( "v" );
@ -131,7 +153,7 @@ PartitionSizeTests::testUnitNormalisation_data()
}
void
PartitionSizeTests::testUnitNormalisation()
PartitionServiceTests::testUnitNormalisation()
{
QFETCH( SizeUnit, u1 );
QFETCH( int, v );
@ -139,3 +161,50 @@ PartitionSizeTests::testUnitNormalisation()
QCOMPARE( PartitionSize( v, u1 ).toBytes(), bytes );
}
void
PartitionServiceTests::testFilesystemGS()
{
// Some filesystems names, they don't have to be real
const QStringList fsNames { "ext4", "zfs", "berries", "carrot" };
// Predicate to return whether we consider this FS in use
auto pred = []( const QString& s ) { return !s.startsWith( 'z' ); };
// Fill the GS
Calamares::GlobalStorage gs;
for ( const auto& s : fsNames )
{
useFilesystemGS( gs, s, pred( s ) );
}
QVERIFY( gs.contains( "filesystem_use" ) );
{
const auto map = gs.value( "filesystem_use" ).toMap();
QCOMPARE( map.count(), fsNames.count() );
}
for ( const auto& s : fsNames )
{
QCOMPARE( isFilesystemUsedGS( gs, s ), pred( s ) );
}
QCOMPARE( isFilesystemUsedGS( gs, QStringLiteral( "derp" ) ), false );
QCOMPARE( isFilesystemUsedGS( gs, QString() ), false );
// But I can set a value for QString!
useFilesystemGS( gs, QString(), true );
QCOMPARE( isFilesystemUsedGS( gs, QString() ), true );
// .. and replace it again
useFilesystemGS( gs, QString(), false );
QCOMPARE( isFilesystemUsedGS( gs, QString() ), false );
// Now there is one more key
{
const auto map = gs.value( "filesystem_use" ).toMap();
QCOMPARE( map.count(), fsNames.count() + 1 );
}
}
QTEST_GUILESS_MAIN( PartitionServiceTests )
#include "utils/moc-warnings.h"
#include "Tests.moc"

View File

@ -1,33 +0,0 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*
*/
#ifndef LIBCALAMARES_PARTITION_TESTS_H
#define LIBCALAMARES_PARTITION_TESTS_H
#include <QObject>
class PartitionSizeTests : public QObject
{
Q_OBJECT
public:
PartitionSizeTests();
~PartitionSizeTests() override;
private Q_SLOTS:
void initTestCase();
void testUnitComparison_data();
void testUnitComparison();
void testUnitNormalisation_data();
void testUnitNormalisation();
};
#endif