diff --git a/.appveyor.yml b/.appveyor.yml
index 7027d617..d1d7c4ef 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -33,10 +33,8 @@ test_script:
- raku -I. xt/repository.rakutest
- raku -I. xt/install.rakutest
- # test explicitly via `prove t/*` and `raku t/foo.rakutest && raku t/bar.rakutest`
- # both should work, since all our CI envs have prove
- - raku -I. bin/zef --debug --/tap-harness --/prove --raku-test test .
- - raku -I. bin/zef --debug --/tap-harness --prove --/raku-test test .
+ # test zef test
+ - raku -I. bin/zef --debug --raku-test test .
# run relative local path test + install
- raku -I. bin/zef --debug install .
diff --git a/.circleci/config.yml b/.circleci/config.yml
index f2e94287..823e19f7 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -23,10 +23,8 @@ variables:
raku -I. xt/repository.rakutest
raku -I. xt/install.rakutest
- # test explicitly via `prove t/*` and `raku t/foo.rakutest && raku t/bar.rakutest`
- # both should work, since all our CI envs have prove
- raku -I. bin/zef --debug --/tap-harness --/prove --raku-test test .
- raku -I. bin/zef --debug --/tap-harness --prove --/raku-test test .
+ # test zef test
+ raku -I. bin/zef --debug test .
# run relative local path test + install
raku -I. bin/zef --debug install .
diff --git a/META6.json b/META6.json
index 9ac81c5b..4e97b15b 100644
--- a/META6.json
+++ b/META6.json
@@ -40,7 +40,6 @@
"Zef::Service::Shell::LegacyBuild" : "lib/Zef/Service/Shell/LegacyBuild.rakumod",
"Zef::Service::Shell::Test" : "lib/Zef/Service/Shell/Test.rakumod",
- "Zef::Service::Shell::prove" : "lib/Zef/Service/Shell/prove.rakumod",
"Zef::Service::Shell::unzip" : "lib/Zef/Service/Shell/unzip.rakumod",
"Zef::Service::Shell::tar" : "lib/Zef/Service/Shell/tar.rakumod",
"Zef::Service::Shell::curl" : "lib/Zef/Service/Shell/curl.rakumod",
diff --git a/lib/Zef/CLI.rakumod b/lib/Zef/CLI.rakumod
index 3432b131..23a994e0 100644
--- a/lib/Zef/CLI.rakumod
+++ b/lib/Zef/CLI.rakumod
@@ -311,6 +311,9 @@ package Zef::CLI {
note 'DEPRECATED: --depsonly is deprecated, please use --deps-only instead';
take '--deps-only'
}
+ elsif $arg eq '--prove' || $arg eq '--/prove' {
+ note "DEPRECATED: $arg will be ignored: The prove plugin has been removed and $arg may issue an error in the future.";
+ }
else {
take $arg
}
diff --git a/lib/Zef/Service/Shell/Test.rakumod b/lib/Zef/Service/Shell/Test.rakumod
index d5109a4b..c0b6459b 100644
--- a/lib/Zef/Service/Shell/Test.rakumod
+++ b/lib/Zef/Service/Shell/Test.rakumod
@@ -62,7 +62,7 @@ class Zef::Service::Shell::Test does Tester {
method test(IO() $path, Str :@includes, Supplier :$stdout, Supplier :$stderr --> Bool:D)
Test the files ending in C<.rakutest> C<.t6> or C<.t> in the C directory of the given C<$path> using the
- provided C<@includes> (e.g. C or C) via the C command. A C can be
+ provided C<@includes> (e.g. C or C) via the C command. A C can be
supplied as C<:$stdout> and C<:$stderr> to receive any output.
Returns C if all test files exited with 0.
diff --git a/lib/Zef/Service/Shell/prove.rakumod b/lib/Zef/Service/Shell/prove.rakumod
deleted file mode 100644
index 54fab19c..00000000
--- a/lib/Zef/Service/Shell/prove.rakumod
+++ /dev/null
@@ -1,149 +0,0 @@
-use Zef:ver($?DISTRIBUTION.meta // $?DISTRIBUTION.meta// '*'):api($?DISTRIBUTION.meta // '*'):auth($?DISTRIBUTION.meta // '');
-
-class Zef::Service::Shell::prove does Tester {
-
- =begin pod
-
- =title class Zef::Service::Shell::prove
-
- =subtitle A prove based implementation of the Tester interface
-
- =head1 Synopsis
-
- =begin code :lang
-
- use Zef;
- use Zef::Service::Shell::prove;
-
- my $prove = Zef::Service::Shell::prove.new;
-
- # Add logging if we want to see output
- my $stdout = Supplier.new;
- my $stderr = Supplier.new;
- $stdout.Supply.tap: { say $_ };
- $stderr.Supply.tap: { note $_ };
-
- # Assuming our current directory is a raku distribution
- # with no dependencies or all dependencies already installed...
- my $dist-to-test = $*CWD;
- my Str @includes = $*CWD.absolute;
- my $passed = so $prove.test($dist-to-test, :@includes, :$stdout, :$stderr);
- say $passed ?? "PASS" !! "FAIL";
-
- =end code
-
- =head1 Description
-
- C class for handling path based URIs ending in .rakutest / .t6 / .t using the C command.
-
- You probably never want to use this unless its indirectly through C;
- handling files and spawning processes will generally be easier using core language functionality. This
- class exists to provide the means for fetching a file using the C interfaces that the e.g. Test/TAP
- adapters use.
-
- =head1 Methods
-
- =head2 method probe
-
- method probe(--> Bool:D)
-
- Returns C if this module can successfully launch the C command.
-
- =head2 method test-matcher
-
- method test-matcher(Str() $uri --> Bool:D)
-
- Returns C if this module knows how to test C<$uri>, which it decides based on if C<$uri> exists
- on local file system.
-
- =head2 method test
-
- method test(IO() $path, Str :@includes, Supplier :$stdout, Supplier :$stderr --> Bool:D)
-
- Test the files ending in C<.rakutest> C<.t6> or C<.t> in the C directory of the given C<$path> using the
- provided C<@includes> (e.g. C or C) via the C command. A C can be
- supplied as C<:$stdout> and C<:$stderr> to receive any output.
-
- Returns C if all tests passed according to C.
-
- =end pod
-
- my Lock $probe-lock = Lock.new;
- my Bool $probe-cache;
-
- #| Return true if the `prove` command is available to use
- method probe(--> Bool:D) {
- $probe-lock.protect: {
- return $probe-cache if $probe-cache.defined;
- my $probe = self!probe;
- return $probe-cache = $probe;
- }
- }
-
- method !probe(--> Bool:D) {
- if $*EXECUTABLE.absolute.contains(" ") {
- # prove can't deal with spaces in the executable path.
- # It assumes everything after the first space to be args to the
- # executable. So we can't use prove if our executables path
- # contains a space. Sad.
- # https://metacpan.org/dist/Test-Harness/view/bin/prove#-exec
- return False
- }
- # `prove --help` has exitcode == 1 unlike most other processes
- # so it requires a more convoluted probe check
- try {
- my $proc = $*DISTRO.is-win
- ?? Zef::zrun('prove.bat', '--help', :out, :!err)
- !! Zef::zrun('prove', '--help', :out, :!err);
- my @out = $proc.out.lines;
- $proc.out.close;
- CATCH {
- when X::Proc::Unsuccessful {
- return True if $proc.exitcode == 1 && @out.first(*.contains("-exec" | "Mac OS"));
- }
- default { return False }
- }
- }
- # Should't reach here based on prior exitcode comment
- return False;
- }
-
- #| Return true if this Tester understands the given uri/path
- method test-matcher(Str() $uri --> Bool:D) { return $uri.IO.e }
-
- #| Test the given paths t/ directory using any provided @includes
- method test(IO() $path, Str :@includes, Supplier :$stdout, Supplier :$stderr --> Bool:D) {
- die "cannot test path that does not exist: {$path}" unless $path.e;
- my $test-path = $path.child('t');
- return True unless $test-path.e;
-
- my Str $test-path-relative = $test-path.relative($path);
- my Str $test-path-cwd = $path.absolute;
-
- my %ENV = %*ENV;
- my @cur-lib = %ENV.?chars ?? %ENV.split($*DISTRO.cur-sep) !! ();
- %ENV = (|@includes, |@cur-lib).join($*DISTRO.cur-sep);
-
- my @args =
- '--ext', '.rakutest',
- '--ext', '.t',
- '--ext', '.t6',
- '-r',
- ('--verbose' if %*ENV),
- ;
- my $passed;
- react {
- my $proc = $*DISTRO.is-win
- ?? Proc::Async.new(:win-verbatim-args, 'prove.bat', |@args, '-e',
- '"' ~ $*EXECUTABLE.absolute ~ '"',
- '"' ~ $test-path-relative ~ '"')
- !! Proc::Async.new('prove', |@args, '-e',
- $*EXECUTABLE.absolute,
- $test-path-relative);
- whenever $proc.stdout.lines { $stdout.emit($_) }
- whenever $proc.stderr.lines { $stderr.emit($_) }
- whenever $proc.start(:%ENV, :cwd($test-path-cwd)) { $passed = $_.so }
- }
- return so $passed;
- }
-}
diff --git a/lib/Zef/Service/TAP.rakumod b/lib/Zef/Service/TAP.rakumod
index 3d7e3fa9..a157a019 100644
--- a/lib/Zef/Service/TAP.rakumod
+++ b/lib/Zef/Service/TAP.rakumod
@@ -39,8 +39,8 @@ class Zef::Service::TAP does Tester {
You probably never want to use this unless its indirectly through C;
handling files and spawning processes will generally be easier using core language functionality. This
- class exists to provide the means for fetching a file using the C interfaces that the e.g. Test/prove
- adapters use.
+ class exists to provide the means for fetching a file using the C interfaces that the e.g. Test
+ adapter uses.
=head1 Methods
diff --git a/lib/Zef/Test.rakumod b/lib/Zef/Test.rakumod
index 1f3d7609..47bbcbd0 100644
--- a/lib/Zef/Test.rakumod
+++ b/lib/Zef/Test.rakumod
@@ -19,7 +19,7 @@ class Zef::Test does Tester does Pluggable {
# Setup with a single tester backend
my $tester = Zef::Test.new(
backends => [
- { module => "Zef::Service::Shell::prove" },
+ { module => "Zef::Service::Shell::Test" },
],
);
diff --git a/resources/config.json b/resources/config.json
index 31a8b775..0a6d6ac7 100644
--- a/resources/config.json
+++ b/resources/config.json
@@ -147,10 +147,6 @@
"module" : "Zef::Service::TAP",
"comment" : "Raku TAP::Harness adapter"
},
- {
- "short-name" : "prove",
- "module" : "Zef::Service::Shell::prove"
- },
{
"short-name" : "raku-test",
"module" : "Zef::Service::Shell::Test"
diff --git a/t/00-load.rakutest b/t/00-load.rakutest
index 650a4930..6c92ba36 100644
--- a/t/00-load.rakutest
+++ b/t/00-load.rakutest
@@ -35,7 +35,6 @@ subtest 'Plugins' => {
use-ok("Zef::Service::Shell::DistributionBuilder");
use-ok("Zef::Service::Shell::LegacyBuild");
use-ok("Zef::Service::Shell::Test");
- use-ok("Zef::Service::Shell::prove");
use-ok("Zef::Service::Shell::unzip");
use-ok("Zef::Service::Shell::tar");
use-ok("Zef::Service::Shell::curl");