4
4
5
5
declare -a examples=(" MySqlConnectorExample" " NpgsqlExample" )
6
6
7
+ config_file=$1
8
+ file_per_query=$2
9
+ generate_csproj=$3
10
+ target_framework=$4
11
+
7
12
generated_files_cleanup () {
8
- generate_csproj=$1
9
- for example_dir in " ${examples[@]} "
10
- do
11
- echo " Deleting .cs files" && find " ${example_dir} /" -type f -name " *.cs" -exec rm -f {} \;
12
- if [ " ${generate_csproj} " = " true" ]; then
13
- echo " Deleting .csproj file" && rm " ${example_dir} /${example_dir} .csproj"
14
- fi
15
- done
13
+ for example_dir in " ${examples[@]} "
14
+ do
15
+ echo " Deleting .cs files in ${example_dir} "
16
+ find " ${example_dir} /" -type f -name " *.cs" -exec rm -f {} \;
17
+ if [ " ${generate_csproj} " = " true" ]; then
18
+ echo " Deleting .csproj file" && rm " ${example_dir} /${example_dir} .csproj"
19
+ fi
20
+ done
21
+ }
22
+
23
+ change_config () {
24
+ for (( i= 0 ; i< ${# examples[@]} ; i++ )) ; do
25
+ echo " Changing configuration for project ${example_dir} "
26
+ yq -i "
27
+ .sql[${i} ].codegen[0].options.filePerQuery = ${file_per_query} |
28
+ .sql[${i} ].codegen[0].options.generateCsproj = ${generate_csproj} |
29
+ .sql[${i} ].codegen[0].options.targetFramework = \" ${target_framework} \"
30
+ " " ${config_file} "
31
+ echo " ${examples[i]} codegen config:" && yq " .sql[${i} ].codegen[0]" " ${config_file} "
32
+ done
16
33
}
17
34
18
35
check_cs_file_count () {
19
- file_per_query= $1
20
- for example_dir in " ${examples[@]} "
21
- do
22
- file_count=$( find " ${example_dir} /" -maxdepth 1 -name " *.cs" 2> /dev/null | wc -l)
23
- if [[ " ${file_per_query} " = " true" && " ${file_count} " -le 2 ]]; then
24
- echo " Assertion failed: Not more than 2 .cs files in the directory ${example_dir} ."
25
- return 1
26
- elif [[ " ${file_per_query} " = " false" && " ${file_count} " -ne 2 ]]; then
27
- echo " Assertion failed: Not exactly 2 .cs files in the directory ${example_dir} ."
28
- return 1
29
- fi
30
- done
36
+ for example_dir in " ${examples[@]} "
37
+ do
38
+ echo " Checking C# file count in ${example_dir} / "
39
+ file_count=$( find " ${example_dir} /" -maxdepth 1 -name " *.cs" 2> /dev/null | wc -l)
40
+ if [[ " ${file_per_query} " = " true" && " ${file_count} " -le 2 ]]; then
41
+ echo " Assertion failed: Not more than 2 .cs files in the directory ${example_dir} ."
42
+ return 1
43
+ elif [[ " ${file_per_query} " = " false" && " ${file_count} " -ne 2 ]]; then
44
+ echo " Assertion failed: Not exactly 2 .cs files in the directory ${example_dir} ."
45
+ return 1
46
+ fi
47
+ done
31
48
}
32
49
33
50
check_csproj_file () {
34
- for example_dir in " ${examples[@]} "
35
- do
36
- if [ ! -f " ${example_dir} /${example_dir} .csproj" ]; then
37
- echo " Assertion failed: A .csproj file is not present in the directory ${example_dir} ."
38
- return 1
39
- fi
40
- done
51
+ for example_dir in " ${examples[@]} "
52
+ do
53
+ echo " Checking ${example_dir} .csproj file generated"
54
+ if [ ! -f " ${example_dir} /${example_dir} .csproj" ]; then
55
+ echo " Assertion failed: A .csproj file is not present in the directory ${example_dir} ."
56
+ return 1
57
+ fi
58
+ done
41
59
}
42
60
43
61
check_project_compiles () {
62
+ if [ " ${generate_csproj} " = " true" ]; then
44
63
for example_dir in " ${examples[@]} "
45
64
do
65
+ echo " Checking ${example_dir} project compiles"
46
66
dotnet build " ${example_dir} /"
47
67
done
68
+ fi
48
69
}
49
70
50
- config_file=$1
51
- file_per_query=$2
52
- generate_csproj=$3
53
- target_framework=$4
54
-
55
- yq -i "
56
- .sql[0].codegen[0].options.filePerQuery = ${file_per_query} |
57
- .sql[1].codegen[0].options.filePerQuery = ${file_per_query} |
58
- .sql[0].codegen[0].options.generateCsproj = ${generate_csproj} |
59
- .sql[1].codegen[0].options.generateCsproj = ${generate_csproj} |
60
- .sql[0].codegen[0].options.targetFramework = \" ${target_framework} \" |
61
- .sql[1].codegen[0].options.targetFramework = \" ${target_framework} \"
62
- " " ${config_file} "
63
-
64
- generated_files_cleanup " ${generate_csproj} "
65
- echo " Using the following codegen config:" && \
66
- yq ' .sql[0].codegen[0]' " ${config_file} " && \
67
- yq ' .sql[1].codegen[0]' " ${config_file} "
71
+ generated_files_cleanup && change_config
68
72
sqlc -f " ${config_file} " generate
69
73
70
- status_code= $( check_cs_file_count " ${file_per_query} " )
71
- if [ " ${status_code} " -ne 0 ] ; then
72
- exit " ${status_code} "
73
- fi
74
- status_code= $( check_csproj_file )
75
- if [ " ${status_code} " -ne 0 ] ; then
74
+ test_functions=( " check_cs_file_count" " check_csproj_file " " check_project_compiles " )
75
+ for test_function in " ${test_functions[@]} " ; do
76
+ ${test_function}
77
+ status_code= $?
78
+ if [ ${status_code} -ne 0 ] ; then
79
+ echo " Function ${test_function} failed with status code ${status_code} "
76
80
exit " ${status_code} "
77
- fi
78
- if [ " ${generate_csproj} " = " true" ]; then
79
- status_code=$( check_project_compiles " ${target_framework} " )
80
- if [ " ${status_code} " -ne 0 ]; then
81
- exit " ${status_code} "
82
- fi
83
- fi
81
+ fi
82
+ echo " Test ${test_function} passed"
83
+ done
0 commit comments