t / t9807-git-p4-submit.shon commit contrib/ciabot: Get ciabot configuration from git variables (c142616)
   1#!/bin/sh
   2
   3test_description='git p4 submit'
   4
   5. ./lib-git-p4.sh
   6
   7test_expect_success 'start p4d' '
   8        start_p4d
   9'
  10
  11test_expect_success 'init depot' '
  12        (
  13                cd "$cli" &&
  14                echo file1 >file1 &&
  15                p4 add file1 &&
  16                p4 submit -d "change 1"
  17        )
  18'
  19
  20test_expect_success 'submit with no client dir' '
  21        test_when_finished cleanup_git &&
  22        git p4 clone --dest="$git" //depot &&
  23        (
  24                cd "$git" &&
  25                echo file2 >file2 &&
  26                git add file2 &&
  27                git commit -m "git commit 2" &&
  28                rm -rf "$cli" &&
  29                git config git-p4.skipSubmitEdit true &&
  30                git p4 submit
  31        ) &&
  32        (
  33                cd "$cli" &&
  34                test_path_is_file file1 &&
  35                test_path_is_file file2
  36        )
  37'
  38
  39# make two commits, but tell it to apply only from HEAD^
  40test_expect_success 'submit --origin' '
  41        test_when_finished cleanup_git &&
  42        git p4 clone --dest="$git" //depot &&
  43        (
  44                cd "$git" &&
  45                test_commit "file3" &&
  46                test_commit "file4" &&
  47                git config git-p4.skipSubmitEdit true &&
  48                git p4 submit --origin=HEAD^
  49        ) &&
  50        (
  51                cd "$cli" &&
  52                test_path_is_missing "file3.t" &&
  53                test_path_is_file "file4.t"
  54        )
  55'
  56
  57test_expect_success 'submit with allowSubmit' '
  58        test_when_finished cleanup_git &&
  59        git p4 clone --dest="$git" //depot &&
  60        (
  61                cd "$git" &&
  62                test_commit "file5" &&
  63                git config git-p4.skipSubmitEdit true &&
  64                git config git-p4.allowSubmit "nobranch" &&
  65                test_must_fail git p4 submit &&
  66                git config git-p4.allowSubmit "nobranch,master" &&
  67                git p4 submit
  68        )
  69'
  70
  71test_expect_success 'submit with master branch name from argv' '
  72        test_when_finished cleanup_git &&
  73        git p4 clone --dest="$git" //depot &&
  74        (
  75                cd "$git" &&
  76                test_commit "file6" &&
  77                git config git-p4.skipSubmitEdit true &&
  78                test_must_fail git p4 submit nobranch &&
  79                git branch otherbranch &&
  80                git reset --hard HEAD^ &&
  81                test_commit "file7" &&
  82                git p4 submit otherbranch
  83        ) &&
  84        (
  85                cd "$cli" &&
  86                test_path_is_file "file6.t" &&
  87                test_path_is_missing "file7.t"
  88        )
  89'
  90
  91#
  92# Basic submit tests, the five handled cases
  93#
  94
  95test_expect_success 'submit modify' '
  96        test_when_finished cleanup_git &&
  97        git p4 clone --dest="$git" //depot &&
  98        (
  99                cd "$git" &&
 100                git config git-p4.skipSubmitEdit true &&
 101                echo line >>file1 &&
 102                git add file1 &&
 103                git commit -m file1 &&
 104                git p4 submit
 105        ) &&
 106        (
 107                cd "$cli" &&
 108                test_path_is_file file1 &&
 109                test_line_count = 2 file1
 110        )
 111'
 112
 113test_expect_success 'submit add' '
 114        test_when_finished cleanup_git &&
 115        git p4 clone --dest="$git" //depot &&
 116        (
 117                cd "$git" &&
 118                git config git-p4.skipSubmitEdit true &&
 119                echo file13 >file13 &&
 120                git add file13 &&
 121                git commit -m file13 &&
 122                git p4 submit
 123        ) &&
 124        (
 125                cd "$cli" &&
 126                test_path_is_file file13
 127        )
 128'
 129
 130test_expect_success 'submit delete' '
 131        test_when_finished cleanup_git &&
 132        git p4 clone --dest="$git" //depot &&
 133        (
 134                cd "$git" &&
 135                git config git-p4.skipSubmitEdit true &&
 136                git rm file4.t &&
 137                git commit -m "delete file4.t" &&
 138                git p4 submit
 139        ) &&
 140        (
 141                cd "$cli" &&
 142                test_path_is_missing file4.t
 143        )
 144'
 145
 146test_expect_success 'submit copy' '
 147        test_when_finished cleanup_git &&
 148        git p4 clone --dest="$git" //depot &&
 149        (
 150                cd "$git" &&
 151                git config git-p4.skipSubmitEdit true &&
 152                git config git-p4.detectCopies true &&
 153                git config git-p4.detectCopiesHarder true &&
 154                cp file5.t file5.ta &&
 155                git add file5.ta &&
 156                git commit -m "copy to file5.ta" &&
 157                git p4 submit
 158        ) &&
 159        (
 160                cd "$cli" &&
 161                test_path_is_file file5.ta &&
 162                test ! -w file5.ta
 163        )
 164'
 165
 166test_expect_success 'submit rename' '
 167        test_when_finished cleanup_git &&
 168        git p4 clone --dest="$git" //depot &&
 169        (
 170                cd "$git" &&
 171                git config git-p4.skipSubmitEdit true &&
 172                git config git-p4.detectRenames true &&
 173                git mv file6.t file6.ta &&
 174                git commit -m "rename file6.t to file6.ta" &&
 175                git p4 submit
 176        ) &&
 177        (
 178                cd "$cli" &&
 179                test_path_is_missing file6.t &&
 180                test_path_is_file file6.ta &&
 181                test ! -w file6.ta
 182        )
 183'
 184
 185test_expect_success 'kill p4d' '
 186        kill_p4d
 187'
 188
 189test_done