]> Cypherpunks repositories - gostls13.git/commitdiff
test: remove errchk, the perl script
authorYury Smolsky <yury@smolsky.by>
Sat, 2 Jun 2018 12:53:58 +0000 (15:53 +0300)
committerBrad Fitzpatrick <bradfitz@golang.org>
Wed, 22 Aug 2018 16:28:36 +0000 (16:28 +0000)
gc tests do not depend on errchk.

Fixes #25669

Change-Id: I99eb87bb9677897b9167d4fc9a6321fa66cd9116
Reviewed-on: https://go-review.googlesource.com/115955
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
test/errchk [deleted file]

diff --git a/test/errchk b/test/errchk
deleted file mode 100755 (executable)
index 1cb57bb..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/usr/bin/env perl
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-# This script checks that the compilers emit the errors which we expect.
-# Usage: errchk COMPILER [OPTS] SOURCEFILES.  This will run the command
-# COMPILER [OPTS] SOURCEFILES.  The compilation is expected to fail; if
-# it succeeds, this script will report an error.  The stderr output of
-# the compiler will be matched against comments in SOURCEFILES.  For each
-# line of the source files which should generate an error, there should
-# be a comment of the form // ERROR "regexp".  If the compiler generates
-# an error for a line which has no such comment, this script will report
-# an error.  Likewise if the compiler does not generate an error for a
-# line which has a comment, or if the error message does not match the
-# <regexp>.  The <regexp> syntax is Perl but its best to stick to egrep.
-
-use POSIX;
-
-my $exitcode = 1;
-
-if(@ARGV >= 1 && $ARGV[0] eq "-0") {
-       $exitcode = 0;
-       shift;
-}
-
-if(@ARGV < 1) {
-       print STDERR "Usage: errchk COMPILER [OPTS] SOURCEFILES\n";
-       exit 1;
-}
-
-# Grab SOURCEFILES
-foreach(reverse 0 .. @ARGV-1) {
-       unless($ARGV[$_] =~ /\.(go|s)$/) {
-               @file = @ARGV[$_+1 .. @ARGV-1];
-               last;
-       }
-}
-
-# If no files have been specified try to grab SOURCEFILES from the last
-# argument that is an existing directory if any
-unless(@file) {
-    foreach(reverse 0 .. @ARGV-1) {
-        if(-d $ARGV[$_]) {
-            @file = glob($ARGV[$_] . "/*.go");
-            last;
-        }
-    }
-}
-
-foreach $file (@file) {
-       open(SRC, $file) || die "BUG: errchk: open $file: $!";
-       $src{$file} = [<SRC>];
-       close(SRC);
-}
-
-# Run command
-$cmd = join(' ', @ARGV);
-open(CMD, "exec $cmd </dev/null 2>&1 |") || die "BUG: errchk: run $cmd: $!";
-
-# gc error messages continue onto additional lines with leading tabs.
-# Split the output at the beginning of each line that doesn't begin with a tab.
-$out = join('', <CMD>);
-@out = split(/^(?!\t)/m, $out);
-
-close CMD;
-
-# Remove lines beginning with #, printed by go command to indicate package.
-@out = grep {!/^#/} @out;
-
-if($exitcode != 0 && $? == 0) {
-       print STDERR "BUG: errchk: command succeeded unexpectedly\n";
-       print STDERR @out;
-       exit 0;
-}
-
-if($exitcode == 0 && $? != 0) {
-       print STDERR "BUG: errchk: command failed unexpectedly\n";
-       print STDERR @out;
-       exit 0;
-}
-
-if(!WIFEXITED($?)) {
-       print STDERR "BUG: errchk: compiler crashed\n";
-       print STDERR @out, "\n";
-       exit 0;
-}
-
-sub bug() {
-       if(!$bug++) {
-               print STDERR "BUG: ";
-       }
-}
-
-sub chk {
-       my $file = shift;
-       my $line = 0;
-       my $regexp;
-       my @errmsg;
-       my @match;
-       foreach my $src (@{$src{$file}}) {
-               $line++;
-               next if $src =~ m|////|;  # double comment disables ERROR
-               next unless $src =~ m|// (GC_)?ERROR (.*)|;
-               my $all = $2;
-               if($all !~ /^"([^"]*)"/) {
-                       print STDERR "$file:$line: malformed regexp\n";
-                       next;
-               }
-               @errmsg = grep { /$file:$line[:[]/ } @out;
-               @out = grep { !/$file:$line[:[]/ } @out;
-               if(@errmsg == 0) {
-                       bug();
-                       print STDERR "errchk: $file:$line: missing expected error: '$all'\n";
-                       next;
-               }
-               foreach my $regexp ($all =~ /"([^"]*)"/g) {
-                       # Turn relative line number in message into absolute line number.
-                       if($regexp =~ /LINE(([+-])([0-9]+))?/) {
-                               my $n = $line;
-                               if(defined($1)) {
-                                       if($2 eq "+") {
-                                               $n += int($3);
-                                       } else {
-                                               $n -= int($3);
-                                       }
-                               }
-                               $regexp = "$`$file:$n$'";
-                       }
-       
-                       @match = grep { /$regexp/ } @errmsg;
-                       if(@match == 0) {
-                               bug();
-                               print STDERR "errchk: $file:$line: error messages do not match '$regexp'\n";
-                               next;
-                       }
-                       @errmsg = grep { !/$regexp/ } @errmsg;
-               }
-               if(@errmsg != 0) {
-                       bug();
-                       print STDERR "errchk: $file:$line: unmatched error messages:\n";
-                       foreach my $l (@errmsg) {
-                               print STDERR "> $l";
-                       }
-               }
-       }
-}
-
-foreach $file (@file) {
-       chk($file)
-}
-
-if(@out != 0) {
-       bug();
-       print STDERR "errchk: unmatched error messages:\n";
-       print STDERR "==================================================\n";
-       print STDERR @out;
-       print STDERR "==================================================\n";
-}
-
-exit 0;