#include #include #include #include #include int main(int argc, char **argv) { QCoreApplication app(argc, argv); QString templatesDir = QDir::currentPath(); if (argc > 1) { templatesDir = QString::fromLocal8Bit(argv[1]); } Grantlee::Engine engine; auto loader = QSharedPointer::create(); loader->setTemplateDirs(QStringList() << templatesDir); engine.addTemplateLoader(loader); QDir d(templatesDir); QStringList files = d.entryList(QStringList() << QStringLiteral("*.grantlee"), QDir::Files); if (files.isEmpty()) { qDebug() << "No .grantlee templates found in" << templatesDir; // Treat absence as successful parse (nothing to check) to avoid failing // when directory is empty in different setups. return 0; } bool ok = true; for (const QString &f : files) { Grantlee::Template t; try { t = engine.loadByName(f); } catch (...) { qDebug() << "Exception while loading" << f; ok = false; continue; } if (!t) { qDebug() << "Failed to load template" << f; ok = false; continue; } if (t->error() != Grantlee::NoError) { qDebug() << "Parse error in" << f << ":" << t->errorString(); ok = false; continue; } // Render with empty context to ensure rendering path also works. Grantlee::Context ctx; QString out = t->render(&ctx); if (out.isNull()) { qDebug() << "Rendering produced null for" << f; ok = false; continue; } } return ok ? 0 : 2; }