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 "branchesdifftest.h" 0008 #include "testcommon.h" 0009 0010 #include <QTest> 0011 #include <entities/branch.h> 0012 #include <gitmanager.h> 0013 0014 QTEST_GUILESS_MAIN(BranchesDiffTest) 0015 0016 BranchesDiffTest::BranchesDiffTest(QObject *parent) 0017 : QObject{parent} 0018 { 0019 } 0020 0021 void BranchesDiffTest::initTestCase() 0022 { 0023 auto path = TestCommon::getTempPath(); 0024 qDebug() << path; 0025 mManager = new Git::Manager; 0026 QVERIFY(!mManager->isValid()); 0027 0028 auto ok = mManager->init(path); 0029 QVERIFY(ok); 0030 QCOMPARE(path, mManager->path()); 0031 0032 TestCommon::initSignature(mManager); 0033 } 0034 0035 void BranchesDiffTest::cleanupTestCase() 0036 { 0037 TestCommon::cleanPath(mManager); 0038 } 0039 0040 void BranchesDiffTest::makeACommit() 0041 { 0042 TestCommon::touch(mManager, "/unchanged"); 0043 TestCommon::touch(mManager, "/changed_in_both"); 0044 TestCommon::touch(mManager, "/changed_in_master"); 0045 TestCommon::touch(mManager, "/changed_in_dev"); 0046 0047 TestCommon::touch(mManager, "/inside_dir/unchanged"); 0048 TestCommon::touch(mManager, "/inside_dir/changed_in_both"); 0049 TestCommon::touch(mManager, "/inside_dir/changed_in_master"); 0050 TestCommon::touch(mManager, "/inside_dir/changed_in_dev"); 0051 0052 mManager->commit("commit1"); 0053 } 0054 0055 void BranchesDiffTest::createBranch() 0056 { 0057 auto ok = mManager->createBranch(newBranchName); 0058 QVERIFY(ok); 0059 0060 QVERIFY(mManager->branchesNames(Git::Manager::BranchType::LocalBranch).contains(newBranchName)); 0061 0062 auto newBranch = mManager->branch(newBranchName); 0063 QVERIFY(newBranch != nullptr); 0064 } 0065 0066 void BranchesDiffTest::switchToNewBranch() 0067 { 0068 auto ok = mManager->switchBranch(newBranchName); 0069 QVERIFY(ok); 0070 QCOMPARE(mManager->currentBranch(), newBranchName); 0071 0072 TestCommon::touch(mManager, "/changed_in_both"); 0073 TestCommon::touch(mManager, "/changed_in_dev"); 0074 TestCommon::touch(mManager, "/only_in_dev"); 0075 0076 TestCommon::touch(mManager, "/inside_dir/changed_in_both"); 0077 TestCommon::touch(mManager, "/inside_dir/changed_in_dev"); 0078 TestCommon::touch(mManager, "/inside_dir/only_in_dev"); 0079 0080 mManager->commit("commit_in_dev"); 0081 } 0082 0083 void BranchesDiffTest::switchToMaster() 0084 { 0085 auto ok = mManager->switchBranch("master"); 0086 QVERIFY(ok); 0087 0088 TestCommon::touch(mManager, "/changed_in_both"); 0089 TestCommon::touch(mManager, "/changed_in_master"); 0090 TestCommon::touch(mManager, "/only_in_master"); 0091 0092 TestCommon::touch(mManager, "/inside_dir/changed_in_both"); 0093 TestCommon::touch(mManager, "/inside_dir/changed_in_master"); 0094 TestCommon::touch(mManager, "/inside_dir/only_in_master"); 0095 0096 mManager->commit("commit_in_master"); 0097 } 0098 0099 void BranchesDiffTest::diff() 0100 { 0101 auto branches = mManager->branches(Git::Manager::BranchType::LocalBranch); 0102 QCOMPARE(branches.size(), 2); 0103 0104 QCOMPARE(branches.at(0)->name(), "dev"); 0105 QCOMPARE(branches.at(1)->name(), "master"); 0106 auto diff = mManager->diff(branches.at(1)->tree(), branches.at(0)->tree()); 0107 0108 QCOMPARE(diff.size(), 10); 0109 0110 QVERIFY(!diff.contains("unchanged")); 0111 QVERIFY(diff.contains("changed_in_both")); 0112 QVERIFY(diff.contains("changed_in_master")); 0113 QVERIFY(diff.contains("changed_in_dev")); 0114 QVERIFY(diff.contains("only_in_master")); 0115 QVERIFY(diff.contains("only_in_dev")); 0116 0117 QCOMPARE(diff.status("unchanged"), Git::ChangeStatus::Unmodified); 0118 QCOMPARE(diff.status("changed_in_both"), Git::ChangeStatus::Modified); 0119 QCOMPARE(diff.status("changed_in_master"), Git::ChangeStatus::Modified); 0120 QCOMPARE(diff.status("changed_in_dev"), Git::ChangeStatus::Modified); 0121 QCOMPARE(diff.status("only_in_master"), Git::ChangeStatus::Removed); 0122 QCOMPARE(diff.status("only_in_dev"), Git::ChangeStatus::Added); 0123 0124 QCOMPARE(diff.status("inside_dir/unchanged"), Git::ChangeStatus::Unmodified); 0125 QCOMPARE(diff.status("inside_dir/changed_in_both"), Git::ChangeStatus::Modified); 0126 QCOMPARE(diff.status("inside_dir/changed_in_master"), Git::ChangeStatus::Modified); 0127 QCOMPARE(diff.status("inside_dir/changed_in_dev"), Git::ChangeStatus::Modified); 0128 QCOMPARE(diff.status("inside_dir/only_in_master"), Git::ChangeStatus::Removed); 0129 QCOMPARE(diff.status("inside_dir/only_in_dev"), Git::ChangeStatus::Added); 0130 } 0131 0132 #include "moc_branchesdifftest.cpp"