diff options
author | Marcus Tillmanns <[email protected]> | 2025-07-03 13:19:27 +0200 |
---|---|---|
committer | Marcus Tillmanns <[email protected]> | 2025-07-03 12:09:46 +0000 |
commit | 0c221189ac5d0f4bd52f2a5be408d45001e2546d (patch) | |
tree | f3fc227ddda08c325345a00a02091b5318ddb41d | |
parent | 08a85d46208a85b8b04a8a34da8509b8f45fdceb (diff) |
Change-Id: I1f86cf2aee5f2448d82eda98608a85d8edae85de
Reviewed-by: hjk <[email protected]>
-rw-r--r-- | src/libs/devcontainer/devcontainer.cpp | 2 | ||||
-rw-r--r-- | tests/auto/devcontainer/tst_devcontainer.cpp | 51 |
2 files changed, 32 insertions, 21 deletions
diff --git a/src/libs/devcontainer/devcontainer.cpp b/src/libs/devcontainer/devcontainer.cpp index 6927e02fd74..a86c7cd8903 100644 --- a/src/libs/devcontainer/devcontainer.cpp +++ b/src/libs/devcontainer/devcontainer.cpp @@ -18,7 +18,7 @@ #include <QCryptographicHash> #include <QLoggingCategory> -Q_LOGGING_CATEGORY(devcontainerlog, "devcontainer", QtDebugMsg) +Q_LOGGING_CATEGORY(devcontainerlog, "devcontainer", QtWarningMsg) using namespace Utils; diff --git a/tests/auto/devcontainer/tst_devcontainer.cpp b/tests/auto/devcontainer/tst_devcontainer.cpp index f4be768bbdf..13ec50c67bc 100644 --- a/tests/auto/devcontainer/tst_devcontainer.cpp +++ b/tests/auto/devcontainer/tst_devcontainer.cpp @@ -40,8 +40,10 @@ static bool testDockerMount(const FilePath &executable, const FilePath &testDir) "ls", "/mnt/test"}}); p.runBlocking(); - qInfo() << "Docker mount test output:" << p.cleanedStdOut().trimmed() - << "Error:" << p.cleanedStdErr().trimmed(); + if (p.result() != ProcessResult::FinishedWithSuccess) { + qWarning() << "Docker mount test failed:" << p.verboseExitMessage(); + return false; + } return p.result() == ProcessResult::FinishedWithSuccess; } @@ -51,6 +53,12 @@ class tst_DevContainer : public QObject const FilePath tempDir = FilePath::fromString(QDir::tempPath()) / "tst_DevContainer"; + QString logMessages; + + std::function<void(const QString &)> logFunction = [this](const QString &msg) { + logMessages += msg + '\n'; + }; + private slots: void initTestCase() { @@ -71,6 +79,14 @@ int main() { QSKIP("Docker mount test failed, skipping tests."); } + void init() { logMessages.clear(); } + + void cleanup() + { + if (QTest::currentTestFailed()) + qWarning().noquote() << "Log:\n\n" << logMessages; + } + void processInterface(); void instanceConfigToString_data(); void instanceConfigToString(); @@ -94,7 +110,7 @@ void tst_DevContainer::instanceConfigToString_data() .workspaceFolder = tempDir, .configFilePath = tempDir / "devcontainer.json", .mounts = {}, - }; + .logFunction = logFunction}; QTest::newRow("default") << instanceConfig << "Hello ${localWorkspaceFolder}" << QString("Hello %1") @@ -189,7 +205,7 @@ void tst_DevContainer::readConfig() .workspaceFolder = tempDir, .configFilePath = tempDir / "devcontainer.json", .mounts = {}, - }; + .logFunction = logFunction}; Utils::Result<DevContainer::Config> devContainer = DevContainer::Config::fromJson(jsonData, [instanceConfig](const QJsonValue &value) { @@ -201,7 +217,6 @@ void tst_DevContainer::readConfig() QCOMPARE(*devContainer->common.name, "Minimum spec container (x86_64)"); QVERIFY(devContainer->containerConfig); QCOMPARE(devContainer->containerConfig->index(), 0); - qDebug() << "Parsed DevContainer:" << *devContainer; } void tst_DevContainer::testCommands() @@ -236,8 +251,6 @@ void tst_DevContainer::testCommands() QCOMPARE(std::get<QString>(commandMap["echo"]), "echo test"); QCOMPARE(commandMap["ls"].index(), 1); QCOMPARE(std::get<QStringList>(commandMap["ls"]), QStringList() << "ls" << "-lach"); - - qDebug() << "Parsed DevContainer:" << *devContainer; } void tst_DevContainer::upDockerfile() @@ -264,14 +277,13 @@ FROM alpine:latest config.containerConfig = dockerFileConfig; config.common.name = "Test Dockerfile"; - qDebug() << "DevContainer Config:" << config; - DevContainer::InstanceConfig instanceConfig{ .dockerCli = "docker", .dockerComposeCli = "docker-compose", .workspaceFolder = tempDir, .configFilePath = tempDir / "devcontainer.json", - .mounts = {}}; + .mounts = {}, + .logFunction = logFunction}; std::unique_ptr<DevContainer::Instance> instance = DevContainer::Instance::fromConfig(config, instanceConfig); @@ -298,14 +310,13 @@ void tst_DevContainer::upImage() config.containerConfig = imageConfig; config.common.name = "Test Image"; - qDebug() << "DevContainer Config:" << config; - DevContainer::InstanceConfig instanceConfig{ .dockerCli = "docker", .dockerComposeCli = "docker-compose", .workspaceFolder = tempDir, .configFilePath = tempDir / "devcontainer.json", - .mounts = {}}; + .mounts = {}, + .logFunction = logFunction}; std::unique_ptr<DevContainer::Instance> instance = DevContainer::Instance::fromConfig(config, instanceConfig); @@ -352,7 +363,7 @@ void tst_DevContainer::upWithHooks() .workspaceFolder = tempDir, .configFilePath = tempDir / "devcontainer.json", .mounts = {}, - }; + .logFunction = logFunction}; std::unique_ptr<DevContainer::Instance> instance = DevContainer::Instance::fromConfig(config, instanceConfig); @@ -393,14 +404,14 @@ void tst_DevContainer::processInterface() {"CONTAINER_UNSET_ME", std::nullopt}, {"CONTAINER_CHANGE_ME", "changed_container_value"}, {"REMOTEENV_FROM_CONTAINER", "${containerEnv:CONTAINER_TEST}"}}; - qDebug() << "DevContainer Config:" << config; DevContainer::InstanceConfig instanceConfig{ .dockerCli = "docker", .dockerComposeCli = "docker-compose", .workspaceFolder = tempDir, .configFilePath = tempDir / "devcontainer.json", - .mounts = {}}; + .mounts = {}, + .logFunction = logFunction}; std::unique_ptr<DevContainer::Instance> instance = DevContainer::Instance::fromConfig(config, instanceConfig); @@ -426,9 +437,9 @@ void tst_DevContainer::processInterface() process.runBlocking(std::chrono::seconds(10), EventLoopMode::On); const QString output = process.cleanedStdOut().trimmed(); - qDebug().noquote() << "Process output:" << output; - qDebug().noquote() << "Process error:" << process.cleanedStdErr().trimmed(); - qDebug() << process.verboseExitMessage(); + logFunction("Process output:" + output); + logFunction("Process error:" + process.cleanedStdErr().trimmed()); + logFunction(process.verboseExitMessage()); QVERIFY(process.result() == ProcessResult::FinishedWithSuccess); @@ -467,7 +478,7 @@ void tst_DevContainer::containerWorkspaceReplacers() .workspaceFolder = tempDir, .configFilePath = tempDir / "devcontainer.json", .mounts = {}, - }; + .logFunction = logFunction}; Utils::Result<DevContainer::Config> config = DevContainer::Config::fromJson(jsonData, [instanceConfig](const QJsonValue &value) { |