Tighten up the config test success checking.

Try a lot harder to remove the old $TARGET output, since make
clean isn't sufficient.  Also fix a bug in program invocation
that was hidden because of the stale files.

Change-Id: I0a365409d81efb74c5836eaf9f129fd9b2cca77e
Reviewed-on: http://codereview.qt.nokia.com/2052
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
This commit is contained in:
Michael Goddard 2011-07-25 10:10:54 +10:00 committed by Qt by Nokia
parent 33a55c5661
commit d55aa1ad2a

View File

@ -135,8 +135,7 @@ sub hashesAreDifferent {
# Returns: The output. # Returns: The output.
###################################################################### ######################################################################
sub executeSomething { sub executeSomething {
my @args = @_; my ($program, @args) = @_;
my $program = $args[0];
my $pid = open(KID_TO_READ, "-|"); my $pid = open(KID_TO_READ, "-|");
@ -183,6 +182,10 @@ sub executeTest {
my $testOutDir = catdir($out_basedir, 'config.tests', $testName); my $testOutDir = catdir($out_basedir, 'config.tests', $testName);
# Since we might be cross compiling, look for barename (Linux) and .exe (Win32/Symbian)
my $testOutFile1 = catfile($testOutDir, "$testName.exe");
my $testOutFile2 = catfile($testOutDir, $testName);
if (abs_path($basedir) eq abs_path($out_basedir)) { if (abs_path($basedir) eq abs_path($out_basedir)) {
chdir $testOutDir or die "\nUnable to change to config test directory ($testOutDir): $!\n"; chdir $testOutDir or die "\nUnable to change to config test directory ($testOutDir): $!\n";
} else { # shadow build } else { # shadow build
@ -194,24 +197,24 @@ sub executeTest {
push (@QMAKEARGS, catdir($basedir, 'config.tests', $testName)); push (@QMAKEARGS, catdir($basedir, 'config.tests', $testName));
} }
# Throw it all away # First remove existing stuff (XXX this probably needs generator specific code, but hopefully
# the target removal below will suffice)
if (-e "Makefile") {
executeSomething($MAKE, 'distclean');
}
# and any targets that we might find that weren't distcleaned
unlink $testOutFile1, $testOutFile2;
# Run qmake && make
executeSomething($QMAKE, @QMAKEARGS); executeSomething($QMAKE, @QMAKEARGS);
executeSomething($MAKE, 'clean');
my $makeOutput = executeSomething(($MAKE)); my $makeOutput = executeSomething(($MAKE));
# If make prints "blah blah blah\nSkipped." we consider this a skipped test # If make prints "blah blah blah\nSkipped." we consider this a skipped test
if ($makeOutput !~ qr(^Skipped\.$)ms) { if ($makeOutput !~ qr(^Skipped\.$)ms) {
# Check the test exists (can't reliably execute, especially for cross compilation) # Check the test exists (can't reliably execute, especially for cross compilation)
if ($^O =~ /win32/i) { if (-e $testOutFile1 or -e $testOutFile2) {
# On windows look for $testName.exe $ret = 1;
if (-e catfile($testOutDir, "$testName.exe")) {
$ret = 1;
}
} else {
if (-e catfile($testOutDir, $testName)) {
$ret = 1;
}
} }
} else { } else {
$ret = 2; $ret = 2;