Index: trunk/psLib/test/FullUnitTest
===================================================================
--- trunk/psLib/test/FullUnitTest	(revision 521)
+++ trunk/psLib/test/FullUnitTest	(revision 585)
@@ -19,6 +19,6 @@
 #  RETURN : integer number of tests which failed
 #
-#  $Revision: 1.1 $  $Name: not supported by cvs2svn $
-#  $Date: 2004-04-27 01:47:20 $
+#  $Revision: 1.2 $  $Name: not supported by cvs2svn $
+#  $Date: 2004-05-06 00:45:10 $
 #
 #  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -131,4 +131,6 @@
 #     Parameter(s):  base directory to start testing
 #
+#     Return:  None
+#
 ################################################################################
 
@@ -175,4 +177,6 @@
 #
 #      Parameter(s):  base directory where make and test drivers are located
+#
+#      Return:  None
 #
 ################################################################################
@@ -243,4 +247,5 @@
     local(@files,$j);
     local($pwd);
+    local($exitValue) = 0;
 
     # Set variable to pwd to current test directory
@@ -276,11 +281,11 @@
                     # Display message to user that verified directories do not 
                     # exist eventhough TST files have been found
-                    print("Unable to execute test drivers in $base_dir\n");
+#                    print("Unable to execute test drivers in $base_dir\n");
                     print("No verified subdirectory present.\n");
                     # Increment test fail count
-                    $testFailCount++;
+ #                   $testFailCount++;
                     # Save the file failed
-                    push(@testsFailed, $pwd . "/" . $files[$j]);
-                    return;
+#                    push(@testsFailed, $pwd . "/" . $files[$j]);
+#                    return;
                 }
             }
@@ -305,8 +310,11 @@
                 # Perform difference on STDOUT file collected
                 # with verified files
