| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 #!/usr/bin/perl -w |  | 
| 2 # |  | 
| 3 #   Copyright (c) International Business Machines  Corp., 2002 |  | 
| 4 # |  | 
| 5 #   This program is free software;  you can redistribute it and/or modify |  | 
| 6 #   it under the terms of the GNU General Public License as published by |  | 
| 7 #   the Free Software Foundation; either version 2 of the License, or (at |  | 
| 8 #   your option) any later version. |  | 
| 9 # |  | 
| 10 #   This program is distributed in the hope that it will be useful, but |  | 
| 11 #   WITHOUT ANY WARRANTY;  without even the implied warranty of |  | 
| 12 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU |  | 
| 13 #   General Public License for more details. |  | 
| 14 # |  | 
| 15 #   You should have received a copy of the GNU General Public License |  | 
| 16 #   along with this program;  if not, write to the Free Software |  | 
| 17 #   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |  | 
| 18 # |  | 
| 19 # |  | 
| 20 # gendesc |  | 
| 21 # |  | 
| 22 #   This script creates a description file as understood by genhtml. |  | 
| 23 #   Input file format: |  | 
| 24 # |  | 
| 25 #   For each test case: |  | 
| 26 #     <test name><optional whitespace> |  | 
| 27 #     <at least one whitespace character (blank/tab)><test description> |  | 
| 28 # |  | 
| 29 #   Actual description may consist of several lines. By default, output is |  | 
| 30 #   written to stdout. Test names consist of alphanumeric characters |  | 
| 31 #   including _ and -. |  | 
| 32 # |  | 
| 33 # |  | 
| 34 # History: |  | 
| 35 #   2002-09-02: created by Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com> |  | 
| 36 # |  | 
| 37 |  | 
| 38 use strict; |  | 
| 39 use File::Basename; |  | 
| 40 use Getopt::Long; |  | 
| 41 |  | 
| 42 |  | 
| 43 # Constants |  | 
| 44 our $lcov_version       = 'LCOV version 1.9'; |  | 
| 45 our $lcov_url           = "http://ltp.sourceforge.net/coverage/lcov.php"; |  | 
| 46 our $tool_name          = basename($0); |  | 
| 47 |  | 
| 48 |  | 
| 49 # Prototypes |  | 
| 50 sub print_usage(*); |  | 
| 51 sub gen_desc(); |  | 
| 52 sub warn_handler($); |  | 
| 53 sub die_handler($); |  | 
| 54 |  | 
| 55 |  | 
| 56 # Global variables |  | 
| 57 our $help; |  | 
| 58 our $version; |  | 
| 59 our $output_filename; |  | 
| 60 our $input_filename; |  | 
| 61 |  | 
| 62 |  | 
| 63 # |  | 
| 64 # Code entry point |  | 
| 65 # |  | 
| 66 |  | 
| 67 $SIG{__WARN__} = \&warn_handler; |  | 
| 68 $SIG{__DIE__} = \&die_handler; |  | 
| 69 |  | 
| 70 # Prettify version string |  | 
| 71 $lcov_version =~ s/\$\s*Revision\s*:?\s*(\S+)\s*\$/$1/; |  | 
| 72 |  | 
| 73 # Parse command line options |  | 
| 74 if (!GetOptions("output-filename=s" => \$output_filename, |  | 
| 75                 "version" =>\$version, |  | 
| 76                 "help|?" => \$help |  | 
| 77                 )) |  | 
| 78 { |  | 
| 79         print(STDERR "Use $tool_name --help to get usage information\n"); |  | 
| 80         exit(1); |  | 
| 81 } |  | 
| 82 |  | 
| 83 $input_filename = $ARGV[0]; |  | 
| 84 |  | 
| 85 # Check for help option |  | 
| 86 if ($help) |  | 
| 87 { |  | 
| 88         print_usage(*STDOUT); |  | 
| 89         exit(0); |  | 
| 90 } |  | 
| 91 |  | 
| 92 # Check for version option |  | 
| 93 if ($version) |  | 
| 94 { |  | 
| 95         print("$tool_name: $lcov_version\n"); |  | 
| 96         exit(0); |  | 
| 97 } |  | 
| 98 |  | 
| 99 |  | 
| 100 # Check for input filename |  | 
| 101 if (!$input_filename) |  | 
| 102 { |  | 
| 103         die("No input filename specified\n". |  | 
| 104             "Use $tool_name --help to get usage information\n"); |  | 
| 105 } |  | 
| 106 |  | 
| 107 # Do something |  | 
| 108 gen_desc(); |  | 
| 109 |  | 
| 110 |  | 
| 111 # |  | 
| 112 # print_usage(handle) |  | 
| 113 # |  | 
| 114 # Write out command line usage information to given filehandle. |  | 
| 115 # |  | 
| 116 |  | 
| 117 sub print_usage(*) |  | 
| 118 { |  | 
| 119         local *HANDLE = $_[0]; |  | 
| 120 |  | 
| 121         print(HANDLE <<END_OF_USAGE) |  | 
| 122 Usage: $tool_name [OPTIONS] INPUTFILE |  | 
| 123 |  | 
| 124 Convert a test case description file into a format as understood by genhtml. |  | 
| 125 |  | 
| 126   -h, --help                        Print this help, then exit |  | 
| 127   -v, --version                     Print version number, then exit |  | 
| 128   -o, --output-filename FILENAME    Write description to FILENAME |  | 
| 129 |  | 
| 130 For more information see: $lcov_url |  | 
| 131 END_OF_USAGE |  | 
| 132         ; |  | 
| 133 } |  | 
| 134 |  | 
| 135 |  | 
| 136 # |  | 
| 137 # gen_desc() |  | 
| 138 # |  | 
| 139 # Read text file INPUT_FILENAME and convert the contained description to a |  | 
| 140 # format as understood by genhtml, i.e. |  | 
| 141 # |  | 
| 142 #    TN:<test name> |  | 
| 143 #    TD:<test description> |  | 
| 144 # |  | 
| 145 # If defined, write output to OUTPUT_FILENAME, otherwise to stdout. |  | 
| 146 # |  | 
| 147 # Die on error. |  | 
| 148 # |  | 
| 149 |  | 
| 150 sub gen_desc() |  | 
| 151 { |  | 
| 152         local *INPUT_HANDLE; |  | 
| 153         local *OUTPUT_HANDLE; |  | 
| 154         my $empty_line = "ignore"; |  | 
| 155 |  | 
| 156         open(INPUT_HANDLE, $input_filename) |  | 
| 157                 or die("ERROR: cannot open $input_filename!\n"); |  | 
| 158 |  | 
| 159         # Open output file for writing |  | 
| 160         if ($output_filename) |  | 
| 161         { |  | 
| 162                 open(OUTPUT_HANDLE, ">$output_filename") |  | 
| 163                         or die("ERROR: cannot create $output_filename!\n"); |  | 
| 164         } |  | 
| 165         else |  | 
| 166         { |  | 
| 167                 *OUTPUT_HANDLE = *STDOUT; |  | 
| 168         } |  | 
| 169 |  | 
| 170         # Process all lines in input file |  | 
| 171         while (<INPUT_HANDLE>) |  | 
| 172         { |  | 
| 173                 chomp($_); |  | 
| 174 |  | 
| 175                 if (/^(\w[\w-]*)(\s*)$/) |  | 
| 176                 { |  | 
| 177                         # Matched test name |  | 
| 178                         # Name starts with alphanum or _, continues with |  | 
| 179                         # alphanum, _ or - |  | 
| 180                         print(OUTPUT_HANDLE "TN: $1\n"); |  | 
| 181                         $empty_line = "ignore"; |  | 
| 182                 } |  | 
| 183                 elsif (/^(\s+)(\S.*?)\s*$/) |  | 
| 184                 { |  | 
| 185                         # Matched test description |  | 
| 186                         if ($empty_line eq "insert") |  | 
| 187                         { |  | 
| 188                                 # Write preserved empty line |  | 
| 189                                 print(OUTPUT_HANDLE "TD: \n"); |  | 
| 190                         } |  | 
| 191                         print(OUTPUT_HANDLE "TD: $2\n"); |  | 
| 192                         $empty_line = "observe"; |  | 
| 193                 } |  | 
| 194                 elsif (/^\s*$/) |  | 
| 195                 { |  | 
| 196                         # Matched empty line to preserve paragraph separation |  | 
| 197                         # inside description text |  | 
| 198                         if ($empty_line eq "observe") |  | 
| 199                         { |  | 
| 200                                 $empty_line = "insert"; |  | 
| 201                         } |  | 
| 202                 } |  | 
| 203         } |  | 
| 204 |  | 
| 205         # Close output file if defined |  | 
| 206         if ($output_filename) |  | 
| 207         { |  | 
| 208                 close(OUTPUT_HANDLE); |  | 
| 209         } |  | 
| 210 |  | 
| 211         close(INPUT_HANDLE); |  | 
| 212 } |  | 
| 213 |  | 
| 214 sub warn_handler($) |  | 
| 215 { |  | 
| 216         my ($msg) = @_; |  | 
| 217 |  | 
| 218         warn("$tool_name: $msg"); |  | 
| 219 } |  | 
| 220 |  | 
| 221 sub die_handler($) |  | 
| 222 { |  | 
| 223         my ($msg) = @_; |  | 
| 224 |  | 
| 225         die("$tool_name: $msg"); |  | 
| 226 } |  | 
| OLD | NEW | 
|---|