Commit | Line | Data |
4805c465 |
1 | use strict; |
2 | use warnings; |
6dca83ef |
3 | use FindBin qw/$Bin/; |
43ca94af |
4 | use Test::More; |
4805c465 |
5 | |
6 | BEGIN { use_ok 'Gitalist::Model::Git' } |
7 | |
0caa4dd2 |
8 | my $m = Git::Repos->new({ repo_dir => "$Bin/lib/repositories" }); |
43ca94af |
9 | isa_ok($m, 'Git::Repos'); |
4805c465 |
10 | |
11 | # 'bare.git' is a bare git repository in the repository dir |
12 | use Path::Class; |
13 | my $repoBare = Path::Class::Dir->new('t/lib/repositories/bare.git'); |
a88a2b6d |
14 | ok( $m->is_git_repo( $repoBare ), 'is_git_repo true for bare git repo' ); |
4805c465 |
15 | |
16 | # 'working' is a working copy w/ git repo in the repository dir |
17 | my $repoWorking = Path::Class::Dir->new('t/lib/repositories/working'); |
a88a2b6d |
18 | #ok( $m->is_git_repo( $repoWorking ), 'is_git_repo true for git repo in working copy' ); |
4805c465 |
19 | |
20 | # 'empty.git' is an empty directory in the repository dir |
21 | my $repoEmpty = Path::Class::Dir->new('t/lib/repositories/empty.git'); |
a88a2b6d |
22 | ok( ! $m->is_git_repo( $repoEmpty ), 'is_git_repo is false for empty dir' ); |
4805c465 |
23 | |
27e05d7b |
24 | my $projectList = $m->list_projects('t/lib/repositories'); |
a88a2b6d |
25 | ok( scalar @{$projectList} == 2, 'list_projects returns an array with the correct number of members' ); |
27e05d7b |
26 | is( $projectList->[0]->{name}, 'bare.git', 'list_projects has correct name for "bare.git" repo' ); |
0e2b6322 |
27 | #ok( $projectList->[1]->{name} eq 'working/.git', 'list_projects has correct name for "working" repo' ); |
4805c465 |
28 | |
4805c465 |
29 | |
a88a2b6d |
30 | # Liberally borrowed from rafl's gitweb |
31 | my $repo = 'repo1'; |
32 | |
0ee97fec |
33 | like($m->head_hash('HEAD', $repo), qr/^([0-9a-fA-F]{40})$/, 'head_hash'); |
a88a2b6d |
34 | |
35 | { |
27e05d7b |
36 | my @tree = $m->list_tree('3bc0634310b9c62222bb0e724c11ffdfb297b4ac', $repo); |
89a18cae |
37 | is(scalar @tree, 1, "tree array contains one entry."); |
a88a2b6d |
38 | is_deeply($tree[0], { |
89a18cae |
39 | mode => oct 100644, |
40 | modestr => '-rw-r--r--', |
41 | type => 'blob', |
42 | object => '257cc5642cb1a054f08cc83f2d943e56fd3ebe99', |
43 | file => 'file1' |
a88a2b6d |
44 | }); |
45 | |
46 | is($m->get_object_mode_string($tree[0]), '-rw-r--r--'); |
47 | } |
48 | |
27e05d7b |
49 | is($m->get_object_type('729a7c3f6ba5453b42d16a43692205f67fb23bc1', $repo), 'tree'); |
50 | is($m->get_object_type('257cc5642cb1a054f08cc83f2d943e56fd3ebe99', $repo), 'blob'); |
51 | is($m->get_object_type('5716ca5987cbf97d6bb54920bea6adde242d87e6', $repo), 'blob'); |
a88a2b6d |
52 | |
27e05d7b |
53 | is($m->cat_file('257cc5642cb1a054f08cc83f2d943e56fd3ebe99', $repo), "foo\n"); |
54 | is($m->cat_file('5716ca5987cbf97d6bb54920bea6adde242d87e6', $repo), "bar\n"); |
a88a2b6d |
55 | |
27e05d7b |
56 | is($m->diff('3bc0634310b9c62222bb0e724c11ffdfb297b4ac', '3f7567c7bdf7e7ebf410926493b92d398333116e', $repo), <<EOD); |
a88a2b6d |
57 | diff --git a/file1 b/file1 |
58 | index 257cc56..5716ca5 100644 |
59 | --- a/file1 |
60 | +++ b/file1 |
61 | @@ -1 +1 @@ |
62 | -foo |
63 | +bar |
89a18cae |
64 | EOD |
65 | |
43ca94af |
66 | done_testing; |
67 | |