Commit | Line | Data |
5ed74c87 |
1 | use FindBin qw/$Bin/; |
df629266 |
2 | BEGIN { |
0556ab26 |
3 | my $env = "$FindBin::Bin/../script/env"; |
df629266 |
4 | if (-r $env) { |
5 | do $env or die $@; |
6 | } |
7 | } |
8 | |
56b6dbe6 |
9 | use strict; |
10 | use warnings; |
56b6dbe6 |
11 | use Test::More qw/no_plan/; |
3bbb1202 |
12 | use Test::Exception; |
56b6dbe6 |
13 | |
14 | use Data::Dumper; |
15 | |
cd169152 |
16 | BEGIN { use_ok 'Gitalist::Git::CollectionOfRepositories::FromDirectory' } |
56b6dbe6 |
17 | |
58251520 |
18 | my $repo_dir = "$Bin/lib/repositories"; |
cd169152 |
19 | my $repo = Gitalist::Git::CollectionOfRepositories::FromDirectory->new( repo_dir => $repo_dir ); |
20 | isa_ok($repo, 'Gitalist::Git::CollectionOfRepositories::FromDirectory'); |
56b6dbe6 |
21 | |
4baaeeef |
22 | is($repo->repo_dir, $repo_dir, "repo->repo_dir is correct" ); |
56b6dbe6 |
23 | |
85762693 |
24 | # 'bare.git' is a bare git repository in the repository dir |
25 | use Path::Class; |
26 | my $repoBare = Path::Class::Dir->new('t/lib/repositories/bare.git'); |
27 | ok( $repo->_is_git_repo( $repoBare ), 'is_git_repo true for bare git repo' ); |
28 | |
29 | # 'working' is a working copy w/ git repo in the repository dir |
30 | my $repoWorking = Path::Class::Dir->new('t/lib/repositories/working'); |
31 | |
32 | # 'empty.git' is an empty directory in the repository dir |
33 | my $repoEmpty = Path::Class::Dir->new('t/lib/repositories/empty.git'); |
34 | ok( ! $repo->_is_git_repo( $repoEmpty ), 'is_git_repo is false for empty dir' ); |
35 | |
82bc0f05 |
36 | my $repository_list = $repo->repositories; |
37 | ok(scalar @{$repository_list} == 3, '->repositories is an array with the correct number of members' ); |
38 | isa_ok($repository_list->[0], 'Gitalist::Git::Repository'); |
39 | is($repository_list->[0]->{name}, 'bare.git', '->repositories has correct name for "bare.git" repo' ); |
ba033c36 |
40 | |
3bbb1202 |
41 | dies_ok { |
82bc0f05 |
42 | my $repository = $repo->get_repository('NoSuchRepository'); |
43 | } 'throws exception for invalid repository'; |
3bbb1202 |
44 | |
45 | dies_ok { |
82bc0f05 |
46 | my $repository = $repo->get_repository(); |
47 | } 'throws exception for no repository'; |
3bbb1202 |
48 | |
5232dbdd |
49 | dies_ok { |
82bc0f05 |
50 | my $repository = $repo->get_repository('../../../'); |
5232dbdd |
51 | } 'throws exception for directory traversal'; |
52 | |
82bc0f05 |
53 | my $repository = $repo->get_repository('repo1'); |
54 | isa_ok($repository, 'Gitalist::Git::Repository'); |
ca6e3675 |
55 | |
56 | |
b5ce0e6a |
57 | # check for bug where get_repository blew up if repo_dir |
ca6e3675 |
58 | # was a relative path |
59 | lives_ok { |
60 | my $repo2_dir = "$Bin/lib/../lib/repositories"; |
cd169152 |
61 | my $repo2 = Gitalist::Git::CollectionOfRepositories::FromDirectory->new( repo_dir => $repo2_dir ); |
b5ce0e6a |
62 | my $repo2_proj = $repo2->get_repository('repo1'); |
ca6e3675 |
63 | } 'relative repo_dir properly handled'; |
1d727634 |
64 | |
65 | my $repo_eok = Gitalist::Git::CollectionOfRepositories::FromDirectory->new( |
66 | repo_dir => $repo_dir, |
67 | export_ok => 'export-ok', |
68 | ); |
69 | |
70 | my @eok_repos = @{$repo_eok->repositories}; |
71 | |
72 | is(1, @eok_repos, "Found the 1 export-ok repo"); |
73 | is('repo1', $eok_repos[0]->name, "Found repo1 export-ok repo"); |