diff options
Diffstat (limited to 'lesstest/maketest')
-rwxr-xr-x | lesstest/maketest | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/lesstest/maketest b/lesstest/maketest new file mode 100755 index 000000000000..09c4f4b0a1fd --- /dev/null +++ b/lesstest/maketest @@ -0,0 +1,71 @@ +#!/usr/bin/env perl +use strict; + +# Create a test file. +# Wrapper for lesstest, using most common options. +my $usage = "usage: maketest [-o lt-file] [-l less.exe] [-s lt_screen] [-t lesstest] [-w width] [-h height] [-O lesstest-opts] [-S lt_screen-opts] textfile\n"; + +use Getopt::Std; + +exit main(); +sub main { + my %opt; + die $usage if not getopts('h:l:o:O:s:S:t:w:v', \%opt); + my $textfile = shift @ARGV; + die $usage if not defined $textfile; + my $lesstest = ($opt{t} or "./lesstest"); + my $lt_screen = ($opt{s} or "./lt_screen"); + my $less = ($opt{l} or "../obj/less"); + my $lines = ($opt{h} or $ENV{LINES}-1); + my $columns = ($opt{w} or $ENV{COLUMNS}-1); + my $verbose = ($opt{v} or 0); + my $lt_opts = opts($opt{O} or ""); + my $ls_opts = opts($opt{S} or ""); + my $ltfile = $opt{o}; + my $linked = 0; + if (not less_is_test($less)) { + print "$less is not compiled to support LESSTEST\n"; + my ($dir) = $less =~ m|^(.*)/[^/]*$|; + print "To fix: cd $dir; make clean; make LESSTEST=1\n"; + exit 1; + } + if ($textfile =~ m|/|) { + my ($basename) = $textfile =~ m|^.*/([^/]+)$|; + if (not link $textfile, $basename) { + print "cannot link $textfile to $basename: $!\n"; + exit 1; + } + $linked = 1; + $textfile = $basename; + } + if (not defined $ltfile) { + for (my $i = 0;; ++$i) { + my $suffix = $i ? $i : ""; + $ltfile = "lt/$textfile$suffix.lt"; + last if not -e $ltfile; + } + } + $ls_opts = "-S$ls_opts" if $ls_opts; + my $cmd = "LINES=$lines COLUMNS=$columns $lesstest $lt_opts $ls_opts -s '$lt_screen' -o '$ltfile' -- $less '$textfile'"; + print "$cmd\n" if $verbose; + my $err = system($cmd); + if ($err) { + unlink $ltfile; + } else { + print "created $ltfile\n"; + } + unlink $textfile if $linked; + exit $err; +} + +sub opts { + my ($opts) = @_; + $opts = "-$opts" if $opts =~ /^[^-]/; + return $opts; +} + +sub less_is_test { + my ($less) = @_; + my $ver = `$less -V`; + return $ver =~ /LESSTEST/; +} |