File indexing completed on 2025-03-09 05:11:39

0001 /*
0002 SPDX-FileCopyrightText: 2022 Laurent Montel <montel@kde.org>
0003 
0004 SPDX-License-Identifier: GPL-3.0-or-later
0005 */
0006 
0007 #include "stashtest.h"
0008 #include "gitmanager.h"
0009 #include "testcommon.h"
0010 #include <QTest>
0011 
0012 QTEST_GUILESS_MAIN(StashTest)
0013 
0014 StashTest::StashTest(QObject *parent)
0015     : QObject{parent}
0016 {
0017 }
0018 
0019 void StashTest::initTestCase()
0020 {
0021     auto path = TestCommon::getTempPath();
0022     qDebug() << path;
0023     mManager = new Git::Manager;
0024 
0025     auto init = mManager->init(path);
0026     QCOMPARE(mManager->path(), path);
0027     QVERIFY(init);
0028     QVERIFY(mManager->isValid());
0029 
0030     TestCommon::initSignature(mManager);
0031 }
0032 
0033 void StashTest::cleanupTestCase()
0034 {
0035     TestCommon::cleanPath(mManager);
0036 }
0037 
0038 void StashTest::makeACommit()
0039 {
0040     TestCommon::touch(mManager->path() + "/README.md");
0041 
0042     mManager->addFile("README.md");
0043     mManager->commit("commit1");
0044 }
0045 
0046 void StashTest::touchAFile()
0047 {
0048     mFileContentInStash = TestCommon::touch(mManager->path() + "/README.md");
0049     auto changedFiles = mManager->changedFiles();
0050     QCOMPARE(changedFiles.count(), 1);
0051     QCOMPARE(changedFiles.value("README.md"), Git::ChangeStatus::Modified);
0052 }
0053 
0054 void StashTest::makeStash()
0055 {
0056     auto ok = mManager->createStash("stash1");
0057     QVERIFY(ok);
0058 
0059     auto changedFiles = mManager->changedFiles();
0060     QCOMPARE(changedFiles.count(), 0);
0061 
0062     auto stashes = mManager->stashes();
0063     QCOMPARE(stashes.count(), 1);
0064     QCOMPARE(stashes.at(0)->message(), QStringLiteral("On master: stash1"));
0065 }
0066 
0067 void StashTest::tryToApplyInChangedWorkDir()
0068 {
0069     TestCommon::touch(mManager->path() + "/README.md");
0070     auto ok = mManager->applyStash(QStringLiteral("On master: stash1"));
0071     QVERIFY(!ok); // we have un committed changes
0072 }
0073 
0074 void StashTest::revertAndApplyStash()
0075 {
0076     TestCommon::touch(mManager->path() + "/README.md");
0077     auto ok = mManager->revertFile("README.md");
0078     QVERIFY(ok);
0079     ok = mManager->applyStash(QStringLiteral("On master: stash1"));
0080     QVERIFY(ok);
0081 }
0082 
0083 void StashTest::commitAndApplyStash()
0084 {
0085     TestCommon::touch(mManager->path() + "/README.md");
0086 
0087     mManager->addFile("README.md");
0088     mManager->commit("commit2");
0089 
0090     auto ok = mManager->applyStash(QStringLiteral("On master: stash1"));
0091     QVERIFY(ok);
0092 }
0093 
0094 #include "moc_stashtest.cpp"