Last active
August 29, 2015 14:21
-
-
Save tkirill/046845bee297170a4484 to your computer and use it in GitHub Desktop.
Tests for Remove-MergedGitBranches
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Tests for this PR: https://github.com/dahlbyk/posh-git/pull/159 | |
function Create-EmptyRepo { | |
if (Test-Path test-repo) { | |
rm -force -r test-repo | |
} | |
git init test-repo | |
cd test-repo | |
echo 1 > file1 | |
git add --all | |
git commit -a -m 'commit1' | |
} | |
function Clone-Repo($clone) { | |
cd .. | |
if (Test-Path $clone) { | |
rm -Force -Recurse $clone | |
} | |
git clone test-repo $clone | |
cd $clone | |
} | |
function Create-Branch($branch, $counter) { | |
$file = "file$counter" | |
$msg = "commit$counter" | |
git checkout -b $branch | |
echo 1 > $file | |
git add $file | |
git commit -m $msg | |
} | |
function Create-MergedBranch($branch, $counter) { | |
Create-Branch $branch $counter | |
git checkout master | |
git merge $branch | |
} | |
function RemoveMergedGitBranches-NoBranches-Success { | |
Remove-MergedGitBranches | |
if ($lastexitcode -ne 0) { | |
Write-Error "RemoveMergedGitBranches-NoCommits-Success fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-NoBranches-Success Success!" | |
} | |
} | |
function RemoveMergedGitBranches-NoRemoteBranches-Success { | |
Clone-Repo test-clone1 | Out-Null | |
Remove-MergedGitBranches -Remote origin | |
if ($lastexitcode -ne 0) { | |
Write-Error "RemoveMergedGitBranches-NoRemoteBranches-Success fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-NoRemoteBranches-Success Success!" | |
} | |
} | |
function RemoveMergedGitBranches-LocalBranchNotMerged-DoesNotRemove { | |
Create-Branch branch1 2 | Out-Null | |
git checkout master | |
Remove-MergedGitBranches | |
$branches = git branch -v | Out-String | |
if (!$branches.Contains('branch1')) { | |
Write-Error "RemoveMergedGitBranches-LocalBranchNotMerged-DoesNotRemove fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-LocalBranchNotMerged-DoesNotRemove Success!" | |
} | |
} | |
function RemoveMergedGitBranches-CurrentBranchMerged-DoesNotRemove { | |
Create-MergedBranch branch1 2 | Out-Null | |
git checkout branch1 | |
Remove-MergedGitBranches | |
$branches = git branch -v | Out-String | |
if (!$branches.Contains('branch1')) { | |
Write-Error "RemoveMergedGitBranches-CurrentBranchMerged-DoesNotRemove fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-CurrentBranchMerged-DoesNotRemove Success!" | |
} | |
} | |
function RemoveMergedGitBranches-MergedLocalBranch-Removes { | |
Create-MergedBranch branch1 2 | Out-Null | |
Remove-MergedGitBranches | |
$branches = git branch -v | Out-String | |
if ($branches.Contains('branch1')) { | |
Write-Error "RemoveMergedGitBranches-MergedLocalBranch-Removes fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-MergedLocalBranch-Removes Success!" | |
} | |
} | |
function RemoveMergedGitBranches-MergedLocalBranchTargetHead-Removes { | |
Create-MergedBranch branch1 2 | Out-Null | |
Remove-MergedGitBranches HEAD | |
$branches = git branch -v | Out-String | |
if ($branches.Contains('branch1')) { | |
Write-Error "RemoveMergedGitBranches-MergedLocalBranchTargetHead-Removes fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-MergedLocalBranchTargetHead-Removes Success!" | |
} | |
} | |
function RemoveMergedGitBranches-MergedLocalBranchTargetBranch-Removes { | |
Create-MergedBranch branch1 2 | Out-Null | |
git checkout branch1 | |
git checkout -b branch2 | |
echo 3 > file3 | |
git add --all | |
git commit -m 'file3' | |
git checkout branch1 | |
git merge branch2 | |
Remove-MergedGitBranches branch1 | |
$branches = git branch -v | Out-String | |
if (!$branches.Contains('branch1') -or $branches.Contains('branch2')) { | |
Write-Error "RemoveMergedGitBranches-MergedLocalBranchTargetBranch-Removes fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-MergedLocalBranchTargetBranch-Removes Success!" | |
} | |
} | |
function RemoveMergedGitBranches-MultipleLocalMergedBranches-RemovesAll { | |
Create-MergedBranch branch1 2 | Out-Null | |
Create-MergedBranch branch2 3 | Out-Null | |
Create-MergedBranch branch3 4 | Out-Null | |
Remove-MergedGitBranches | |
$branches = git branch | Out-String | |
if ($branches.Contains('branch1') -or $branches.Contains('branch2') -or $branches.Contains('branch3')) { | |
Write-Error "RemoveMergedGitBranches-MultipleLocalMergedBranches-RemovesAll fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-MultipleLocalMergedBranches-RemovesAll Success!" | |
} | |
} | |
function RemoveMergedGitBranches-MergedRemoteBranch-Removes { | |
Create-MergedBranch branch1 2 | Out-Null | |
Clone-Repo test-clone1 | Out-Null | |
Remove-MergedGitBranches -Remote origin | |
$branches = git branch -v --remote | Out-String | |
if ($branches.Contains('origin/branch1')) { | |
Write-Error "RemoveMergedGitBranches-MergedRemoteBranch-Removes fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-MergedRemoteBranch-Removes Success!" | |
} | |
} | |
function RemoveMergedGitBranches-NotMergedRemoteBranch-DoesNotRemove { | |
Create-Branch branch1 2 | Out-Null | |
Clone-Repo test-clone1 | Out-Null | |
Remove-MergedGitBranches -Remote origin | |
$branches = git branch -v --remote | Out-String | |
if (!$branches.Contains('origin/branch1')) { | |
Write-Error "RemoveMergedGitBranches-NotMergedRemoteBranch-DoesNotRemove fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-NotMergedRemoteBranch-DoesNotRemove Success!" | |
} | |
} | |
function RemoveMergedGitBranches-NotMergedRemoteBranchMergedLocally-RemovesOnlyLocal { | |
Create-Branch branch1 2 | Out-Null | |
git checkout master | |
Clone-Repo test-clone1 | Out-Null | |
git checkout branch1 | |
git checkout master | |
git merge branch1 | |
Remove-MergedGitBranches -Local -Remote origin | |
$branches = git branch -v --remote | Out-String | |
if (!$branches.Contains('origin/branch1') -or $branches.Contains(' branch1')) { | |
Write-Error "RemoveMergedGitBranches-NotMergedRemoteBranchMergedLocally-RemovesOnlyLocal fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-NotMergedRemoteBranchMergedLocally-RemovesOnlyLocal Success!" | |
} | |
} | |
function RemoveMergedGitBranches-MergedRemoteBranchNotMergedLocally-RemovesRemoteOnly { | |
Create-Branch branch1 2 | Out-Null | |
git checkout master | |
Clone-Repo test-clone1 | Out-Null | |
git checkout branch1 | |
git checkout master | |
cd ..\test-repo | |
git merge branch1 | |
cd ..\test-clone1 | |
git fetch | |
Remove-MergedGitBranches -Local -Remote origin | |
$localBranches = git branch| Out-String | |
$remoteBranches = git branch -r | Out-String | |
if ($remoteBranches.Contains('origin/branch1') -or !$localBranches.Contains(' branch1')) { | |
Write-Error "RemoveMergedGitBranches-MergedRemoteBranchNotMergedLocally-RemovesRemoteOnly fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-MergedRemoteBranchNotMergedLocally-RemovesRemoteOnly Success!" | |
} | |
} | |
function RemoveMergedGitBranches-BranchMergedRemoteAndLocally-RemovesAll { | |
Create-MergedBranch branch1 2 | Out-Null | |
Clone-Repo test-clone1 | Out-Null | |
Remove-MergedGitBranches -Local -Remote origin | |
$branches = git branch -v --remote | Out-String | |
if ($branches.Contains('origin/branch1') -or $branches.Contains(' branch1')) { | |
Write-Error "RemoveMergedGitBranches-BranchMergedRemoteAndLocally-RemovesAll fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-BranchMergedRemoteAndLocally-RemovesAll Success!" | |
} | |
} | |
function RemoveMergedGitBranches-MultipleRemoteMergedBranches-RemovesAll { | |
Create-MergedBranch branch1 2 | Out-Null | |
Create-MergedBranch branch2 2 | Out-Null | |
Create-MergedBranch branch3 2 | Out-Null | |
Clone-Repo test-clone1 | Out-Null | |
Remove-MergedGitBranches -Remote origin | |
$branches = git branch -v --remote | Out-String | |
if ($branches.Contains('origin/branch1') -or $branches.Contains('origin/branch2') -or $branches.Contains('origin/branch3')) { | |
Write-Error "RemoveMergedGitBranches-MultipleRemoteMergedBranches-RemovesAll fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-MultipleRemoteMergedBranches-RemovesAll Success!" | |
} | |
} | |
function RemoveMergedGitBranches-MultipleRemotesWithoutMergedBranches-Success { | |
Create-Branch branch1 2 | Out-Null | |
git checkout master | |
Clone-Repo test-clone1 | Out-Null | |
Create-Branch branch2 3 | Out-Null | |
git checkout master | |
Clone-Repo test-clone2 | Out-Null | |
git remote add other ..\test-clone1 | |
git fetch other | |
Remove-MergedGitBranches -Remote origin, other -Target master | |
$branches = git branch --remote | Out-String | |
if (!$branches.Contains('origin/branch1') -or !$branches.Contains('other/branch2')) { | |
Write-Error "RemoveMergedGitBranches-MultipleRemotesWithoutMergedBranches-Success fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-MultipleRemotesWithoutMergedBranches-Success Success!" | |
} | |
} | |
function RemoveMergedGitBranches-MultipleRemotesOnlyOneWithMergedBranch-RemovesBranch { | |
Create-Branch branch1 2 | Out-Null | |
git checkout master | |
Clone-Repo test-clone1 | Out-Null | |
Create-MergedBranch branch2 3 | Out-Null | |
Clone-Repo test-clone2 | Out-Null | |
git remote add other ..\test-clone1 | |
git fetch other | |
Remove-MergedGitBranches -Remote origin, other -Target master | |
$branches = git branch --remote | Out-String | |
if (!$branches.Contains('origin/branch1') -or $branches.Contains('other/branch2')) { | |
Write-Error "RemoveMergedGitBranches-MultipleRemotesOnlyOneWithMergedBranche-RemovesBranch fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-MultipleRemotesOnlyOneWithMergedBranche-RemovesBranch Success!" | |
} | |
} | |
function RemoveMergedGitBranches-MultipleRemotesWithMultipleMergedBranches-RemovesAll { | |
Create-MergedBranch branch1 2 | Out-Null | |
Clone-Repo test-clone1 | Out-Null | |
Create-MergedBranch branch2 3 | Out-Null | |
Clone-Repo test-clone2 | Out-Null | |
git remote add other ..\test-clone1 | |
git fetch other | |
git checkout branch1 | |
git checkout branch2 | |
git checkout master | |
Remove-MergedGitBranches -Remote origin, other -Target master | |
$branches = git branch --remote | Out-String | |
if ($branches.Contains('origin/branch1') -or $branches.Contains('other/branch2')) { | |
Write-Error "RemoveMergedGitBranches-MultipleRemotesWithMultipleMergedBranches-RemovesAll fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-MultipleRemotesWithMultipleMergedBranches-RemovesAll Success!" | |
} | |
} | |
function RemoveMergedGitBranches-MultipleRemotesWithMultipleMergedBranchesTargetBranch-RemovesAll { | |
Create-Branch branch1 2 | Out-Null | |
Create-Branch branch12 12 | Out-Null | |
git checkout branch1 | |
git merge branch12 | |
git checkout master | |
Clone-Repo test-clone1 | Out-Null | |
git checkout branch1 | |
Create-Branch branch22 22 | Out-Null | |
git checkout branch1 | |
git merge branch22 | |
git checkout master | |
Clone-Repo test-clone2 | Out-Null | |
git remote add other ..\test-clone1 | |
git fetch other | |
git checkout branch1 | |
git checkout branch2 | |
git checkout master | |
Remove-MergedGitBranches -Remote origin, other -Target branch1 | |
$branches = git branch --remote | Out-String | |
if (!$branches.Contains('origin/branch1') -or $branches.Contains('other/branch12') -or $branches.Contains('other/branch22')) { | |
Write-Error "RemoveMergedGitBranches-MultipleRemotesWithMultipleMergedBranchesTargetBranch-RemovesAll fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "RemoveMergedGitBranches-MultipleRemotesWithMultipleMergedBranchesTargetBranch-RemovesAll Success!" | |
} | |
} | |
function RemoveMergedGitBranches-#-# { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "Running #" | |
Remove-MergedGitBranches | |
if ($lastexitcode -ne 0) { | |
Write-Error "# fail" | |
} else { | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "# Success!" | |
} | |
} | |
function Run-Tests { | |
$currentDir = pwd | |
$tests = "RemoveMergedGitBranches-NoBranches-Success", ` | |
"RemoveMergedGitBranches-NoRemoteBranches-Success", ` | |
"RemoveMergedGitBranches-LocalBranchNotMerged-DoesNotRemove", ` | |
"RemoveMergedGitBranches-CurrentBranchMerged-DoesNotRemove", ` | |
"RemoveMergedGitBranches-MergedLocalBranch-Removes", ` | |
"RemoveMergedGitBranches-MergedRemoteBranch-Removes", ` | |
"RemoveMergedGitBranches-MergedLocalBranchTargetHead-Removes", ` | |
"RemoveMergedGitBranches-MergedLocalBranchTargetBranch-Removes", ` | |
"RemoveMergedGitBranches-NotMergedRemoteBranch-DoesNotRemove", ` | |
"RemoveMergedGitBranches-NotMergedRemoteBranchMergedLocally-RemovesOnlyLocal", ` | |
"RemoveMergedGitBranches-MergedRemoteBranchNotMergedLocally-RemovesRemoteOnly", ` | |
"RemoveMergedGitBranches-BranchMergedRemoteAndLocally-RemovesAll", ` | |
"RemoveMergedGitBranches-MultipleRemoteMergedBranches-RemovesAll", ` | |
"RemoveMergedGitBranches-MultipleLocalMergedBranches-RemovesAll", ` | |
"RemoveMergedGitBranches-MultipleRemotesWithoutMergedBranches-Success", ` | |
"RemoveMergedGitBranches-MultipleRemotesOnlyOneWithMergedBranch-RemovesBranch", ` | |
"RemoveMergedGitBranches-MultipleRemotesWithMultipleMergedBranches-RemovesAll", ` | |
"RemoveMergedGitBranches-MultipleRemotesWithMultipleMergedBranchesTargetBranch-RemovesAll" | |
foreach ($test in $tests) { | |
Create-EmptyRepo | Out-Null | |
Write-Host -BackgroundColor Black -ForegroundColor Yellow "Running $test" | |
& $test | |
cd $currentDir | |
} | |
} | |
function Run-OneTest { | |
$currentDir = pwd | |
Create-EmptyRepo | Out-Null | |
RemoveMergedGitBranches-MultipleRemoteMergedBranches-RemovesAll | |
cd $currentDir | |
} | |
Run-Tests | |
#Run-OneTest |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment