- Added a test for both Package::filePath() methods.

- Changed Package::filePath(type, filename)
  It always prepends the basePath now and only appends the filename if 
  filename != QString(). What i did understand from the api docs this is
  the intended behaviour.

svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=732292
This commit is contained in:
Bertjan Broeksema 2007-11-03 12:22:21 +00:00
parent b041f44c12
commit 3b744c6a23
3 changed files with 40 additions and 2 deletions

View File

@ -104,8 +104,9 @@ QString Package::filePath(const char* fileType, const QString& filename) const
return QString(); return QString();
} }
if (!filename.isEmpty()) {
path.prepend(d->basePath); path.prepend(d->basePath);
if (!filename.isEmpty()) {
path.append("/").append(filename); path.append("/").append(filename);
} }

View File

@ -72,7 +72,6 @@ void PlasmoidPackageTest::isValid()
// Should still be invalid. // Should still be invalid.
delete p; delete p;
p = new Plasma::Package(mPackageRoot, mPackage, *ps); p = new Plasma::Package(mPackageRoot, mPackage, *ps);
qDebug() << p->isValid();
QVERIFY(!p->isValid()); QVERIFY(!p->isValid());
// Create the code dir. // Create the code dir.
@ -98,4 +97,41 @@ void PlasmoidPackageTest::isValid()
QVERIFY(p->isValid()); QVERIFY(p->isValid());
} }
void PlasmoidPackageTest::filePath()
{
// Package::filePath() returns
// - {package_root}/{package_name}/path/to/file if the file exists
// - QString() otherwise.
delete p;
p = new Plasma::Package(mPackageRoot, mPackage, *ps);
QCOMPARE(p->filePath("scripts", "main"), QString());
QVERIFY(QDir().mkpath(mPackageRoot + "/" + mPackage + "/code"));
QFile file(mPackageRoot + "/" + mPackage + "/code/main");
QVERIFY(file.open(QIODevice::WriteOnly | QIODevice::Text));
QTextStream out(&file);
out << "THIS IS A PLASMOID SCRIPT.....";
file.flush();
file.close();
// The package is valid by now so a path for code/main should get returned.
delete p;
p = new Plasma::Package(mPackageRoot, mPackage, *ps);
QString path = mPackageRoot + "/" + mPackage + "/code/main";
// Two ways to get the same info.
// 1. Give the file type which refers to a class of files (a directory) in
// the package strucutre and the file name.
// 2. Give the file type which refers to a file in the package structure.
//
// NOTE: scripts, main and mainscript are defined in packages.cpp and are
// specific for a PlasmoidPackag.
QCOMPARE(p->filePath("scripts", "main"), path);
QCOMPARE(p->filePath("mainscript"), path);
}
QTEST_KDEMAIN(PlasmoidPackageTest, NoGUI) QTEST_KDEMAIN(PlasmoidPackageTest, NoGUI)

View File

@ -33,6 +33,7 @@ public Q_SLOTS:
private Q_SLOTS: private Q_SLOTS:
void isValid(); void isValid();
void filePath();
private: private:
void removeDir(const QString &subdir); void removeDir(const QString &subdir);