File: load_meta.t

package info (click to toggle)
libdist-metadata-perl 0.927-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 512 kB
  • sloc: perl: 1,077; makefile: 4
file content (55 lines) | stat: -rw-r--r-- 1,524 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
use strict;
use warnings;
use Test::More 0.96;
use Test::MockObject 1.09;

my ( $default, $loaded, $created ) = (-1) x 3;

Test::MockObject->new->fake_module('CPAN::Meta',
  VERSION  => sub { 2 },
  new      => sub { bless { %{ $_[1] } }, $_[0] },
  create   => sub { $created = $_[1]; shift->new(@_) },
  #as_struct => sub { +{ %{ $_[0] } } }, # unbless
  (map { ( $_ => sub { undef } ) } qw(name version provides)),
  map {
    ( "load_${_}_string" => sub { $loaded = $_[1]; $_[0]->new({loaded => $_[1]}); } )
  } qw(json yaml)
);

my $mod = 'Dist::Metadata';
eval "require $mod" or die $@;
$Dist::Metadata::VERSION ||= 0; # quiet warnings

foreach my $test (
  [ json => j => { 'META.json' => 'j' } ],
  [ yaml => y => { 'META.yml'  => 'y' } ],

  # usually it's spelled .yml but yaml spec suggests .yaml
  [ yaml => y => { 'tar/META.yaml' => 'y' } ],

  # json preferred
  [ json => j => { 'tar/META.json' => 'j', 'tar/META.yaml' => 'y' } ],
  )
{
  my ( $type, $content, $files ) = @$test;
  my $struct = { files => $files };

  new_ok( $mod, [ struct => $struct, determine_packages => 0 ] )->load_meta;
  is( $loaded, $content, "loaded $type" );
  is( $created, $default, "loaded not created" );
}

reset_vars();

new_ok( $mod,
  [ struct => { files => { 'README' => 'nevermind' } }, determine_packages => 0 ]
)->load_meta;

is( $loaded, $default, 'meta file not found, not loaded' );
is( ref($created), 'HASH', 'hash passed to create()' );

done_testing;

sub reset_vars {
  ( $loaded, $created ) = ($default) x 2;
}