Decode getpwuid values
[catagits/Gitalist.git] / t / 02git_repo.t
index be1abbf..2344d8d 100644 (file)
@@ -14,16 +14,43 @@ isa_ok($repo, 'Gitalist::Git::Repo');
 
 is($repo->repo_dir, $repo_dir, "repo->repo_dir is correct" );
 
+# 'bare.git' is a bare git repository in the repository dir
+use Path::Class;
+my $repoBare = Path::Class::Dir->new('t/lib/repositories/bare.git');
+ok( $repo->_is_git_repo( $repoBare ), 'is_git_repo true for bare git repo' );
+
+# 'working' is a working copy w/ git repo in the repository dir
+my $repoWorking = Path::Class::Dir->new('t/lib/repositories/working');
+
+# 'empty.git' is an empty directory in the repository dir
+my $repoEmpty = Path::Class::Dir->new('t/lib/repositories/empty.git');
+ok( ! $repo->_is_git_repo( $repoEmpty ), 'is_git_repo is false for empty dir' );
+
 my $project_list = $repo->projects;
-isa_ok(@$project_list[0], 'Gitalist::Git::Project');
+ok(scalar @{$project_list} == 3, 'list_projects returns an array with the correct number of members' );
+isa_ok($project_list->[0], 'Gitalist::Git::Project');
+is($project_list->[0]->{name}, 'bare.git', 'list_projects has correct name for "bare.git" repo' );
 
 dies_ok {
-    my $project = $repo->project('NoSuchProject');
+    my $project = $repo->get_project('NoSuchProject');
 } 'throws exception for invalid project';
 
 dies_ok {
-    my $project = $repo->project();
+    my $project = $repo->get_project();
 } 'throws exception for no project';
 
-my $project = $repo->project('repo1');
+dies_ok {
+    my $project = $repo->get_project('../../../');
+} 'throws exception for directory traversal';
+
+my $project = $repo->get_project('repo1');
 isa_ok($project, 'Gitalist::Git::Project');
+
+
+# check for bug where get_project blew up if repo_dir
+# was a relative path
+lives_ok {
+    my $repo2_dir = "$Bin/lib/../lib/repositories";
+    my $repo2 = Gitalist::Git::Repo->new( repo_dir => $repo2_dir );
+    my $repo2_proj = $repo2->get_project('repo1');
+} 'relative repo_dir properly handled';