less/backport-makecheck-0018-lesstest-add-e-option.patch

193 lines
5.5 KiB
Diff

From 6f2629c7d9696e295cf68a05adfc445a35eaf9bc Mon Sep 17 00:00:00 2001
From: Mark Nudelman <markn@greenwoodsoftware.com>
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 <string.h>
#include <unistd.h>
#include <stdarg.h>
+#include <time.h>
#include <sys/stat.h>
#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 <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
+#include <signal.h>
#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 <signal.h>
+#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