diff --git a/ChangeLog b/ChangeLog index 3009a69..d0cb087 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2015-11-02 08:00 marc + + * ChangeLog, debian/control.in: test requires xvfb-run + 2015-11-02 00:01 marc * AUTHORS, ChangeLog, bootstrap.sh, resolve-debbuilddeps.sh: new diff --git a/ax_check_qt.m4 b/ax_check_qt.m4 index 479f65c..af3a238 100644 --- a/ax_check_qt.m4 +++ b/ax_check_qt.m4 @@ -103,7 +103,12 @@ AC_DEFUN([AX_CHECK_QT], [ HAVE_$1=1 AC_DEFINE([HAVE_$1]) QTDIR=$(${PKG_CONFIG} --variable=prefix Qt5Core) - QT_PLUGIN_PATH=${QTDIR}/share/qt5/plugins + qt_host_bins=$(${PKG_CONFIG} --variable=host_bins Qt5Core) + if test -d "${qt_host_bins}"; then + QT_PLUGIN_PATH=${qt_host_bins}/../plugins + else + QT_PLUGIN_PATH=${QTDIR}/share/qt5/plugins + fi MOC_FLAGS+=" -DHAVE_$1=1 ${[$1]5_CFLAGS}" [$1]_CPPFLAGS="${[$1]5_CFLAGS}" [$1]_CXXFLAGS="${[$1]5_CFLAGS}" @@ -145,7 +150,12 @@ AC_DEFUN([AX_CHECK_QT], [ HAVE_$1=1 AC_DEFINE([HAVE_$1]) QTDIR=$(${PKG_CONFIG} --variable=prefix QtCore) - QT_PLUGIN_PATH=${QTDIR}/share/qt/plugins + qt_host_bins=$(${PKG_CONFIG} --variable=host_bins QtCore) + if test -d "${qt_host_bins}"; then + QT_PLUGIN_PATH=${qt_host_bins}/../plugins + else + QT_PLUGIN_PATH=${QTDIR}/share/qt/plugins + fi MOC_FLAGS+=" -DHAVE_$1=1 ${$1_CFLAGS}" [$1]_CPPFLAGS="${[$1]_CFLAGS}" [$1]_CXXFLAGS="${[$1]_CFLAGS}" @@ -188,6 +198,16 @@ AC_DEFUN([AX_CHECK_QT], [ if test -n "${MINGW}"; then AX_CHECK_VALID_CXX_FLAG([-Wl,-subsystem,windows], [windows console flag]) fi + test "x$prefix" = xNONE && prefix=$ac_default_prefix + if test "${QT_PLUGIN_PATH}" = "${QT_PLUGIN_PATH#${prefix}}"; then + QT_PLUGIN_PATH=${prefix}${QT_PLUGIN_PATH#/usr} + fi + AC_ARG_WITH([qt-plugin-path], + [AS_HELP_STRING([--with-qt-plugin-path=PATH], + [define a different qt plugin path, current @<:@default=check@:>@])], + [QT_PLUGIN_PATH=$with_qt_plugin_path], + []) + AC_MSG_NOTICE([Qt Plugins are installed to ${QT_PLUGIN_PATH}]) AC_SUBST(QTDIR) AC_SUBST(QT_PLUGIN_PATH) AC_SUBST(CPPFLAGS) @@ -214,10 +234,10 @@ qrc_%.cxx: %.qrc %.qm: %.ts ${LRELEASE} $< -qm [$][@] -#%.ts: ${LANGUAGE_FILES:%=%} -# ${LUPDATE} -no-obsolete \ -# -target-language ${@:${LANGUAGE_FILE_BASE}_%.ts=%} \ -# -ts [$][@] $< +%.ts: ${LANGUAGE_FILES:%=%} + ${LUPDATE} -no-obsolete \ + -target-language ${@:${LANGUAGE_FILE_BASE}_%.ts=%} \ + -ts [$][@] $< ']) diff --git a/ax_init_standard_project.m4 b/ax_init_standard_project.m4 index 5baecf4..c02825e 100644 --- a/ax_init_standard_project.m4 +++ b/ax_init_standard_project.m4 @@ -696,3 +696,15 @@ AC_DEFUN([AX_CHECK_VALID_LD_FLAG], [ AC_SUBST(LDFLAGS) AC_MSG_RESULT([$newflag in $LDFLAGS]) ]) + +# Check if a package exists in the current distribution, if yes, require it +# in debian/control.in append @DEB_DEPEND_IFEXISTS@ to Build-Depends +# - parameter: +# $1 = package name +AC_DEFUN([AX_DEB_DEPEND_IFEXISTS], [ + pkg=$1 + if test -n "$(apt-cache policy -q ${pkg} 2> /dev/null)"; then + DEB_DEPEND_IFEXISTS+=", ${pkg}" + fi + AC_SUBST(DEB_DEPEND_IFEXISTS) +]) diff --git a/bootstrap.sh b/bootstrap.sh index d3e8653..2c7c4c3 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -240,15 +240,29 @@ done HEADER='## @id '"\$Id\$"' -# -# This file has been added by '${MY_NAME}' on '$(LANG= date +"%a, %d %B %Y %H:%M:%S %z")' -# Feel free to change it or even remove and rebuild it, up to your needs -# +## +## This file has been added: +## - by '${MY_NAME}' +## - on '$(LANG= date +"%a, %d %B %Y %H:%M:%S %z")' +## Feel free to change it or even remove and rebuild it, up to your needs +## ## 1 2 3 4 5 6 7 8 ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 ' +CHEADER='/** @id '"\$Id\$"' + + This file has been added: + - by '${MY_NAME}' + - on '$(LANG= date +"%a, %d %B %Y %H:%M:%S %z")' + +*/ +// 1 2 3 4 5 6 7 8 +// 45678901234567890123456789012345678901234567890123456789012345678901234567890 + +' + notice() { echo -e "\e[1;33m$*\e[0m" } @@ -436,12 +450,19 @@ AX_INIT_STANDARD_PROJECT # create output AC_OUTPUT EOF + PACKAGE_NAME=$(sed -n 's/.*m4_define *( *x_package_name *, *\([^ ]*\) *).*/\1/p' configure.ac) +SAVEIFS="$IFS" +IFS="-" PackageName=( $PACKAGE_NAME ) +IFS="$SAVEIFS" +PackageName=${PackageName[*]^} +PackageName=${PackageName// /} + if ! testtag "AX_CHECK_QT" configure.ac && \ ! testtag "AX_REQUIRE_QT" configure.ac; then echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | \ to --condition AX_USE_CXX src/makefile.am -else +elif ! test -e src/makefile.am; then to --condition AX_USE_CXX src/makefile.am < +#include +#include +#include + +int main(int argc, char *argv[]) try { + QApplication a(argc, argv); + QCommandLineParser parser; + parser.addHelpOption(); + parser.process(a); + QStringList scripts(parser.positionalArguments()); + ${PackageName} w; + w.show(); + return a.exec(); + } catch (std::exception &x) { + std::cerr<<"**** error: "< +#include + +/// Main Window +/** Main window for ${PACKAGE_NAME} */ +class ${PackageName}: public QMainWindow, protected Ui::${PackageName} { + Q_OBJECT; + public: + explicit ${PackageName}(QWidget *parent = 0): QMainWindow(parent) { + setupUi(this); + } + virtual ~${PackageName}() {} +}; + +#endif +EOF + to --condition AX_USE_CXX src/${PACKAGE_NAME}.ui < + + ${PackageName} + + + + 0 + 0 + 800 + 600 + + + + ${PackageName} + + + + + + 0 + 0 + 800 + 22 + + + + + + + + +EOF + to --condition AX_USE_CXX src/languages.qrc < + + ${PACKAGE_NAME}_de.qm + ${PACKAGE_NAME}_fr.qm + ${PACKAGE_NAME}_it.qm + ${PACKAGE_NAME}_en.qm + + EOF fi to --condition AX_USE_CXX src/version.hxx < debian/control +function install() { + if test -n "${SCHROOTNAME}"; then + if schroot -c "${SCHROOTNAME}" -u root -d / -- apt-get -y install $*; then + return 0 + fi + else + if apt-get -y install $*; then + return 0 + fi + fi +} + +TO_INSTALL= + +if test -e debian/control.in -a ! -e debian/control; then + for f in $(sed -n 's, *AX_DEB_DEPEND_IFEXISTS(\([^)]*\)).*,\1,p' configure.ac); do + if test -n "$(apt-cache policy -q ${f})" && ! dpkg -l "${f}"; then + TO_INSTALL+=" ${f}" + fi + done + trap "rm debian/control" INT TERM EXIT + sed 's,@DEB_DEPEND_IFEXISTS@,,g' debian/control.in | \ + sed 's,@[^@]*@, dummytext,g' > debian/control +fi if test -n "${SCHROOTNAME}"; then - schroot -c "${SCHROOTNAME}" -u root -d / -- apt-get install -y dpkg-dev + schroot -c "${SCHROOTNAME}" -u root -d / -- apt-get -y install dpkg-dev DEPS=$(schroot -c "${SCHROOTNAME}" -- dpkg-checkbuilddeps 2>&1 || true) else - sudo apt-get install -y dpkg-dev - sudo apt-get update + apt-get -y install dpkg-dev DEPS=$(dpkg-checkbuilddeps 2>&1 || true) fi DEPS=$(echo "$DEPS" | sed -n '/Unmet build dependencies/ { s,.*Unmet build dependencies: ,,g; s, ([^)]*),,g; s, *| *,|,g; p}') for pa in ${DEPS}; do + if test ${pa//|/} = ${pa}; then + TO_INSTALL+=" ${pa}" + continue; + fi success=0 - for p in $(echo "${pa}" | sed 's,|, ,g'); do - if test -n "${SCHROOTNAME}"; then - if schroot -c "${SCHROOTNAME}" -u root -d / -- apt-get -y install ${p}; then - success=1 - break; - fi - else - if sudo apt-get -y install ${p}; then - success=1 - break; - fi + for p in ${pa//|/ }; do + if install ${TO_INSTALL} ${p}; then + TO_INSTALL+=" ${p}" + success=1 + break fi done if test ${success} -eq 0; then echo "**** Error: Installation Failed: ${pa}" + exit 1 fi done +if test -n "${TO_INSTALL}" && ! install ${TO_INSTALL}; then + echo "**** Error: Installation Failed: ${TO_INSTALL}" + exit 1 +fi + echo "**** Success: All Dependencies Resolved" diff --git a/src/commands.hxx b/src/commands.hxx index 1d769bf..694aae5 100644 --- a/src/commands.hxx +++ b/src/commands.hxx @@ -440,14 +440,15 @@ class Script: public QObject { .replace(" ", " ").replace("&", "&"); } public: - Script(): _clicktype(JAVASCRIPT_CLICK), _command(0) { + Script(): _clicktype(JAVASCRIPT_CLICK), _command(0), _screenshots(true) { initPrototypes(); } Script(const Script& o): QObject(), _prototypes(o._prototypes), _script(o._script), - _command(0) { + _command(0), + _screenshots(true) { set(o); } QString syntax() const { @@ -2363,8 +2364,11 @@ class : public Command { */ inline bool Screenshot::execute(Script* script, QWebFrame* frame) { - if (!script->screenshots()) return true; Logger log(this, script); + if (!script->screenshots()) { + log("screenshots disabled"); + return true; + } QString filename(screenshot(line(), script->targetdir(), script->testclass(), script->replacevars(_filename), frame)); diff --git a/src/testgui.hxx b/src/testgui.hxx index 7f3e94c..98fa4d0 100644 --- a/src/testgui.hxx +++ b/src/testgui.hxx @@ -123,13 +123,15 @@ class TestGUI: public QMainWindow, protected Ui::TestGUI { if (_setupscriptactive->isEnabled() && _setupscriptactive->isChecked()) { script.parse(_setupscript->toPlainText().split('\n'), "setup"); - script.run(_web->page()->mainFrame(), testsuites, QString(), false); + script.run(_web->page()->mainFrame(), testsuites, QString(), + _screenshots->isChecked()); script.reset(); } QString text(_testscript->textCursor().selection().toPlainText()); if (text.isEmpty()) text = _testscript->toPlainText(); script.parse(text.split('\n'), "script"); - script.run(_web->page()->mainFrame(), testsuites, QString(), false); + script.run(_web->page()->mainFrame(), testsuites, QString(), + _screenshots->isChecked()); } catch (std::exception &x) { QMessageBox::critical(this, tr("Script Failed"), tr("Script failed with message:\n%1") @@ -226,7 +228,7 @@ class TestGUI: public QMainWindow, protected Ui::TestGUI { script.run(page.mainFrame(), testsuites, QString(), false); _setupScript.cleanup(); _setupScript.parse(_setupscript->toPlainText().split('\n'), "setup"); - _setupScript.run(page.mainFrame(), testsuites, QString(), false);; + _setupScript.run(page.mainFrame(), testsuites, QString(), false); _setupscriptstatus->setText(trUtf8("✔")); _setupscriptactive->setEnabled(true); } catch (std::exception &x) { diff --git a/src/testgui.ui b/src/testgui.ui index 3788304..79ca45b 100644 --- a/src/testgui.ui +++ b/src/testgui.ui @@ -399,7 +399,7 @@ this.dispatchEvent(evObj); - + @@ -422,7 +422,7 @@ this.dispatchEvent(evObj); - + Qt::Vertical @@ -435,6 +435,13 @@ this.dispatchEvent(evObj); + + + + Screenshots + + +