2014-11-13 01:04:59 +02:00
/*
* Copyright ( C ) 2002 David Faure < faure @ kde . org >
* Copyright ( C ) 2003 Waldo Bastian < bastian @ kde . org >
*
* 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 <QLabel>
# include <kapplication.h>
# include <kdebug.h>
# include <kservice.h>
# include <kde_file.h>
# include <kcmdlineargs.h>
# include <QtGui/QPushButton>
# include <QtGui/QLayout>
# include <stdlib.h>
# include <unistd.h>
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 < QPushButton * > ( 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 ( ) ;
}
2015-02-27 07:40:26 +00:00
# include "moc_kruntest.cpp"