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

0001 /*
0002 SPDX-FileCopyrightText: 2022 Laurent Montel <montel@kde.org>
0003 
0004 SPDX-License-Identifier: GPL-3.0-or-later
0005 */
0006 
0007 #include "submoduletest.h"
0008 #include "qtestcase.h"
0009 #include "testcommon.h"
0010 #include <entities/commit.h>
0011 #include <entities/submodule.h>
0012 #include <entities/tree.h>
0013 #include <options/addsubmoduleoptions.h>
0014 
0015 #include <QTest>
0016 #include <gitmanager.h>
0017 
0018 QTEST_GUILESS_MAIN(SubmoduleTest)
0019 
0020 SubmoduleTest::SubmoduleTest(QObject *parent)
0021     : QObject{parent}
0022 {
0023 }
0024 
0025 void SubmoduleTest::initTestCase()
0026 {
0027     auto path = TestCommon::getTempPath();
0028     qDebug() << path;
0029     mManager = new Git::Manager;
0030 
0031     QVERIFY(!mManager->isValid());
0032 
0033     auto ok = mManager->init(path);
0034     QVERIFY(ok);
0035 
0036     TestCommon::initSignature(mManager);
0037 }
0038 
0039 void SubmoduleTest::cleanupTestCase()
0040 {
0041     TestCommon::cleanPath(mManager);
0042 }
0043 
0044 void SubmoduleTest::makeACommit()
0045 {
0046     TestCommon::touch(mManager->path() + "/README.md");
0047 
0048     mManager->addFile("README.md");
0049     mManager->commit("commit1");
0050 }
0051 
0052 void SubmoduleTest::addSubmodule()
0053 {
0054     Git::AddSubmoduleOptions opts;
0055 
0056     opts.url = "https://github.com/HamedMasafi/Logger.git";
0057     opts.path = "3rdparty/libgit2";
0058     TestCommon::makePath(mManager, "3rdparty/libgit2");
0059 
0060     auto ok = mManager->addSubmodule(opts);
0061 
0062     QVERIFY(ok);
0063 }
0064 
0065 void SubmoduleTest::addInSameLocation()
0066 {
0067     Git::AddSubmoduleOptions opts;
0068 
0069     opts.url = "https://github.com/HamedMasafi/Logger.git";
0070     opts.path = "3rdparty/libgit2";
0071 
0072     auto ok = mManager->addSubmodule(opts);
0073 
0074     QVERIFY(!ok);
0075 
0076     QCOMPARE(mManager->errorCode(), -4);
0077     QCOMPARE(mManager->errorClass(), 17);
0078     QCOMPARE(mManager->errorMessage(), "attempt to add submodule '3rdparty/libgit2' that already exists");
0079 }
0080 
0081 void SubmoduleTest::checkExists()
0082 {
0083     auto submodules = mManager->submodules();
0084     QCOMPARE(submodules.size(), 1);
0085 
0086     auto submodule = submodules.first();
0087 
0088     QCOMPARE(submodule->name(), "3rdparty/libgit2");
0089     QCOMPARE(submodule->path(), "3rdparty/libgit2");
0090     QCOMPARE(submodule->url(), "https://github.com/HamedMasafi/Logger.git");
0091 }
0092 
0093 void SubmoduleTest::lookup()
0094 {
0095     auto submodule = mManager->submodule("3rdparty/libgit2");
0096 
0097     QVERIFY(submodule != nullptr);
0098     QCOMPARE(submodule->name(), "3rdparty/libgit2");
0099     QCOMPARE(submodule->path(), "3rdparty/libgit2");
0100     QCOMPARE(submodule->url(), "https://github.com/HamedMasafi/Logger.git");
0101     Git::Submodule::StatusFlags statusFlags = Git::Submodule::Status::WdIndexModified | Git::Submodule::Status::IndexAdded | Git::Submodule::Status::InIndex
0102         | Git::Submodule::Status::InConfig | Git::Submodule::Status::InWd;
0103     QCOMPARE(submodule->status(), statusFlags);
0104     QCOMPARE(submodule->branch(), "");
0105 }
0106 
0107 void SubmoduleTest::remove()
0108 {
0109 }
0110 
0111 #include "moc_submoduletest.cpp"