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 "filetest.h"
0008 #include "entities/branch.h"
0009 #include "entities/tree.h"
0010 #include "gitmanager.h"
0011 #include "testcommon.h"
0012 #include <QTest>
0013 
0014 #include <entities/commit.h>
0015 
0016 QTEST_GUILESS_MAIN(FileTest)
0017 
0018 FileTest::FileTest(QObject *parent)
0019     : QObject{parent}
0020 {
0021 }
0022 
0023 void FileTest::initTestCase()
0024 {
0025     auto path = TestCommon::getTempPath();
0026     qDebug() << path;
0027     mManager = new Git::Manager;
0028 
0029     auto init = mManager->init(path);
0030     QCOMPARE(mManager->path(), path);
0031     QVERIFY(init);
0032     QVERIFY(mManager->isValid());
0033 
0034     TestCommon::initSignature(mManager);
0035 }
0036 
0037 void FileTest::cleanupTestCase()
0038 {
0039     TestCommon::cleanPath(mManager);
0040 }
0041 
0042 void FileTest::makeFirstCommit()
0043 {
0044     mFileContentAtFirstCommit = TestCommon::touch(mManager->path() + "/README.md");
0045     mManager->addFile("README.md");
0046     mManager->commit("first commit");
0047 }
0048 
0049 void FileTest::makeSecondCommit()
0050 {
0051     mFileContentAtSecondCommit = TestCommon::touch(mManager->path() + "/README.md");
0052     mManager->addFile("README.md");
0053     mManager->commit("second commit");
0054 }
0055 
0056 void FileTest::makeThirdCommit()
0057 {
0058     mFileContentAtThirdCommit = TestCommon::touch(mManager->path() + "/README.md");
0059     mManager->addFile("README.md");
0060     mManager->commit("third commit");
0061 }
0062 
0063 void FileTest::checkContents()
0064 {
0065     auto commits = mManager->commits();
0066     QCOMPARE(commits.size(), 3);
0067     QCOMPARE(commits.at(2)->subject(), "first commit");
0068     QCOMPARE(commits.at(1)->subject(), "second commit");
0069     QCOMPARE(commits.at(0)->subject(), "third commit");
0070 
0071     Git::File firstFile{mManager, commits.at(2)->commitHash(), "README.md"};
0072     Git::File secondFile{mManager, commits.at(1)->commitHash(), "README.md"};
0073     Git::File thirdFile{mManager, commits.at(0)->commitHash(), "README.md"};
0074 
0075     QCOMPARE(firstFile.content(), mFileContentAtFirstCommit);
0076     QCOMPARE(secondFile.content(), mFileContentAtSecondCommit);
0077     QCOMPARE(thirdFile.content(), mFileContentAtThirdCommit);
0078 
0079     QCOMPARE(commits.at(2)->tree()->file("README.md")->content(), mFileContentAtFirstCommit);
0080     QCOMPARE(commits.at(1)->tree()->file("README.md")->content(), mFileContentAtSecondCommit);
0081     QCOMPARE(commits.at(0)->tree()->file("README.md")->content(), mFileContentAtThirdCommit);
0082 }
0083 
0084 void FileTest::checkContentInBranch()
0085 {
0086     auto branches = mManager->branches(Git::Manager::BranchType::LocalBranch);
0087     QCOMPARE(branches.size(), 1);
0088 
0089     auto mainBranch = branches.at(0);
0090     QVERIFY(mainBranch != nullptr);
0091 
0092     auto tree = mainBranch->tree();
0093     QVERIFY(tree != nullptr);
0094 
0095     auto file = tree->file("README.md");
0096     QVERIFY(file != nullptr);
0097 
0098     auto content = file->content();
0099     QCOMPARE(content, mFileContentAtThirdCommit);
0100 }
0101 
0102 #include "moc_filetest.cpp"