diff --git a/META6.json b/META6.json index 5bcad19..0918894 100644 --- a/META6.json +++ b/META6.json @@ -7,8 +7,7 @@ "Nathan McCarty " ], "depends": [ - "paths", - "Terminal::ANSIColor" + "paths" ], "provides": { "IUtils": "lib/IUtils.rakumod", diff --git a/bin/iutils b/bin/iutils index 2000339..9c2671d 100755 --- a/bin/iutils +++ b/bin/iutils @@ -1,14 +1,10 @@ #!/usr/bin/env raku use v6.d; - -use Terminal::ANSIColor; - use IUtils; use IUtils::Regexes; use IUtils::Compiler; # TODO: Add filtering for tests based on module/name -# TODO: Move some of this functionality into methods for the relevant structs #| Execute the tests in an idris project multi MAIN( "test", @@ -22,68 +18,34 @@ multi MAIN( my @runables = @packages.map: *.runnables; # Run the tests my $basedir = $*CWD; - my $total-failures = 0; for @runables -> $runable { - my $package-failures = 0; # Make sure the package is built pack-build $runable.ipkg.relative; # CD to the local directory to make sure idris can exec the expressions indir $runable.ipkg.parent, { next unless $runable.tests.elems > 0; - my $test-module-name = - colored($runable.ipkg.relative($basedir), 'magenta bold'); - say "{colored '*', 'yellow bold'} Testing $test-module-name"; + say "** Testing {$runable.ipkg.relative: $basedir}"; for $runable.tests.keys -> $module-name { - my $module-failures = 0; my $module = $runable.tests{$module-name}; next unless $module.tests.elems > 0; - my $colored-module = colored $module-name, 'cyan bold'; - say "{colored '**', 'magenta bold'} Testing $colored-module" - .indent(2); + say "-- Testing $module-name".indent(2); for $module.tests -> $test { try { - # FIXME this doesn't actually capture the exit code idris-exec $test, $module.source.relative; } - my $testf = colored $test, 'underline'; if $! { - # TODO: Don't show stdout if its empty - $module-failures += 1; - say "{colored '+', 'red'} $testf: {colored 'FAIL', 'red bold'}" - .indent(4); + my $stdout = $1.err.lines.map(*.indent(8)).join("\n"); + say "+ $test: FAIL".indent(4); say "stdout:".indent(6); - say $!.err.lines.map(*.indent(8)).join("\n"); - say (colored 'exit code', 'red').indent(6), - ": {$!.exit-code}"; + $!.err.lines.map(*.indent(8)).join("\n"); + say "stderr:".indent(6); + $!.err.lines.map(*.indent(8)).join("\n"); + say "exit code: {$!.exit-code}" } else { - say "{colored '+', 'green'} $testf: {colored 'pass', 'green'}" - .indent(4); + say "+ $test: Pass".indent(4); } } - if $module-failures == 0 { - say "All $colored-module ".indent(4), - colored('tests passed', 'green underline'); - } else { - say "$module-failures $colored-module ".indent(4), - colored('tests failed', 'red bold underline'); - } - $package-failures += $module-failures; } - if $package-failures == 0 { - say "All $test-module-name ".indent(2), - colored('tests passed', 'green underline'); - } else { - say "$package-failures $test-module-name ".indent(2), - colored('tests failed', 'red bold underline'); - } - $total-failures += $package-failures; - say ''; - } - say ''; - if $total-failures == 0 { - say 'All ', colored('tests passed', 'green underline'); - } else { - say $total-failures, ' ', colored('tests failed', 'red bold underline'); } } } diff --git a/lib/IUtils/Compiler.rakumod b/lib/IUtils/Compiler.rakumod index 90054c6..d8bfcba 100644 --- a/lib/IUtils/Compiler.rakumod +++ b/lib/IUtils/Compiler.rakumod @@ -66,7 +66,6 @@ sub idris-run(*@cmd) is export { return $out; } -# TODO: Special handling for IO Bool to make this eaiser #| Exec the expression with the given name in the given file sub idris-exec($expr, $file) is export { idris-run '--find-ipkg', '--exec', $expr, $file