FeatureSummary: Add unit tests

This commit is contained in:
Daniele E. Domenichelli 2017-01-26 10:48:13 +01:00
parent 614a97a57b
commit 4cf4acebe3
16 changed files with 259 additions and 0 deletions

View File

@ -0,0 +1,6 @@
CMake Error at .*/Modules/FeatureSummary\.cmake:[0-9]+. \(message\):
feature_summary\(\) Error: REQUIRED package\(s\) are missing, aborting CMake
run.
Call Stack \(most recent call first\):
FeatureSummaryFatalOnMissingRequiredPackages.cmake:[0-9]+ \(feature_summary\)
CMakeLists.txt:[0-9]+ \(include\)

View File

@ -0,0 +1,17 @@
-- The following REQUIRED packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following OPTIONAL packages have not been found:
\* Bar
-- The following REQUIRED packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following REQUIRED packages have not been found:
\* Bar
-- Configuring incomplete, errors occurred!

View File

@ -0,0 +1,12 @@
include(FeatureSummary)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
find_package(Foo)
find_package(Bar)
set_package_properties(Foo PROPERTIES TYPE REQUIRED)
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
set_package_properties(Bar PROPERTIES TYPE REQUIRED)
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)

View File

@ -0,0 +1,14 @@
-- The following OPTIONAL packages have not been found:
\* Baz
-- The following OPTIONAL packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following OPTIONAL packages have not been found:
\* Bar
\* Baz
-- Configuring done

View File

@ -0,0 +1,11 @@
include(FeatureSummary)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
find_package(Foo QUIET)
find_package(Bar QUIET)
find_package(Baz)
feature_summary(WHAT ALL)
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES)

View File

@ -0,0 +1,16 @@
The following OPTIONAL packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following OPTIONAL packages have been found:
\* Foo, The Foo package, <https://foo.example/>
Because everyone needs some Foo.
-- The following OPTIONAL packages have been found:
\* Foo, The Foo package, <https://foo.example/>
Because everyone needs some Foo.
Because Foo is better than Bar.
-- Configuring done

View File

@ -0,0 +1,16 @@
include(FeatureSummary)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
find_package(Foo)
# Purpose not set
feature_summary(WHAT ALL)
# Purpose set once
set_package_properties(Foo PROPERTIES PURPOSE "Because everyone needs some Foo.")
feature_summary(WHAT ALL)
# Purpose set twice
set_package_properties(Foo PROPERTIES PURPOSE "Because Foo is better than Bar.")
feature_summary(WHAT ALL)

View File

@ -0,0 +1,45 @@
-- The following OPTIONAL packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following RUNTIME packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following OPTIONAL packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following OPTIONAL packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following RECOMMENDED packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following RECOMMENDED packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following RECOMMENDED packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following REQUIRED packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following REQUIRED packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following REQUIRED packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following REQUIRED packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- Configuring done

View File

@ -0,0 +1,48 @@
include(FeatureSummary)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
find_package(Foo)
# Type not set => OPTIONAL
feature_summary(WHAT ALL)
# RUNTIME > not set => RUNTIME
set_package_properties(Foo PROPERTIES TYPE RUNTIME)
feature_summary(WHAT ALL)
# OPTIONAL > RUNTIME => OPTIONAL
set_package_properties(Foo PROPERTIES TYPE OPTIONAL)
feature_summary(WHAT ALL)
# RUNTIME < OPTIONAL => OPTIONAL
set_package_properties(Foo PROPERTIES TYPE OPTIONAL)
feature_summary(WHAT ALL)
# RECOMMENDED > OPTIONAL => RECOMMENDED
set_package_properties(Foo PROPERTIES TYPE RECOMMENDED)
feature_summary(WHAT ALL)
# OPTIONAL < RECOMMENDED => RECOMMENDED
set_package_properties(Foo PROPERTIES TYPE OPTIONAL)
feature_summary(WHAT ALL)
# RUNTIME < RECOMMENDED => RECOMMENDED
set_package_properties(Foo PROPERTIES TYPE RUNTIME)
feature_summary(WHAT ALL)
# REQUIRED > RECOMMENDED => REQUIRED
set_package_properties(Foo PROPERTIES TYPE REQUIRED)
feature_summary(WHAT ALL)
# RECOMMENDED < REQUIRED => REQUIRED
set_package_properties(Foo PROPERTIES TYPE RECOMMENDED)
feature_summary(WHAT ALL)
# OPTIONAL < REQUIRED => REQUIRED
set_package_properties(Foo PROPERTIES TYPE OPTIONAL)
feature_summary(WHAT ALL)
# RUNTIME < REQUIRED => REQUIRED
set_package_properties(Foo PROPERTIES TYPE RUNTIME)
feature_summary(WHAT ALL)

View File

@ -0,0 +1,32 @@
-- The following OPTIONAL packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following OPTIONAL packages have not been found:
\* Bar
\* Baz
-- The following OPTIONAL packages have been found:
\* Foo, The Foo package, <https://foo.example/>
-- The following OPTIONAL packages have not been found:
\* Bar, <https://bar.net/>
\* Baz, A Baz package
-- Warning: Property DESCRIPTION for package Foo already set to "The Foo package", overriding it with "A Foo package"
-- Warning: Property URL already set to "https://foo.example/", overriding it with "https://foo.net/"
-- Warning: Property URL already set to "https://bar.net/", overriding it with "https://bar.example/"
-- Warning: Property DESCRIPTION for package Baz already set to "A Baz package", overriding it with "The Baz package"
-- The following OPTIONAL packages have been found:
\* Foo, A Foo package, <https://foo.net/>
-- The following OPTIONAL packages have not been found:
\* Bar, The Bar package, <https://bar.example/>
\* Baz, The Baz package, <https://baz.example/>
-- Configuring done

View File

@ -0,0 +1,28 @@
include(FeatureSummary)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
find_package(Foo) # URL and DESCRIPTION are set in the FindFoo.cmake file
find_package(Bar) # URL and DESCRIPTION are not set
find_package(Baz) # URL and DESCRIPTION are not set
feature_summary(WHAT ALL)
set_package_properties(Bar PROPERTIES URL "https://bar.net/") # URL and no DESCRIPTION
set_package_properties(Baz PROPERTIES DESCRIPTION "A Baz package") # DESCRIPTION and no URL
feature_summary(WHAT ALL)
# Overwrite with the same value (no warning)
set_package_properties(Foo PROPERTIES URL "https://foo.example/"
DESCRIPTION "The Foo package")
set_package_properties(Bar PROPERTIES URL "https://bar.net/")
set_package_properties(Baz PROPERTIES DESCRIPTION "A Baz package")
# Overwrite with different values (warnings)
set_package_properties(Foo PROPERTIES URL "https://foo.net/"
DESCRIPTION "A Foo package") # Overwrite URL and DESCRIPTION
set_package_properties(Bar PROPERTIES URL "https://bar.example/"
DESCRIPTION "The Bar package") # Overwrite URL and add DESCRIPTION
set_package_properties(Baz PROPERTIES URL "https://baz.example/"
DESCRIPTION "The Baz package") # Overwrite URL and add DESCRIPTION
feature_summary(WHAT ALL)

View File

@ -0,0 +1,2 @@
include(FeatureSummary)
set(Bar_FOUND 0)

View File

@ -0,0 +1,2 @@
include(FeatureSummary)
set(Baz_FOUND 0)

View File

@ -0,0 +1,4 @@
include(FeatureSummary)
set_package_properties(Foo PROPERTIES URL "https://foo.example/"
DESCRIPTION "The Foo package")
set(Foo_FOUND 1)

View File

@ -7,3 +7,8 @@ run_cmake(FeatureSummaryWhatList)
run_cmake(FeatureSummaryWhatListUnknown)
run_cmake(FeatureSummaryWhatListAll)
run_cmake(FeatureSummaryWhatOnce)
run_cmake(FeatureSummaryPurpose)
run_cmake(FeatureSummaryURLDescription)
run_cmake(FeatureSummaryTypes)
run_cmake(FeatureSummaryFatalOnMissingRequiredPackages)
run_cmake(FeatureSummaryIncludeQuietPackages)