diff --git a/src/libcalamares/Tests.cpp b/src/libcalamares/Tests.cpp index bf419d721..53bedc544 100644 --- a/src/libcalamares/Tests.cpp +++ b/src/libcalamares/Tests.cpp @@ -38,6 +38,7 @@ private Q_SLOTS: void testGSModify(); void testGSLoadSave(); void testGSLoadSave2(); + void testGSLoadSaveYAMLStringList(); }; void @@ -75,7 +76,13 @@ TestLibCalamares::testGSLoadSave() gs.insert( "derp", 17 ); gs.insert( "cow", "moo" ); - gs.insert( "dwarfs", QStringList { "dopey", "sneezy" } ); + + QVariantList l; + for ( const auto& s : QStringList { "dopey", "sneezy" } ) + { + l.append( s ); + } + gs.insert( "dwarfs", l ); QCOMPARE( gs.count(), 3 ); @@ -93,8 +100,12 @@ TestLibCalamares::testGSLoadSave() QCOMPARE( gs3.count(), 3 ); QCOMPARE( gs3.data(), gs.data() ); + // YAML can load as JSON! + QVERIFY( gs3.loadYaml( jsonfilename ) ); + QCOMPARE( gs3.count(), 3 ); + QCOMPARE( gs3.data(), gs.data() ); + // Failures in loading - QVERIFY( !gs3.loadYaml( jsonfilename ) ); QVERIFY( !gs3.loadJson( yamlfilename ) ); Calamares::GlobalStorage gs4; @@ -139,6 +150,33 @@ TestLibCalamares::testGSLoadSave2() QCOMPARE( gs2.value( key ).type(), QVariant::List ); } +void +TestLibCalamares::testGSLoadSaveYAMLStringList() +{ + Calamares::GlobalStorage gs; + const QString yamlfilename( "gs.test.yaml" ); + + gs.insert( "derp", 17 ); + gs.insert( "cow", "moo" ); + gs.insert( "dwarfs", QStringList { "happy", "dopey", "sleepy", "sneezy", "doc", "thorin", "balin" } ); + + QCOMPARE( gs.count(), 3 ); + QCOMPARE( gs.value( "dwarfs" ).toList().count(), 7 ); // There's seven dwarfs, right? + QVERIFY( gs.value( "dwarfs" ).toStringList().contains( "thorin" ) ); + QVERIFY( !gs.value( "dwarfs" ).toStringList().contains( "gimli" ) ); + + + QVERIFY( gs.saveYaml( yamlfilename ) ); + + Calamares::GlobalStorage gs2; + QCOMPARE( gs2.count(), 0 ); + QVERIFY( gs2.loadYaml( yamlfilename ) ); + QCOMPARE( gs2.count(), 3 ); + QEXPECT_FAIL( "", "QStringList doesn't write out nicely", Continue ); + QCOMPARE( gs2.value( "dwarfs" ).toList().count(), 7 ); // There's seven dwarfs, right? + QCOMPARE( gs2.value( "dwarfs" ).toString(), QStringLiteral( "" ) ); // .. they're gone +} + QTEST_GUILESS_MAIN( TestLibCalamares )