diff --git a/test/api_test_app/main.cpp b/test/api_test_app/main.cpp index 6e7f5e7..611cfd7 100644 --- a/test/api_test_app/main.cpp +++ b/test/api_test_app/main.cpp @@ -169,7 +169,29 @@ int main(int argc, char** argv) interfaces.emplace_back(std::make_unique()); interfaces.emplace_back(std::make_unique()); - if (!isatty(fileno(stdin))) + if (appConfig.autoRun) + { + int failures = 0; + for (auto& interface : interfaces) + { + std::cout << "Auto-running interface: " << interface->name() << std::endl; + + for (auto& method : interface->methods()) + { + std::cout << "Auto-running method: " << method << std::endl; + interface->runOption(method); + } + failures += interface->failureCount(); + } + if (failures > 0) + { + std::cout << "FAILED: " << failures << " method(s) returned errors" << std::endl; + Firebolt::IFireboltAccessor::Instance().Disconnect(); + return 1; + } + std::cout << "All methods succeeded" << std::endl; + } + else if (!isatty(fileno(stdin))) { appConfig.autoRun = true; std::string line; @@ -198,19 +220,6 @@ int main(int argc, char** argv) } } } - else if (appConfig.autoRun) - { - for (auto& interface : interfaces) - { - std::cout << "Auto-running interface: " << interface->name() << std::endl; - - for (auto& method : interface->methods()) - { - std::cout << "Auto-running method: " << method << std::endl; - interface->runOption(method); - } - } - } else { std::vector interfaceNames; diff --git a/test/api_test_app/utils.h b/test/api_test_app/utils.h index 7a3d72e..ec94590 100644 --- a/test/api_test_app/utils.h +++ b/test/api_test_app/utils.h @@ -47,20 +47,23 @@ class DemoBase std::string name() const { return name_; } virtual void runOption(const std::string& method) = 0; const std::vector& methods() const { return methods_; } + int failureCount() const { return failureCount_; } protected: - template bool succeed(const Firebolt::Result& result) const + template bool succeed(const Firebolt::Result& result) { if (result) { return true; } + ++failureCount_; std::cout << "Error: " << static_cast(result.error()) << std::endl; return false; } std::string name_; std::vector methods_; + int failureCount_ = 0; }; template T chooseEnumFromList(const Firebolt::JSON::EnumType& enumType, const std::string& prompt)