wip
This commit is contained in:
48
selfdrive/ui/tests/test_translations.cc
Normal file
48
selfdrive/ui/tests/test_translations.cc
Normal file
@@ -0,0 +1,48 @@
|
||||
#include "catch2/catch.hpp"
|
||||
|
||||
#include "common/params.h"
|
||||
#include "selfdrive/ui/qt/window.h"
|
||||
|
||||
const QString TEST_TEXT = "(WRAPPED_SOURCE_TEXT)"; // what each string should be translated to
|
||||
QRegExp RE_NUM("\\d*");
|
||||
|
||||
QStringList getParentWidgets(QWidget* widget){
|
||||
QStringList parentWidgets;
|
||||
while (widget->parentWidget() != Q_NULLPTR) {
|
||||
widget = widget->parentWidget();
|
||||
parentWidgets.append(widget->metaObject()->className());
|
||||
}
|
||||
return parentWidgets;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void checkWidgetTrWrap(MainWindow &w) {
|
||||
for (auto widget : w.findChildren<T>()) {
|
||||
const QString text = widget->text();
|
||||
bool isNumber = RE_NUM.exactMatch(text);
|
||||
bool wrapped = text.contains(TEST_TEXT);
|
||||
QString parentWidgets = getParentWidgets(widget).join("->");
|
||||
|
||||
if (!text.isEmpty() && !isNumber && !wrapped) {
|
||||
FAIL(("\"" + text + "\" must be wrapped. Parent widgets: " + parentWidgets).toStdString());
|
||||
}
|
||||
|
||||
// warn if source string wrapped, but UI adds text
|
||||
// TODO: add way to ignore this
|
||||
if (wrapped && text != TEST_TEXT) {
|
||||
WARN(("\"" + text + "\" is dynamic and needs a custom retranslate function. Parent widgets: " + parentWidgets).toStdString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Tests all strings in the UI are wrapped with tr()
|
||||
TEST_CASE("UI: test all strings wrapped") {
|
||||
Params().remove("LanguageSetting");
|
||||
Params().remove("HardwareSerial");
|
||||
Params().remove("DongleId");
|
||||
qputenv("TICI", "1");
|
||||
|
||||
MainWindow w;
|
||||
checkWidgetTrWrap<QPushButton*>(w);
|
||||
checkWidgetTrWrap<QLabel*>(w);
|
||||
}
|
||||
Reference in New Issue
Block a user