Changeset 1490 for trunk/psLib/test/FullUnitTest
- Timestamp:
- Aug 11, 2004, 1:42:49 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/psLib/test/FullUnitTest (modified) (24 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/test/FullUnitTest
r1404 r1490 19 19 # RETURN : integer number of tests which failed 20 20 # 21 # $Revision: 1.1 1$ $Name: not supported by cvs2svn $22 # $Date: 2004-08- 06 21:50:13$21 # $Revision: 1.12 $ $Name: not supported by cvs2svn $ 22 # $Date: 2004-08-11 23:42:49 $ 23 23 # 24 24 # Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 35 35 # The ! option allows for --nooption to be set to zero 36 36 # (e.g. --noverbose --recursive causes $verbose=0 and $recursive=1) 37 GetOptions("verbose!"=>\$verbose, 38 "recursive!"=>\$recursive, 39 "silent!"=>\$silent, 40 "clean!"=>\$clean); 37 GetOptions( 38 "verbose!" => \$verbose, 39 "recursive!" => \$recursive, 40 "silent!" => \$silent, 41 "clean!" => \$clean 42 ); 41 43 42 44 # Check if both silent and verbose options are set and if so stop the script 43 die "Can't specify both verbose and silent options." if ( $verbose && $silent);45 die "Can't specify both verbose and silent options." if ( $verbose && $silent ); 44 46 45 47 # Set up the PSLIB_ROOT environment variable if the user doesn't have 46 if (! $ENV{'PSLIB_ROOT'}) { 48 if ( !$ENV{'PSLIB_ROOT'} ) { 49 47 50 # Use the directory directly above where FullUnitTest script resides 48 51 $PSLIB_ROOT = `cd ..;pwd`; 52 49 53 # Remove newline for the end of path returned 50 54 chomp($PSLIB_ROOT); 55 51 56 # Set the environment variable 52 57 $ENV{'PSLIB_ROOT'} = $PSLIB_ROOT; … … 56 61 # add PSLIB_ROOT/lib to LD_LIBRARY_PATH and DYLD_LIBRARY_PATH environment 57 62 # variables 58 $ENV{'LD_LIBRARY_PATH'} = "$ENV{'PSLIB_ROOT'}/lib:$ENV{'LD_LIBRARY_PATH'}";63 $ENV{'LD_LIBRARY_PATH'} = "$ENV{'PSLIB_ROOT'}/lib:$ENV{'LD_LIBRARY_PATH'}"; 59 64 $ENV{'DYLD_LIBRARY_PATH'} = "$ENV{'PSLIB_ROOT'}/lib:$ENV{'DYLD_LIBRARY_PATH'}"; 60 65 61 66 # Initialize variables for counting the makes and test failures and the 62 67 # total makes and tests performed 63 $makeFailCount = 0;64 $testpointFailCount = 0;68 $makeFailCount = 0; 69 $testpointFailCount = 0; 65 70 $testDriverFailCount = 0; 66 $totalTestpoints = 0;67 $totalTestDrivers = 0;68 $totalMakes = 0;71 $totalTestpoints = 0; 72 $totalTestDrivers = 0; 73 $totalMakes = 0; 69 74 70 75 # Initialize variable indicating how many arguements were passed … … 73 78 # Loop through all the arguements passed to the script 74 79 foreach (@ARGV) { 80 75 81 # Remove newline if there is one 76 82 chomp; 83 77 84 # Increment number of arguements found 78 85 $args++; 86 79 87 # Set variable to current working directory 80 88 $cwd = cwd; 89 81 90 # Change directory to the directory of the arguement 82 91 chdir($_); 92 83 93 # Check for the recursive option 84 94 if ($recursive) { 95 85 96 # Invoke subroutine to go to the lowest directory in tree 86 97 # starting at the specified directory 87 98 &worm($_); 88 } else { 99 } 100 else { 101 89 102 # Invoke subroutines to run the test at the specified directory 90 103 &makeTestDrivers($_); 91 104 &executeTestDrivers($_); 92 105 } 106 93 107 # Change directory back to the directory where FullUnitTest was invoked 94 108 chdir($cwd); … … 96 110 97 111 # Check if there were no arguements specified 98 if ($args == 0){ 112 if ( $args == 0 ) { 113 99 114 # Display message to user that all directories under the current will be 100 115 # tested 101 116 print("Recursively testing current directory tree.\n") if $verbose; 117 102 118 # Invoke subroutine to go to recursively test each directory in tree 103 &worm( $ENV{"PWD"});119 &worm( $ENV{"PWD"} ); 104 120 } 105 121 106 122 # Check if there were any failures during make or testing 107 if ($makeFailCount>0 || $testDriverFailCount>0) { 123 if ( $makeFailCount > 0 || $testDriverFailCount > 0 ) { 124 108 125 # Display summary of failures 109 126 print("\nMake Failures = $makeFailCount out of $totalMakes"); 110 127 print("\nTest Driver Failures = $testDriverFailCount out of $totalTestDrivers\n"); 111 print("\nMakes that failed:\n ".join("\n ",@makesFailed) . "\n") if $makeFailCount; 112 print("\nTests that failed:\n ".join("\n ",@testsFailed) . "\n") if $testDriverFailCount; 113 } else { 128 print( "\nMakes that failed:\n " . join( "\n ", @makesFailed ) . "\n" ) if $makeFailCount; 129 print( "\nTests that failed:\n " . join( "\n ", @testsFailed ) . "\n" ) if $testDriverFailCount; 130 } 131 else { 132 114 133 # Display message of all makes and tests pass to user if silent option 115 134 # not specified 116 print("\nAll $totalTestDrivers Test Drivers Passed with $totalTestpoints Testpoints.\n") if ( ! $silent);135 print("\nAll $totalTestDrivers Test Drivers Passed with $totalTestpoints Testpoints.\n") if ( !$silent ); 117 136 } 118 137 … … 120 139 exit($testDriverFailCount); 121 140 122 123 141 ################################################################################ 124 142 # … … 127 145 # Description: This subroutine will perform the necessary unit tests be 128 146 # calling makeTestDrivers and executeTestDrivers subroutines 129 # and then check each subdirectory below the base directory 147 # and then check each subdirectory below the base directory 130 148 # recursively. 131 149 # … … 137 155 138 156 sub worm { 157 139 158 # Assign local variable to input parameter 140 local ($base_dir) = @_;141 local (@files, $i);159 local ($base_dir) = @_; 160 local ( @files, $i ); 142 161 143 162 # Invoke subroutine to make test driver in the base directory … … 153 172 # labelled CVS and recursively invoke subroutine worm 154 173 $i = 0; 155 while ($files[$i]) { 174 while ( $files[$i] ) { 175 156 176 # Check for directory and directory not labelled CVS 157 if (-d $files[$i] && ($files[$i] ne "CVS") && ($files[$i] ne "temp") 158 && ($files[$i] ne "verified")) { 177 if ( -d $files[$i] 178 && ( $files[$i] ne "CVS" ) 179 && ( $files[$i] ne "temp" ) 180 && ( $files[$i] ne "verified" ) ) 181 { 182 159 183 # Change current directory to directory found 160 chdir($files[$i]); 184 chdir( $files[$i] ); 185 161 186 # Invoke subroutine worm again 162 &worm($files[$i]); 187 &worm( $files[$i] ); 188 163 189 # Change current directory back to parent 164 190 chdir(".."); 165 191 } 192 166 193 # Increment file list index 167 194 $i++; … … 183 210 ################################################################################ 184 211 185 sub makeTestDrivers {186 local ($base_dir) = @_;187 local ($pwd);212 sub makeTestDrivers { 213 local ($base_dir) = @_; 214 local ($pwd); 188 215 189 216 # Set variable pwd to current working directory … … 192 219 # Display message to user in which directory testing is taken place only 193 220 # if the silent command option was not specified 194 print("---- Entering $pwd ----\n") if ( ! $silent);221 print("---- Entering $pwd ----\n") if ( !$silent ); 195 222 196 223 # Check for the existence of a file name Makefile in current directory 197 if ( -e "Makefile") {224 if ( -e "Makefile" ) { 198 225 199 226 # Increment the total number of makes executed 200 227 $totalMakes++; 201 228 202 if ($clean) { 229 if ($clean) { 230 203 231 # Execute the make clean 204 232 `make clean`; … … 209 237 210 238 # Execute the make and save results 211 $_ = join( "\n|| ",split("\n", "\n" . `make`) );239 $_ = join( "\n|| ", split( "\n", "\n" . `make` ) ); 212 240 213 241 # Check the output of make for return value != 0 or any of the 214 242 # following words: FAILED, FAULT, ERROR, Not found, SIGNAL 215 if (($? != 0) || m/FAILED/i || m/FAULT/i || m/\bERROR/i 216 || m/Not found/i || m/SIGNAL/i) { 243 if ( ( $? != 0 ) 244 || m/FAILED/i 245 || m/FAULT/i 246 || m/\bERROR/i 247 || m/Not found/i 248 || m/SIGNAL/i ) 249 { 250 217 251 # Display the errored output of make if silent option not enabled 218 print("$_\n") if ( ! $silent ); 252 print("$_\n") if ( !$silent ); 253 219 254 # Display the make failed in the current directory 220 255 print("\nMake for $pwd Failed\n"); 256 221 257 # Increment the number of makes that have failed 222 258 $makeFailCount++; 259 223 260 # Push the current working directory onto the list of failed 224 261 # make directories list 225 push(@makesFailed, $pwd); 226 } else { 262 push( @makesFailed, $pwd ); 263 } 264 else { 265 227 266 # Display the results of the successful make if verbose option set 228 267 print("$_\n") if $verbose; 268 229 269 # Display the make was successful if silent option not set 230 print("\nMake successful.\n") if ( ! $silent);270 print("\nMake successful.\n") if ( !$silent ); 231 271 if ($clean) { 232 272 `make install`; … … 248 288 ################################################################################ 249 289 250 sub executeTestDrivers {251 local ($base_dir) = @_;252 local (@files,$j);253 local ($pwd);254 local ($exitValue) = 0;290 sub executeTestDrivers { 291 local ($base_dir) = @_; 292 local ( @files, $j ); 293 local ($pwd); 294 local ($exitValue) = 0; 255 295 256 296 # Set variable to pwd to current test directory … … 262 302 # Loop through all the items in the files array 263 303 $initialTest = 0; 264 $j = 0; 265 while ( $files[$j]) { 304 $j = 0; 305 while ( $files[$j] ) { 306 266 307 # Check that the item is not a directory and is executable and 267 308 # conforms to the test driver naming convention TST 268 if ( ! (-d $files[$j]) && (-x $files[$j]) && 269 ( $files[$j] =~ /^TST/i || $files[$j] =~ /^ATST/i ) ) { 309 if ( !( -d $files[$j] ) 310 && ( -x $files[$j] ) 311 && ( $files[$j] =~ /^TST/i || $files[$j] =~ /^ATST/i ) ) 312 { 270 313 271 314 # Increment total number of test drivers executed … … 283 326 # Check for the presence of verified directory 284 327 if ( &checkForVerifiedDirectory() ) { 285 286 # Display message to user that verified directories do not 328 329 # Display message to user that verified directories do not 287 330 # exist eventhough TST files have been found 288 # print("Unable to execute test drivers in $base_dir\n");331 # print("Unable to execute test drivers in $base_dir\n"); 289 332 print("No verified subdirectory present.\n") if ($verbose); 333 290 334 # Increment test fail count 291 # $testDriverFailCount++;335 # $testDriverFailCount++; 292 336 # Save the file failed 293 # push(@testsFailed, $pwd . "/" . $files[$j]);294 # return;337 # push(@testsFailed, $pwd . "/" . $files[$j]); 338 # return; 295 339 } 296 340 } 297 341 298 342 # Display message to user of which test driver is being executed 299 print("--- Executing test driver $files[$j]\n") if ( ! $silent ); 343 print("--- Executing test driver $files[$j]\n") if ( !$silent ); 344 300 345 # Execute the test driver 301 346 system("./$files[$j] 1> temp/$files[$j].stdout 2> temp/$files[$j].stderr"); 302 347 $retVal = $?; 348 303 349 # Count testpoints 304 $testPattern = "\"\\*\\*\\*\\* TESTPOINT \\*\\*\\*\\*\"";350 $testPattern = "\"\\*\\*\\*\\* TESTPOINT \\*\\*\\*\\*\""; 305 351 $totalPoints = `grep -c $testPattern temp/$files[$j].stdout`; 306 352 $totalPoints += `grep -c $testPattern temp/$files[$j].stderr`; 307 353 $failPoints = `grep "> TESTPOINT FAILED" temp/$files[$j].stdout | wc -l`; 308 $failPoints += `grep "> TESTPOINT FAILED" temp/$files[$j].stderr | wc -l`;354 $failPoints += `grep "> TESTPOINT FAILED" temp/$files[$j].stderr | wc -l`; 309 355 $testpointFailCount += $failPoints; 310 $totalTestpoints += $totalPoints; 356 $totalTestpoints += $totalPoints; 357 311 358 # Check result of test driver 312 if ( ( ($retVal != 0) && ($files[$j] =~ /^TST/i) ) || 313 ( ($retVal == 0) && ($files[$j] =~ /^ATST/i ) ) ) { 359 if ( ( ( $retVal != 0 ) && ( $files[$j] =~ /^TST/i ) ) 360 || ( ( $retVal == 0 ) && ( $files[$j] =~ /^ATST/i ) ) ) 361 { 362 314 363 # Display test driver failed 315 364 $failPoints++; 316 365 print("Test driver: $files[$j] Failed (Return value $retVal).\n"); 366 317 367 # Increment the total number of test failed 318 368 $testDriverFailCount++; 369 319 370 # Push the current working directory on the list of failed 320 push(@testsFailed, $pwd . "/" . $files[$j]); 321 } else { 371 push( @testsFailed, $pwd . "/" . $files[$j] ); 372 } 373 else { 374 322 375 # Create filter versions of STDOUT and STDERR to replace variable 323 376 # items such as date, time and host 324 &filterStdFiles($files[$j]); 377 &filterStdFiles( $files[$j] ); 378 325 379 # Perform difference on STDOUT file collected 326 380 # with verified files 327 381 $exitValue = &compareStream("verified/$files[$j].stdout"); 328 382 if ( $exitValue & 2 ) { 383 329 384 # STDOUT verified doesn't exist. Search STDOUT capture 330 385 # for strings indicating error or failure 331 386 $exitValue |= &errorStrSearch("$files[$j].stdout"); 332 387 } 333 if ( ($exitValue & 8) || ($exitValue & 64) ) { 388 if ( ( $exitValue & 8 ) || ( $exitValue & 64 ) ) { 389 334 390 # Increment the total number of test failed 335 391 $testDriverFailCount++; 392 336 393 # Push test on failed list 337 print("Test failed ($failPoints out of $totalPoints testpoints failed)\n") if ( ! $silent); 338 push(@testsFailed, $pwd . "/" . $files[$j]); 339 } else { 394 print("Test failed ($failPoints out of $totalPoints testpoints failed)\n") 395 if ( !$silent ); 396 push( @testsFailed, $pwd . "/" . $files[$j] ); 397 } 398 else { 399 340 400 # Perform difference on STDERR file collection with verified 341 401 $exitValue = &compareStream("verified/$files[$j].stderr"); 342 402 if ( $exitValue & 4 ) { 403 343 404 # STDERR verified doesn't exist. Search STDERR capture 344 405 # for strings indicating error or failure 345 406 $exitValue |= &errorStrSearch("$files[$j].stderr"); 346 407 } 347 if ( ($exitValue & 16) || ($exitValue & 128) ) { 408 if ( ( $exitValue & 16 ) || ( $exitValue & 128 ) ) { 409 348 410 # Increment the total number of tests failed 349 411 $testDriverFailCount++; 412 350 413 # Push test on failed list 351 print("Test failed ($failPoints out of $totalPoints testpoints failed)\n") if ( ! $silent); 352 push(@testsFailed, $pwd . "/" . $files[$j]); 353 } else { 354 print("Test successful ($totalPoints testpoints)\n") if ( ! $silent); 414 print("Test failed ($failPoints out of $totalPoints testpoints failed)\n") 415 if ( !$silent ); 416 push( @testsFailed, $pwd . "/" . $files[$j] ); 417 } 418 else { 419 print("Test successful ($totalPoints testpoints)\n") if ( !$silent ); 355 420 } 356 421 } … … 378 443 379 444 sub errorStrSearch { 380 local ($fileName)= @_;381 local ($returnVal) = 0;445 local ($fileName) = @_; 446 local ($returnVal) = 0; 382 447 383 448 # Open the captured file 384 open( CAPT_FILE, "<temp/$fileName");449 open( CAPT_FILE, "<temp/$fileName" ); 385 450 386 451 # Scan through all the lines of the file searching for error strings 387 while ( <CAPT_FILE> ) { 388 if ( m/FAIL/i || m/FAULT/i || m/ERROR/i || m/Not Found/i 389 || m/SIGNAL/i || m/NO SUCH FILE/i || m/\|E\|/i 390 || m/\|A\|/i ) { 452 while (<CAPT_FILE>) { 453 if ( m/FAIL/i 454 || m/FAULT/i 455 || m/ERROR/i 456 || m/Not Found/i 457 || m/SIGNAL/i 458 || m/NO SUCH FILE/i 459 || m/\|E\|/i 460 || m/\|A\|/i ) 461 { 391 462 print; 392 463 if ( $fileName =~ m/out/ ) { 393 464 print(" Failed - File $fileName contains error strings.\n"); 394 465 $returnVal = 64; 395 } elsif ( $fileName =~ m/err/ ) { 466 } 467 elsif ( $fileName =~ m/err/ ) { 396 468 print(" Failed - File $fileName contains error strings.\n"); 397 469 $returnVal = 128; … … 400 472 } 401 473 } 474 402 475 # Close the capture file 403 476 close(CAPT_FILE); 477 404 478 # Return the return value 405 return ($returnVal);479 return ($returnVal); 406 480 } 407 481 … … 424 498 425 499 sub compareStream { 426 local ($streamFile) = @_;427 local ($returnVal)= 0;428 local ($tempFile)= "";500 local ($streamFile) = @_; 501 local ($returnVal) = 0; 502 local ($tempFile) = ""; 429 503 430 504 # Check for existence of verified STD stream files 431 if ( !( -e $streamFile ) ) {505 if ( !( -e $streamFile ) ) { 432 506 433 507 # Display message to user that verified STDOUT file doesn't exist … … 437 511 if ( $streamFile =~ /out$/ ) { 438 512 $returnVal |= 2; 439 } elsif ( $streamFile =~ /err$/ ) { 513 } 514 elsif ( $streamFile =~ /err$/ ) { 440 515 $returnVal |= 4; 441 516 } 442 } else { 517 } 518 else { 443 519 444 520 # Verified STD stream file exists … … 459 535 # Check for STDOUT in file name to convey appropirate return value 460 536 if ( $streamFile =~ /out$/ ) { 461 # Display message of the failure of difference to user 462 print(" Failed - STDOUT difference\n$diffstdout\n"); 463 464 # Exit value to indicate STDOUT did not compare 465 $returnVal |= 8; 466 } elsif ( $streamFile =~ /err$/ ) { 467 # Display message of the failure of difference to user 468 print(" Failed - STDERR difference\n$diffstdout\n"); 469 470 # Exit value to indicate STDERR did not compare 471 $returnVal |= 16; 537 538 # Display message of the failure of difference to user 539 print(" Failed - STDOUT difference\n$diffstdout\n"); 540 541 # Exit value to indicate STDOUT did not compare 542 $returnVal |= 8; 543 } 544 elsif ( $streamFile =~ /err$/ ) { 545 546 # Display message of the failure of difference to user 547 print(" Failed - STDERR difference\n$diffstdout\n"); 548 549 # Exit value to indicate STDERR did not compare 550 $returnVal |= 16; 472 551 } 473 552 } … … 475 554 476 555 # Return the result of the compare 477 return($returnVal); 478 } 479 556 return ($returnVal); 557 } 480 558 481 559 ################################################################################ … … 493 571 ################################################################################ 494 572 495 sub checkForTempDirectory {573 sub checkForTempDirectory { 496 574 497 575 # Check if a temp directory already exists in the current work directory 498 if ( !( -e "temp" )) { 576 if ( !( -e "temp" ) ) { 577 499 578 # Create temp directory to store STDOUT, STDERR files during test 500 579 `mkdir temp`; 580 501 581 # Display message of new directory created 502 print("Creating temp directory\n") if ( $verbose);582 print("Creating temp directory\n") if ($verbose); 503 583 } 504 584 } … … 519 599 ################################################################################ 520 600 521 sub checkForVerifiedDirectory {601 sub checkForVerifiedDirectory { 522 602 $returnValue = 0; 603 523 604 # Check if verified subdirectory exists in the current working directory 524 if ( !( -e "verified")) { 525 # Set return value to 1 526 $returnValue = 1; 527 } 528 return($returnValue); 605 if ( !( -e "verified" ) ) { 606 607 # Set return value to 1 608 $returnValue = 1; 609 } 610 return ($returnValue); 529 611 } 530 612 … … 543 625 ################################################################################ 544 626 545 sub filterStdFiles{ 546 547 local($fileName) = @_; 548 549 # Open the STDOUT file for reading 550 open(OUTFILE, "< temp/$fileName.stdout"); 551 # Open mod file to place filtered STDOUT 552 open(MODFILE, "> temp/$fileName.stdout.mod"); 553 # Replace the variable data, time and host information with constants 554 $hostname = `hostname`; 555 chop $hostname; 556 while( <OUTFILE> ) { 557 s/\s+\d+:\d+:\d+\w/<TIME>/g; 558 s/\d+:\d+:\d+/<DATE>/g; 559 s/$hostname/<HOST>/g; 560 s/: Line \d+/: Line <LINENO>/g; 561 s/\:\d+/\:<LINENO>/g; 562 # Filter lines with *** malloc. This is an artifact of Mac testing of 563 # memory functions 564 if ( ! m/\*\*\*\smalloc/ ) { 565 print MODFILE ($_); 566 } 567 } 568 # Close mod file 569 close(MODFILE); 570 # Close STDERR file 571 close(OUTFILE); 572 573 # Open the STDERR file for reading 574 open(OUTFILE, "< temp/$fileName.stderr"); 575 # Open mod file to place filtered STDERR 576 open(MODFILE, "> temp/$fileName.stderr.mod"); 577 # Replace the variable date, time and host information with constants 578 while( <OUTFILE> ) { 579 s/\s+\d+:\d+:\d+\w/<TIME>/g; 580 s/\d+:\d+:\d+/<DATE>/g; 581 s/$hostname/<HOST>/g; 582 s/: Line \d+/: Line <LINENO>/g; 583 s/\:\d+/\:<LINENO>/g; 584 # Filter lines with *** malloc. This is an artifact of Mac testing of 585 # memory functions 586 if ( ! m/\*\*\*\smalloc/ ) { 587 print MODFILE ($_); 588 } 589 } 590 # Close mod file 591 close(MODFILE); 592 # Close STDERR file 593 close(OUTFILE); 594 } 595 627 sub filterStdFiles { 628 629 local ($fileName) = @_; 630 631 # Open the STDOUT file for reading 632 open( OUTFILE, "< temp/$fileName.stdout" ); 633 634 # Open mod file to place filtered STDOUT 635 open( MODFILE, "> temp/$fileName.stdout.mod" ); 636 637 # Replace the variable data, time and host information with constants 638 $hostname = `hostname`; 639 chop $hostname; 640 while (<OUTFILE>) { 641 s/\s+\d+:\d+:\d+\w/<TIME>/g; 642 s/\d+:\d+:\d+/<DATE>/g; 643 s/$hostname/<HOST>/g; 644 s/: Line \d+/: Line <LINENO>/g; 645 s/\:\d+/\:<LINENO>/g; 646 647 # Filter lines with *** malloc. This is an artifact of Mac testing of 648 # memory functions 649 if ( !m/\*\*\*\smalloc/ ) { 650 print MODFILE ($_); 651 } 652 } 653 654 # Close mod file 655 close(MODFILE); 656 657 # Close STDERR file 658 close(OUTFILE); 659 660 # Open the STDERR file for reading 661 open( OUTFILE, "< temp/$fileName.stderr" ); 662 663 # Open mod file to place filtered STDERR 664 open( MODFILE, "> temp/$fileName.stderr.mod" ); 665 666 # Replace the variable date, time and host information with constants 667 while (<OUTFILE>) { 668 s/\s+\d+:\d+:\d+\w/<TIME>/g; 669 s/\d+:\d+:\d+/<DATE>/g; 670 s/$hostname/<HOST>/g; 671 s/: Line \d+/: Line <LINENO>/g; 672 s/\:\d+/\:<LINENO>/g; 673 674 # Filter lines with *** malloc. This is an artifact of Mac testing of 675 # memory functions 676 if ( !m/\*\*\*\smalloc/ ) { 677 print MODFILE ($_); 678 } 679 } 680 681 # Close mod file 682 close(MODFILE); 683 684 # Close STDERR file 685 close(OUTFILE); 686 } 687
Note:
See TracChangeset
for help on using the changeset viewer.
