github.com/ungtb10d/git-lfs@v2.5.2+incompatible/t/t-pointer.sh (about)

     1  #!/usr/bin/env bash
     2  
     3  . "$(dirname "$0")/testlib.sh"
     4  
     5  
     6  begin_test "pointer --file --stdin"
     7  (
     8    set -e
     9  
    10    echo "simple" > some-file
    11  
    12    input="version https://git-lfs.github.com/spec/v1
    13  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
    14  size 7"
    15  
    16    expected="Git LFS pointer for some-file
    17  
    18  version https://git-lfs.github.com/spec/v1
    19  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
    20  size 7
    21  
    22  Git blob OID: e18acd45d7e3ce0451d1d637f9697aa508e07dee
    23  
    24  Pointer from STDIN
    25  
    26  version https://git-lfs.github.com/spec/v1
    27  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
    28  size 7
    29  
    30  Git blob OID: e18acd45d7e3ce0451d1d637f9697aa508e07dee"
    31  
    32    [ "$expected" = "$(echo "$input" | git lfs pointer --file=some-file --stdin 2>&1)" ]
    33  )
    34  end_test
    35  
    36  begin_test "pointer --file --stdin mismatch"
    37  (
    38    set -e
    39  
    40    echo "simple" > some-file
    41  
    42    input="version https://git-lfs.github.com/spec/v1
    43  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
    44  size 123"
    45  
    46    set +e
    47    output=$(echo "$input" | git lfs pointer --file=some-file --stdin 2>&1)
    48    status=$?
    49    set -e
    50  
    51    [ "1" = "$status" ]
    52  
    53    expected="Git LFS pointer for some-file
    54  
    55  version https://git-lfs.github.com/spec/v1
    56  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
    57  size 7
    58  
    59  Git blob OID: e18acd45d7e3ce0451d1d637f9697aa508e07dee
    60  
    61  Pointer from STDIN
    62  
    63  version https://git-lfs.github.com/spec/v1
    64  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
    65  size 123
    66  
    67  Git blob OID: 905bcc24b5dc074ab870f9944178e398eec3b470
    68  
    69  Pointers do not match"
    70  
    71    [ "$expected" = "$output" ]
    72  )
    73  end_test
    74  
    75  begin_test "pointer --stdin"
    76  (
    77    set -e
    78  
    79    echo "version https://git-lfs.github.com/spec/v1
    80  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
    81  size 7" > valid-pointer
    82  
    83    output=$(cat valid-pointer | git lfs pointer --stdin 2>&1)
    84    expected="Pointer from STDIN
    85  
    86  version https://git-lfs.github.com/spec/v1
    87  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
    88  size 7"
    89  
    90    [ "$expected" = "$output" ]
    91  )
    92  end_test
    93  
    94  begin_test "pointer --stdin without stdin"
    95  (
    96    # this test doesn't work on Windows, it just operates like 'bad pointer' case
    97    # stdin isn't detectable as detached, it just times out with no content
    98    if [[ "$(is_stdin_attached)" == "0" ]]; then
    99      echo "Skipping pointer without stdin because STDIN attached"
   100      exit 0
   101    fi
   102    output=$(echo "" | git lfs pointer --stdin 2>&1)
   103    status=$?
   104  
   105    set -e
   106  
   107    expected="Cannot read from STDIN. The --stdin flag expects a pointer file from STDIN."
   108  
   109    [ "$expected" = "$output" ]
   110  
   111    [ "1" = "$status" ]
   112  )
   113  end_test
   114  
   115  begin_test "pointer --stdin with bad pointer"
   116  (
   117    output=$(echo "not a pointer" | git lfs pointer --stdin 2>&1)
   118    status=$?
   119  
   120    set -e
   121  
   122    expected="Pointer from STDIN
   123  
   124  Pointer file error: invalid header"
   125  
   126    diff -u <(printf "$expected") <(printf "$output")
   127  
   128    [ "1" = "$status" ]
   129  )
   130  end_test
   131  
   132  begin_test "pointer --file --pointer mismatch"
   133  (
   134    set -e
   135    echo "simple" > some-file
   136    echo "version https://git-lfs.github.com/spec/v1
   137  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
   138  size 123" > invalid-pointer
   139  
   140    expected="Git LFS pointer for some-file
   141  
   142  version https://git-lfs.github.com/spec/v1
   143  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
   144  size 7
   145  
   146  Git blob OID: e18acd45d7e3ce0451d1d637f9697aa508e07dee
   147  
   148  Pointer from invalid-pointer
   149  
   150  version https://git-lfs.github.com/spec/v1
   151  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
   152  size 123
   153  
   154  Git blob OID: 905bcc24b5dc074ab870f9944178e398eec3b470
   155  
   156  Pointers do not match"
   157  
   158    set +e
   159    output=$(git lfs pointer --file=some-file --pointer=invalid-pointer 2>&1)
   160    status=$?
   161    set -e
   162  
   163    [ "1" = "$status" ]
   164  
   165    [ "$expected" = "$output" ]
   166  )
   167  end_test
   168  
   169  begin_test "pointer --file --pointer"
   170  (
   171    set -e
   172    echo "simple" > some-file
   173    echo "version https://git-lfs.github.com/spec/v1
   174  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
   175  size 7" > valid-pointer
   176  
   177    expected="Git LFS pointer for some-file
   178  
   179  version https://git-lfs.github.com/spec/v1
   180  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
   181  size 7
   182  
   183  Git blob OID: e18acd45d7e3ce0451d1d637f9697aa508e07dee
   184  
   185  Pointer from valid-pointer
   186  
   187  version https://git-lfs.github.com/spec/v1
   188  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
   189  size 7
   190  
   191  Git blob OID: e18acd45d7e3ce0451d1d637f9697aa508e07dee"
   192  
   193  
   194    [ "$expected" = "$(git lfs pointer --file=some-file --pointer=valid-pointer 2>&1)" ]
   195  )
   196  end_test
   197  
   198  begin_test "pointer --pointer"
   199  (
   200    set -e
   201  
   202    echo "version https://git-lfs.github.com/spec/v1
   203  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
   204  size 7" > valid-pointer
   205  
   206    expected="Pointer from valid-pointer
   207  
   208  version https://git-lfs.github.com/spec/v1
   209  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
   210  size 7"
   211  
   212    [ "$expected" = "$(git lfs pointer --pointer=valid-pointer 2>&1)" ]
   213  )
   214  end_test
   215  
   216  begin_test "pointer missing --pointer"
   217  (
   218    output=$(git lfs pointer --pointer=missing-pointer 2>&1)
   219    status=$?
   220    set -e
   221  
   222    [ "1" = "$status" ]
   223  
   224    echo "$output"
   225    echo "$output" | grep "open missing-pointer:"
   226  )
   227  end_test
   228  
   229  begin_test "pointer invalid --pointer"
   230  (
   231    set -e
   232  
   233    echo "not a pointer" > some-pointer
   234  
   235    set +e
   236    output=$(git lfs pointer --pointer=some-pointer 2>&1)
   237    status=$?
   238    set -e
   239  
   240    [ "1" = "$status" ]
   241  
   242    expected="Pointer from some-pointer
   243  
   244  Pointer file error: invalid header"
   245  
   246    diff -u <(printf "$expected") <(printf "$output")
   247  
   248    [ "$expected" = "$output" ]
   249  )
   250  end_test
   251  
   252  begin_test "pointer --file"
   253  (
   254    set -e
   255    echo "simple" > some-file
   256  
   257    expected="Git LFS pointer for some-file
   258  
   259  version https://git-lfs.github.com/spec/v1
   260  oid sha256:6c17f2007cbe934aee6e309b28b2dba3c119c5dff2ef813ed124699efe319868
   261  size 7"
   262  
   263    [ "$expected" = "$(git lfs pointer --file=some-file 2>&1)" ]
   264  )
   265  end_test
   266  
   267  begin_test "pointer without args"
   268  (
   269    output=$(git lfs pointer 2>&1)
   270    status=$?
   271    set -e
   272  
   273    [ "Nothing to do!" = "$output" ]
   274    [ "1" = "$status" ]
   275  )
   276  end_test
   277  
   278  begin_test "pointer stdout/stderr"
   279  (
   280    set -e
   281    echo "pointer-stdout-test" > pointer-stdout-test.txt
   282    git lfs pointer --file=pointer-stdout-test.txt > stdout.txt 2> stderr.txt
   283    echo "stdout:"
   284    cat stdout.txt
   285    [ $(wc -l stdout.txt | sed -e 's/^[[:space:]]*//' | cut -f1 -d' ') -eq 3 ]
   286    grep "oid sha256:e96ec1bd71eea8df78b24c64a7ab9d42dd7f821c4e503f0e2288273b9bff6c16" stdout.txt
   287    [ $(grep -c "Git LFS pointer" stdout.txt) -eq 0 ]
   288  
   289    echo "stderr:"
   290    cat stderr.txt
   291    grep "Git LFS pointer" stderr.txt
   292    [ $(grep -c "oid sha256:" stderr.txt) -eq 0 ]
   293  )
   294  end_test
   295  
   296  begin_test "pointer to console"
   297  (
   298    set -e
   299    echo "pointer-stdout-test" > pointer-stdout-test.txt
   300    git lfs pointer --file=pointer-stdout-test.txt 2>&1 | tee pointer.txt
   301    grep "Git LFS pointer" pointer.txt
   302    grep "oid sha256:e96ec1bd71eea8df78b24c64a7ab9d42dd7f821c4e503f0e2288273b9bff6c16" pointer.txt
   303  )
   304  end_test