The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
use strict;
use warnings;
use Test::More;
use Path::Extended;
use File::Path;
use File::Temp qw/tempdir/;

my $tmpdir = tempdir();

subtest 'subsumes' => sub {
  ok dir('t/foo/bar')->subsumes('t/foo/bar/baz'), 't/foo/bar subsumes t/foo/bar/baz';

  ok !dir('t/foo/bar')->subsumes('t/foo/baz/bar'), 't/foo/bar does not subsume t/foo/baz/bar';
};

subtest 'subsumes_win32' => sub {
  unless ($^O eq 'MSWin32') {
    SKIP: { skip 'this is Win32 only', 1; fail };
    return;
  }

  ok dir('C:/foo/bar')->subsumes('C:/foo/bar/baz'), 'C:/foo/bar subsumes C:/foo/bar/baz';
  ok !dir('C:/foo/bar')->subsumes('D:/foo/bar/baz'), 'C:/foo/bar does not subsume D:/foo/bar/baz';

  ok !dir('C:/foo/bar')->subsumes('C:/foo/baz/bar'), 't/foo/bar does not subsume t/foo/baz/bar';
};

done_testing;

END {
  rmtree $tmpdir if $tmpdir && -d $tmpdir;
}