Alien-Build

 view release on metacpan or  search on metacpan

t/alienfile.t  view on Meta::CPAN

    my $build = alienfile_ok q{
      use alienfile;
      share {
        before 'gather' => sub {};
        gather [];
      };
    };

    is $before_hook[0][0], 'gather_share';

  };

  subtest 'before gather ffi' => sub {

    my $build = alienfile_ok q{
      use alienfile;
      share {
        ffi {
          before 'gather' => sub {};
          gather [];
        };
      };
    };

    is $before_hook[0][0], 'gather_ffi';

  };

  subtest 'before gather system' => sub {

    my $build = alienfile_ok q{
      use alienfile;
      sys {
        before 'gather' => sub {};
        gather [];
      };
    };

    is $before_hook[0][0], 'gather_system';

  };

  subtest 'before build in sys' => sub {

    eval {
      alienfile q{
        use alienfile;

        sys {
          before 'build' => sub {
            return 42;
          };
          build [];
        };
      };
    };
    like $@, qr/before build is not allowed in sys block/, 'not allowed in sys block';

  };

  subtest 'before second argument must be a code ref' => sub {


    eval {
      alienfile q{
        use alienfile;

        share {
          before 'build' => 1;
          build [];
        };
      };
    };
    like $@, qr/before build argument must be a code reference/, 'must be code reference';

  };

  subtest 'arbitrary stages not allowed' => sub {

    eval {
      alienfile q{
        use alienfile;

        share {
          before 'bogus' => sub {};
          build [];
        };
      };
    };
    like $@, qr/No such stage bogus/, 'no bogus allowed';
  };


};


subtest 'after' => sub {

  my $mock = mock 'Alien::Build::Meta' => (
    class => 'Alien::Build::Meta',
  );

  my @after_hook;

  $mock->around(after_hook => sub {
    my $orig = shift;
    my (undef, $name, $code) = @_;
    push @after_hook, [$name, $code];
    $orig->(@_);
  });

  $mock->around(new => sub {
    my $orig = shift;
    @after_hook = ();
    $orig->(@_);
  });

  subtest 'after build in share' => sub {

    my $build = alienfile_ok q{
      use alienfile;

t/alienfile.t  view on Meta::CPAN

    my $build = alienfile_ok q{
      use alienfile;
      share {
        after 'gather' => sub {};
        gather [];
      };
    };

    is $after_hook[0][0], 'gather_share';

  };

  subtest 'after gather ffi' => sub {

    my $build = alienfile_ok q{
      use alienfile;
      share {
        ffi {
          after 'gather' => sub {};
          gather [];
        };
      };
    };

    is $after_hook[0][0], 'gather_ffi';

  };

  subtest 'after gather system' => sub {

    my $build = alienfile_ok q{
      use alienfile;
      sys {
        after 'gather' => sub {};
        gather [];
      };
    };

    is $after_hook[0][0], 'gather_system';

  };

  subtest 'after build in sys' => sub {

    eval {
      alienfile q{
        use alienfile;

        sys {
          after 'build' => sub {
            return 42;
          };
          build [];
        };
      };
    };
    like $@, qr/after build is not allowed in sys block/, 'not allowed in sys block';

  };

  subtest 'after second argument must be a code ref' => sub {


    eval {
      alienfile q{
        use alienfile;

        share {
          after 'build' => 1;
          build [];
        };
      };
    };
    like $@, qr/after build argument must be a code reference/, 'must be code reference';

  };

  subtest 'arbitrary stages not allowed' => sub {

    eval {
      alienfile q{
        use alienfile;

        share {
          after 'bogus' => sub {};
          build [];
        };
      };
    };
    like $@, qr/No such stage bogus/, 'no bogus allowed';
  };

};

subtest 'digest' => sub {

  local $Alien::Build::VERSION = $Alien::Build::VERSION || 2.57;

  my $build = alienfile_ok q{
    use alienfile;
    digest SHA256 => 'a7e79996a02d3dfc47f6f3ec043c67690dc06a10d091bf1d760fee7c8161391a';
    plugin 'Fetch::Local';
    probe sub { 'share' };
  };

  alienfile_skip_if_missing_prereqs;

  is
    $build->fetch('corpus/alien_build_plugin_digest_shapp/foo.txt.gz'),
    hash {
      field type     => 'file';
      field filename => 'foo.txt.gz';
      etc;
    },
    'fetch works with good sig';

  is
    dies { $build->fetch(__FILE__) },
    match qr/SHA256 digest does not match/,
    'fetch dies with bad sig';



( run in 1.153 second using v1.01-cache-2.11-cpan-39bf76dae61 )