Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
F
fmt
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
fmt
Commits
56fb75c2
Commit
56fb75c2
authored
Aug 09, 2014
by
Victor Zverovich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rearrange tests to simplify inclusion in other projects.
parent
bdbacde6
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
97 additions
and
95 deletions
+97
-95
CMakeLists.txt
CMakeLists.txt
+4
-50
test/CMakeLists.txt
test/CMakeLists.txt
+47
-45
test/compile-test/CMakeLists.txt
test/compile-test/CMakeLists.txt
+46
-0
No files found.
CMakeLists.txt
View file @
56fb75c2
...
@@ -70,11 +70,13 @@ if (CPP11_FLAG AND FMT_EXTRA_TESTS)
...
@@ -70,11 +70,13 @@ if (CPP11_FLAG AND FMT_EXTRA_TESTS)
set_target_properties
(
format PROPERTIES COMPILE_FLAGS
${
CPP11_FLAG
}
)
set_target_properties
(
format PROPERTIES COMPILE_FLAGS
${
CPP11_FLAG
}
)
# Test compilation with default flags.
# Test compilation with default flags.
file
(
GLOB src RELATIVE
${
CMAKE_CURRENT_SOURCE_DIR
}
test/*.cc test/*.h
)
file
(
GLOB src RELATIVE
${
CMAKE_CURRENT_SOURCE_DIR
}
test/*.cc test/*.h
)
add_library
(
testformat
${
FMT_SOURCES
}
${
src
}
)
add_library
(
testformat
${
FMT_SOURCE
_FILE
S
}
${
src
}
)
endif
()
endif
()
add_subdirectory
(
doc
)
add_subdirectory
(
doc
)
include_directories
(
.
)
# We compile Google Test ourselves instead of using pre-compiled libraries.
# We compile Google Test ourselves instead of using pre-compiled libraries.
# See the Google Test FAQ "Why is it not recommended to install a
# See the Google Test FAQ "Why is it not recommended to install a
# pre-compiled copy of Google Test (for example, into /usr/local)?"
# pre-compiled copy of Google Test (for example, into /usr/local)?"
...
@@ -94,55 +96,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
...
@@ -94,55 +96,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
endif
()
endif
()
enable_testing
()
enable_testing
()
add_subdirectory
(
test
)
include_directories
(
.
)
set
(
TEST_MAIN_SRC
test/test-main.cc test/gtest-extra.cc test/gtest-extra.h test/util.cc
)
add_library
(
test-main
${
TEST_MAIN_SRC
}
)
target_link_libraries
(
test-main gtest format
)
# Adds a test.
# Usage: add_fmt_test(name libs srcs...)
function
(
add_fmt_test name libs
)
add_executable
(
${
name
}
test/
${
name
}
.cc
${
ARGN
}
)
target_link_libraries
(
${
name
}
${
libs
}
)
add_test
(
${
name
}
${
name
}
)
endfunction
()
add_fmt_test
(
gtest-extra-test test-main
)
add_fmt_test
(
format-test test-main
)
add_fmt_test
(
printf-test test-main
)
foreach
(
target format-test printf-test
)
if
(
CMAKE_COMPILER_IS_GNUCXX
)
set_target_properties
(
${
target
}
PROPERTIES COMPILE_FLAGS
"-Wall -Wextra -pedantic -Wno-long-long -Wno-variadic-macros"
)
endif
()
if
(
CPP11_FLAG
)
set_target_properties
(
${
target
}
PROPERTIES COMPILE_FLAGS
${
CPP11_FLAG
}
)
endif
()
endforeach
()
add_fmt_test
(
util-test test-main
)
add_executable
(
macro-test test/macro-test.cc
${
FMT_SOURCES
}
${
TEST_MAIN_SRC
}
)
set_target_properties
(
macro-test
PROPERTIES COMPILE_DEFINITIONS
"FMT_USE_VARIADIC_TEMPLATES=0"
)
target_link_libraries
(
macro-test gtest
)
if
(
HAVE_OPEN
)
add_executable
(
posix-test test/posix-test.cc
${
FMT_SOURCES
}
${
TEST_MAIN_SRC
}
)
set_target_properties
(
posix-test
PROPERTIES COMPILE_DEFINITIONS
"FMT_INCLUDE_POSIX_TEST=1"
)
target_link_libraries
(
posix-test gtest
)
add_test
(
posix-test posix-test
)
endif
()
add_test
(
compile-test
${
CMAKE_CTEST_COMMAND
}
--build-and-test
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/test"
"
${
CMAKE_CURRENT_BINARY_DIR
}
/test"
--build-generator
${
CMAKE_GENERATOR
}
--build-makeprogram
${
CMAKE_MAKE_PROGRAM
}
)
if
(
EXISTS .gitignore
)
if
(
EXISTS .gitignore
)
# Get the list of ignored files from .gitignore.
# Get the list of ignored files from .gitignore.
...
...
test/CMakeLists.txt
View file @
56fb75c2
# Test if compile errors are produced where necessary.
include_directories
(
..
)
cmake_minimum_required
(
VERSION 2.8
)
set
(
TEST_MAIN_SRC
test/test-main.cc test/gtest-extra.cc test/gtest-extra.h test/util.cc
)
include
(
CheckCXXSourceCompiles
)
add_library
(
test-main
${
TEST_MAIN_SRC
}
)
set
(
CMAKE_REQUIRED_INCLUDES
${
CMAKE_CURRENT_SOURCE_DIR
}
/..
)
target_link_libraries
(
test-main gtest format
)
function
(
expect_compile_error code
)
# Adds a test.
check_cxx_source_compiles
(
"
# Usage: add_fmt_test(name libs srcs...)
#include
\"
format.cc
\"
function
(
add_fmt_test name libs
)
int main() {
add_executable
(
${
name
}
test/
${
name
}
.cc
${
ARGN
}
)
${
code
}
target_link_libraries
(
${
name
}
${
libs
}
)
}
add_test
(
${
name
}
${
name
}
)
"
compiles
)
endfunction
()
set
(
does_compile
${
compiles
}
)
# Unset the CMake cache variable compiles. Otherwise the compile test will
add_fmt_test
(
gtest-extra-test test-main
)
# just use cached information next time it runs.
add_fmt_test
(
format-test test-main
)
unset
(
compiles CACHE
)
add_fmt_test
(
printf-test test-main
)
if
(
does_compile
)
foreach
(
target format-test printf-test
)
message
(
FATAL_ERROR
"No compile error for:
${
code
}
"
)
if
(
CMAKE_COMPILER_IS_GNUCXX
)
set_target_properties
(
${
target
}
PROPERTIES COMPILE_FLAGS
"-Wall -Wextra -pedantic -Wno-long-long -Wno-variadic-macros"
)
endif
()
endif
()
endfunction
(
)
if
(
CPP11_FLAG
)
set_target_properties
(
${
target
}
PROPERTIES COMPILE_FLAGS
${
CPP11_FLAG
}
)
# Array is noncopyable.
endif
()
e
xpect_compile_error
(
"fmt::internal::Array<char, 5> a, b(a);"
)
e
ndforeach
(
)
expect_compile_error
(
"fmt::internal::Array<char, 5> a, b; b = a;"
)
add_fmt_test
(
util-test test-main
)
# Writer is noncopyable.
add_executable
(
macro-test test/macro-test.cc
${
FMT_SOURCES
}
${
TEST_MAIN_SRC
}
)
expect_compile_error
(
"const fmt::Writer a, b(a);"
)
set_target_properties
(
macro-test
expect_compile_error
(
"fmt::Writer a, b; b = a;
"
)
PROPERTIES COMPILE_DEFINITIONS
"FMT_USE_VARIADIC_TEMPLATES=0
"
)
target_link_libraries
(
macro-test gtest
)
# MakeArg doesn't accept [const] volatile char *.
expect_compile_error
(
"volatile char s[] =
\"
test
\"
; (fmt::internal::MakeArg<char>)(s);"
)
if
(
HAVE_OPEN
)
expect_compile_error
(
"const volatile char s[] =
\"
test
\"
; (fmt::internal::MakeArg<char>)(s);"
)
add_executable
(
posix-test test/posix-test.cc
${
FMT_SOURCES
}
${
TEST_MAIN_SRC
}
)
set_target_properties
(
posix-test
# MakeArg<char> doesn't accept wchar_t.
PROPERTIES COMPILE_DEFINITIONS
"FMT_INCLUDE_POSIX_TEST=1"
)
expect_compile_error
(
"fmt::internal::MakeArg<char>(L'a');"
)
target_link_libraries
(
posix-test gtest
)
expect_compile_error
(
"fmt::internal::MakeArg<char>(L
\"
test
\"
);"
)
add_test
(
posix-test posix-test
)
endif
()
# Writing a wide character to a character stream Writer is forbidden.
expect_compile_error
(
"fmt::Writer() << L'a';"
)
add_test
(
compile-test
${
CMAKE_CTEST_COMMAND
}
expect_compile_error
(
"fmt::Writer() << fmt::pad(
\"
abc
\"
, 5, L' ');"
)
--build-and-test
expect_compile_error
(
"fmt::Writer() << fmt::pad(42, 5, L' ');"
)
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/test"
"
${
CMAKE_CURRENT_BINARY_DIR
}
/test"
# Formatting a wide character with a narrow format string is forbidden.
--build-generator
${
CMAKE_GENERATOR
}
expect_compile_error
(
"fmt::format(
\"
{}
\"
, L'a';"
)
--build-makeprogram
${
CMAKE_MAKE_PROGRAM
}
)
test/compile-test/CMakeLists.txt
0 → 100644
View file @
56fb75c2
# Test if compile errors are produced where necessary.
cmake_minimum_required
(
VERSION 2.8
)
include
(
CheckCXXSourceCompiles
)
set
(
CMAKE_REQUIRED_INCLUDES
${
CMAKE_CURRENT_SOURCE_DIR
}
/../..
)
function
(
expect_compile_error code
)
check_cxx_source_compiles
(
"
#include
\"
format.cc
\"
int main() {
${
code
}
}
"
compiles
)
set
(
does_compile
${
compiles
}
)
# Unset the CMake cache variable compiles. Otherwise the compile test will
# just use cached information next time it runs.
unset
(
compiles CACHE
)
if
(
does_compile
)
message
(
FATAL_ERROR
"No compile error for:
${
code
}
"
)
endif
()
endfunction
()
# Array is noncopyable.
expect_compile_error
(
"fmt::internal::Array<char, 5> a, b(a);"
)
expect_compile_error
(
"fmt::internal::Array<char, 5> a, b; b = a;"
)
# Writer is noncopyable.
expect_compile_error
(
"const fmt::Writer a, b(a);"
)
expect_compile_error
(
"fmt::Writer a, b; b = a;"
)
# MakeArg doesn't accept [const] volatile char *.
expect_compile_error
(
"volatile char s[] =
\"
test
\"
; (fmt::internal::MakeArg<char>)(s);"
)
expect_compile_error
(
"const volatile char s[] =
\"
test
\"
; (fmt::internal::MakeArg<char>)(s);"
)
# MakeArg<char> doesn't accept wchar_t.
expect_compile_error
(
"fmt::internal::MakeArg<char>(L'a');"
)
expect_compile_error
(
"fmt::internal::MakeArg<char>(L
\"
test
\"
);"
)
# Writing a wide character to a character stream Writer is forbidden.
expect_compile_error
(
"fmt::Writer() << L'a';"
)
expect_compile_error
(
"fmt::Writer() << fmt::pad(
\"
abc
\"
, 5, L' ');"
)
expect_compile_error
(
"fmt::Writer() << fmt::pad(42, 5, L' ');"
)
# Formatting a wide character with a narrow format string is forbidden.
expect_compile_error
(
"fmt::format(
\"
{}
\"
, L'a';"
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment