Skip to content

Commit b598fbd

Browse files
committed
Add more tests
1 parent c39eeaa commit b598fbd

File tree

7 files changed

+173
-0
lines changed

7 files changed

+173
-0
lines changed

tests/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
add_subdirectory( bundle_options )
12
add_subdirectory( bundle_subdir )
23
add_subdirectory( bundle_subproj ) # ECBUILD-460
34
add_subdirectory( bundle_override_features ) # ECBUILD-486

tests/bundle_options/CMakeLists.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
ecbuild_add_test(
3+
TARGET test_ecbuild_bundle_options
4+
TYPE SCRIPT
5+
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/configure.sh
6+
ENVIRONMENT CMAKE_CURRENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} CMAKE_CURRENT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}
7+
)

tests/bundle_options/clean.sh

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
HERE=${CMAKE_CURRENT_BINARY_DIR:-"$( cd $( dirname "${BASH_SOURCE[0]}" ) && pwd -P )"}
6+
7+
# --------------------- cleanup ------------------------
8+
echo "cleaning $HERE"
9+
rm -rf $HERE/build_*

tests/bundle_options/configure.sh

+130
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
function EXPECT_ONE_OF()
6+
{
7+
local file=$1
8+
local pattern=$2
9+
local found=$(cat ${file} | grep -e "${pattern}" | wc -l | xargs)
10+
11+
if [ "$found" != "1" ]; then
12+
echo "File ${file} does not contain exacly one of '$2'"
13+
exit 1
14+
fi
15+
}
16+
17+
HERE=${CMAKE_CURRENT_BINARY_DIR:-"$( cd $( dirname "${BASH_SOURCE[0]}" ) && pwd -P )"}
18+
SOURCE=${CMAKE_CURRENT_SOURCE_DIR:-$HERE}
19+
20+
# Add ecbuild to path
21+
export PATH=$SOURCE/../../bin:$PATH
22+
echo $PATH
23+
echo $SOURCE
24+
25+
# --------------------- cleanup ------------------------
26+
$SOURCE/clean.sh
27+
28+
# ----------------- configure project ---------------------
29+
30+
# (0) Options: (default)
31+
# proja, FEATURE_A is enabled (by default)
32+
# projb, FEATURE_A is disabled (by default)
33+
34+
TC=0
35+
36+
mkdir -p $HERE/build_${TC}
37+
ecbuild $SOURCE/projx -B $HERE/build_${TC} | tee $HERE/build_${TC}.log
38+
EXPECT_ONE_OF $HERE/build_${TC}.log "FEATURE_A, .*proja(ON): ''.*"
39+
EXPECT_ONE_OF $HERE/build_${TC}.log "FEATURE_A, .*projb(OFF): ''.*"
40+
EXPECT_ONE_OF $HERE/build_${TC}.log "Build files have been written"
41+
42+
# (1) Options: -DSOME_PACKAGE_FOUND
43+
# proja, FEATURE_A is enabled (by default)
44+
# projb, FEATURE_A is disabled (by default), event if the conditional package is found
45+
46+
TC=1
47+
48+
mkdir -p $HERE/build_${TC}
49+
ecbuild $SOURCE/projx -DSOME_PACKAGE_FOUND=ON -B $HERE/build_${TC} | tee $HERE/build_${TC}.log
50+
EXPECT_ONE_OF $HERE/build_${TC}.log "FEATURE_A, .*proja(ON): ''.*"
51+
EXPECT_ONE_OF $HERE/build_${TC}.log "FEATURE_A, .*projb(OFF): ''.*"
52+
EXPECT_ONE_OF $HERE/build_${TC}.log "Build files have been written"
53+
54+
# (2) Options: -DENABLE_FEATURE_A=ON
55+
# proja, FEATURE_A is explicitly enabled (by global option)
56+
# projb, FEATURE_A is explicitly enabled (by global option), but fails since the conditional package is not found
57+
58+
TC=2
59+
60+
mkdir -p $HERE/build_${TC}
61+
ecbuild $SOURCE/projx -DENABLE_FEATURE_A=ON -B $HERE/build_${TC} | tee $HERE/build_${TC}.log
62+
EXPECT_ONE_OF $HERE/build_${TC}.log " Configuring incomplete, errors occurred"
63+
64+
# (3) Options: -DENABLE_FEATURE_A=ON -DSOME_PACKAGE_FOUND=ON
65+
# proja, FEATURE_A is explicitly enabled (by global option)
66+
# projb, FEATURE_A is explicitly enabled (by global option), and succeeds because the conditional package is found
67+
68+
TC=3
69+
70+
mkdir -p $HERE/build_${TC}
71+
ecbuild $SOURCE/projx -DENABLE_FEATURE_A=ON -DSOME_PACKAGE_FOUND=ON -B $HERE/build_${TC} | tee $HERE/build_${TC}.log
72+
EXPECT_ONE_OF $HERE/build_${TC}.log "FEATURE_A, .*proja(ON): ''.*"
73+
EXPECT_ONE_OF $HERE/build_${TC}.log "FEATURE_A, .*projb(ON): ''.*"
74+
EXPECT_ONE_OF $HERE/build_${TC}.log "Build files have been written"
75+
76+
# (4) Options: -DENABLE_FEATURE_A=OFF
77+
# proja, FEATURE_A is explicitly disabled (by global option)
78+
# projb, FEATURE_A is explicitly disabled (by global option)
79+
80+
TC=4
81+
82+
mkdir -p $HERE/build_${TC}
83+
ecbuild $SOURCE/projx -DENABLE_FEATURE_A=OFF -B $HERE/build_${TC} | tee $HERE/build_${TC}.log
84+
EXPECT_ONE_OF $HERE/build_${TC}.log "FEATURE_A, .*proja(OFF): ''.*"
85+
EXPECT_ONE_OF $HERE/build_${TC}.log "FEATURE_A, .*projb(OFF): ''.*"
86+
EXPECT_ONE_OF $HERE/build_${TC}.log "Build files have been written"
87+
88+
# (5) Options: -DENABLE_FEATURE_A=OFF -DPROJB_ENABLE_FEATURE_A=ON
89+
# proja, FEATURE_A is explicitly disabled (by global option)
90+
# projb, FEATURE_A is explicitly enabled (by project-specific option), but fails since the conditional package is not found
91+
92+
TC=5
93+
94+
mkdir -p $HERE/build_${TC}
95+
ecbuild $SOURCE/projx -DENABLE_FEATURE_A=OFF -DPROJB_ENABLE_FEATURE_A=ON -B $HERE/build_${TC} | tee $HERE/build_${TC}.log
96+
EXPECT_ONE_OF $HERE/build_${TC}.log " Configuring incomplete, errors occurred"
97+
98+
# (6) Options: -DENABLE_FEATURE_A=OFF -DPROJB_ENABLE_FEATURE_A=ON -DSOME_PACKAGE_FOUND=ON
99+
# proja, FEATURE_A is explicitly disabled (by global option)
100+
# projb, FEATURE_A is explicitly enabled (by project-specific option), possible because the conditional package is found
101+
102+
TC=6
103+
104+
mkdir -p $HERE/build_${TC}
105+
ecbuild $SOURCE/projx -DENABLE_FEATURE_A=OFF -DPROJB_ENABLE_FEATURE_A=ON -DSOME_PACKAGE_FOUND=ON -B $HERE/build_${TC} | tee $HERE/build_${TC}.log
106+
EXPECT_ONE_OF $HERE/build_${TC}.log "FEATURE_A, .*proja(OFF): ''.*"
107+
EXPECT_ONE_OF $HERE/build_${TC}.log "FEATURE_A, .*projb(ON): ''.*"
108+
EXPECT_ONE_OF $HERE/build_${TC}.log "Build files have been written"
109+
110+
# (7) Options: -DENABLE_FEATURE_A=ON -DPROJA_ENABLE_FEATURE_A=OFF
111+
# proja, FEATURE_A is explicitly disabled (by project-specific option)
112+
# projb, FEATURE_A is explicitly enabled (by global option), but fails since the conditional package is not found
113+
114+
TC=7
115+
116+
mkdir -p $HERE/build_${TC}
117+
ecbuild $SOURCE/projx -DENABLE_FEATURE_A=ON -DPROJA_ENABLE_FEATURE_A=OFF -B $HERE/build_${TC} | tee $HERE/build_${TC}.log
118+
EXPECT_ONE_OF $HERE/build_${TC}.log " Configuring incomplete, errors occurred"
119+
120+
# (8) Options: -DENABLE_FEATURE_A=ON -DPROJB_ENABLE_FEATURE_A=OFF -DSOME_PACKAGE_FOUND=ON
121+
# proja, FEATURE_A is explicitly enabled (by global option)
122+
# projb, FEATURE_A is explicitly disabled (by project-specific option), event if the conditional package is found
123+
124+
TC=8
125+
126+
mkdir -p $HERE/build_${TC}
127+
ecbuild $SOURCE/projx -DENABLE_FEATURE_A=ON -DPROJB_ENABLE_FEATURE_A=OFF -DSOME_PACKAGE_FOUND=ON -B $HERE/build_${TC} | tee $HERE/build_${TC}.log
128+
EXPECT_ONE_OF $HERE/build_${TC}.log "FEATURE_A, .*proja(ON): ''.*"
129+
EXPECT_ONE_OF $HERE/build_${TC}.log "FEATURE_A, .*projb(OFF): ''.*"
130+
EXPECT_ONE_OF $HERE/build_${TC}.log "Build files have been written"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
cmake_minimum_required( VERSION 3.18.4 FATAL_ERROR )
2+
find_package( ecbuild 3.4 REQUIRED )
3+
4+
project( projx LANGUAGES NONE VERSION 0.1 )
5+
6+
add_subdirectory( proja )
7+
add_subdirectory( projb )
8+
9+
ecbuild_print_summary()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
find_package( ecbuild 3.4 REQUIRED )
3+
4+
project( proja LANGUAGES NONE VERSION 0.1 )
5+
ecbuild_add_option(
6+
FEATURE FEATURE_A
7+
DEFAULT ON
8+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
find_package( ecbuild 3.4 REQUIRED )
3+
4+
project( projb LANGUAGES NONE VERSION 0.2 )
5+
ecbuild_add_option(
6+
FEATURE FEATURE_A
7+
DEFAULT OFF
8+
CONDITION SOME_PACKAGE_FOUND
9+
)

0 commit comments

Comments
 (0)