| #!/bin/sh |
| |
| test_description='test git repo structure' |
| |
| . ./test-lib.sh |
| |
| test_expect_success 'empty repository' ' |
| test_when_finished "rm -rf repo" && |
| git init repo && |
| ( |
| cd repo && |
| cat >expect <<-\EOF && |
| | Repository structure | 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 structure >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 structure | 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 structure >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 structure --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 structure --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 structure --progress >out 2>err && |
| |
| test_file_not_empty out && |
| test_grep "Counting references: 2, done." err && |
| test_grep "Counting objects: 3, done." err && |
| |
| GIT_PROGRESS_DELAY=0 git repo structure --no-progress >out 2>err && |
| |
| test_file_not_empty out && |
| test_line_count = 0 err |
| ) |
| ' |
| |
| test_done |