mirror of
				https://github.com/drwetter/testssl.sh.git
				synced 2025-10-31 13:55:25 +01:00 
			
		
		
		
	Merge pull request #1837 from dcooper16/files_in_mass_testing_file
Mass testing with CSV, HTML, JSON, and/or LOG file names in mass test…
This commit is contained in:
		
							
								
								
									
										135
									
								
								testssl.sh
									
									
									
									
									
								
							
							
						
						
									
										135
									
								
								testssl.sh
									
									
									
									
									
								
							| @@ -251,6 +251,10 @@ GIVE_HINTS=false                        # give an additional info to findings | |||||||
| SERVER_SIZE_LIMIT_BUG=false             # Some servers have either a ClientHello total size limit or a 128 cipher limit (e.g. old ASAs) | SERVER_SIZE_LIMIT_BUG=false             # Some servers have either a ClientHello total size limit or a 128 cipher limit (e.g. old ASAs) | ||||||
| MULTIPLE_CHECKS=false                   # need to know whether an MX record or a hostname resolves to multiple IPs to check | MULTIPLE_CHECKS=false                   # need to know whether an MX record or a hostname resolves to multiple IPs to check | ||||||
| CHILD_MASS_TESTING=${CHILD_MASS_TESTING:-false} | CHILD_MASS_TESTING=${CHILD_MASS_TESTING:-false} | ||||||
|  | PARENT_LOGFILE=""                       # logfile if mass testing and all output sent to a single file | ||||||
|  | PARENT_JSONFILE=""                      # jsonfile if mass testing and all output sent to a single file | ||||||
|  | PARENT_CSVFILE=""                       # csvfile if mass testing and all output sent to a single file | ||||||
|  | PARENT_HTMLFILE=""                      # HTML if mass testing and all output sent to a single file | ||||||
| TIMEOUT_CMD="" | TIMEOUT_CMD="" | ||||||
| HAD_SLEPT=0 | HAD_SLEPT=0 | ||||||
| NR_SOCKET_FAIL=0                        # Counter for socket failures | NR_SOCKET_FAIL=0                        # Counter for socket failures | ||||||
| @@ -1336,6 +1340,10 @@ json_header() { | |||||||
|      local fname_prefix |      local fname_prefix | ||||||
|      local filename_provided=false |      local filename_provided=false | ||||||
| 
 | 
 | ||||||
|  |      if [[ -n "$PARENT_JSONFILE" ]]; then | ||||||
|  |           [[ -n "$JSONFILE" ]] && fatal "Can't write to both $PARENT_JSONFILE and $JSONFILE" | ||||||
|  |           JSONFILE="$PARENT_JSONFILE" | ||||||
|  |      fi | ||||||
|      [[ -n "$JSONFILE" ]] && [[ ! -d "$JSONFILE" ]] && filename_provided=true |      [[ -n "$JSONFILE" ]] && [[ ! -d "$JSONFILE" ]] && filename_provided=true | ||||||
|      # Similar to HTML: Don't create headers and footers in the following scenarios: |      # Similar to HTML: Don't create headers and footers in the following scenarios: | ||||||
|      #  * no JSON/CSV output is being created. |      #  * no JSON/CSV output is being created. | ||||||
| @@ -1343,7 +1351,7 @@ json_header() { | |||||||
|      #  * this is an individual test within a mass test and all output is being placed in a single file. |      #  * this is an individual test within a mass test and all output is being placed in a single file. | ||||||
|      ! "$do_json" && ! "$do_pretty_json" && JSONHEADER=false && return 0 |      ! "$do_json" && ! "$do_pretty_json" && JSONHEADER=false && return 0 | ||||||
|      "$do_mass_testing" && ! "$filename_provided" && JSONHEADER=false && return 0 |      "$do_mass_testing" && ! "$filename_provided" && JSONHEADER=false && return 0 | ||||||
|      "$CHILD_MASS_TESTING" && "$filename_provided" && JSONHEADER=false && return 0 |      "$CHILD_MASS_TESTING" && "$filename_provided" && [[ -n "$PARENT_JSONFILE" ]] && JSONHEADER=false && return 0 | ||||||
| 
 | 
 | ||||||
|      if "$do_display_only"; then |      if "$do_display_only"; then | ||||||
|           fname_prefix="local-ciphers" |           fname_prefix="local-ciphers" | ||||||
| @@ -1383,11 +1391,15 @@ csv_header() { | |||||||
|      local fname_prefix |      local fname_prefix | ||||||
|      local filename_provided=false |      local filename_provided=false | ||||||
| 
 | 
 | ||||||
|  |      if [[ -n "$PARENT_CSVFILE" ]]; then | ||||||
|  |           [[ -n "$CSVFILE" ]] && fatal "Can't write to both $PARENT_CSVFILE and $CSVFILE" | ||||||
|  |           CSVFILE="$PARENT_CSVFILE" | ||||||
|  |      fi | ||||||
|      [[ -n "$CSVFILE" ]] && [[ ! -d "$CSVFILE" ]] && filename_provided=true |      [[ -n "$CSVFILE" ]] && [[ ! -d "$CSVFILE" ]] && filename_provided=true | ||||||
|      # CSV similar to JSON |      # CSV similar to JSON | ||||||
|      ! "$do_csv" && CSVHEADER=false && return 0 |      ! "$do_csv" && CSVHEADER=false && return 0 | ||||||
|      "$do_mass_testing" && ! "$filename_provided" && CSVHEADER=false && return 0 |      "$do_mass_testing" && ! "$filename_provided" && CSVHEADER=false && return 0 | ||||||
|      "$CHILD_MASS_TESTING" && "$filename_provided" && CSVHEADER=false && return 0 |      "$CHILD_MASS_TESTING" && "$filename_provided" && [[ -n "$PARENT_CSVFILE" ]] && CSVHEADER=false && return 0 | ||||||
| 
 | 
 | ||||||
|      if "$do_display_only"; then |      if "$do_display_only"; then | ||||||
|           fname_prefix="local-ciphers" |           fname_prefix="local-ciphers" | ||||||
| @@ -1433,6 +1445,10 @@ html_header() { | |||||||
|      local fname_prefix |      local fname_prefix | ||||||
|      local filename_provided=false |      local filename_provided=false | ||||||
| 
 | 
 | ||||||
|  |      if [[ -n "$PARENT_HTMLFILE" ]]; then | ||||||
|  |           [[ -n "$HTMLFILE" ]] && fatal "Can't write to both $PARENT_HTMLFILE and $HTMLFILE" | ||||||
|  |           HTMLFILE="$PARENT_HTMLFILE" | ||||||
|  |      fi | ||||||
|      [[ -n "$HTMLFILE" ]] && [[ ! -d "$HTMLFILE" ]] && filename_provided=true |      [[ -n "$HTMLFILE" ]] && [[ ! -d "$HTMLFILE" ]] && filename_provided=true | ||||||
|      # Don't create HTML headers and footers in the following scenarios: |      # Don't create HTML headers and footers in the following scenarios: | ||||||
|      #  * HTML output is not being created. |      #  * HTML output is not being created. | ||||||
| @@ -1440,7 +1456,7 @@ html_header() { | |||||||
|      #  * this is an individual test within a mass test and all HTML output is being placed in a single file. |      #  * this is an individual test within a mass test and all HTML output is being placed in a single file. | ||||||
|      ! "$do_html" && HTMLHEADER=false && return 0 |      ! "$do_html" && HTMLHEADER=false && return 0 | ||||||
|      "$do_mass_testing" && ! "$filename_provided" && HTMLHEADER=false && return 0 |      "$do_mass_testing" && ! "$filename_provided" && HTMLHEADER=false && return 0 | ||||||
|      "$CHILD_MASS_TESTING" && "$filename_provided" && HTMLHEADER=false && return 0 |      "$CHILD_MASS_TESTING" && "$filename_provided" && [[ -n "$PARENT_HTMLFILE" ]] && HTMLHEADER=false && return 0 | ||||||
| 
 | 
 | ||||||
|      if "$do_display_only"; then |      if "$do_display_only"; then | ||||||
|           fname_prefix="local-ciphers" |           fname_prefix="local-ciphers" | ||||||
| @@ -1508,12 +1524,16 @@ prepare_logging() { | |||||||
|      local fname_prefix="$1" |      local fname_prefix="$1" | ||||||
|      local filename_provided=false |      local filename_provided=false | ||||||
| 
 | 
 | ||||||
|  |      if [[ -n "$PARENT_LOGFILE" ]]; then | ||||||
|  |           [[ -n "$LOGFILE" ]] && fatal "Can't write to both $PARENT_LOGFILE and $LOGFILE" | ||||||
|  |           LOGFILE="$PARENT_LOGFILE" | ||||||
|  |      fi | ||||||
|      [[ -n "$LOGFILE" ]] && [[ ! -d "$LOGFILE" ]] && filename_provided=true |      [[ -n "$LOGFILE" ]] && [[ ! -d "$LOGFILE" ]] && filename_provided=true | ||||||
| 
 | 
 | ||||||
|      # Similar to html_header(): |      # Similar to html_header(): | ||||||
|      ! "$do_logging" && return 0 |      ! "$do_logging" && return 0 | ||||||
|      "$do_mass_testing" && ! "$filename_provided" && return 0 |      "$do_mass_testing" && ! "$filename_provided" && return 0 | ||||||
|      "$CHILD_MASS_TESTING" && "$filename_provided" && return 0 |      "$CHILD_MASS_TESTING" && "$filename_provided" && [[ -n "$PARENT_LOGFILE" ]] && return 0 | ||||||
| 
 | 
 | ||||||
|      [[ -z "$fname_prefix" ]] && fname_prefix="${FNAME_PREFIX}${NODE}_p${PORT}" |      [[ -z "$fname_prefix" ]] && fname_prefix="${FNAME_PREFIX}${NODE}_p${PORT}" | ||||||
| 
 | 
 | ||||||
| @@ -20880,7 +20900,7 @@ run_mx_all_ips() { | |||||||
|           word="the only" |           word="the only" | ||||||
|      fi |      fi | ||||||
|      mxport=${2:-25} |      mxport=${2:-25} | ||||||
|      if [[ -n "$LOGFILE" ]]; then |      if [[ -n "$LOGFILE" ]] || [[ -n "$PARENT_LOGFILE" ]]; then | ||||||
|           prepare_logging |           prepare_logging | ||||||
|      else |      else | ||||||
|           prepare_logging "${FNAME_PREFIX}mx-$1" |           prepare_logging "${FNAME_PREFIX}mx-$1" | ||||||
| @@ -20966,35 +20986,53 @@ create_mass_testing_cmdline() { | |||||||
|           elif [[ "$testing_type" == serial ]]; then |           elif [[ "$testing_type" == serial ]]; then | ||||||
|                if "$JSONHEADER" && ( [[ "$cmd" =~ --jsonfile-pretty ]] || [[ "$cmd" =~ -oJ ]] ); then |                if "$JSONHEADER" && ( [[ "$cmd" =~ --jsonfile-pretty ]] || [[ "$cmd" =~ -oJ ]] ); then | ||||||
|                     >"$TEMPDIR/jsonfile_child.json" |                     >"$TEMPDIR/jsonfile_child.json" | ||||||
|                     MASS_TESTING_CMDLINE[nr_cmds]="--jsonfile-pretty=$TEMPDIR/jsonfile_child.json" |                     MASS_TESTING_CMDLINE[nr_cmds]="--jsonfile-pretty-parent=$TEMPDIR/jsonfile_child.json" | ||||||
|                     # next is the jsonfile itself, as no '=' was supplied |                     # next is the jsonfile itself, as no '=' was supplied | ||||||
|                     [[ "$cmd" == --jsonfile-pretty ]] && skip_next=true |                     [[ "$cmd" == --jsonfile-pretty ]] && skip_next=true | ||||||
|                     [[ "$cmd" == -oJ ]] && skip_next=true |                     [[ "$cmd" == -oJ ]] && skip_next=true | ||||||
|                elif "$JSONHEADER" && ( [[ "$cmd" =~ --jsonfile ]] || [[ "$cmd" =~ -oj ]] ); then |                elif "$JSONHEADER" && ( [[ "$cmd" =~ --jsonfile ]] || [[ "$cmd" =~ -oj ]] ); then | ||||||
|                     >"$TEMPDIR/jsonfile_child.json" |                     >"$TEMPDIR/jsonfile_child.json" | ||||||
|                     MASS_TESTING_CMDLINE[nr_cmds]="--jsonfile=$TEMPDIR/jsonfile_child.json" |                     MASS_TESTING_CMDLINE[nr_cmds]="--jsonfile-parent=$TEMPDIR/jsonfile_child.json" | ||||||
|                     # next is the jsonfile itself, as no '=' was supplied |                     # next is the jsonfile itself, as no '=' was supplied | ||||||
|                     [[ "$cmd" == --jsonfile ]] && skip_next=true |                     [[ "$cmd" == --jsonfile ]] && skip_next=true | ||||||
|                     [[ "$cmd" == -oj ]] && skip_next=true |                     [[ "$cmd" == -oj ]] && skip_next=true | ||||||
|  |                elif "$CSVHEADER" && ( [[ "$cmd" =~ --csvfile ]] || [[ "$cmd" =~ -oC ]] ); then | ||||||
|  |                     outfile_arg="$(parse_opt_equal_sign "$cmd" "${CMDLINE_ARRAY[i+1]}")" | ||||||
|  |                     MASS_TESTING_CMDLINE[nr_cmds]="--csvfile-parent=$outfile_arg" | ||||||
|  |                     # next is the filename itself, as no '=' was supplied | ||||||
|  |                     [[ "$cmd" == --csvfile ]] && skip_next=true | ||||||
|  |                     [[ "$cmd" == -oC ]] && skip_next=true | ||||||
|  |                elif "$HTMLHEADER" && ( [[ "$cmd" =~ --htmlfile ]] || [[ "$cmd" =~ -oH ]] ); then | ||||||
|  |                     outfile_arg="$(parse_opt_equal_sign "$cmd" "${CMDLINE_ARRAY[i+1]}")" | ||||||
|  |                     MASS_TESTING_CMDLINE[nr_cmds]="--htmlfile-parent=$outfile_arg" | ||||||
|  |                     # next is the filename itself, as no '=' was supplied | ||||||
|  |                     [[ "$cmd" == --htmlfile ]] && skip_next=true | ||||||
|  |                     [[ "$cmd" == -oH ]] && skip_next=true    | ||||||
|  |                elif ( [[ "$cmd" =~ --logfile ]] || [[ "$cmd" =~ -oL ]] ); then | ||||||
|  |                     outfile_arg="$(parse_opt_equal_sign "$cmd" "${CMDLINE_ARRAY[i+1]}")" | ||||||
|  |                     MASS_TESTING_CMDLINE[nr_cmds]="--logfile-parent=$outfile_arg" | ||||||
|  |                     # next is the filename itself, as no '=' was supplied | ||||||
|  |                     [[ "$cmd" == --logfile ]] && skip_next=true | ||||||
|  |                     [[ "$cmd" == -oL ]] && skip_next=true | ||||||
|                elif "$JSONHEADER" && ( [[ "$cmd" =~ --outFile ]] || [[ "$cmd" =~ -oA ]] ); then |                elif "$JSONHEADER" && ( [[ "$cmd" =~ --outFile ]] || [[ "$cmd" =~ -oA ]] ); then | ||||||
|                     outfile_arg="$(parse_opt_equal_sign "$cmd" "${CMDLINE_ARRAY[i+1]}")" |                     outfile_arg="$(parse_opt_equal_sign "$cmd" "${CMDLINE_ARRAY[i+1]}")" | ||||||
|                     >"$TEMPDIR/jsonfile_child.json" |                     >"$TEMPDIR/jsonfile_child.json" | ||||||
|                     MASS_TESTING_CMDLINE[nr_cmds]="-oJ=$TEMPDIR/jsonfile_child.json" |                     MASS_TESTING_CMDLINE[nr_cmds]="--jsonfile-pretty-parent=$TEMPDIR/jsonfile_child.json" | ||||||
|                     nr_cmds+=1 |                     nr_cmds+=1 | ||||||
|                     MASS_TESTING_CMDLINE[nr_cmds]="-oC=$outfile_arg.csv" |                     MASS_TESTING_CMDLINE[nr_cmds]="--csvfile-parent=$outfile_arg.csv" | ||||||
|                     nr_cmds+=1 |                     nr_cmds+=1 | ||||||
|                     MASS_TESTING_CMDLINE[nr_cmds]="-oH=$outfile_arg.html" |                     MASS_TESTING_CMDLINE[nr_cmds]="--htmlfile-parent=$outfile_arg.html" | ||||||
|                     # next is the filename itself, as no '=' was supplied |                     # next is the filename itself, as no '=' was supplied | ||||||
|                     [[ "$cmd" == --outFile ]] && skip_next=true |                     [[ "$cmd" == --outFile ]] && skip_next=true | ||||||
|                     [[ "$cmd" == -oA ]] && skip_next=true |                     [[ "$cmd" == -oA ]] && skip_next=true | ||||||
|                elif "$JSONHEADER" && ( [[ "$cmd" =~ --outfile ]] || [[ "$cmd" =~ -oa ]] ); then |                elif "$JSONHEADER" && ( [[ "$cmd" =~ --outfile ]] || [[ "$cmd" =~ -oa ]] ); then | ||||||
|                     outfile_arg="$(parse_opt_equal_sign "$cmd" "${CMDLINE_ARRAY[i+1]}")" |                     outfile_arg="$(parse_opt_equal_sign "$cmd" "${CMDLINE_ARRAY[i+1]}")" | ||||||
|                     >"$TEMPDIR/jsonfile_child.json" |                     >"$TEMPDIR/jsonfile_child.json" | ||||||
|                     MASS_TESTING_CMDLINE[nr_cmds]="-oj=$TEMPDIR/jsonfile_child.json" |                     MASS_TESTING_CMDLINE[nr_cmds]="--jsonfile-parent=$TEMPDIR/jsonfile_child.json" | ||||||
|                     nr_cmds+=1 |                     nr_cmds+=1 | ||||||
|                     MASS_TESTING_CMDLINE[nr_cmds]="-oC=$outfile_arg.csv" |                     MASS_TESTING_CMDLINE[nr_cmds]="--csvfile-parent=$outfile_arg.csv" | ||||||
|                     nr_cmds+=1 |                     nr_cmds+=1 | ||||||
|                     MASS_TESTING_CMDLINE[nr_cmds]="-oH=$outfile_arg.html" |                     MASS_TESTING_CMDLINE[nr_cmds]="--htmlfile-parent=$outfile_arg.html" | ||||||
|                     # next is the filename itself, as no '=' was supplied |                     # next is the filename itself, as no '=' was supplied | ||||||
|                     [[ "$cmd" == --outfile ]] && skip_next=true |                     [[ "$cmd" == --outfile ]] && skip_next=true | ||||||
|                     [[ "$cmd" == -oa ]] && skip_next=true |                     [[ "$cmd" == -oa ]] && skip_next=true | ||||||
| @@ -21009,7 +21047,7 @@ create_mass_testing_cmdline() { | |||||||
|                          # file name to each child process. If <jsonfile> is a |                          # file name to each child process. If <jsonfile> is a | ||||||
|                          # directory, then just pass it on to the child processes. |                          # directory, then just pass it on to the child processes. | ||||||
|                          if "$JSONHEADER"; then |                          if "$JSONHEADER"; then | ||||||
|                               MASS_TESTING_CMDLINE[nr_cmds]="--jsonfile=$TEMPDIR/jsonfile_${test_number}.json" |                               MASS_TESTING_CMDLINE[nr_cmds]="--jsonfile-parent=$TEMPDIR/jsonfile_${test_number}.json" | ||||||
|                               # next is the jsonfile itself, as no '=' was supplied |                               # next is the jsonfile itself, as no '=' was supplied | ||||||
|                               [[ "$cmd" == --jsonfile ]] && skip_next=true |                               [[ "$cmd" == --jsonfile ]] && skip_next=true | ||||||
|                               [[ "$cmd" == -oj ]] && skip_next=true |                               [[ "$cmd" == -oj ]] && skip_next=true | ||||||
| @@ -21019,7 +21057,7 @@ create_mass_testing_cmdline() { | |||||||
|                          ;; |                          ;; | ||||||
|                     --jsonfile-pretty|--jsonfile-pretty=*|-oJ|-oJ=*) |                     --jsonfile-pretty|--jsonfile-pretty=*|-oJ|-oJ=*) | ||||||
|                          if "$JSONHEADER"; then |                          if "$JSONHEADER"; then | ||||||
|                               MASS_TESTING_CMDLINE[nr_cmds]="--jsonfile-pretty=$TEMPDIR/jsonfile_${test_number}.json" |                               MASS_TESTING_CMDLINE[nr_cmds]="--jsonfile-pretty-parent=$TEMPDIR/jsonfile_${test_number}.json" | ||||||
|                               [[ "$cmd" == --jsonfile-pretty ]] && skip_next=true |                               [[ "$cmd" == --jsonfile-pretty ]] && skip_next=true | ||||||
|                               [[ "$cmd" == -oJ ]] && skip_next=true |                               [[ "$cmd" == -oJ ]] && skip_next=true | ||||||
|                          else |                          else | ||||||
| @@ -21028,7 +21066,7 @@ create_mass_testing_cmdline() { | |||||||
|                          ;; |                          ;; | ||||||
|                     --csvfile|--csvfile=*|-oC|-oC=*) |                     --csvfile|--csvfile=*|-oC|-oC=*) | ||||||
|                          if "$CSVHEADER"; then |                          if "$CSVHEADER"; then | ||||||
|                               MASS_TESTING_CMDLINE[nr_cmds]="--csvfile=$TEMPDIR/csvfile_${test_number}.csv" |                               MASS_TESTING_CMDLINE[nr_cmds]="--csvfile-parent=$TEMPDIR/csvfile_${test_number}.csv" | ||||||
|                               [[ "$cmd" == --csvfile ]] && skip_next=true |                               [[ "$cmd" == --csvfile ]] && skip_next=true | ||||||
|                               [[ "$cmd" == -oC ]] && skip_next=true |                               [[ "$cmd" == -oC ]] && skip_next=true | ||||||
|                          else |                          else | ||||||
| @@ -21037,20 +21075,26 @@ create_mass_testing_cmdline() { | |||||||
|                          ;; |                          ;; | ||||||
|                     --htmlfile|--htmlfile=*|-oH|-oH=*) |                     --htmlfile|--htmlfile=*|-oH|-oH=*) | ||||||
|                          if "$HTMLHEADER"; then |                          if "$HTMLHEADER"; then | ||||||
|                               MASS_TESTING_CMDLINE[nr_cmds]="--htmlfile=$TEMPDIR/htmlfile_${test_number}.html" |                               MASS_TESTING_CMDLINE[nr_cmds]="--htmlfile-parent=$TEMPDIR/htmlfile_${test_number}.html" | ||||||
|                               [[ "$cmd" == --htmlfile ]] && skip_next=true |                               [[ "$cmd" == --htmlfile ]] && skip_next=true | ||||||
|                               [[ "$cmd" == -oH ]] && skip_next=true |                               [[ "$cmd" == -oH ]] && skip_next=true | ||||||
|                          else |                          else | ||||||
|                               MASS_TESTING_CMDLINE[nr_cmds]="$cmd" |                               MASS_TESTING_CMDLINE[nr_cmds]="$cmd" | ||||||
|                          fi |                          fi | ||||||
|                          ;; |                          ;; | ||||||
|  |                     --logfile|--logfile=*|-oL|-oL=*) | ||||||
|  |                          outfile_arg="$(parse_opt_equal_sign "$cmd" "${CMDLINE_ARRAY[i+1]}")" | ||||||
|  |                          MASS_TESTING_CMDLINE[nr_cmds]="--logfile-parent=$outfile_arg" | ||||||
|  |                          [[ "$cmd" == --logfile ]] && skip_next=true | ||||||
|  |                          [[ "$cmd" == -oL ]] && skip_next=true | ||||||
|  |                          ;; | ||||||
|                     --outfile|--outfile=*|-oa|-oa=*) |                     --outfile|--outfile=*|-oa|-oa=*) | ||||||
|                          if "$JSONHEADER"; then |                          if "$JSONHEADER"; then | ||||||
|                               MASS_TESTING_CMDLINE[nr_cmds]="-oj=$TEMPDIR/jsonfile_${test_number}.json" |                               MASS_TESTING_CMDLINE[nr_cmds]="--jsonfile-parent=$TEMPDIR/jsonfile_${test_number}.json" | ||||||
|                               nr_cmds+=1 |                               nr_cmds+=1 | ||||||
|                               MASS_TESTING_CMDLINE[nr_cmds]="-oC=$TEMPDIR/csvfile_${test_number}.csv" |                               MASS_TESTING_CMDLINE[nr_cmds]="--csvfile-parent=$TEMPDIR/csvfile_${test_number}.csv" | ||||||
|                               nr_cmds+=1 |                               nr_cmds+=1 | ||||||
|                               MASS_TESTING_CMDLINE[nr_cmds]="-oH=$TEMPDIR/htmlfile_${test_number}.html" |                               MASS_TESTING_CMDLINE[nr_cmds]="--htmlfile-parent=$TEMPDIR/htmlfile_${test_number}.html" | ||||||
|                               # next is the filename itself, as no '=' was supplied |                               # next is the filename itself, as no '=' was supplied | ||||||
|                               [[ "$cmd" == --outfile ]] && skip_next=true |                               [[ "$cmd" == --outfile ]] && skip_next=true | ||||||
|                               [[ "$cmd" == -oa ]] && skip_next=true |                               [[ "$cmd" == -oa ]] && skip_next=true | ||||||
| @@ -21060,11 +21104,11 @@ create_mass_testing_cmdline() { | |||||||
|                          ;; |                          ;; | ||||||
|                     --outFile|--outFile=*|-oA|-oA=*) |                     --outFile|--outFile=*|-oA|-oA=*) | ||||||
|                          if "$JSONHEADER"; then |                          if "$JSONHEADER"; then | ||||||
|                               MASS_TESTING_CMDLINE[nr_cmds]="-oJ=$TEMPDIR/jsonfile_${test_number}.json" |                               MASS_TESTING_CMDLINE[nr_cmds]="--jsonfile-pretty-parent=$TEMPDIR/jsonfile_${test_number}.json" | ||||||
|                               nr_cmds+=1 |                               nr_cmds+=1 | ||||||
|                               MASS_TESTING_CMDLINE[nr_cmds]="-oC=$TEMPDIR/csvfile_${test_number}.csv" |                               MASS_TESTING_CMDLINE[nr_cmds]="--csvfile-parent=$TEMPDIR/csvfile_${test_number}.csv" | ||||||
|                               nr_cmds+=1 |                               nr_cmds+=1 | ||||||
|                               MASS_TESTING_CMDLINE[nr_cmds]="-oH=$TEMPDIR/htmlfile_${test_number}.html" |                               MASS_TESTING_CMDLINE[nr_cmds]="--htmlfile-parent=$TEMPDIR/htmlfile_${test_number}.html" | ||||||
|                               # next is the filename itself, as no '=' was supplied |                               # next is the filename itself, as no '=' was supplied | ||||||
|                               [[ "$cmd" == --outFile ]] && skip_next=true |                               [[ "$cmd" == --outFile ]] && skip_next=true | ||||||
|                               [[ "$cmd" == -oA ]] && skip_next=true |                               [[ "$cmd" == -oA ]] && skip_next=true | ||||||
| @@ -22161,6 +22205,15 @@ parse_cmd_line() { | |||||||
|                     [[ $? -eq 0 ]] && shift |                     [[ $? -eq 0 ]] && shift | ||||||
|                     do_logging=true |                     do_logging=true | ||||||
|                     ;; |                     ;; | ||||||
|  |                --logfile-parent|--logfile-parent=*) | ||||||
|  |                     if ! "$CHILD_MASS_TESTING"; then | ||||||
|  |                          tmln_warning "$0: unrecognized option \"$1\"" 1>&2; | ||||||
|  |                          help 1 | ||||||
|  |                     fi | ||||||
|  |                     PARENT_LOGFILE="$(parse_opt_equal_sign "$1" "$2")" | ||||||
|  |                     [[ $? -eq 0 ]] && shift | ||||||
|  |                     do_logging=true | ||||||
|  |                     ;; | ||||||
|                --json) |                --json) | ||||||
|                     "$do_pretty_json" && fatal "flat and pretty JSON output are mutually exclusive" $ERR_CMDLINE |                     "$do_pretty_json" && fatal "flat and pretty JSON output are mutually exclusive" $ERR_CMDLINE | ||||||
|                     "$do_json" && fatal "--json and --jsonfile are mutually exclusive" $ERR_CMDLINE |                     "$do_json" && fatal "--json and --jsonfile are mutually exclusive" $ERR_CMDLINE | ||||||
| @@ -22177,6 +22230,15 @@ parse_cmd_line() { | |||||||
|                     [[ $? -eq 0 ]] && shift |                     [[ $? -eq 0 ]] && shift | ||||||
|                     do_json=true |                     do_json=true | ||||||
|                     ;; |                     ;; | ||||||
|  |                --jsonfile-parent|--jsonfile-parent=*) | ||||||
|  |                     if ! "$CHILD_MASS_TESTING"; then | ||||||
|  |                          tmln_warning "$0: unrecognized option \"$1\"" 1>&2; | ||||||
|  |                          help 1 | ||||||
|  |                     fi | ||||||
|  |                     PARENT_JSONFILE="$(parse_opt_equal_sign "$1" "$2")" | ||||||
|  |                     [[ $? -eq 0 ]] && shift | ||||||
|  |                     do_json=true | ||||||
|  |                     ;; | ||||||
|                --json-pretty) |                --json-pretty) | ||||||
|                     "$do_json" && fatal "flat and pretty JSON output are mutually exclusive" $ERR_CMDLINE |                     "$do_json" && fatal "flat and pretty JSON output are mutually exclusive" $ERR_CMDLINE | ||||||
|                     "$do_pretty_json" && fatal "--json-pretty and --jsonfile-pretty are mutually exclusive" $ERR_CMDLINE |                     "$do_pretty_json" && fatal "--json-pretty and --jsonfile-pretty are mutually exclusive" $ERR_CMDLINE | ||||||
| @@ -22192,6 +22254,15 @@ parse_cmd_line() { | |||||||
|                     [[ $? -eq 0 ]] && shift |                     [[ $? -eq 0 ]] && shift | ||||||
|                     do_pretty_json=true |                     do_pretty_json=true | ||||||
|                     ;; |                     ;; | ||||||
|  |                --jsonfile-pretty-parent|--jsonfile-pretty-parent=*) | ||||||
|  |                     if ! "$CHILD_MASS_TESTING"; then | ||||||
|  |                          tmln_warning "$0: unrecognized option \"$1\"" 1>&2; | ||||||
|  |                          help 1 | ||||||
|  |                     fi | ||||||
|  |                     PARENT_JSONFILE="$(parse_opt_equal_sign "$1" "$2")" | ||||||
|  |                     [[ $? -eq 0 ]] && shift | ||||||
|  |                     do_pretty_json=true | ||||||
|  |                     ;; | ||||||
|                --severity|--severity=*) |                --severity|--severity=*) | ||||||
|                     set_severity_level "$(parse_opt_equal_sign "$1" "$2")" |                     set_severity_level "$(parse_opt_equal_sign "$1" "$2")" | ||||||
|                     [[ $? -eq 0 ]] && shift |                     [[ $? -eq 0 ]] && shift | ||||||
| @@ -22213,6 +22284,15 @@ parse_cmd_line() { | |||||||
|                     [[ $? -eq 0 ]] && shift |                     [[ $? -eq 0 ]] && shift | ||||||
|                     do_csv=true |                     do_csv=true | ||||||
|                     ;; |                     ;; | ||||||
|  |                --csvfile-parent|--csvfile-parent=*) | ||||||
|  |                     if ! "$CHILD_MASS_TESTING"; then | ||||||
|  |                          tmln_warning "$0: unrecognized option \"$1\"" 1>&2; | ||||||
|  |                          help 1 | ||||||
|  |                     fi | ||||||
|  |                     PARENT_CSVFILE="$(parse_opt_equal_sign "$1" "$2")" | ||||||
|  |                     [[ $? -eq 0 ]] && shift | ||||||
|  |                     do_csv=true | ||||||
|  |                     ;; | ||||||
|                --html) |                --html) | ||||||
|                     "$do_html" && fatal "two --html* arguments" $ERR_CMDLINE |                     "$do_html" && fatal "two --html* arguments" $ERR_CMDLINE | ||||||
|                     if [[ "$2" =~ \.(htm|html|HTM|HTML)$ ]]; then |                     if [[ "$2" =~ \.(htm|html|HTM|HTML)$ ]]; then | ||||||
| @@ -22227,6 +22307,15 @@ parse_cmd_line() { | |||||||
|                     [[ $? -eq 0 ]] && shift |                     [[ $? -eq 0 ]] && shift | ||||||
|                     do_html=true |                     do_html=true | ||||||
|                     ;; |                     ;; | ||||||
|  |                --htmlfile-parent|--htmlfile-parent=*) | ||||||
|  |                     if ! "$CHILD_MASS_TESTING"; then | ||||||
|  |                          tmln_warning "$0: unrecognized option \"$1\"" 1>&2; | ||||||
|  |                          help 1 | ||||||
|  |                     fi | ||||||
|  |                     PARENT_HTMLFILE="$(parse_opt_equal_sign "$1" "$2")" | ||||||
|  |                     [[ $? -eq 0 ]] && shift | ||||||
|  |                     do_html=true | ||||||
|  |                     ;; | ||||||
|                --outfile|--outfile=*|-oa|-oa=*) |                --outfile|--outfile=*|-oa|-oa=*) | ||||||
|                     ( "$do_html" || "$do_json" || "$do_pretty_json" || "$do_csv" || "$do_logging" ) && fatal "check your arguments four multiple file output options" $ERR_CMDLINE |                     ( "$do_html" || "$do_json" || "$do_pretty_json" || "$do_csv" || "$do_logging" ) && fatal "check your arguments four multiple file output options" $ERR_CMDLINE | ||||||
|                     outfile_arg="$(parse_opt_equal_sign "$1" "$2")" |                     outfile_arg="$(parse_opt_equal_sign "$1" "$2")" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Dirk Wetter
					Dirk Wetter