Browse Source

This reverts commit 4d344f7122. The GCC

testsuite still uses diff.

	2016-03-15  Ben Elliston  <bje@gnu.org>

	* lib/utils.exp (diff): Remove proc.
	* doc/ref.xml: Update documentation.
	* doc/dejagnu.texi: Regenerate.
	* NEWS: Update.
dejagnu-1.6
Ben Elliston 10 years ago
parent
commit
cef9e5b99e
  1. 11
      ChangeLog
  2. 4
      NEWS
  3. 28
      doc/dejagnu.texi
  4. 27
      doc/ref.xml
  5. 69
      lib/utils.exp

11
ChangeLog

@ -1,3 +1,14 @@
2016-03-16 Ben Elliston <bje@gnu.org>
Revert this change (the GCC testsuite uses diff):
2016-03-15 Ben Elliston <bje@gnu.org>
* lib/utils.exp (diff): Remove proc.
* doc/ref.xml: Update documentation.
* doc/dejagnu.texi: Regenerate.
* NEWS: Update.
2016-03-15 Ben Elliston <bje@gnu.org>
* testsuite/runtest.all/options.exp: Properly clean up log files

4
NEWS

@ -10,8 +10,8 @@ Changes since 1.5.3:
2 if an exception is raised by the Tcl interpreter.
3. runtest now exits with the standard exit codes of programs that are
terminated by the SIGINT, SIGTERM and SIGQUIT signals.
4. The user-visible utility procedures `absolute', `psource', `slay'
and `diff' have been removed. If a testsuite uses any of these
4. The user-visible utility procedures `absolute', `psource' and
`slay' have been removed. If a testsuite uses any of these
procedures, a copy of the procedure should be made and placed in
the lib directory of the testsuite.
5. Support was added for testing the D compiler.

28
doc/dejagnu.texi

@ -5414,6 +5414,7 @@ tool, and its version number.
* Grep Procedure: grep procedure.
* Prune Procedure: prune procedure.
* Runtest_file_p Procedure: runtest_file_p procedure.
* Diff Procedure: diff procedure.
* Setenv Procedure: setenv procedure.
* unsetenv Procedure: unsetenv procedure.
* Getenv Procedure: getenv procedure.
@ -5543,7 +5544,7 @@ the next release of DejaGnu. If a testsuite uses this
procedure, a copy of the procedure should be made and placed
in the lib directory of the testsuite.
@node runtest_file_p procedure, setenv procedure, prune procedure, Utility Procedures
@node runtest_file_p procedure, diff procedure, prune procedure, Utility Procedures
@subsubsection Runtest_file_p Procedure
Search @emph{runtest}s for
@ -5576,7 +5577,30 @@ The list of patterns to compare against.
The test case filename.
@end table
@node setenv procedure, unsetenv procedure, runtest_file_p procedure, Utility Procedures
@node diff procedure, setenv procedure, runtest_file_p procedure, Utility Procedures
@subsubsection Diff Procedure
Compares the two files and returns a @emph{1} if
they match, or a @emph{0} if they don't. If
@code{verbose} is set, then it'll print the differences to
the screen.
@quotation
@t{@b{diff}(@i{file_1}
@i{file_2});}
@end quotation
@table @asis
@item @code{file_1}
The first file to compare.
@item @code{file_2}
The second file to compare.
@end table
@node setenv procedure, unsetenv procedure, diff procedure, Utility Procedures
@subsubsection Setenv Procedure
Sets the environment variable @emph{var} to the

27
doc/ref.xml

@ -3620,6 +3620,33 @@
</variablelist>
</sect4>
<sect4 id="diff" xreflabel="diff procedure">
<title>Diff Procedure</title>
<para>Compares the two files and returns a <emphasis>1</emphasis> if
they match, or a <emphasis>0</emphasis> if they don't. If
<symbol>verbose</symbol> is set, then it'll print the differences to
the screen.</para>
<funcsynopsis role="tcl">
<funcprototype>
<funcdef><function>diff</function></funcdef>
<paramdef><parameter>file_1</parameter>
<parameter>file_2</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<variablelist>
<varlistentry>
<term><parameter>file_1</parameter></term>
<listitem><para>The first file to compare.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>file_2</parameter></term>
<listitem><para>The second file to compare.</para></listitem>
</varlistentry>
</variablelist>
</sect4>
<sect4 id="setenv" xreflabel="setenv procedure">
<title>Setenv Procedure</title>

69
lib/utils.exp

@ -250,6 +250,75 @@ proc runtest_file_p { runtests testcase } {
}
# Compares two files line-by-line
# returns 1 it the files match,
# returns 0 if there was a file error,
# returns -1 if they didn't match.
#
proc diff { file_1 file_2 } {
set eof -1
set differences 0
if {[file exists ${file_1}]} {
set file_a [open ${file_1} r]
fconfigure $file_a -encoding binary
} else {
warning "${file_1} doesn't exist"
return 0
}
if {[file exists ${file_2}]} {
set file_b [open ${file_2} r]
fconfigure $file_b -encoding binary
} else {
warning "${file_2} doesn't exist"
return 0
}
verbose "# Diff'ing: ${file_1} ${file_2}" 1
set list_a ""
while { [gets ${file_a} line] != ${eof} } {
if {[regexp "^#.*$" ${line}]} {
continue
} else {
lappend list_a ${line}
}
}
close ${file_a}
set list_b ""
while { [gets ${file_b} line] != ${eof} } {
if {[regexp "^#.*$" ${line}]} {
continue
} else {
lappend list_b ${line}
}
}
close ${file_b}
for { set i 0 } { $i < [llength $list_a] } { incr i } {
set line_a [lindex ${list_a} ${i}]
set line_b [lindex ${list_b} ${i}]
if {[string compare ${line_a} ${line_b}]} {
verbose -log "line #${i}" 2
verbose -log "\< ${line_a}" 2
verbose -log "\> ${line_b}" 2
set differences -1
}
}
if { $differences == -1 || [llength ${list_a}] != [llength ${list_b}] } {
verbose "Files not the same" 2
set differences -1
} else {
verbose "Files are the same" 2
set differences 1
}
return ${differences}
}
#
# Set an environment variable
#
proc setenv { var val } {

Loading…
Cancel
Save