]>
Commit | Line | Data |
---|---|---|
7f684a2a RT |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2011 Roberto Tyley | |
4 | # | |
5 | ||
6 | test_description='Correctly identify and parse loose object headers | |
7 | ||
8 | There are two file formats for loose objects - the original standard | |
9 | format, and the experimental format introduced with Git v1.4.3, later | |
10 | deprecated with v1.5.3. Although Git no longer writes the | |
11 | experimental format, objects in both formats must be read, with the | |
12 | format for a given file being determined by the header. | |
13 | ||
14 | Detecting file format based on header is not entirely trivial, not | |
15 | least because the first byte of a zlib-deflated stream will vary | |
16 | depending on how much memory was allocated for the deflation window | |
17 | buffer when the object was written out (for example 4KB on Android, | |
18 | rather that 32KB on a normal PC). | |
19 | ||
20 | The loose objects used as test vectors have been generated with the | |
21 | following Git versions: | |
22 | ||
23 | standard format: Git v1.7.4.1 | |
24 | experimental format: Git v1.4.3 (legacyheaders=false) | |
25 | standard format, deflated with 4KB window size: Agit/JGit on Android | |
26 | ' | |
27 | ||
28 | . ./test-lib.sh | |
7f684a2a RT |
29 | |
30 | assert_blob_equals() { | |
31 | printf "%s" "$2" >expected && | |
32 | git cat-file -p "$1" >actual && | |
33 | test_cmp expected actual | |
34 | } | |
35 | ||
36 | test_expect_success setup ' | |
02380389 | 37 | cp -R "$TEST_DIRECTORY/t1013/objects" .git/ && |
7f684a2a RT |
38 | git --version |
39 | ' | |
40 | ||
41 | test_expect_success 'read standard-format loose objects' ' | |
42 | git cat-file tag 8d4e360d6c70fbd72411991c02a09c442cf7a9fa && | |
43 | git cat-file commit 6baee0540ea990d9761a3eb9ab183003a71c3696 && | |
44 | git ls-tree 7a37b887a73791d12d26c0d3e39568a8fb0fa6e8 && | |
45 | assert_blob_equals "257cc5642cb1a054f08cc83f2d943e56fd3ebe99" "foo$LF" | |
46 | ' | |
47 | ||
48 | test_expect_success 'read experimental-format loose objects' ' | |
49 | git cat-file tag 76e7fa9941f4d5f97f64fea65a2cba436bc79cbb && | |
50 | git cat-file commit 7875c6237d3fcdd0ac2f0decc7d3fa6a50b66c09 && | |
51 | git ls-tree 95b1625de3ba8b2214d1e0d0591138aea733f64f && | |
52 | assert_blob_equals "2e65efe2a145dda7ee51d1741299f848e5bf752e" "a" && | |
53 | assert_blob_equals "9ae9e86b7bd6cb1472d9373702d8249973da0832" "ab" && | |
54 | assert_blob_equals "85df50785d62d3b05ab03d9cbf7e4a0b49449730" "abcd" && | |
55 | assert_blob_equals "1656f9233d999f61ef23ef390b9c71d75399f435" "abcdefgh" && | |
56 | assert_blob_equals "1e72a6b2c4a577ab0338860fa9fe87f761fc9bbd" "abcdefghi" && | |
57 | assert_blob_equals "70e6a83d8dcb26fc8bc0cf702e2ddeb6adca18fd" "abcdefghijklmnop" && | |
58 | assert_blob_equals "bd15045f6ce8ff75747562173640456a394412c8" "abcdefghijklmnopqrstuvwx" | |
59 | ' | |
60 | ||
61 | test_expect_success 'read standard-format objects deflated with smaller window buffer' ' | |
62 | git cat-file tag f816d5255855ac160652ee5253b06cd8ee14165a && | |
63 | git cat-file tag 149cedb5c46929d18e0f118e9fa31927487af3b6 | |
64 | ' | |
65 | ||
66 | test_done |