/t/metaonly.t

http://github.com/dagolden/app-mymeta_requires · Raku · 66 lines · 56 code · 5 blank · 5 comment · 2 complexity · 11f5e5f5f60600c4dd7cf18c5ad39a4c MD5 · raw file

  1. use 5.006;
  2. use strict;
  3. use warnings;
  4. use Capture::Tiny qw/capture/;
  5. use File::pushd qw/pushd/;
  6. use File::Spec::Functions qw/catdir/;
  7. use Test::Deep;
  8. use Test::More 0.92;
  9. use App::mymeta_requires;
  10. # Everything listed in t/data/metaonly/META.json file
  11. # We should usually never have X::Configure::Requires because those would
  12. # have to be satisfied before MYMETA is created, but we force it with
  13. # a bogus module
  14. my %all_reqs = map { $_ => 1 } qw(
  15. X::Configure::Requires
  16. X::Runtime::Requires
  17. X::Runtime::Recommends
  18. X::Runtime::Suggests
  19. X::Build::Requires
  20. X::Test::Requires
  21. X::Develop::Requires
  22. );
  23. my @cases = (
  24. {
  25. options => [],
  26. remove => [ qw/X::Develop::Requires/ ],
  27. },
  28. {
  29. options => [ qw/--develop/ ],
  30. remove => [ ],
  31. },
  32. {
  33. options => [ qw/--no-suggests/ ],
  34. remove => [ qw/X::Runtime::Suggests X::Develop::Requires/ ],
  35. },
  36. {
  37. options => [ qw/--no-recommends/ ],
  38. remove => [ qw/X::Runtime::Recommends X::Develop::Requires/ ],
  39. },
  40. {
  41. options => [ qw/--no-build --develop/ ],
  42. remove => [ qw/X::Build::Requires/ ],
  43. },
  44. {
  45. options => [ qw/--no-configure --develop/ ],
  46. remove => [ qw/X::Configure::Requires/ ],
  47. },
  48. );
  49. for my $c ( @cases ) {
  50. my $wd = pushd( catdir( qw/t data metaonly/ ) );
  51. my @options = @{$c->{options}};
  52. my $label = @options ? join(" ", @options) : "(default)";
  53. local @ARGV = (@options);
  54. my $app = App::mymeta_requires->new;
  55. my %expected = %all_reqs;
  56. delete $expected{$_} for @{ $c->{remove} };
  57. my $output = capture { $app->run };
  58. cmp_deeply( [split "\n", $output], bag(sort keys %expected), $label );
  59. }
  60. done_testing;
  61. # COPYRIGHT