diff mbox

[3,of,3] print help for undocumented options

Message ID 56295353.7030304@gmail.com
State New
Headers show

Commit Message

Martin Sebor Oct. 22, 2015, 9:21 p.m. UTC
While fixing up the ChangeLogs for the commit (as requested below)
I noticed that a number of new options have been added with help
text with no period at the end.  The attached patch fixes those
up and adds a test to help catch these problems before they creep
in again.

Martin

https://gcc.gnu.org/ml/gcc-patches/2015-10/msg02224.html

Comments

Joseph Myers Oct. 22, 2015, 9:47 p.m. UTC | #1
On Thu, 22 Oct 2015, Martin Sebor wrote:

> While fixing up the ChangeLogs for the commit (as requested below)
> I noticed that a number of new options have been added with help
> text with no period at the end.  The attached patch fixes those
> up and adds a test to help catch these problems before they creep
> in again.

I'm concerned about the test setting the environment variable COLUMNS; 
won't that affect every subsequent test (including from other .exp files) 
in the same runtest process?  .exp files setting environment variables 
need to save and restore them.
diff mbox

Patch

gcc/ChangeLog:

2015-10-22  Martin Sebor  <msebor@redhat.com>

	PR driver/68043
	* config/i386/i386.opt: Add missing periods to the ends of sentences.
	* config/msp430/msp430.opt: Same.

gcc/testsuite/ChangeLog:

2015-10-22  Martin Sebor  <msebor@redhat.com>

	PR driver/68043
	* gcc.misc-tests/help.exp: Verify that option descriptions
	end in periods.
	* lib/options.exp (check_for_options): Use the regexp --line option.
	Print unexpected match on failure.

Index: gcc/config/i386/i386.opt
===================================================================
--- gcc/config/i386/i386.opt	(revision 229177)
+++ gcc/config/i386/i386.opt	(working copy)
@@ -701,15 +701,15 @@ 

 mfma4
 Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save
-Support FMA4 built-in functions and code generation
+Support FMA4 built-in functions and code generation.

 mxop
 Target Report Mask(ISA_XOP) Var(ix86_isa_flags) Save
-Support XOP built-in functions and code generation
+Support XOP built-in functions and code generation.

 mlwp
 Target Report Mask(ISA_LWP) Var(ix86_isa_flags) Save
-Support LWP built-in functions and code generation
+Support LWP built-in functions and code generation.

 mabm
 Target Report Mask(ISA_ABM) Var(ix86_isa_flags) Save
Index: gcc/config/msp430/msp430.opt
===================================================================
--- gcc/config/msp430/msp430.opt	(revision 229177)
+++ gcc/config/msp430/msp430.opt	(working copy)
@@ -83,8 +83,8 @@ 

 msilicon-errata=
 Target Joined RejectNegative Report ToLower
-Passes on a request to the assembler to enable fixes for various silicon errata
+Passes on a request to the assembler to enable fixes for various silicon errata.

 msilicon-errata-warn=
 Target Joined RejectNegative Report ToLower
-Passes on a request to the assembler to warn about various silicon errata
+Passes on a request to the assembler to warn about various silicon errata.
Index: gcc/testsuite/gcc.misc-tests/help.exp
===================================================================
--- gcc/testsuite/gcc.misc-tests/help.exp	(revision 229177)
+++ gcc/testsuite/gcc.misc-tests/help.exp	(working copy)
@@ -81,24 +81,40 @@ 
 # Specify patterns (arguments 3 and later) that match option names
 # at the beginning of the line and not when they are referenced by
 # some other options later on.
-# The (?w) Tcl embedded option tells the Tcl regexp  parser to treat
-# the '^' character as an anchor.
 check_for_options c "--help=joined" \
-    "(?w)^ *-Wformat=" "(?w)^ *-fstrict-prototype" ""
+    "^ +-Wformat=" "^ +-fstrict-prototype" ""
 check_for_options c "--help=separate" \
-    "(?w)^ *-MF" "(?w)^ *-fstrict-prototype" ""
+    "^ +-MF" "^ +-fstrict-prototype" ""
 check_for_options c "--help=warnings,joined" \
-    "(?w)^ *-Wformat=" "(?w)^ *-Wtrigraphs" ""
+    "^ +-Wformat=" "^ +-Wtrigraphs" ""
 check_for_options c "--help=warnings,^joined" \
-    "(?w)^ *-Wtrigraphs" "(?w)^ *-Wformat=" ""
+    "^ +-Wtrigraphs" "^ +-Wformat=" ""
 check_for_options c "--help=joined,separate" \
-    "(?w)^ *-I" "" ""
+    "^ +-I" "" ""
 check_for_options c "--help=^joined,separate" \
-    "(?w)^ *--param " "" ""
+    "^ +--param " "" ""
 check_for_options c "--help=joined,^separate" \
-    "(?w)^ *--help=" "" ""
+    "^ +--help=" "" ""
 check_for_options c "--help=joined,undocumented" "" "" ""

+# Check to make sure the description for every option is a complete
+# sentence ending in a period.  This matters not just for consistency
+# but also because other sentences may be appended to it by the help
+# subsystem.  Do this one help class at a time to make it easier to
+# find the source a failure.
+
+# GCC breaks up --help output into lines at most $COLUMNS characters
+# wide (or 80 when COLUMNS is not defined), set the COLUMNS environment
+# variable to a value large enough to prevent this.
+global env
+set env(COLUMNS) 1024
+
+foreach cls { "ada" "c" "c++" "fortran" "go" \
+		    "optimizers" "param" "target" "warnings" } {
+
+    check_for_options c "--help=$cls" "" "^ +-.*\[^:.\]$" ""
+}
+
 # Listing only excludes gives empty results.
 check_for_options c "--help=^joined,^separate" "" "" ""

Index: gcc/testsuite/lib/options.exp
===================================================================
--- gcc/testsuite/lib/options.exp	(revision 229177)
+++ gcc/testsuite/lib/options.exp	(working copy)
@@ -50,7 +50,7 @@ 
     # Verify that COMPILER_PATTERRNS appear in gcc output.
     foreach pattern [split $compiler_patterns "\n"] {
 	if {$pattern != ""} {
-	    if {[regexp -- "$pattern" $gcc_output]} {
+	    if {[regexp -line -- "$pattern" $gcc_output]} {
 		pass "$test $pattern"
 	    } else {
 		if {$expected_failure != ""} {
@@ -65,13 +65,15 @@ 
     # Verify that COMPILER_NON_PATTERRNS do not appear in gcc output.
     foreach pattern [split $compiler_non_patterns "\n"] {
 	if {$pattern != ""} {
-	    if {![regexp -- "$pattern" $gcc_output]} {
+	    if {![regexp -line -- "$pattern" $gcc_output result]} {
 		pass "$test $pattern"
 	    } else {
 		if {$expected_failure != ""} {
 		    xfail "$test \"$pattern\" absent from output"
 		} else {
-		    fail "$test \"$pattern\" absent from output"
+		    # Print the unexpected line that caused the failure
+		    # to make it easier to find in the multiline output.
+		    fail "$test \"$pattern\" absent from output: \"$result\""
 		}
 	    }
 	}