File: 210_depend.t

package info (click to toggle)
libconvert-binary-c-perl 0.85-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 13,260 kB
  • sloc: ansic: 47,820; perl: 4,980; yacc: 2,143; makefile: 61
file content (97 lines) | stat: -rw-r--r-- 2,509 bytes parent folder | download | duplicates (2)
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
################################################################################
#
# Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved.
# This program is free software; you can redistribute it and/or modify
# it under the same terms as Perl itself.
#
################################################################################

use Test;
use Convert::Binary::C @ARGV;

$^W = 1;

BEGIN { plan tests => 90 }

my $CCCFG = require './tests/include/config.pl';

eval {
  $c1 = Convert::Binary::C->new( Include => ['tests/include/files'] );
  $c2 = Convert::Binary::C->new( Include => ['tests/include/files'] );
};
ok($@,'',"failed to create Convert::Binary::C objects");

eval {
  $c1->parse_file( 'tests/include/files/files.h' );
  $c2->parse( <<CODE );
#include <empty.h>
#include <ifdef.h>
#include <ifnull.h>
#include <something.h>
CODE
};
ok($@,'',"failed to parse C-code");

eval {
  $dep1 = $c1->dependencies;
  $dep2 = $c2->dependencies;
  @files1a = $c1->dependencies;
  @files2a = $c2->dependencies;
};
ok($@,'',"failed to retrieve dependencies");

@files1s = keys %$dep1;
@files2s = keys %$dep2;

@incs = qw(
  tests/include/files/empty.h
  tests/include/files/ifdef.h
  tests/include/files/ifnull.h
  tests/include/files/something.h
);

@ref1 = ( 'tests/include/files/files.h', @incs );
@ref2 = @incs;

s/\\/\//g for @files1a, @files2a, @files1s, @files2s;

print "# \@files1a => @files1a\n";

ok( join(',', sort @ref1), join(',', sort @files1a),
    "dependency names differ" );

print "# \@files1s => @files1s\n";

ok( join(',', sort @ref1), join(',', sort @files1s),
    "dependency names differ" );

print "# \@files2a => @files2a\n";

ok( join(',', sort @ref2), join(',', sort @files2a),
    "dependency names differ" );

print "# \@files2s => @files2s\n";

ok( join(',', sort @ref2), join(',', sort @files2s),
    "dependency names differ" );

eval {
  $c2 = Convert::Binary::C->new( %$CCCFG );
  $c2->parse_file( 'tests/include/include.c' );
};
ok($@,'',"failed to create object / parse file");

eval {
  $dep2 = $c2->dependencies;
};
ok($@,'',"failed to retrieve dependencies");

# check that the size, mtime and ctime entries are correct
for my $dep ( $dep1, $dep2 ) {
  for my $file ( keys %$dep ) {
    my($size, $mtime, $ctime) = (stat($file))[7,9,10];
    ok( $size,  $dep->{$file}{size},  "size mismatch for '$file'" );
    ok( $mtime, $dep->{$file}{mtime}, "mtime mismatch for '$file'" );
    ok( $ctime, $dep->{$file}{ctime}, "ctime mismatch for '$file'" );
  }
}