[partition] Set FS type explicitly if no layout is given

- the "simple" constructor for PartitionEntry left the FS type
  set as the constructor left it -- which is Unknown by default.
  This leads to install failures in systems that don't set a
  special layout but just want a single / -- because the FS is
  set to Unknown.
- massage the constructor and consumer of the code, push
  Ext4 FS in the tests and use the configured default in production.
This commit is contained in:
Adriaan de Groot 2020-11-02 16:01:10 +01:00
parent f78752303b
commit 23eabd74c6
3 changed files with 17 additions and 11 deletions

View File

@ -63,8 +63,9 @@ PartitionLayout::PartitionEntry::PartitionEntry()
{ {
} }
PartitionLayout::PartitionEntry::PartitionEntry( const QString& mountPoint, const QString& size, const QString& minSize, const QString& maxSize ) PartitionLayout::PartitionEntry::PartitionEntry( FileSystem::Type type, const QString& mountPoint, const QString& size, const QString& minSize, const QString& maxSize )
: partAttributes( 0 ) : partType( type )
, partAttributes( 0 )
, partMountPoint( mountPoint ) , partMountPoint( mountPoint )
, partSize( size ) , partSize( size )
, partMinSize( minSize ) , partMinSize( minSize )
@ -148,7 +149,7 @@ PartitionLayout::init( const QVariantList& config )
if ( !m_partLayout.count() ) if ( !m_partLayout.count() )
{ {
addEntry( { QString( "/" ), QString( "100%" ) } ); addEntry( { m_defaultFsType, QString( "/" ), QString( "100%" ) } );
} }
} }

View File

@ -44,8 +44,13 @@ public:
/// @brief All-zeroes PartitionEntry /// @brief All-zeroes PartitionEntry
PartitionEntry(); PartitionEntry();
/// @brief Parse @p mountPoint, @p size, @p minSize and @p maxSize to their respective member variables /** @brief Parse @p mountPoint, @p size, @p minSize and @p maxSize to their respective member variables
PartitionEntry( const QString& mountPoint, *
* Sets a specific FS type (not parsed from string like the other
* constructor).
*/
PartitionEntry( FileSystem::Type type,
const QString& mountPoint,
const QString& size, const QString& size,
const QString& minSize = QString(), const QString& minSize = QString(),
const QString& maxSize = QString() ); const QString& maxSize = QString() );

View File

@ -59,7 +59,7 @@ CreateLayoutsTests::testFixedSizePartition()
PartitionRole role( PartitionRole::Role::Any ); PartitionRole role( PartitionRole::Role::Any );
QList< Partition* > partitions; QList< Partition* > partitions;
if ( !layout.addEntry( { QString( "/" ), QString( "5MiB" ) } ) ) if ( !layout.addEntry( { FileSystem::Type::Ext4, QString( "/" ), QString( "5MiB" ) } ) )
{ {
QFAIL( qPrintable( "Unable to create / partition" ) ); QFAIL( qPrintable( "Unable to create / partition" ) );
} }
@ -79,7 +79,7 @@ CreateLayoutsTests::testPercentSizePartition()
PartitionRole role( PartitionRole::Role::Any ); PartitionRole role( PartitionRole::Role::Any );
QList< Partition* > partitions; QList< Partition* > partitions;
if ( !layout.addEntry( { QString( "/" ), QString( "50%" ) } ) ) if ( !layout.addEntry( { FileSystem::Type::Ext4, QString( "/" ), QString( "50%" ) } ) )
{ {
QFAIL( qPrintable( "Unable to create / partition" ) ); QFAIL( qPrintable( "Unable to create / partition" ) );
} }
@ -99,17 +99,17 @@ CreateLayoutsTests::testMixedSizePartition()
PartitionRole role( PartitionRole::Role::Any ); PartitionRole role( PartitionRole::Role::Any );
QList< Partition* > partitions; QList< Partition* > partitions;
if ( !layout.addEntry( { QString( "/" ), QString( "5MiB" ) } ) ) if ( !layout.addEntry( { FileSystem::Type::Ext4, QString( "/" ), QString( "5MiB" ) } ) )
{ {
QFAIL( qPrintable( "Unable to create / partition" ) ); QFAIL( qPrintable( "Unable to create / partition" ) );
} }
if ( !layout.addEntry( { QString( "/home" ), QString( "50%" ) } ) ) if ( !layout.addEntry( { FileSystem::Type::Ext4, QString( "/home" ), QString( "50%" ) } ) )
{ {
QFAIL( qPrintable( "Unable to create /home partition" ) ); QFAIL( qPrintable( "Unable to create /home partition" ) );
} }
if ( !layout.addEntry( { QString( "/bkup" ), QString( "50%" ) } ) ) if ( !layout.addEntry( { FileSystem::Type::Ext4, QString( "/bkup" ), QString( "50%" ) } ) )
{ {
QFAIL( qPrintable( "Unable to create /bkup partition" ) ); QFAIL( qPrintable( "Unable to create /bkup partition" ) );
} }
@ -124,7 +124,7 @@ CreateLayoutsTests::testMixedSizePartition()
} }
#ifdef WITH_KPMCORE4API #ifdef WITH_KPMCORE4API
// TODO: Get a clean way to instanciate a test Device from KPMCore // TODO: Get a clean way to instantiate a test Device from KPMCore
class DevicePrivate class DevicePrivate
{ {
public: public: