/* * Copyright (C) 2002 David Faure * Copyright (C) 2003 Waldo Bastian * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License version 2 as published by the Free Software Foundation; * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "kruntest.h" #include #include #include #include #include #include #include #include #include #include const int MAXKRUNS = 100; testKRun * myArray[MAXKRUNS]; void testKRun::foundMimeType( const QString& _type ) { kDebug() << "testKRun::foundMimeType " << _type; kDebug() << "testKRun::foundMimeType URL=" << url().url(); setFinished( true ); return; } static const char testFile[] = KDESRCDIR "/kruntest.cpp"; static const struct { const char* text; const char* expectedResult; const char* exec; const char* url; } s_tests[] = { { "run(kwrite, no url)", "should work normally", "kwrite", 0 }, { "run(kwrite, file url)", "should work normally", "kwrite", testFile }, { "run(kwrite, remote url)", "should work normally", "kwrite", "http://www.kde.org" }, { "run(doesnotexit, no url)", "should show error message", "doesnotexist", 0 }, { "run(doesnotexit, file url)", "should show error message", "doesnotexist", testFile }, { "run(doesnotexit, remote url)", "should use kioexec and show error message", "doesnotexist", "http://www.kde.org" }, { "run(missing lib, no url)", "should show error message (remove libqca.so.2 for this, e.g. by editing LD_LIBRARY_PATH if qca is in its own prefix)", "qcatool", 0 }, { "run(missing lib, file url)", "should show error message (remove libqca.so.2 for this, e.g. by editing LD_LIBRARY_PATH if qca is in its own prefix)", "qcatool", testFile }, { "run(missing lib, remote url)", "should show error message (remove libqca.so.2 for this, e.g. by editing LD_LIBRARY_PATH if qca is in its own prefix)", "qcatool", "http://www.kde.org" }, { "runCommand(empty)", "should error", "", "" }, // #186036 { "runCommand(full path)", "should work normally", "../../kdecore/tests/kurltest", "" } }; Receiver::Receiver() { QVBoxLayout *lay = new QVBoxLayout(this); QPushButton * h = new QPushButton( "Press here to terminate", this ); lay->addWidget( h ); connect(h, SIGNAL(clicked()), qApp, SLOT(quit())); start = new QPushButton( "Launch KRuns", this ); lay->addWidget( start ); connect(start, SIGNAL(clicked()), this, SLOT(slotStart())); stop = new QPushButton( "Stop those KRuns", this ); stop->setEnabled(false); lay->addWidget( stop ); connect(stop, SIGNAL(clicked()), this, SLOT(slotStop())); QPushButton* launchOne = new QPushButton( "Launch one http KRun", this ); lay->addWidget(launchOne); connect(launchOne, SIGNAL(clicked()), this, SLOT(slotLaunchOne())); for (uint i = 0; i < sizeof(s_tests)/sizeof(*s_tests); ++i) { QHBoxLayout* hbox = new QHBoxLayout; lay->addLayout(hbox); QPushButton* button = new QPushButton(s_tests[i].text, this); button->setProperty("testNumber", i); hbox->addWidget(button); QLabel* label = new QLabel(s_tests[i].expectedResult, this); hbox->addWidget(label); connect(button, SIGNAL(clicked()), this, SLOT(slotLaunchTest())); hbox->addStretch(); } adjustSize(); show(); } void Receiver::slotLaunchTest() { QPushButton* button = qobject_cast(sender()); Q_ASSERT(button); const int testNumber = button->property("testNumber").toInt(); KUrl::List urls; if (QByteArray(s_tests[testNumber].text).startsWith("runCommand")) { KRun::runCommand(s_tests[testNumber].exec, this); } else { if (s_tests[testNumber].url) urls << KUrl(s_tests[testNumber].url); KRun::run(s_tests[testNumber].exec, urls, this); } } void Receiver::slotStop() { for (int i = 0 ; i < MAXKRUNS ; i++ ) { kDebug() << " deleting krun " << i; delete myArray[i]; } start->setEnabled(true); stop->setEnabled(false); } void Receiver::slotStart() { for (int i = 0 ; i < MAXKRUNS ; i++ ) { kDebug() << "creating testKRun " << i; myArray[i] = new testKRun( KUrl("file:/tmp"), window(), 0, true /*isLocalFile*/, false /* showProgressInfo */ ); myArray[i]->setAutoDelete(false); } start->setEnabled(false); stop->setEnabled(true); } void Receiver::slotLaunchOne() { new testKRun(KUrl("http://www.kde.org"), window()); } int main(int argc, char **argv) { KCmdLineArgs::init(argc,argv, "kruntest", 0, ki18n("kruntest"), 0); KApplication app; Receiver receiver; return app.exec(); } #include "moc_kruntest.cpp"