File: 03_api.t

package info (click to toggle)
zim 0.25-1
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 2,404 kB
  • ctags: 774
  • sloc: perl: 16,381; python: 99; sh: 91; makefile: 47; xml: 8
file content (55 lines) | stat: -rw-r--r-- 1,265 bytes parent folder | download
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
require Test::Simple;
require 't/env.pm';
use strict;

my %API = (
	read_pages => {
		modules => [qw/Zim Zim::Selection/],
		methods => [qw/
			list_pages
			resolve_name resolve_page get_page
		/],
		#get_selection search
	},
	write_pages => {
		modules => [qw/Zim Zim::Store Zim::Store::Files/],
		methods => [qw/copy_page move_page delete_page/],
	},
	documents => {
		modules => [qw/Zim Zim::Store Zim::Store::Files/],
		methods => [qw/document_root document_dir resolve_file store_file relative_path/],
	},
	documents_page => {
		modules => [qw/Zim::Page/],
		methods => [qw/document_dir resolve_file store_file relative_path/],
	},
);

open LIST, 'MANIFEST' or die $!;
while (<LIST>) {
	chomp;
	s#^lib/## or next;
	s#\.\w+##;
	s#/#::#g;
	push @{$API{read_pages}{modules}}, $_
		if m#^Zim::Store#;
}
close LIST;

my $t = 0;
$t += scalar @{$_->{modules}} for values %API;
Test::Simple->import(tests => $t);

for my $api (keys %API) {
	my @m = @{$API{$api}{methods}};
	for my $mod (@{$API{$api}{modules}}) {
		eval "require $mod"; die $@ if $@;
		my $report = '';
		for my $m (@m) {
			$report .= "#\tFailed $m\(\)\n" unless $mod->can($m);
		}
		warn "# $mod fails '$api' API\n", $report if length $report;
		ok($report eq '', "$mod supports '$api' API");
	}
}