From 6f2629c7d9696e295cf68a05adfc445a35eaf9bc Mon Sep 17 00:00:00 2001 From: Mark Nudelman Date: Tue, 11 Oct 2022 09:31:42 -0700 Subject: [PATCH 12/48] lesstest: add -e option. --- lesstest/lesstest.c | 8 ++++++-- lesstest/log.c | 8 +++++++- lesstest/lt_screen.c | 1 + lesstest/lt_types.h | 2 +- lesstest/run.c | 8 ++++++-- lesstest/runtest | 12 +++++++++--- 6 files changed, 30 insertions(+), 9 deletions(-) diff --git a/lesstest/lesstest.c b/lesstest/lesstest.c index 8c960ab..64578b8 100644 --- a/lesstest/lesstest.c +++ b/lesstest/lesstest.c @@ -6,13 +6,14 @@ extern TermInfo terminfo; int verbose = 0; int less_quit = 0; int details = 0; +int err_only = 0; char* lt_screen = "./lt_screen"; char* lt_screen_opts = NULL; static char* testfile = NULL; static int usage(void) { - fprintf(stderr, "usage: lesstest -o file.lt [-w#] [-h#] [-dv] [-S lt_screen-opts] [--] less.exe [flags] textfile\n"); + fprintf(stderr, "usage: lesstest -o file.lt [-w#] [-h#] [-edv] [-S lt_screen-opts] [--] less.exe [flags] textfile\n"); fprintf(stderr, " or: lesstest -t file.lt less.exe\n"); return 0; } @@ -20,11 +21,14 @@ static int usage(void) { static int setup(int argc, char* const* argv) { char* logfile = NULL; int ch; - while ((ch = getopt(argc, argv, "do:s:S:t:v")) != -1) { + while ((ch = getopt(argc, argv, "deo:s:S:t:v")) != -1) { switch (ch) { case 'd': details = 1; break; + case 'e': + err_only = 1; + break; case 'o': logfile = optarg; break; diff --git a/lesstest/log.c b/lesstest/log.c index e746c81..7418f61 100644 --- a/lesstest/log.c +++ b/lesstest/log.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #include "lesstest.h" @@ -26,7 +27,12 @@ void log_close(void) { int log_file_header(void) { if (logf == NULL) return 0; - fprintf(logf, "!lesstest!\n"); + time_t now = time(NULL); + struct tm* tm = gmtime(&now); + fprintf(logf, "!lesstest!\n!version %d\n!created %d-%02d-%02d %02d:%02d:%02d\n", + LESSTEST_VERSION, + tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, + tm->tm_hour, tm->tm_min, tm->tm_sec); return 1; } diff --git a/lesstest/lt_screen.c b/lesstest/lt_screen.c index 6b1fde4..4bc1c50 100644 --- a/lesstest/lt_screen.c +++ b/lesstest/lt_screen.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "lt_types.h" #include "wchar.h" diff --git a/lesstest/lt_types.h b/lesstest/lt_types.h index 3f98376..2015582 100644 --- a/lesstest/lt_types.h +++ b/lesstest/lt_types.h @@ -1,4 +1,4 @@ -#include +#define LESSTEST_VERSION 1 typedef unsigned long wchar; typedef unsigned char byte; diff --git a/lesstest/run.c b/lesstest/run.c index e1d4881..fa7ace0 100644 --- a/lesstest/run.c +++ b/lesstest/run.c @@ -9,6 +9,7 @@ extern int verbose; extern int less_quit; extern int details; +extern int err_only; extern TermInfo terminfo; static pid_t less_pid; @@ -121,7 +122,7 @@ int run_interactive(char* const* argv, int argc, char* const* prog_envp) { int run_test(TestSetup* setup, FILE* testfd) { const char* setup_name = setup->argv[setup->argc-1]; - fprintf(stderr, "RUN %s\n", setup_name); + //fprintf(stderr, "RUN %s\n", setup_name); LessPipeline* pipeline = create_less_pipeline(setup->argv, setup->argc, less_envp(setup->env.env_list, 0)); if (pipeline == NULL) @@ -169,7 +170,10 @@ int run_test(TestSetup* setup, FILE* testfd) { set_intr_handler(0); } destroy_less_pipeline(pipeline); - fprintf(stderr, "%s %s (%d commands)\n", ok ? "OK " : "FAIL", setup_name, cmds); + if (!ok) + fprintf(stderr, "FAIL %s (%d commands)\n", setup_name, cmds); + else if (!err_only) + fprintf(stderr, "OK %s (%d commands)\n", setup_name, cmds); return ok; } diff --git a/lesstest/runtest b/lesstest/runtest index 2a39047..94ff5fd 100755 --- a/lesstest/runtest +++ b/lesstest/runtest @@ -2,7 +2,7 @@ use strict; # Run one or more test files. -my $usage = "usage: run [-d lesstest-dir] [-l less.exe] [-r temp-dir] [-s lt_screen] [-t lesstest] [-O lesstest-opts] [file.lt | dir]...\n"; +my $usage = "usage: run [-e] [-d lesstest-dir] [-l less.exe] [-r temp-dir] [-s lt_screen] [-t lesstest] [-O lesstest-opts] [file.lt | dir]...\n"; use Getopt::Std; use Cwd; @@ -12,11 +12,13 @@ my $lesstest; my $lt_screen; my $less; my $lt_opts; +my $err_only; +my $num_tests = 0; exit main(); sub main { my %opt; - die $usage if not getopts('d:l:O:r:s:t:', \%opt); + die $usage if not getopts('d:el:O:r:s:t:', \%opt); die $usage if not @ARGV; my $cwd = getcwd(); @@ -26,7 +28,9 @@ sub main { $lt_screen = (rfile($opt{s}, $cwd) or "$srcdir/lt_screen"); $less = (rfile($opt{l}, $cwd) or "$srcdir/../obj/less"); $lt_opts = ($opt{O} or ""); + $err_only = $opt{e}; $lt_opts = "-$lt_opts" if $lt_opts =~ /^[^-]/; + $lt_opts .= " -e" if $err_only; die "cannot execute $lesstest" if not -x $lesstest; die "cannot execute $lt_screen" if not -x $lt_screen; die "cannot execute $less" if not -x $less; @@ -42,6 +46,7 @@ sub main { print "ERRS $errs errors\n"; return 1; } + print "RAN $num_tests tests\n"; return 0; } @@ -60,9 +65,10 @@ sub run { return 1; } my ($basename) = $file =~ m|^.*/([^/]+)$|; - print "TEST $basename\n"; + print "TEST $basename\n" unless $err_only; my $cmd = "$lesstest $lt_opts -s '$lt_screen' -t '$file' '$less'"; my $err = system $cmd; + ++$num_tests; if ($err) { print "ERR status $err from $cmd\n"; return 1; -- 2.27.0