Skip to content

Commit

Permalink
Revert "Debugging test initialization."
Browse files Browse the repository at this point in the history
This reverts commit 90d1f7bedf07a781a635aba310281d5390c4bbb6
  • Loading branch information
TallFurryMan committed Aug 28, 2020
1 parent a2149a1 commit 844f991
Show file tree
Hide file tree
Showing 6 changed files with 234 additions and 43 deletions.
147 changes: 147 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
# This YAML recipe builds KStars with INDI support, then runs all tests

# This is from packaging/linux/debian/control build-depends - fix that first if there is an issue in the CI build
.install_build_dependencies: &install_build_dependencies
- apt update && apt -y install --no-install-recommends software-properties-common
- apt update && add-apt-repository ppa:mutlaqja/ppa
- >
apt update && apt -y install --no-install-recommends
gcc-multilib
g++-multilib
make
gettext
coreutils
cmake
extra-cmake-modules
qtbase5-dev
qtdeclarative5-dev
qtmultimedia5-dev
qtpositioning5-dev
libqt5websockets5-dev
libqt5svg5-dev
libqt5sql5-sqlite
kdoctools-dev
libkf5config-dev
libkf5guiaddons-dev
libkf5i18n-dev
libkf5newstuff-dev
libkf5notifications-dev
libkf5xmlgui-dev
libkf5plotting-dev
libkf5crash-dev
libkf5notifyconfig-dev
libeigen3-dev
zlib1g-dev
libcfitsio-dev
libnova-dev
libindi-dev
indi-bin
wcslib-dev
libraw-dev
libgsl-dev
phonon4qt5-backend-vlc
qt5keychain-dev
libsecret-1-dev
# This is from packaging/linux/debian/control recommends/depends - fix that first if there is an issue in the CI build
.install_test_dependencies: &install_test_dependencies
- apt update && apt -y install --no-install-recommends software-properties-common
- apt update && add-apt-repository ppa:mutlaqja/ppa && add-apt-repository ppa:pch/phd2
- >
apt update &&
apt -y --no-install-recommends install
make
cmake
extra-cmake-modules
xplanet
xplanet-images
astrometry.net
kded5
kinit
libindi1
indi-bin
breeze-icon-theme
libqt5sql5-sqlite
qml-module-qtquick-controls
phd2
xvfb
#image: ubuntu:latest

# Run the full validation in one step
# The artifacts take far too much time to propagate from one step to the other
# The cache is unreliable, and only works on the same runner if there is no shared cache - use it for ccache instead
# Consolidate runner with build packages and build
build-and-test:
stage: test
interruptible: true
image: tallfurryman/kstars-ci
# before_script:
# - *install_build_dependencies
# - *install_test_dependencies
script:
- mkdir -p kstars-build
- cd kstars-build
- cmake -DCMAKE_BUILD_TYPE=Release ..
- make -j$(nproc) clean all install
- rm -rf Testing
- xvfb-run make test QT_TEST_TIMEOUT_FUNCTION=600000 QT_QPA_PLATFORM=eglfs ARGS='-T test -V --output-on-failure --no-compress-output' || true
- apt install -y --no-install-recommends libsaxon-java openjdk-11-jre-headless
- saxon-xslt -u $(find ./Testing -name Test.xml) https://raw.githubusercontent.com/rpavlik/jenkins-ctest-plugin/master/ctest-to-junit.xsl > ./junit_result.xml
artifacts:
reports:
junit:
kstars-build/junit_result.xml

# This part kept for reference, does not work on our gitlab instance
# Mainly because of the propagation of artifact from stage build to stage test
# Probably because the upload uses a webdav REST API, and there are many large files in the list
# In the meantime, following up on the many gitlab issues reporting that problem

# We build and test
#stages:
# - build
# - test

# We cache the build folder per job and per branch
# cache:
# key: "$CI_COMMIT_REF_SLUG"
# paths:
# - kstars-build/

