libutil: disable direct access to logger verbosity
that way we can sync it with rust for nearly free. Change-Id: Ib3f1e0335884e077a0293f4b13c5919297748522
This commit is contained in:
@@ -362,7 +362,7 @@ static int main_build_remote(AsyncIoRoot & aio, std::string programName, Strings
|
|||||||
if (argv.size() != 1)
|
if (argv.size() != 1)
|
||||||
throw UsageError("called without required arguments");
|
throw UsageError("called without required arguments");
|
||||||
|
|
||||||
verbosity = (Verbosity) std::stoll(argv.front());
|
setVerbosity((Verbosity) std::stoll(argv.front()));
|
||||||
|
|
||||||
auto conn = aio.kj.lowLevelProvider->wrapUnixSocketFd(1);
|
auto conn = aio.kj.lowLevelProvider->wrapUnixSocketFd(1);
|
||||||
capnp::TwoPartyServer srv(kj::heap<Instance>());
|
capnp::TwoPartyServer srv(kj::heap<Instance>());
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ static int main_builtin_builder(AsyncIoRoot & aio, std::string programName, Stri
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (auto val = string2Int<int>(getArg("verbosity"))) {
|
if (auto val = string2Int<int>(getArg("verbosity"))) {
|
||||||
verbosity = verbosityFromIntClamped(*val);
|
setVerbosity(verbosityFromIntClamped(*val));
|
||||||
} else {
|
} else {
|
||||||
throw Error("expected a verbosity argument");
|
throw Error("expected a verbosity argument");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -948,7 +948,7 @@ opServe(std::shared_ptr<Store> store, AsyncIoRoot & aio, Strings opFlags, String
|
|||||||
auto getBuildSettings = [&]() {
|
auto getBuildSettings = [&]() {
|
||||||
// FIXME: changing options here doesn't work if we're
|
// FIXME: changing options here doesn't work if we're
|
||||||
// building through the daemon.
|
// building through the daemon.
|
||||||
verbosity = lvlError;
|
setVerbosity(lvlError);
|
||||||
settings.keepLog.override(false);
|
settings.keepLog.override(false);
|
||||||
settings.useSubstitutes.override(false);
|
settings.useSubstitutes.override(false);
|
||||||
settings.maxSilentTime.override(readNum<unsigned>(in));
|
settings.maxSilentTime.override(readNum<unsigned>(in));
|
||||||
|
|||||||
@@ -16,21 +16,21 @@ MixCommonArgs::MixCommonArgs(const std::string & programName)
|
|||||||
.shortName = 'v',
|
.shortName = 'v',
|
||||||
.description = "Increase the logging verbosity level.",
|
.description = "Increase the logging verbosity level.",
|
||||||
.category = loggingCategory,
|
.category = loggingCategory,
|
||||||
.handler = {[]() { verbosity = verbosityFromIntClamped(int(verbosity) + 1); }},
|
.handler = {[]() { setVerbosity(verbosityFromIntClamped(int(getVerbosity()) + 1)); }},
|
||||||
});
|
});
|
||||||
|
|
||||||
addFlag({
|
addFlag({
|
||||||
.longName = "quiet",
|
.longName = "quiet",
|
||||||
.description = "Decrease the logging verbosity level.",
|
.description = "Decrease the logging verbosity level.",
|
||||||
.category = loggingCategory,
|
.category = loggingCategory,
|
||||||
.handler = {[]() { verbosity = verbosityFromIntClamped(int(verbosity) - 1); }},
|
.handler = {[]() { setVerbosity(verbosityFromIntClamped(int(getVerbosity()) - 1)); }},
|
||||||
});
|
});
|
||||||
|
|
||||||
addFlag({
|
addFlag({
|
||||||
.longName = "debug",
|
.longName = "debug",
|
||||||
.description = "Set the logging verbosity level to 'debug'.",
|
.description = "Set the logging verbosity level to 'debug'.",
|
||||||
.category = loggingCategory,
|
.category = loggingCategory,
|
||||||
.handler = {[]() { verbosity = lvlDebug; }},
|
.handler = {[]() { setVerbosity(lvlDebug); }},
|
||||||
});
|
});
|
||||||
|
|
||||||
addFlag({
|
addFlag({
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ bool ProgressBar::isVerbose()
|
|||||||
|
|
||||||
Logger::BufferState ProgressBar::log(Verbosity lvl, std::string_view s)
|
Logger::BufferState ProgressBar::log(Verbosity lvl, std::string_view s)
|
||||||
{
|
{
|
||||||
if (lvl > verbosity) {
|
if (lvl > getVerbosity()) {
|
||||||
return BufferState::HasSpace;
|
return BufferState::HasSpace;
|
||||||
}
|
}
|
||||||
auto state(state_.lock());
|
auto state(state_.lock());
|
||||||
@@ -142,8 +142,9 @@ Logger::BufferState ProgressBar::startActivityImpl(
|
|||||||
{
|
{
|
||||||
auto state(state_.lock());
|
auto state(state_.lock());
|
||||||
|
|
||||||
if (lvl <= verbosity && !s.empty() && type != actBuildWaiting)
|
if (lvl <= getVerbosity() && !s.empty() && type != actBuildWaiting) {
|
||||||
(void) log(*state, lvl, s + "...");
|
(void) log(*state, lvl, s + "...");
|
||||||
|
}
|
||||||
|
|
||||||
state->activities.emplace_back(ActInfo {
|
state->activities.emplace_back(ActInfo {
|
||||||
.s = s,
|
.s = s,
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ try {
|
|||||||
|
|
||||||
auto buildHook = canonPath(buildHookArgs.front());
|
auto buildHook = canonPath(buildHookArgs.front());
|
||||||
buildHookArgs.emplace(std::next(buildHookArgs.begin()), baseNameOf(buildHook));
|
buildHookArgs.emplace(std::next(buildHookArgs.begin()), baseNameOf(buildHook));
|
||||||
buildHookArgs.push_back(std::to_string(verbosity));
|
buildHookArgs.push_back(std::to_string(getVerbosity()));
|
||||||
|
|
||||||
/* Create the communication pipes. */
|
/* Create the communication pipes. */
|
||||||
auto [selfRPC, hookRPC] = SocketPair::stream();
|
auto [selfRPC, hookRPC] = SocketPair::stream();
|
||||||
|
|||||||
@@ -897,7 +897,7 @@ try {
|
|||||||
|
|
||||||
if (drv->isBuiltin()) {
|
if (drv->isBuiltin()) {
|
||||||
args.push_back("builtin-builder");
|
args.push_back("builtin-builder");
|
||||||
args.push_back(std::to_string(verbosity));
|
args.push_back(std::to_string(getVerbosity()));
|
||||||
|
|
||||||
std::map<std::string, AbstractConfig::SettingInfo> changedSettings;
|
std::map<std::string, AbstractConfig::SettingInfo> changedSettings;
|
||||||
globalConfig.getChangedSettings(changedSettings);
|
globalConfig.getChangedSettings(changedSettings);
|
||||||
@@ -984,7 +984,7 @@ try {
|
|||||||
auto groups = buildUser->getSupplementaryGIDs();
|
auto groups = buildUser->getSupplementaryGIDs();
|
||||||
creds.setSupplementaryGroups({groups.data(), groups.size()});
|
creds.setSupplementaryGroups({groups.data(), groups.size()});
|
||||||
}
|
}
|
||||||
request.setDebug(verbosity >= lvlDebug);
|
request.setDebug(getVerbosity() >= lvlDebug);
|
||||||
|
|
||||||
fillBuilderConfig(request);
|
fillBuilderConfig(request);
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ struct TunnelLogger : public Logger
|
|||||||
|
|
||||||
BufferState log(Verbosity lvl, std::string_view s) override
|
BufferState log(Verbosity lvl, std::string_view s) override
|
||||||
{
|
{
|
||||||
if (lvl > verbosity) {
|
if (lvl > getVerbosity()) {
|
||||||
return BufferState::HasSpace;
|
return BufferState::HasSpace;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,7 +106,7 @@ struct TunnelLogger : public Logger
|
|||||||
|
|
||||||
BufferState logEI(const ErrorInfo & ei) override
|
BufferState logEI(const ErrorInfo & ei) override
|
||||||
{
|
{
|
||||||
if (ei.level > verbosity) {
|
if (ei.level > getVerbosity()) {
|
||||||
return BufferState::HasSpace;
|
return BufferState::HasSpace;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,7 +195,7 @@ struct ClientSettings
|
|||||||
settings.keepFailed.override(keepFailed);
|
settings.keepFailed.override(keepFailed);
|
||||||
settings.keepGoing.override(keepGoing);
|
settings.keepGoing.override(keepGoing);
|
||||||
settings.tryFallback.override(tryFallback);
|
settings.tryFallback.override(tryFallback);
|
||||||
nix::verbosity = verbosity;
|
setVerbosity(verbosity);
|
||||||
settings.maxBuildJobs.override(maxBuildJobs);
|
settings.maxBuildJobs.override(maxBuildJobs);
|
||||||
settings.maxSilentTime.override(maxSilentTime);
|
settings.maxSilentTime.override(maxSilentTime);
|
||||||
settings.verboseBuild = verboseBuild;
|
settings.verboseBuild = verboseBuild;
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ struct TransferItem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (verbosity >= lvlVomit) {
|
if (getVerbosity() >= lvlVomit) {
|
||||||
curl_easy_setopt(req.get(), CURLOPT_VERBOSE, 1);
|
curl_easy_setopt(req.get(), CURLOPT_VERBOSE, 1);
|
||||||
curl_easy_setopt(req.get(), CURLOPT_DEBUGFUNCTION, TransferItem::debugCallback);
|
curl_easy_setopt(req.get(), CURLOPT_DEBUGFUNCTION, TransferItem::debugCallback);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,11 +127,12 @@ kj::Promise<Result<void>> RemoteStore::setOptions(Connection & conn)
|
|||||||
try {
|
try {
|
||||||
StringSink command;
|
StringSink command;
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
command << WorkerProto::Op::SetOptions
|
command << WorkerProto::Op::SetOptions
|
||||||
<< settings.keepFailed
|
<< settings.keepFailed
|
||||||
<< settings.keepGoing
|
<< settings.keepGoing
|
||||||
<< settings.tryFallback
|
<< settings.tryFallback
|
||||||
<< verbosity
|
<< getVerbosity()
|
||||||
<< settings.maxBuildJobs
|
<< settings.maxBuildJobs
|
||||||
<< settings.maxSilentTime
|
<< settings.maxSilentTime
|
||||||
<< true
|
<< true
|
||||||
@@ -140,6 +141,7 @@ try {
|
|||||||
<< 0 /* obsolete print build trace */
|
<< 0 /* obsolete print build trace */
|
||||||
<< settings.buildCores
|
<< settings.buildCores
|
||||||
<< settings.useSubstitutes;
|
<< settings.useSubstitutes;
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
std::map<std::string, Config::SettingInfo> overrides;
|
std::map<std::string, Config::SettingInfo> overrides;
|
||||||
settings.getSettings(overrides, true); // libstore settings
|
settings.getSettings(overrides, true); // libstore settings
|
||||||
|
|||||||
@@ -97,7 +97,10 @@ class AwsLogger : public Aws::Utils::Logging::FormattedLogSystem
|
|||||||
void ProcessFormattedStatement(Aws::String && statement) override
|
void ProcessFormattedStatement(Aws::String && statement) override
|
||||||
{
|
{
|
||||||
// FIXME: workaround for truly excessive log spam in debug level: https://github.com/aws/aws-sdk-cpp/pull/3003
|
// FIXME: workaround for truly excessive log spam in debug level: https://github.com/aws/aws-sdk-cpp/pull/3003
|
||||||
if ((statement.find("(SSLDataIn)") != std::string::npos || statement.find("(SSLDataOut)") != std::string::npos) && verbosity <= lvlDebug) {
|
if ((statement.find("(SSLDataIn)") != std::string::npos
|
||||||
|
|| statement.find("(SSLDataOut)") != std::string::npos)
|
||||||
|
&& getVerbosity() <= lvlDebug)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
debug("AWS: %s", chomp(statement));
|
debug("AWS: %s", chomp(statement));
|
||||||
@@ -116,9 +119,8 @@ static void initAWS()
|
|||||||
shared.cc), so don't let aws-sdk-cpp override it. */
|
shared.cc), so don't let aws-sdk-cpp override it. */
|
||||||
options.cryptoOptions.initAndCleanupOpenSSL = false;
|
options.cryptoOptions.initAndCleanupOpenSSL = false;
|
||||||
|
|
||||||
if (verbosity >= lvlDebug) {
|
if (getVerbosity() >= lvlDebug) {
|
||||||
options.loggingOptions.logLevel =
|
options.loggingOptions.logLevel = getVerbosity() == lvlDebug
|
||||||
verbosity == lvlDebug
|
|
||||||
? Aws::Utils::Logging::LogLevel::Debug
|
? Aws::Utils::Logging::LogLevel::Debug
|
||||||
: Aws::Utils::Logging::LogLevel::Trace;
|
: Aws::Utils::Logging::LogLevel::Trace;
|
||||||
options.loggingOptions.logger_create_fn = [options]() {
|
options.loggingOptions.logger_create_fn = [options]() {
|
||||||
|
|||||||
+1
-1
@@ -100,7 +100,7 @@ void RootArgs::parseCmdline(const Strings & _cmdline)
|
|||||||
throw UsageError("Invalid word number to get completion for: %zu\n. Your autocompletions might be misconfigured", n);
|
throw UsageError("Invalid word number to get completion for: %zu\n. Your autocompletions might be misconfigured", n);
|
||||||
*std::next(cmdline.begin(), n - 1) += completionMarker;
|
*std::next(cmdline.begin(), n - 1) += completionMarker;
|
||||||
completions = std::make_shared<Completions>();
|
completions = std::make_shared<Completions>();
|
||||||
verbosity = lvlError;
|
setVerbosity(lvlError);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto pos = cmdline.begin(); pos != cmdline.end(); ) {
|
for (auto pos = cmdline.begin(); pos != cmdline.end(); ) {
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ public:
|
|||||||
|
|
||||||
BufferState log(Verbosity lvl, std::string_view s) override
|
BufferState log(Verbosity lvl, std::string_view s) override
|
||||||
{
|
{
|
||||||
if (lvl > verbosity) {
|
if (lvl > getVerbosity()) {
|
||||||
return BufferState::HasSpace;
|
return BufferState::HasSpace;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,7 +116,7 @@ public:
|
|||||||
ActivityId parent
|
ActivityId parent
|
||||||
) override
|
) override
|
||||||
{
|
{
|
||||||
if (lvl <= verbosity && !s.empty()) {
|
if (lvl <= getVerbosity() && !s.empty()) {
|
||||||
return log(lvl, s + "...");
|
return log(lvl, s + "...");
|
||||||
}
|
}
|
||||||
return BufferState::HasSpace;
|
return BufferState::HasSpace;
|
||||||
@@ -136,7 +136,12 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Verbosity verbosity = lvlInfo;
|
Verbosity detail::verbosity = lvlInfo;
|
||||||
|
|
||||||
|
void setVerbosity(Verbosity v)
|
||||||
|
{
|
||||||
|
detail::verbosity = v;
|
||||||
|
}
|
||||||
|
|
||||||
Verbosity verbosityFromIntClamped(int val)
|
Verbosity verbosityFromIntClamped(int val)
|
||||||
{
|
{
|
||||||
|
|||||||
+18
-10
@@ -319,10 +319,19 @@ Logger * makeSimpleLogger(bool printBuildLogs = true);
|
|||||||
|
|
||||||
Logger * makeJSONLogger(Logger & prevLogger);
|
Logger * makeJSONLogger(Logger & prevLogger);
|
||||||
|
|
||||||
|
namespace detail {
|
||||||
|
extern Verbosity verbosity;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Verbosity getVerbosity()
|
||||||
|
{
|
||||||
|
return detail::verbosity;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* suppress msgs > this
|
* suppress msgs > this
|
||||||
*/
|
*/
|
||||||
extern Verbosity verbosity;
|
void setVerbosity(Verbosity v);
|
||||||
|
|
||||||
extern LoggerSettings loggerSettings;
|
extern LoggerSettings loggerSettings;
|
||||||
|
|
||||||
@@ -388,7 +397,7 @@ extern LoggerSettings loggerSettings;
|
|||||||
*/
|
*/
|
||||||
#define logErrorInfo(level, errorInfo...) \
|
#define logErrorInfo(level, errorInfo...) \
|
||||||
do { \
|
do { \
|
||||||
if ((level) <= ::nix::verbosity) { \
|
if ((level) <= ::nix::detail::verbosity) { \
|
||||||
(void) ::nix::logger->logEI((level), errorInfo); \
|
(void) ::nix::logger->logEI((level), errorInfo); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
@@ -401,14 +410,13 @@ extern LoggerSettings loggerSettings;
|
|||||||
* level. Note that this has to be implemented as a macro to ensure that the
|
* level. Note that this has to be implemented as a macro to ensure that the
|
||||||
* arguments are evaluated lazily. The format string *must* be a literal.
|
* arguments are evaluated lazily. The format string *must* be a literal.
|
||||||
*/
|
*/
|
||||||
#define printMsgUsing(loggerParam, level, fs, args...) \
|
#define printMsgUsing(loggerParam, level, fs, args...) \
|
||||||
do { \
|
do { \
|
||||||
auto _lix_logger_print_lvl = level; \
|
auto _lix_logger_print_lvl = level; \
|
||||||
const char * _lix_format = []<size_t N>(const char(&_lix_fs)[N]) { return _lix_fs; }(fs); \
|
const char * _lix_format = []<size_t N>(const char (&_lix_fs)[N]) { return _lix_fs; }(fs); \
|
||||||
if (_lix_logger_print_lvl <= ::nix::verbosity) { \
|
if (_lix_logger_print_lvl <= ::nix::detail::verbosity) { \
|
||||||
(void \
|
(void) loggerParam->log(_lix_logger_print_lvl, ::nix::HintFmt(_lix_format, ##args).str()); \
|
||||||
) loggerParam->log(_lix_logger_print_lvl, ::nix::HintFmt(_lix_format, ##args).str()); \
|
} \
|
||||||
} \
|
|
||||||
} while (0)
|
} while (0)
|
||||||
#define printMsg(level, fs, args...) printMsgUsing(::nix::logger, level, fs, ##args)
|
#define printMsg(level, fs, args...) printMsgUsing(::nix::logger, level, fs, ##args)
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -393,7 +393,7 @@ try {
|
|||||||
"--for",
|
"--for",
|
||||||
peer.pid ? fmt("%1%", *peer.pid) : "unknown",
|
peer.pid ? fmt("%1%", *peer.pid) : "unknown",
|
||||||
"--log-level",
|
"--log-level",
|
||||||
fmt("%1%", int(verbosity)),
|
fmt("%1%", int(getVerbosity())),
|
||||||
"--protocol",
|
"--protocol",
|
||||||
std::string(socket.id()),
|
std::string(socket.id()),
|
||||||
},
|
},
|
||||||
@@ -687,7 +687,7 @@ main_nix_daemon(AsyncIoRoot & aio, std::string programName, Strings argv, std::s
|
|||||||
}).parseCmdline(argv);
|
}).parseCmdline(argv);
|
||||||
|
|
||||||
if (isInstance) {
|
if (isInstance) {
|
||||||
verbosity = Verbosity(std::min<uint64_t>(subdaemonLogLevel, lvlVomit));
|
setVerbosity(Verbosity(std::min<uint64_t>(subdaemonLogLevel, lvlVomit)));
|
||||||
daemonInstance(daemon::getProtocol(protocol), aio, isTrustedOpt, peerPidArg);
|
daemonInstance(daemon::getProtocol(protocol), aio, isTrustedOpt, peerPidArg);
|
||||||
} else {
|
} else {
|
||||||
runDaemon(aio, stdio, isTrustedOpt);
|
runDaemon(aio, stdio, isTrustedOpt);
|
||||||
|
|||||||
+2
-1
@@ -599,8 +599,9 @@ struct CmdDevelop : Common, MixEnvironment
|
|||||||
|
|
||||||
auto script = makeRcScript(*state, store, buildEnvironment, (Path) tmpDir);
|
auto script = makeRcScript(*state, store, buildEnvironment, (Path) tmpDir);
|
||||||
|
|
||||||
if (verbosity >= lvlDebug)
|
if (getVerbosity() >= lvlDebug) {
|
||||||
script += "set -x\n";
|
script += "set -x\n";
|
||||||
|
}
|
||||||
|
|
||||||
script += fmt("command rm -f '%s'\n", rcFilePath);
|
script += fmt("command rm -f '%s'\n", rcFilePath);
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -505,9 +505,9 @@ int mainWrapped(AsyncIoRoot & aio, int argc, char ** argv)
|
|||||||
|
|
||||||
// FIXME: stop messing about with log verbosity depending on if it is interactive use
|
// FIXME: stop messing about with log verbosity depending on if it is interactive use
|
||||||
if (isatty(STDERR_FILENO)) {
|
if (isatty(STDERR_FILENO)) {
|
||||||
verbosity = lvlNotice;
|
setVerbosity(lvlNotice);
|
||||||
} else {
|
} else {
|
||||||
verbosity = lvlInfo;
|
setVerbosity(lvlInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
registerCommands();
|
registerCommands();
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ void init()
|
|||||||
|
|
||||||
void setVerbosity(int level)
|
void setVerbosity(int level)
|
||||||
CODE:
|
CODE:
|
||||||
verbosity = (Verbosity) level;
|
setVerbosity((Verbosity) level);
|
||||||
|
|
||||||
|
|
||||||
int isValidPath(char * path)
|
int isValidPath(char * path)
|
||||||
|
|||||||
@@ -445,7 +445,7 @@ TEST(FileTransfer, DISABLED_interrupt)
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
verbosity = lvlDebug;
|
setVerbosity(lvlDebug);
|
||||||
logger = new InterruptingLogger;
|
logger = new InterruptingLogger;
|
||||||
|
|
||||||
AsyncIoRoot aio;
|
AsyncIoRoot aio;
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ namespace nix {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(logEI, loggingErrorOnTalkativeLevel) {
|
TEST(logEI, loggingErrorOnTalkativeLevel) {
|
||||||
verbosity = lvlTalkative;
|
setVerbosity(lvlTalkative);
|
||||||
|
|
||||||
testing::internal::CaptureStderr();
|
testing::internal::CaptureStderr();
|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ namespace nix {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(logEI, loggingErrorOnChattyLevel) {
|
TEST(logEI, loggingErrorOnChattyLevel) {
|
||||||
verbosity = lvlChatty;
|
setVerbosity(lvlChatty);
|
||||||
|
|
||||||
testing::internal::CaptureStderr();
|
testing::internal::CaptureStderr();
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ namespace nix {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(logEI, loggingErrorOnDebugLevel) {
|
TEST(logEI, loggingErrorOnDebugLevel) {
|
||||||
verbosity = lvlDebug;
|
setVerbosity(lvlDebug);
|
||||||
|
|
||||||
testing::internal::CaptureStderr();
|
testing::internal::CaptureStderr();
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@ namespace nix {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(logEI, loggingErrorOnVomitLevel) {
|
TEST(logEI, loggingErrorOnVomitLevel) {
|
||||||
verbosity = lvlVomit;
|
setVerbosity(lvlVomit);
|
||||||
|
|
||||||
testing::internal::CaptureStderr();
|
testing::internal::CaptureStderr();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user