mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-01 03:29:18 -05:00
Merge topic 'cmDebugTools-add-header'
b0612796b1 cmDebugTools: add header
Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8849
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
file Copyright.txt or https://cmake.org/licensing for details. */
|
||||
#pragma once
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#define CM_DBG(expr) cm::dbg_impl(__FILE__, __LINE__, #expr, expr)
|
||||
|
||||
namespace cm {
|
||||
|
||||
namespace {
|
||||
|
||||
template <typename T>
|
||||
T dbg_impl(const char* fname, int line, const char* expr, T value)
|
||||
{
|
||||
std::cerr << fname << ':' << line << ": " << expr << " = " << value
|
||||
<< std::endl;
|
||||
return value;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
} // namespace cm
|
||||
@@ -11,6 +11,7 @@ set(CMakeLib_TESTS
|
||||
testCTestResourceAllocator.cxx
|
||||
testCTestResourceSpec.cxx
|
||||
testCTestResourceGroups.cxx
|
||||
testDebug.cxx
|
||||
testGccDepfileReader.cxx
|
||||
testGeneratedFileStream.cxx
|
||||
testJSONHelpers.cxx
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include "cmDebugTools.h"
|
||||
|
||||
#define check(expr, value) \
|
||||
do { \
|
||||
if (expr != value) { \
|
||||
std::cerr << "Failed to return " #value " for " #expr << std::endl; \
|
||||
retval = 1; \
|
||||
} \
|
||||
} while (false)
|
||||
|
||||
int testDebug(int argc, char** const /*argv*/)
|
||||
{
|
||||
if (argc != 1) {
|
||||
std::cout << "Invalid arguments.\n";
|
||||
return -1;
|
||||
}
|
||||
|
||||
int retval = 0;
|
||||
check(CM_DBG(true), true);
|
||||
check(CM_DBG(4), 4);
|
||||
check(CM_DBG(1.), 1.);
|
||||
check(CM_DBG('c'), 'c');
|
||||
check(CM_DBG("literal string"), std::string("literal string"));
|
||||
|
||||
std::string str = "std string";
|
||||
check(CM_DBG(str), "std string");
|
||||
check(CM_DBG(str.empty()), false);
|
||||
|
||||
return retval;
|
||||
}
|
||||
Reference in New Issue
Block a user