# Consolidate runner with build packages and build
#build-kstars:
# stage: build
# interruptible: true
# before_script:
# - *install_build_dependencies
# script:
# - mkdir -p kstars-build
# - cd kstars-build
# - cmake -DCMAKE_BUILD_TYPE=Release ..
# - make -j$(nproc) clean all
# artifacts:
# expire_in: 3600 sec
# paths:
# - kstars-build/
# exclude:
# - kstars-build/**/*.o

# Consolidate runner with test packages and test
#test-kstars:
# stage: test
# interruptible: true
# needs:
# - build-kstars
# dependencies:
# - build-kstars
# before_script:
# - *install_test_dependencies
# script:
# - cd kstars-build
# - rm -rf Testing
# - xvfb-run -a make test QT_TEST_TIMEOUT_FUNCTION=600000 ARGS='-T test --no-compress-output'
# artifacts:
# reports:
# junit:
# kstars-build/Testing/**.xml
9 changes: 6 additions & 3 deletions Tests/kstars_ui/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,12 @@ INCLUDE_DIRECTORIES(${INDI_INCLUDE_DIR})
SET(KSTARS_UI_EKOS_SRC ${KSTARS_UI_TESTS_SRC} test_ekos_wizard.cpp)
SET(KSTARS_UI_EKOS_LIBS ${TEST_LIBRARIES} ${CFITSIO_LIBRARIES} ${INDI_CLIENT_LIBRARIES} ${NOVA_LIBRARIES} z)

ADD_EXECUTABLE(test_ekos ${KSTARS_UI_EKOS_SRC} test_ekos.cpp)
TARGET_LINK_LIBRARIES(test_ekos ${KSTARS_UI_EKOS_LIBS})
ADD_TEST(NAME TestEkosProfiles COMMAND test_ekos)
# FIXME: this particular test crashes when done on the EGLFS platform
# Disabling until we find the reason, other tests do cover this scenario

# ADD_EXECUTABLE(test_ekos ${KSTARS_UI_EKOS_SRC} test_ekos.cpp)
# TARGET_LINK_LIBRARIES(test_ekos ${KSTARS_UI_EKOS_LIBS})
# ADD_TEST(NAME TestEkosProfiles COMMAND test_ekos)

ADD_EXECUTABLE(test_ekos_simulator ${KSTARS_UI_EKOS_SRC} test_ekos_simulator.cpp)
TARGET_LINK_LIBRARIES(test_ekos_simulator ${KSTARS_UI_EKOS_LIBS})
Expand Down
43 changes: 5 additions & 38 deletions Tests/kstars_ui/kstars_ui_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,9 @@ int run_wizards(int argc, char *argv[])
}
#endif

Q_UNUSED(argc);
Q_UNUSED(argv);

return failure;
}

Expand All @@ -110,42 +113,6 @@ void execute_tests()
}
}

#if 1
//QTEST_KSTARS_MAIN(KStarsUiTests)
#else
// This weak main function serves when only the KStars tests are run, and nothing else.
// It serves as an expanded example to what happens when running tests with KSTARS_UI_TEST.
int __attribute__((weak)) main(int argc, char * argv[])
{
// We create our application
QApplication app(argc, argv);
// We configure our application environment
prepare_tests();
int failure = 0;
// We delay the tests with a timer because we need to run tests in an initialized UI
QTimer::singleShot(1000, QApplication::instance(), [&] {
qDebug("Starting tests...");
// Run KStars wizard
failure |= run_wizards(argc, argv);
// Run example tests - we'd better test our documentation :)
KStarsUiTests tc;
failure |= QTest::qExec(&tc, argc, argv);
qDebug("Tests are done.");
QApplication::instance()->quit();
});
// We launch the UI application, and let delayed tests do their job asynchronously
execute_tests();
// And we return the result
return failure;
}
#if !defined(HAVE_INDI)
QTEST_KSTARS_MAIN(KStarsUiTests)
#endif
9 changes: 8 additions & 1 deletion datahandlers/catalogdb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,13 @@

