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"