t / t9800-git-p4.shon commit Merge branch 'pw/p4' (ae4479d)
   1#!/bin/sh
   2
   3test_description='git-p4 tests'
   4
   5. ./test-lib.sh
   6
   7( p4 -h && p4d -h ) >/dev/null 2>&1 || {
   8        skip_all='skipping git-p4 tests; no p4 or p4d'
   9        test_done
  10}
  11
  12GITP4=$GIT_BUILD_DIR/contrib/fast-import/git-p4
  13P4DPORT=10669
  14
  15db="$TRASH_DIRECTORY/db"
  16cli="$TRASH_DIRECTORY/cli"
  17git="$TRASH_DIRECTORY/git"
  18
  19test_debug 'echo p4d -q -d -r "$db" -p $P4DPORT'
  20test_expect_success setup '
  21        mkdir -p "$db" &&
  22        p4d -q -d -r "$db" -p $P4DPORT &&
  23        mkdir -p "$cli" &&
  24        mkdir -p "$git" &&
  25        export P4PORT=localhost:$P4DPORT
  26'
  27
  28test_expect_success 'add p4 files' '
  29        cd "$cli" &&
  30        p4 client -i <<-EOF &&
  31        Client: client
  32        Description: client
  33        Root: $cli
  34        View: //depot/... //client/...
  35        EOF
  36        export P4CLIENT=client &&
  37        echo file1 >file1 &&
  38        p4 add file1 &&
  39        p4 submit -d "file1" &&
  40        echo file2 >file2 &&
  41        p4 add file2 &&
  42        p4 submit -d "file2" &&
  43        cd "$TRASH_DIRECTORY"
  44'
  45
  46test_expect_success 'basic git-p4 clone' '
  47        "$GITP4" clone --dest="$git" //depot &&
  48        cd "$git" &&
  49        git log --oneline >lines &&
  50        test_line_count = 1 lines &&
  51        cd .. &&
  52        rm -rf "$git" && mkdir "$git"
  53'
  54
  55test_expect_success 'git-p4 clone @all' '
  56        "$GITP4" clone --dest="$git" //depot@all &&
  57        cd "$git" &&
  58        git log --oneline >lines &&
  59        test_line_count = 2 lines &&
  60        cd .. &&
  61        rm -rf "$git" && mkdir "$git"
  62'
  63
  64test_expect_success 'exit when p4 fails to produce marshaled output' '
  65        badp4dir="$TRASH_DIRECTORY/badp4dir" &&
  66        mkdir -p "$badp4dir" &&
  67        cat >"$badp4dir"/p4 <<-EOF &&
  68        #!$SHELL_PATH
  69        exit 1
  70        EOF
  71        chmod 755 "$badp4dir"/p4 &&
  72        PATH="$badp4dir:$PATH" "$GITP4" clone --dest="$git" //depot >errs 2>&1 ; retval=$? &&
  73        test $retval -eq 1 &&
  74        test_must_fail grep -q Traceback errs
  75'
  76
  77test_expect_success 'add p4 files with wildcards in the names' '
  78        cd "$cli" &&
  79        echo file-wild-hash >file-wild#hash &&
  80        echo file-wild-star >file-wild\*star &&
  81        echo file-wild-at >file-wild@at &&
  82        echo file-wild-percent >file-wild%percent &&
  83        p4 add -f file-wild* &&
  84        p4 submit -d "file wildcards" &&
  85        cd "$TRASH_DIRECTORY"
  86'
  87
  88test_expect_success 'wildcard files git-p4 clone' '
  89        "$GITP4" clone --dest="$git" //depot &&
  90        cd "$git" &&
  91        test -f file-wild#hash &&
  92        test -f file-wild\*star &&
  93        test -f file-wild@at &&
  94        test -f file-wild%percent &&
  95        cd "$TRASH_DIRECTORY" &&
  96        rm -rf "$git" && mkdir "$git"
  97'
  98
  99test_expect_success 'clone bare' '
 100        "$GITP4" clone --dest="$git" --bare //depot &&
 101        cd "$git" &&
 102        test ! -d .git &&
 103        bare=`git config --get core.bare` &&
 104        test "$bare" = true &&
 105        cd "$TRASH_DIRECTORY" &&
 106        rm -rf "$git" && mkdir "$git"
 107'
 108
 109test_expect_success 'shutdown' '
 110        pid=`pgrep -f p4d` &&
 111        test -n "$pid" &&
 112        test_debug "ps wl `echo $pid`" &&
 113        kill $pid
 114'
 115
 116test_done