bool CatalogDB::Initialize()
{
skydb_ = QSqlDatabase::addDatabase("QSQLITE", "skydb");
skydb_ = QSqlDatabase::addDatabase("QSQLITE", "skydb");
if (!skydb_.isValid())
{
qCCritical(KSTARS_CATALOG()) << "Unable to prepare database of type sqlite!";
return false;
}

QString dbfile = KSPaths::locate(QStandardPaths::GenericDataLocation, QString("skycomponents.sqlite"));
if (dbfile.isEmpty())
dbfile = KSPaths::writableLocation(QStandardPaths::GenericDataLocation) + QString("skycomponents.sqlite");
Expand Down Expand Up @@ -117,6 +123,7 @@ void CatalogDB::FirstRun()
qCWarning(KSTARS_CATALOG) << query.lastError();
}
}
qCWarning(KSTARS_CATALOG) << "Additional Sky Catalog Database rebuilt.";
}

CatalogDB::~CatalogDB()
Expand Down
66 changes: 66 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
FROM ubuntu:latest

# Suitable for builds
RUN apt update && apt -y install --no-install-recommends software-properties-common
RUN apt update && add-apt-repository ppa:mutlaqja/ppa
RUN apt update && apt -y install --no-install-recommends \
gcc-multilib \
g++-multilib \
make \
gettext \
coreutils \
cmake \
extra-cmake-modules \
qtbase5-dev \
qtdeclarative5-dev \
qtmultimedia5-dev \
qtpositioning5-dev \
libqt5websockets5-dev \
libqt5svg5-dev \
libqt5sql5-sqlite \
kdoctools-dev \
libkf5config-dev \
libkf5guiaddons-dev \
libkf5i18n-dev \
libkf5newstuff-dev \
libkf5notifications-dev \
libkf5xmlgui-dev \
libkf5plotting-dev \
libkf5crash-dev \
libkf5notifyconfig-dev \
libeigen3-dev \
zlib1g-dev \
libcfitsio-dev \
libnova-dev \
libindi-dev \
indi-bin \
wcslib-dev \
libraw-dev \
libgsl-dev \
phonon4qt5-backend-vlc \
qt5keychain-dev \
libsecret-1-dev

# Suitable for tests
RUN apt update && add-apt-repository ppa:mutlaqja/ppa
RUN apt update && add-apt-repository ppa:pch/phd2
RUN apt update && apt -y --no-install-recommends install \
make \
cmake \
extra-cmake-modules \
xplanet \
xplanet-images \
astrometry.net \
kded5 \
kinit \
libindi1 \
indi-bin \
breeze-icon-theme \
libqt5sql5-sqlite \
qml-module-qtquick-controls \
gsc gsc-data \
phd2 \
xvfb

CMD /bin/bash

3 changes: 2 additions & 1 deletion kstars/kstarsdata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ namespace
// Calls QApplication::exit
void fatalErrorMessage(QString fname)
{
qCCritical(KSTARS) << i18n("Critical File not Found: %1", fname);
KSNotification::sorry(i18n("The file %1 could not be found. "
"KStars cannot run properly without this file. "
"KStars searches for this file in following locations:\n\n\t"
Expand All @@ -57,7 +58,6 @@ void fatalErrorMessage(QString fname)
fname, QStandardPaths::standardLocations(QStandardPaths::DataLocation).join("\n\t")),
i18n("Critical File Not Found: %1", fname)); // FIXME: Must list locations depending on file type

qDebug() << i18n("Critical File Not Found: %1", fname);
qApp->exit(1);
}

Expand All @@ -66,6 +66,7 @@ void fatalErrorMessage(QString fname)
// Calls QApplication::exit if he don't
bool nonFatalErrorMessage(QString fname)
{
qCWarning(KSTARS) << i18n( "Non-Critical File Not Found: %1", fname );
#ifdef KSTARS_LITE
Q_UNUSED(fname);
return true;
Expand Down

0 comments on commit 844f991

Please sign in to comment.