git/t/t1901-repo-stats.sh

130 lines
2.9 KiB
Bash
Executable File

#!/bin/sh
test_description='test git repo stats'
. ./test-lib.sh
test_expect_success 'empty repository' '
test_when_finished "rm -rf repo" &&
git init repo &&
(
cd repo &&
cat >expect <<-\EOF &&
| Repository stats | Value |
| ------------------- | ----- |
| * References | |
| * Count | 0 |
| * Branches | 0 |
| * Tags | 0 |
| * Remotes | 0 |
| * Others | 0 |
| | |
| * Reachable objects | |
| * Count | 0 |
| * Commits | 0 |
| * Trees | 0 |
| * Blobs | 0 |
| * Tags | 0 |
EOF
git repo stats >out 2>err &&
test_cmp expect out &&
test_line_count = 0 err
)
'
test_expect_success 'repository with references and objects' '
test_when_finished "rm -rf repo" &&
git init repo &&
(
cd repo &&
test_commit_bulk 42 &&
git tag -a foo -m bar &&
oid="$(git rev-parse HEAD)" &&
git update-ref refs/remotes/origin/foo "$oid" &&
# Also creates a commit, tree, and blob.
git notes add -m foo &&
cat >expect <<-\EOF &&
| Repository stats | Value |
| ------------------- | ----- |
| * References | |
| * Count | 4 |
| * Branches | 1 |
| * Tags | 1 |
| * Remotes | 1 |
| * Others | 1 |
| | |
| * Reachable objects | |
| * Count | 130 |
| * Commits | 43 |
| * Trees | 43 |
| * Blobs | 43 |
| * Tags | 1 |
EOF
git repo stats >out 2>err &&
test_cmp expect out &&
test_line_count = 0 err
)
'
test_expect_success 'keyvalue and nul format' '
test_when_finished "rm -rf repo" &&
git init repo &&
(
cd repo &&
test_commit_bulk 42 &&
git tag -a foo -m bar &&
cat >expect <<-\EOF &&
references.branches.count=1
references.tags.count=1
references.remotes.count=0
references.others.count=0
objects.commits.count=42
objects.trees.count=42
objects.blobs.count=42
objects.tags.count=1
EOF
git repo stats --format=keyvalue >out 2>err &&
test_cmp expect out &&
test_line_count = 0 err &&
# Replace key and value delimiters for nul format.
tr "\n=" "\0\n" <expect >expect_nul &&
git repo stats --format=nul >out 2>err &&
test_cmp expect_nul out &&
test_line_count = 0 err
)
'
test_expect_success 'progress meter option' '
test_when_finished "rm -rf repo" &&
git init repo &&
(
cd repo &&
test_commit foo &&
GIT_PROGRESS_DELAY=0 git repo stats --progress >out 2>err &&
test_file_not_empty out &&
test_grep "Counting references: 100% (2/2), done." err &&
test_grep "Counting objects: 3, done." err &&
GIT_PROGRESS_DELAY=0 git repo stats --no-progress >out 2>err &&
test_file_not_empty out &&
test_line_count = 0 err
)
'
test_done