2 use strict; use warnings;
4 # enable autoflush on STDOUT.
5 # this is essential, because we print our statuslines without a newline
9 our @EXPORT = qw/status_init status status_completed/;
11 my $ansi_clear_line = "\033[2K";
12 my $ansi_save_cursor = "\0337";
13 my $ansi_restore_cursor = "\0338";
14 my %ansi_line_upwards;
19 # CONTINUOUS_INTEGRATION gets set when running under Travis, see
20 # https://docs.travis-ci.com/user/ci-environment/ and
21 # https://github.com/travis-ci/travis-ci/issues/1337
22 return (! -t STDOUT) || (
23 defined($ENV{CONTINUOUS_INTEGRATION}) &&
24 $ENV{CONTINUOUS_INTEGRATION} eq 'true');
27 # setup %ansi_line_upwards to map all working displays to the
28 # specific movement commands and initialize all status lines
31 my $displays = $args{displays};
32 $tests_total = $args{tests};
34 return if noninteractive();
36 for my $n (1 .. @$displays) {
37 # since we are moving upwards, get $display in reverse order
38 my $display = $displays->[-$n];
40 $ansi_line_upwards{$display} = "\033[$n\101";
42 # print an empty line for this status line
49 # generates the status text, prints it in the appropriate line
50 # and returns it, so it can be used in conjunction with C<Log()>
52 my ($display, $msg) = @_;
53 my $status = "[$display] $msg";
55 return $status if noninteractive();
59 $ansi_line_upwards{$display},
67 sub status_completed {
70 return if noninteractive();
75 "completed $num of $tests_total tests",