diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 91dce96cd..dd6f01fb1 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -226,6 +226,16 @@ calamares_add_test( partition/Tests.cpp ) +if( KPMcore_FOUND ) + calamares_add_test( + libcalamarespartitionkpmtest + SOURCES + partition/KPMTests.cpp + LIBRARIES + ${OPTIONAL_PRIVATE_LIBRARIES} + ) +endif() + calamares_add_test( libcalamareslocaletest SOURCES @@ -244,8 +254,8 @@ calamares_add_test( modulesystem/Tests.cpp ) -if( BUILD_TESTING ) - add_executable( test_geoip geoip/test_geoip.cpp ${geoip_src} ) - target_link_libraries( test_geoip calamares Qt5::Network yamlcpp ) - calamares_automoc( test_geoip ) -endif() +# This is not an actual test, it's a test / demo application +# for experimenting with GeoIP. +add_executable( test_geoip geoip/test_geoip.cpp ${geoip_src} ) +target_link_libraries( test_geoip calamares Qt5::Network yamlcpp ) +calamares_automoc( test_geoip ) diff --git a/src/libcalamares/partition/KPMTests.cpp b/src/libcalamares/partition/KPMTests.cpp new file mode 100644 index 000000000..7468d3938 --- /dev/null +++ b/src/libcalamares/partition/KPMTests.cpp @@ -0,0 +1,82 @@ +/* === This file is part of Calamares - === + * + * Copyright 2019, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "utils/Logger.h" + +#include + +#include + +class KPMTests : public QObject +{ + Q_OBJECT +public: + KPMTests(); + ~KPMTests() override; +private Q_SLOTS: + void initTestCase(); + + void testFlagNames(); +}; + +KPMTests::KPMTests() {} + +KPMTests::~KPMTests() {} + +void +KPMTests::initTestCase() +{ + Logger::setupLogLevel( Logger::LOGDEBUG ); +} + +void +KPMTests::testFlagNames() +{ + int f = 1; + QStringList names; + QString s; + while ( !( s = PartitionTable::flagName( static_cast< PartitionTable::Flag >( f ) ) ).isEmpty() ) + { + cDebug() << f << s; + names.append( s ); + + f <<= 1; + } + + QCOMPARE( PartitionTable::flagName( static_cast< PartitionTable::Flag >( 1 ) ), QStringLiteral( "boot" ) ); + +#ifdef WITH_KPMCORE4API + // KPMCore 4 unifies the flags and handles them internally + QCOMPARE( PartitionTable::flagName( PartitionTable::Flag::Boot ), QStringLiteral( "boot" ) ); + QVERIFY( names.contains( QStringLiteral( "boot" ) ) ); + QVERIFY( !names.contains( QStringLiteral( "esp" ) ) ); +#else + // KPMCore 3 has separate flags + QCOMPARE( PartitionTable::flagName( PartitionTable::FlagBoot ), QStringLiteral( "boot" ) ); + QCOMPARE( PartitionTable::flagName( PartitionTable::FlagEsp ), QStringLiteral( "esp" ) ); + QVERIFY( names.contains( QStringLiteral( "boot" ) ) ); + QVERIFY( names.contains( QStringLiteral( "esp" ) ) ); +#endif +} + + +QTEST_GUILESS_MAIN( KPMTests ) + +#include "utils/moc-warnings.h" + +#include "KPMTests.moc" diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index 48d250ca4..c9bdd03f9 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -417,6 +417,12 @@ PartitionViewStep::onLeave() { QString espMountPoint = Calamares::JobQueue::instance()->globalStorage()->value( "efiSystemPartition" ).toString(); +#ifdef WITH_KPMCORE4API + auto espFlag = PartitionTable::Flag::Boot; +#else + auto espFlag = PartitionTable::FlagEsp; +#endif + QString espFlagName = PartitionTable::flagName( espFlag ); Partition* esp = m_core->findPartitionByMountPoint( espMountPoint ); QString message; @@ -428,12 +434,12 @@ PartitionViewStep::onLeave() "

" "To configure an EFI system partition, go back and " "select or create a FAT32 filesystem with the " - "esp flag enabled and mount point " + "%3 flag enabled and mount point " "%2.

" "You can continue without setting up an EFI system " "partition but your system may fail to start." ) .arg( *Calamares::Branding::ShortProductName ) - .arg( espMountPoint ); + .arg( espMountPoint, espFlagName ); } else if ( esp && !PartUtils::isEfiBootable( esp ) ) { @@ -441,14 +447,14 @@ PartitionViewStep::onLeave() description = tr( "An EFI system partition is necessary to start %1." "

" "A partition was configured with mount point " - "%2 but its esp " + "%2 but its %3 " "flag is not set.
" "To set the flag, go back and edit the partition." "

" "You can continue without setting the flag but your " "system may fail to start." ) .arg( *Calamares::Branding::ShortProductName ) - .arg( espMountPoint ); + .arg( espMountPoint, espFlagName ); } if ( !message.isEmpty() )