[libcalamares] Add name-for-partition-type method

- add apidox to all the untranslatedFS() methods
- add the most-basic of untranslatedFS(), which works on a given
  FileSystem::Type; this one can handle special cases where
  Cala needs a different untranslated name than what KPMCore provides.
This commit is contained in:
Adriaan de Groot 2020-08-09 00:00:14 +02:00
parent 537aad1222
commit 62a8ee9708
3 changed files with 58 additions and 2 deletions

View File

@ -1,5 +1,5 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
*
* SPDX-FileCopyrightText: 2014 Aurélien Gâteau <agateau@kde.org>
* SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac <teo@kde.org>
* SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot <groot@kde.org>
@ -74,5 +74,17 @@ prettyNameForFileSystemType( FileSystem::Type t )
}
}
QString
untranslatedFS( FileSystem::Type t )
{
switch ( t )
{
case FileSystem::Type::ReiserFS:
return QStringLiteral( "reiserfs" );
default:
return FileSystem::nameForType( t, { QStringLiteral( "C" ) } );
}
}
} // namespace Partition
} // namespace CalamaresUtils

View File

@ -38,12 +38,30 @@ namespace Partition
{
QString DLLEXPORT prettyNameForFileSystemType( FileSystem::Type t );
/** @brief Returns a machine-readable identifier for the filesystem type
*
* This identifier is used in filesystem manipulation --
* e.g. when mounting the filesystem, or in /etc/fstab. It
* is almost always just what KPMCore says it is, with
* the following exceptions:
* - reiserfs is called "reiser" by KPMCore, "reiserfs" by Calamares
*/
QString DLLEXPORT untranslatedFS( FileSystem::Type t );
/** @brief Returns the machine-readable identifier for the given @p fs
*
* See notes for untranslatedFS(), above.
*/
static inline QString
untranslatedFS( FileSystem& fs )
{
return fs.name( { QStringLiteral( "C" ) } );
return untranslatedFS( fs.type() );
}
/** @brief Returns a machine-readable identifier for the given @p fs
*
* Returns an empty string is the @p fs is not valid (e.g. nullptr).
*/
static inline QString
untranslatedFS( FileSystem* fs )
{

View File

@ -20,6 +20,8 @@
#include "utils/Logger.h"
#include "FileSystem.h"
#include <kpmcore/core/partitiontable.h>
#include <kpmcore/fs/filesystem.h>
@ -100,6 +102,30 @@ KPMTests::testFSNames()
QVERIFY( fsNames.contains( "ext2" ) );
QVERIFY( fsNames.contains( "ext4" ) );
QVERIFY( fsNames.contains( "reiser" ) );
QStringList calaFSNames;
calaFSNames.reserve( fstypes.count() );
for ( const auto t : fstypes )
{
QString s = CalamaresUtils::Partition::untranslatedFS( t );
calaFSNames.append( s );
}
QVERIFY( calaFSNames.contains( "ext2" ) );
QVERIFY( calaFSNames.contains( "ext4" ) );
QVERIFY( !calaFSNames.contains( "reiser" ) );
QVERIFY( calaFSNames.contains( "reiserfs" ) ); // whole point of Cala's own implementation
// Lists are the same except for .. the exceptions
QStringList exceptionalNames { "reiser", "reiserfs" };
for ( const auto& s : fsNames )
{
QVERIFY( exceptionalNames.contains( s ) || calaFSNames.contains( s ) );
}
for ( const auto& s : calaFSNames )
{
QVERIFY( exceptionalNames.contains( s ) || fsNames.contains( s ) );
}
}