Gittyup/test/bare_repo.cpp

107 lines
2.6 KiB
C++
Raw Normal View History

2018-12-13 02:22:04 +03:00
//
// Copyright (c) 2016, Scientific Toolworks, Inc.
//
// This software is licensed under the MIT License. The LICENSE.md file
// describes the conditions under which this software may be distributed.
//
// Author: Shane Gramlich
//
#include "Test.h"
#include "dialogs/CloneDialog.h"
#include "dialogs/StartDialog.h"
#include "ui/Footer.h"
#include "ui/MainWindow.h"
#include "ui/RepoView.h"
#include <QMenu>
#include <QToolButton>
using namespace Test;
using namespace QTest;
2022-05-01 10:51:34 +03:00
class TestBareRepo : public QObject {
2018-12-13 02:22:04 +03:00
Q_OBJECT
private slots:
void initTestCase();
void checkDir();
void cleanupTestCase();
private:
MainWindow *mWindow = nullptr;
};
2022-05-01 10:51:34 +03:00
void TestBareRepo::initTestCase() {
2018-12-13 02:22:04 +03:00
StartDialog *dialog = StartDialog::openSharedInstance();
QVERIFY(qWaitForWindowExposed(dialog));
2018-12-13 02:22:04 +03:00
// Find the first button in the first footer.
Footer *footer = dialog->findChild<Footer *>();
QToolButton *plus = footer->findChild<QToolButton *>();
// Set up timer to dismiss the popup.
QTimer::singleShot(500, [] {
QMenu *menu = qobject_cast<QMenu *>(QApplication::activePopupWidget());
QVERIFY(menu);
keyClick(menu, Qt::Key_Down);
keyClick(menu, Qt::Key_Down);
keyClick(menu, Qt::Key_Down);
keyClick(menu, Qt::Key_Return);
});
{
auto timeout = Timeout(1000, "Start dialog hasn't been dismissed in time");
// Show popup menu.
mouseClick(plus, Qt::LeftButton);
}
2018-12-13 02:22:04 +03:00
CloneDialog *cloneDialog =
2022-05-01 10:51:34 +03:00
qobject_cast<CloneDialog *>(QApplication::activeModalWidget());
2018-12-13 02:22:04 +03:00
QVERIFY(cloneDialog);
// Set fields.
cloneDialog->setField("name", "test_bare_repo");
cloneDialog->setField("path", QDir::tempPath());
cloneDialog->setField("bare", true);
qWait(2000);
qDebug() << cloneDialog->field("bare").toBool();
// Click return.
keyClick(cloneDialog, Qt::Key_Return);
// Wait on the new window.
mWindow = MainWindow::activeWindow();
QVERIFY(mWindow && qWaitForWindowActive(mWindow));
}
2022-05-01 10:51:34 +03:00
void TestBareRepo::checkDir() {
2018-12-13 02:22:04 +03:00
RepoView *view = mWindow->currentView();
QVERIFY(view->repo().isBare());
QDir dir = QDir::temp();
QVERIFY(dir.cd("test_bare_repo"));
QVERIFY(!dir.exists(".git"));
QVERIFY(dir.exists("config"));
QVERIFY(dir.exists("objects"));
QVERIFY(dir.exists("HEAD"));
QVERIFY(dir.exists("info"));
QVERIFY(dir.exists("description"));
QVERIFY(dir.exists("hooks"));
QVERIFY(dir.exists("refs"));
}
2022-05-01 10:51:34 +03:00
void TestBareRepo::cleanupTestCase() {
2018-12-13 02:22:04 +03:00
mWindow->close();
QDir dir = QDir::temp();
QVERIFY(dir.cd("test_bare_repo"));
QVERIFY(dir.removeRecursively());
}
TEST_MAIN(TestBareRepo)
#include "bare_repo.moc"