22
33set -euo pipefail
44
5+ # Get TEST_ALL_RECIPES from environment variable, default to 0 (false)
6+ PYTHON_NG_TEST_ALL_RECIPES=${PYTHON_NG_TEST_ALL_RECIPES:- 0}
7+
58SAMPLE_RECIPES_NUM=30
69RECIPES_BUILD_NUM=10
710RECIPES_BUILT_COUNT=0
811
12+ # Ensure required tools are installed
13+ COMMANDS=(" conan" " yq" " jq" )
14+ for cmd in " ${COMMANDS[@]} " ; do
15+ if ! which $cmd & > /dev/null; then
16+ echo " ERROR: $cmd is not installed. Please install $cmd to proceed."
17+ exit 1
18+ fi
19+ done
20+
921# Find all conanfile.py files that use apply_conandata_patches
1022RECIPES=$( find . -type f -name " conanfile.py" -exec grep -l " apply_conandata_patches(self)" {} + | sort | uniq)
1123# And does not need system requirement
1224RECIPES=$( grep -L " /system" $RECIPES )
25+ # And does not contain Conan 1 imports
26+ RECIPES=$( grep -L " from conans" $RECIPES )
1327
1428echo " Found $( echo " $RECIPES " | wc -l) recipes using apply_conandata_patches."
1529
16- SAMPLE_RECIPES=$( shuf -e ${RECIPES[@]} -n $SAMPLE_RECIPES_NUM )
17-
18- echo " Pick $SAMPLE_RECIPES_NUM random recipes to test:"
19- echo " $SAMPLE_RECIPES "
30+ if [ " ${PYTHON_NG_TEST_ALL_RECIPES} " -eq " 1" ]; then
31+ SAMPLE_RECIPES_NUM=$( echo " $RECIPES " | wc -l)
32+ RECIPES_BUILD_NUM=$SAMPLE_RECIPES_NUM
33+ echo " PYTHON_NG_TEST_ALL_RECIPES is set to 1, testing all $SAMPLE_RECIPES_NUM recipes."
34+ else
35+ RECIPES=$( shuf -e ${RECIPES[@]} -n $SAMPLE_RECIPES_NUM )
36+ echo " Pick $SAMPLE_RECIPES_NUM random recipes to test:"
37+ echo " $RECIPES "
38+ fi
2039
2140# Run conan create for each sampled recipe
22- for it in $SAMPLE_RECIPES ; do
41+ for it in $RECIPES ; do
2342
2443 if [ $RECIPES_BUILT_COUNT -ge $RECIPES_BUILD_NUM ]; then
2544 echo " Reached the limit of $RECIPES_BUILD_NUM recipes built, stopping. All done."
2645 break
2746 fi
2847
2948 recipe_dir=$( dirname " ${it} " )
30- pushd " $recipe_dir "
49+ pushd " $recipe_dir " > /dev/null
3150 echo " Testing recipe in directory: ${recipe_dir} "
3251 # Get a version from conandata.yml that uses a patch
3352 version=$( yq ' .patches | keys | .[0]' conandata.yml 2> /dev/null)
3453 if [ -z " $version " ]; then
3554 echo " ERROR: No patches found in conandata.yml for $recipe_dir , skipping."
55+ popd > /dev/null
3656 continue
3757 fi
3858 version=$( echo ${version} | tr -d ' "' )
@@ -56,7 +76,7 @@ for it in $SAMPLE_RECIPES; do
5676 else
5777 echo " ERROR: Fatal error during conan create command execution:"
5878 echo " $output "
59- popd
79+ popd > /dev/null
6080 exit 1
6181 fi
6282 else
@@ -65,5 +85,5 @@ for it in $SAMPLE_RECIPES; do
6585 echo " -------------------------------------------------------"
6686 RECIPES_BUILT_COUNT=$(( RECIPES_BUILT_COUNT + 1 ))
6787 fi
68- popd
88+ popd > /dev/null
6989done
0 commit comments