4 # input file = AddTest.txt
7 die "Usage: generate_memcheck_tests.pl <CMAKE_HOME_DIRECTORY> AddTests.cmake\n";
10 my($proj_dir)=$ARGV[0];
11 open MAKETEST, $ARGV[1] or die "Unable to open $ARGV[1]. $!\n";
24 while(defined($line=<MAKETEST>))
27 if($line =~ /BEGIN TESH TESTS/) {
31 if($line =~ /END TESH TESTS/) {
37 if($line =~ /ADD_TEST/)
46 if($line =~ /ADD_TEST\(([\S]+)/)
50 if($line =~ /--cfg\s*\t*(\S*)/)
52 $config_var = "--cfg $1 $config_var";
54 if($line =~ /--cd\s*(\S+)/)
58 $path =~ s/\$\{CMAKE_BINARY_DIR\}/$proj_dir/g;
59 $path =~ s/\$\{CMAKE_HOME_DIRECTORY\}/$proj_dir/g;
61 if($line =~ /--setenv\s*\t*(\S*)\=(\S*)/)
63 my($env_var,$value_var)=($1,$2);
64 $value_var =~ s/\$\{CMAKE_BINARY_DIR\}/$proj_dir/g;
65 $value_var =~ s/\$\{CMAKE_HOME_DIRECTORY\}/$proj_dir/g;
66 if($env_var =~ /srcdir/)
70 if($env_var =~ /bindir/)
75 if($line =~ /([\S]+)[)]$/)
78 $tesh_file =~ s/\$\{CMAKE_BINARY_DIR\}/$proj_dir/g;
79 $tesh_file =~ s/\$\{CMAKE_HOME_DIRECTORY\}/$proj_dir/g;
84 elsif( -e "$path/$tesh_file")
86 $tesh_file = "$path\/$tesh_file";
96 # print "test_name = $name_test\n";
97 # print "$config_var\n";
98 # print "path = $path\n";
99 # print "srcdir=$srcdir\n";
100 # print "bindir=$bindir\n";
101 # print "tesh_file = $tesh_file\n";
107 open TESH_FILE, $tesh_file or die "Unable to open $tesh_file $!\n";
109 while(defined($l=<TESH_FILE>))
112 if($l =~ /^\$ (.*)$/)
115 $command =~ s/\${srcdir:=.}/$srcdir/g;
116 $command =~ s/\${bindir:=.}/$bindir/g;
117 $command =~ s/\${EXEEXT:=}//g;
118 $command =~ s/\$SG_TEST_EXENV //g;
119 $command =~ s/\$SG_TEST_ENV //g;
120 $command =~ s/\$SG_EXENV_TEST //g;
121 $command =~ s/\$EXEEXT//g;
122 $command =~ s/\${EXEEXT}//g;
123 $command =~ s/\${srcdir}/\${CMAKE_HOME_DIRECTORY}\/src/g;
124 $command =~ s/ \$ARGS//g;
125 $command =~ s/ \$@ //g;
126 $command =~ s/..\/..\/bin\/smpirun/\${CMAKE_BINARY_DIR\}\/bin\/smpirun/g;
127 if($command =~ /^[^\/\$\s]+\//) {
128 $command = $path."/".$command;
129 $command =~ s/\/(.?\/)+/\//g;
133 $command = "$command $config_var";
135 print "ADD_TEST(memcheck-$name_test-$count $command --cd $path\/)\n";
136 #push @test_list, "memcheck-$name_test-$count";
139 if($l =~ /^\& (.*)$/)
146 elsif($line =~ /set_tests_properties/)
148 if($line =~ /set_tests_properties\(([\S]+)/)
151 $line =~ s/$name_temp/memcheck-$name_temp-0/g;
162 #print "nb_test = $nb_test\n";
163 #print "set(MEMCHECK_LIST\n";
164 #print (join("\n", @test_list));