-                $diffstdout = `diff verified/$files[$j].stdout temp/$files[$j].stdout.mod`;
-                if ( $? != 0 ) {
-                    # Display test output didn't compare
-                    print("STDOUT did not compare for $files[$j].\n$diffstdout\n");
+                $exitValue = &compareStream("verified/$files[$j].stdout");
+                if ( $exitValue & 2 ) {
+                    # STDOUT verified doesn't exist. Search STDOUT capture
+                    # for strings indicating error or failure
+                    $exitValue |= &errorStrSearch("$files[$j].stdout");
+                }
+                if ( ($exitValue & 8) || ($exitValue & 64) ) {
                     # Increment the total number of test failed
                     $testFailCount++;
@@ -315,8 +323,14 @@
                 } else {
                     # Perform difference on STDERR file collection with verified
-                    $diffstderr = `diff verified/$files[$j].stderr temp/$files[$j].stderr.mod`;
-                    if ( $? != 0 ) {
-                        print("STDERR did not compare for $files[$j].\n$diffstderr\n");
+                    $exitValue = &compareStream("verified/$files[$j].stderr");
+                    if ( $exitValue & 4 ) {
+                        # STDERR verified doesn't exist. Search STDERR capture
+                        # for strings indicating error or failure
+                        $exitValue |= &errorStrSearch("$files[$j].stderr");
+                    }
+                    if ( ($exitValue & 16) || ($exitValue & 128) ) {
+                        # Increment the total number of tests failed
                         $testFailCount++;
+                        # Push test on failed list
                         push(@testsFailed, $pwd . "/" . $files[$j]);
                     } else {
@@ -332,4 +346,121 @@
 ################################################################################
 #
+#  SUBROUTINE: errorStrSearch
+#
+#      Description:  This subroutine will search the file specified in its
+#                    parameter for error strings and if they do exists
+#                    the appropriate value will be returned.
+#
+#      Parameter(s): fileName - input file to search for strings
+#
+#      Return:   0  -  No error strings found
+#               64  -  Error strings found in STDOUT
+#              128  -  Error strings found in STDERR
+#
+###############################################################################
+
+sub errorStrSearch {
+    local($fileName) = @_;
+    local($returnVal) = 0;
+
+    # Open the captured file
+    open(CAPT_FILE, "<temp/$fileName");
+
+    # Scan through all the lines of the file searching for error strings
+    while ( <CAPT_FILE> ) {
+        if ( m/FAIL/i || m/FAULT/i || m/ERROR/i || m/Not Found/i
+                      || m/SIGNAL/i || m/NO SUCH FILE/i || m/|E|/i
+                      || m/|A|/i ) {
+            if ( $fileName =~ m/out/ ) {
+                print("        Failed - File $fileName contains error strings.\n");
+                $returnVal = 64;
+            } elsif ( $fileName =~ m/err/ ) {
+                print("        Failed - File $fileName contains error strings.\n");
+                $returnVal = 128;
+            }
+            last;
+        }
+    }
+    # Close the capture file
+    close(CAPT_FILE);
+    # Return the return value
+    return($returnVal);
+}
+
+################################################################################
+#
+#  SUBROUTINE: compareStream
+#
+#      Description:  This subroutine will compare the captured stream file with
+#                    a file in the verified directory if one exists.
+#
+#      Parameter(s): streamFile - input file to compare
+#
+#      Return:   0  -  Compare successful
+#                2  -  STDOUT verified file doesn't exist
+#                4  -  STDERR verified file doesn't exist
+#                8  -  STDOUT verified file doesn't compare
+#               16  -  STDERR verified file doesn't compare
+#
+###############################################################################
+
+sub compareStream {
+    local($streamFile) = @_;
+    local($returnVal) = 0;
+    local($tempFile) = "";
+
+    # Check for existence of verified STD stream files
+    if ( !( -e $streamFile) ) {
+
+        # Display message to user that verified STDOUT file doesn't exist
+        print("        File $streamFile doesn't exist.\n");
+
+        # Set exit value bit 1 to indicate proper failure
+        if ( $streamFile =~ /out$/ ) {
+            $returnVal |= 2;
+        } elsif ( $streamFile =~ /err$/ ) {
+            $returnVal |= 4;
+        }
+    } else {
+
+        # Verified STD stream file exists
+
+        # Create name of the temp file to compare
+        $tempFile = $streamFile;
+        $tempFile =~ s/verified/temp/;
+        $tempFile = $tempFile . ".mod";
+
+        # Perform difference on the STD stream files
+        $diffstdout = `diff $streamFile $tempFile`;
+
+        # Check the return value of the difference
+        if ( $? != 0 ) {
+
+            # Difference of STD stream files failed
+
+            # Check for STDOUT in file name to convey appropirate return value
+            if ( $streamFile =~ /out$/ ) {
+               # Display message of the failure of difference to user
+               print("        Failed - STDOUT difference\n$diffstdout\n");
+
+               # Exit value to indicate STDOUT did not compare
+               $returnVal |= 8;
+            } elsif ( $streamFile =~ /err$/ ) {
+               # Display message of the failure of difference to user
+               print("        Failed - STDERR difference\n$diffstdout\n");
+
+               # Exit value to indicate STDERR did not compare
+               $returnVal |= 16;
+            }
+        }
+    }
+
+    # Return the result of the compare
+    return($returnVal);
+}
+
+
+################################################################################
+#
 #  SUBROUTINE: checkForTempDirectory
 #
@@ -406,5 +537,5 @@
        s/\d+:\d+:\d+/ <DATE> /;
        s/\s+\d+:\d+:\d+\w/ <TIME> /;
-       s/\|\S+\|/<HOST>| /;
+       s/\|[\w\.]+\|/<HOST> |/;
        print MODFILE ($_);
    }
@@ -422,5 +553,5 @@
        s/\d+:\d+:\d+/ <DATE> /;
        s/\s+\d+:\d+:\d+\w/ <TIME> /;
-       s/\|\S+\|/<HOST>| /;
+       s/\|[\w\.]+\|/<HOST> |/;
        print MODFILE ($_);
    }
@@ -431,58 +562,2 @@
 }
 
-
-
-
-
-    # Check for the existence of a file named UnitTest in current directory
-#    if (-e "UnitTest") {
-
-        # Open the UnitTest file
-#        open(TESTFILE,"<UnitTest");
-
-        # Loop through the UnitTest file contents line by line
-#        while(<TESTFILE>) {
-
-            # Set variable line and remove any newline characters
-#            $line = $_;
-#            chomp($line);
-
-            # Check if line doesn't have comment character '#' or is empty
-#            if ( ! ($line =~ m/^#/) && $line) {
-
-                # Increment total number of tests drivers executed
-#               $totalTests++;
-
-                # Display line of the test driver being executed
-                # if silent option not set
-#                print("Testing: '$line'\n") if ( ! $silent);
-
-                # Execute the test driver and save results
-#                $_ = join("\n:: ", split("\n","\n" . `$line`));
-
-                # Check the output of test driver execution for a return
-                # value != 0 or any of the following phrases: FAILED
-                # FAULT, ERROR, Not found, SIGNAL
-#                if (($? != 0) || m/FAILED/i || m/FAULT/i || m/ERROR/i
-#                              || m/Not Found/i || m/SIGNAL/i ) {
-
-                    # Dispaly failed output of test driver
-#                    print("$_\n") if ( ! $silent);
-                    # Display the test driver failed
-#                    print("\nTest for '$line' Failed (Return value $?).\n");
-                    # Increment number of tests failed
-#                    $testFailCount++;
-                    # Push the current working directory ont the list of
-                    # failed test drivers list
-#                    push(@testsFailed, $pwd . ":" . $line);
-#                } else {
-                    # Display results of successful test if verbose
-#                    printf("$_\n") if ($verbose);
-                    # Display success if silent not set
-#                    printf("Test successful.\n") if ( ! $silent);
-#                }
-#            }
-#        }
-#    }
-#}
-
