Commit d6d6dbc3 authored by Eric Dejouhanet's avatar Eric Dejouhanet

Revert "Revert "Debugging test initialization.""

This reverts commit 844f9912
parent 844f9912
# 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
......@@ -21,12 +21,9 @@ 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)
# 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 ${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})
......
......@@ -90,9 +90,6 @@ int run_wizards(int argc, char *argv[])
}
#endif
Q_UNUSED(argc);
Q_UNUSED(argv);
return failure;
}
......@@ -113,6 +110,42 @@ void execute_tests()
}
}
#if !defined(HAVE_INDI)
QTEST_KSTARS_MAIN(KStarsUiTests)
#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;
}
#endif
......@@ -34,13 +34,7 @@
bool CatalogDB::Initialize()
{
skydb_ = QSqlDatabase::addDatabase("QSQLITE", "skydb");
if (!skydb_.isValid())
{
qCCritical(KSTARS_CATALOG()) << "Unable to prepare database of type sqlite!";
return false;
}
skydb_ = QSqlDatabase::addDatabase("QSQLITE", "skydb");
QString dbfile = KSPaths::locate(QStandardPaths::GenericDataLocation, QString("skycomponents.sqlite"));
if (dbfile.isEmpty())
dbfile = KSPaths::writableLocation(QStandardPaths::GenericDataLocation) + QString("skycomponents.sqlite");
......@@ -123,7 +117,6 @@ void CatalogDB::FirstRun()
qCWarning(KSTARS_CATALOG) << query.lastError();
}
}
qCWarning(KSTARS_CATALOG) << "Additional Sky Catalog Database rebuilt.";
}
CatalogDB::~CatalogDB()
......
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
......@@ -49,7 +49,6 @@ 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"
......@@ -58,6 +57,7 @@ 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);
}
......@@ -66,7 +66,6 @@ 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;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment