This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: fullname syntax variable for testsuite


On Thu, May 05, 2005 at 01:39:42PM -0400, Daniel Jacobowitz wrote:
> On Thu, May 05, 2005 at 01:32:02PM -0400, Bob Rossi wrote:
> > Hi all,
> > 
> > Hopefully this should make everyone happy. If the regex is slightly
> > incorrect, after this patch, it should be simple to modify it and have
> > the testsuite pick up on those changes.
> > 
> > As you will notice, the initial regex that Eli posted does not match the
> > case d:foo. If it is desired to match this case up front, I can do that.
> > Otherwise, it's noted in the comment, and can be changed when we run
> > into the problem.
> 
> For Windows, don't you want the more specific version Chris posted?
>   [a-zA-Z]:\\.*\|\\\\[^\\][^\\]*\\[^\\].*

The new regex stuff should take care of everything, see below.
> 
> Also, while I don't want to quibble about the regex more than necessary
> right now, it should match the final slash in the path.  Either /.*/ or
> \.*\ as the case may be.

OK, Done.
> > +# The variable fullname_syntax is a regexp which matches what GDB considers
> > +# an absolute path. It is currently debatable if the windows style paths 
> > +# d:foo and \abc should be considered valid as an absolute path.
> > +# This regex matches \abc but not d:foo.
> > +global fullname_syntax
> > +if ![info exists fullname_syntax] then {
> > +    set fullname_syntax "(\[A-z\]:)?\[/\\\\\].*"
> > +}
> 
> Don't bother with the 'info exists' unless there's some need for it
> that I'm missing.  Please capitalize Windows.

Here is the updated patch. I broke down the regexp into several cases.
It should be very easy to maintain (add/remove) the regexp as time goes
on. If there are any other modifications that need to be made, please
let me know.

Thanks,
Bob Rossi


2005-05-05  Bob Rossi  <bob_rossi@cox.net>

    * lib/gdb.exp (fullname_syntax): Added global regex.
    (fullname_syntax_POSIX): Ditto.
    (fullname_syntax_UNC): Ditto.
    (fullname_syntax_DOS_CASE): Ditto.
    (fullname_syntax_DOS): Ditto.
    * gdb.mi/mi-file.exp (test_file_list_exec_source_file): Added
    fullname_syntax variable to scope and use it.
    (test_file_list_exec_source_files): Ditto.
    * gdb.mi/mi2-file.exp (test_file_list_exec_source_file): Ditto.


Index: gdb.mi/mi-file.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-file.exp,v
retrieving revision 1.4
diff -w -u -r1.4 mi-file.exp
--- gdb.mi/mi-file.exp	15 Aug 2004 10:15:58 -0000	1.4
+++ gdb.mi/mi-file.exp	6 May 2005 00:36:41 -0000
@@ -48,6 +48,7 @@
     global srcfile
     global srcdir
     global subdir
+    global fullname_syntax
     set srcfilepath [string_to_regexp ${srcdir}/${subdir}/${srcfile}]
 
     # get the path and absolute path to the current executable
@@ -63,16 +64,17 @@
     set line_default [expr $line_main_body - $gdb_lines_to_list + 1]
 
     mi_gdb_test "111-file-list-exec-source-file" \
-	    "111\\\^done,line=\"$line_default\",file=\"${srcfilepath}\",fullname=\"/.*/${srcfile}\"" \
+	    "111\\\^done,line=\"$line_default\",file=\"${srcfilepath}\",fullname=\"$fullname_syntax${srcfile}\"" \
                "request path info of current source file (${srcfile})"
 }
 
 proc test_file_list_exec_source_files {} {
     global srcfile
+    global fullname_syntax
 
     # get the path and absolute path to the current executable
     mi_gdb_test "222-file-list-exec-source-files" \
-	    "222\\\^done,files=\\\[\{file=\".*/${srcfile}\",fullname=\"/.*/${srcfile}\"\},\{file=\".*\"\},\{file=\".*\"\},\{file=\".*\"\},\{file=\".*\"\}\\\]" \
+	    "222\\\^done,files=\\\[\{file=\".*/${srcfile}\",fullname=\"$fullname_syntax${srcfile}\"\},\{file=\".*\"\},\{file=\".*\"\},\{file=\".*\"\},\{file=\".*\"\}\\\]" \
               "Getting a list of source files."
 }
 
Index: gdb.mi/mi2-file.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-file.exp,v
retrieving revision 1.5
diff -w -u -r1.5 mi2-file.exp
--- gdb.mi/mi2-file.exp	15 Aug 2004 10:15:58 -0000	1.5
+++ gdb.mi/mi2-file.exp	6 May 2005 00:36:41 -0000
@@ -48,6 +48,7 @@
     global srcfile
     global srcdir
     global subdir
+    global fullname_syntax
     set srcfilepath [string_to_regexp ${srcdir}/${subdir}/${srcfile}]
 
     # get the path and absolute path to the current executable
@@ -63,7 +64,7 @@
     set line_default [expr $line_main_body - $gdb_lines_to_list + 1]
 
     mi_gdb_test "111-file-list-exec-source-file" \
-	    "111\\\^done,line=\"$line_default\",file=\"${srcfilepath}\",fullname=\"/.*/${srcfile}\"" \
+	    "111\\\^done,line=\"$line_default\",file=\"${srcfilepath}\",fullname=\"$fullname_syntax${srcfile}\"" \
                "request path info of current source file (${srcfile})"
 }
 
Index: lib/gdb.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v
retrieving revision 1.62
diff -w -u -r1.62 gdb.exp
--- lib/gdb.exp	3 May 2005 00:41:49 -0000	1.62
+++ lib/gdb.exp	6 May 2005 00:36:42 -0000
@@ -51,6 +51,26 @@
     set gdb_prompt "\[(\]gdb\[)\]"
 }
 
+# The variable fullname_syntax_POSIX is a regexp which matches a POSIX 
+# absolute path ie. /foo/ 
+set fullname_syntax_POSIX "/.*/"
+# The variable fullname_syntax_UNC is a regexp which matches a Windows 
+# UNC path ie. \\D\foo\ 
+set fullname_syntax_UNC {\\\\[^\\]+\\.+\\}
+# The variable fullname_syntax_DOS_CASE is a regexp which matches a 
+# particular DOS case that GDB most likely will output
+# ie. \foo\, but don't match \\.*\ 
+set fullname_syntax_DOS_CASE {\\[^\\]+\\}
+# The variable fullname_syntax_DOS is a regexp which matches a DOS path
+# ie. a:\foo\ && a:foo\ 
+set fullname_syntax_DOS {[a-zA-Z]:.*\\}
+# The variable fullname_syntax is a regexp which matches what GDB considers
+# an absolute path. It is currently debatable if the Windows style paths 
+# d:foo and \abc should be considered valid as an absolute path.
+# Also, the purpse of this regexp is not to recognize a well formed 
+# absolute path, but to say with certainty that a path is absolute.
+set fullname_syntax "($fullname_syntax_POSIX|$fullname_syntax_UNC|$fullname_syntax_DOS_CASE|$fullname_syntax_DOS)"
+
 # Needed for some tests under Cygwin.
 global EXEEXT
 global env


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]