CLI: Add 'flatten' option to the 'ls' command (#3276)
* Fixes #925 * Add 'flatten' option to CLI ls command * Add test for Group::hierarchy() and man page for ls --flatten * Rename group sort test to align with others
This commit is contained in:
committed by
Jonathan White
parent
1e915eef89
commit
05c11d1b7c
@@ -847,7 +847,38 @@ void TestCli::testList()
|
||||
"eMail/\n"
|
||||
" [empty]\n"
|
||||
"Homebanking/\n"
|
||||
" [empty]\n"));
|
||||
" Subgroup/\n"
|
||||
" Subgroup Entry\n"));
|
||||
|
||||
pos = m_stdoutFile->pos();
|
||||
Utils::Test::setNextPassword("a");
|
||||
listCmd.execute({"ls", "-R", "-f", m_dbFile->fileName()});
|
||||
m_stdoutFile->seek(pos);
|
||||
m_stdoutFile->readLine(); // skip password prompt
|
||||
QCOMPARE(m_stdoutFile->readAll(),
|
||||
QByteArray("Sample Entry\n"
|
||||
"General/\n"
|
||||
"General/[empty]\n"
|
||||
"Windows/\n"
|
||||
"Windows/[empty]\n"
|
||||
"Network/\n"
|
||||
"Network/[empty]\n"
|
||||
"Internet/\n"
|
||||
"Internet/[empty]\n"
|
||||
"eMail/\n"
|
||||
"eMail/[empty]\n"
|
||||
"Homebanking/\n"
|
||||
"Homebanking/Subgroup/\n"
|
||||
"Homebanking/Subgroup/Subgroup Entry\n"));
|
||||
|
||||
pos = m_stdoutFile->pos();
|
||||
Utils::Test::setNextPassword("a");
|
||||
listCmd.execute({"ls", "-R", "-f", m_dbFile->fileName(), "/Homebanking"});
|
||||
m_stdoutFile->seek(pos);
|
||||
m_stdoutFile->readLine(); // skip password prompt
|
||||
QCOMPARE(m_stdoutFile->readAll(),
|
||||
QByteArray("Subgroup/\n"
|
||||
"Subgroup/Subgroup Entry\n"));
|
||||
|
||||
pos = m_stdoutFile->pos();
|
||||
Utils::Test::setNextPassword("a");
|
||||
@@ -921,7 +952,8 @@ void TestCli::testLocate()
|
||||
locateCmd.execute({"locate", tmpFile.fileName(), "Entry"});
|
||||
m_stdoutFile->seek(pos);
|
||||
m_stdoutFile->readLine(); // skip password prompt
|
||||
QCOMPARE(m_stdoutFile->readAll(), QByteArray("/Sample Entry\n/General/New Entry\n"));
|
||||
QCOMPARE(m_stdoutFile->readAll(),
|
||||
QByteArray("/Sample Entry\n/General/New Entry\n/Homebanking/Subgroup/Subgroup Entry\n"));
|
||||
}
|
||||
|
||||
void TestCli::testMerge()
|
||||
|
||||
@@ -635,28 +635,57 @@ void TestGroup::testPrint()
|
||||
|
||||
Group* group1 = new Group();
|
||||
group1->setName("group1");
|
||||
group1->setParent(db->rootGroup());
|
||||
|
||||
Entry* entry2 = new Entry();
|
||||
|
||||
entry2->setTitle(QString("entry2"));
|
||||
entry2->setGroup(group1);
|
||||
entry2->setUuid(QUuid::createUuid());
|
||||
|
||||
group1->setParent(db->rootGroup());
|
||||
Group* group2 = new Group();
|
||||
group2->setName("group2");
|
||||
group2->setParent(db->rootGroup());
|
||||
|
||||
Group* subGroup = new Group();
|
||||
subGroup->setName("subgroup");
|
||||
subGroup->setParent(group2);
|
||||
|
||||
Entry* entry3 = new Entry();
|
||||
entry3->setTitle(QString("entry3"));
|
||||
entry3->setGroup(subGroup);
|
||||
entry3->setUuid(QUuid::createUuid());
|
||||
|
||||
output = db->rootGroup()->print();
|
||||
QVERIFY(output.contains(QString("entry1\n")));
|
||||
QVERIFY(output.contains(QString("group1/\n")));
|
||||
QVERIFY(!output.contains(QString(" entry2\n")));
|
||||
QVERIFY(output.contains(QString("group2/\n")));
|
||||
QVERIFY(!output.contains(QString(" subgroup\n")));
|
||||
|
||||
output = db->rootGroup()->print(true);
|
||||
QVERIFY(output.contains(QString("entry1\n")));
|
||||
QVERIFY(output.contains(QString("group1/\n")));
|
||||
QVERIFY(output.contains(QString(" entry2\n")));
|
||||
QVERIFY(output.contains(QString("group2/\n")));
|
||||
QVERIFY(output.contains(QString(" subgroup/\n")));
|
||||
QVERIFY(output.contains(QString(" entry3\n")));
|
||||
|
||||
output = db->rootGroup()->print(true, true);
|
||||
QVERIFY(output.contains(QString("entry1\n")));
|
||||
QVERIFY(output.contains(QString("group1/\n")));
|
||||
QVERIFY(output.contains(QString("group1/entry2\n")));
|
||||
QVERIFY(output.contains(QString("group2/\n")));
|
||||
QVERIFY(output.contains(QString("group2/subgroup/\n")));
|
||||
QVERIFY(output.contains(QString("group2/subgroup/entry3\n")));
|
||||
|
||||
output = group1->print();
|
||||
QVERIFY(!output.contains(QString("group1/\n")));
|
||||
QVERIFY(output.contains(QString("entry2\n")));
|
||||
|
||||
output = group2->print(true, true);
|
||||
QVERIFY(!output.contains(QString("group2/\n")));
|
||||
QVERIFY(output.contains(QString("subgroup/\n")));
|
||||
QVERIFY(output.contains(QString("subgroup/entry3\n")));
|
||||
}
|
||||
|
||||
void TestGroup::testLocate()
|
||||
@@ -841,7 +870,7 @@ void TestGroup::testEquals()
|
||||
QVERIFY(group->equals(group.data(), CompareItemDefault));
|
||||
}
|
||||
|
||||
void TestGroup::sortChildrenRecursively()
|
||||
void TestGroup::testChildrenSort()
|
||||
{
|
||||
auto createTestGroupWithUnorderedChildren = []() -> Group* {
|
||||
Group* parent = new Group();
|
||||
@@ -1020,3 +1049,35 @@ void TestGroup::sortChildrenRecursively()
|
||||
QCOMPARE(children[8]->name(), QString("sub_000"));
|
||||
delete parent;
|
||||
}
|
||||
|
||||
void TestGroup::testHierarchy()
|
||||
{
|
||||
Group* group1 = new Group();
|
||||
group1->setName("group1");
|
||||
|
||||
Group* group2 = new Group();
|
||||
group2->setName("group2");
|
||||
group2->setParent(group1);
|
||||
|
||||
Group* group3 = new Group();
|
||||
group3->setName("group3");
|
||||
group3->setParent(group2);
|
||||
|
||||
QStringList hierarchy = group3->hierarchy();
|
||||
QVERIFY(hierarchy.size() == 3);
|
||||
QVERIFY(hierarchy.contains("group1"));
|
||||
QVERIFY(hierarchy.contains("group2"));
|
||||
QVERIFY(hierarchy.contains("group3"));
|
||||
|
||||
hierarchy = group3->hierarchy(0);
|
||||
QVERIFY(hierarchy.size() == 0);
|
||||
|
||||
hierarchy = group3->hierarchy(1);
|
||||
QVERIFY(hierarchy.size() == 1);
|
||||
QVERIFY(hierarchy.contains("group3"));
|
||||
|
||||
hierarchy = group3->hierarchy(2);
|
||||
QVERIFY(hierarchy.size() == 2);
|
||||
QVERIFY(hierarchy.contains("group2"));
|
||||
QVERIFY(hierarchy.contains("group3"));
|
||||
}
|
||||
|
||||
@@ -45,7 +45,8 @@ private slots:
|
||||
void testIsRecycled();
|
||||
void testCopyDataFrom();
|
||||
void testEquals();
|
||||
void sortChildrenRecursively();
|
||||
void testChildrenSort();
|
||||
void testHierarchy();
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_TESTGROUP_H
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user