mirror of
https://github.com/aphrody-labs/NuGet.Client.git
synced 2026-10-14 21:39:05 +00:00
227 lines
5.8 KiB
PowerShell
227 lines
5.8 KiB
PowerShell
function Test-ProjectNameReturnsUniqueName {
|
|
# Arrange
|
|
New-SolutionFolder 'Folder1'
|
|
$p1 = New-ClassLibrary 'ProjectA' 'Folder1'
|
|
$p3 = New-ConsoleApplication 'ProjectB' 'Folder1'
|
|
|
|
$p2 = New-ConsoleApplication 'ProjectA'
|
|
|
|
# Act
|
|
$projectUniqueNames = @(Get-Project -All | Select-Object -ExpandProperty ProjectName | Sort-Object)
|
|
|
|
# Assert
|
|
Assert-True ($projectUniqueNames.Count -eq 3)
|
|
Assert-AreEqual 'Folder1\ProjectA' $projectUniqueNames[0]
|
|
Assert-AreEqual 'Folder1\ProjectB' $projectUniqueNames[1]
|
|
Assert-AreEqual 'ProjectA' $projectUniqueNames[2]
|
|
}
|
|
|
|
function Test-DefaultProjectIsCorrectWhenProjectsAreAdded {
|
|
# Act
|
|
New-SolutionFolder 'Folder1'
|
|
$p1 = New-ClassLibrary 'ProjectA' 'Folder1'
|
|
|
|
# Assert
|
|
Assert-DefaultProject $p1
|
|
|
|
# Act
|
|
$p2 = New-ClassLibrary 'Projecta'
|
|
Assert-DefaultProject $p1
|
|
}
|
|
|
|
function Test-DefaultProjectIsCorrectWhenProjectsAreAddedInReverseOrder {
|
|
# Act
|
|
$p1 = New-ClassLibrary 'Projecta'
|
|
|
|
# Assert
|
|
Assert-DefaultProject $p1
|
|
|
|
# Act
|
|
New-SolutionFolder 'Folder1'
|
|
$p2 = New-ClassLibrary 'ProjectA' 'Folder1'
|
|
Assert-DefaultProject $p1
|
|
}
|
|
|
|
function Test-GetProjectThrowsIfProjectNameAmbiguous {
|
|
# Act
|
|
New-SolutionFolder 'foo'
|
|
New-SolutionFolder 'bar'
|
|
$p1 = New-ClassLibrary 'A' 'foo'
|
|
$p2 = New-ClassLibrary 'A' 'bar'
|
|
|
|
# Assert
|
|
Assert-Throws { Get-Project A } "Project 'A' is not found."
|
|
Assert-AreEqual $p1 (Get-Project foo\A)
|
|
Assert-AreEqual $p2 (Get-Project bar\A)
|
|
}
|
|
|
|
function Test-GetProjectCommandWithWildCardsWorksWithProjectHavingTheSameName {
|
|
#
|
|
# Folder1
|
|
# + ProjectA
|
|
# + ProjectB
|
|
# Folder2
|
|
# + ProjectA
|
|
# + ProjectC
|
|
# ProjectA
|
|
#
|
|
|
|
# Arrange
|
|
New-SolutionFolder 'Folder1'
|
|
$p1 = New-ClassLibrary 'ProjectA' 'Folder1'
|
|
$p2 = New-ClassLibrary 'ProjectB' 'Folder1'
|
|
|
|
New-SolutionFolder 'Folder2'
|
|
$p3 = New-ClassLibrary 'ProjectA' 'Folder2'
|
|
$p4 = New-ConsoleApplication 'ProjectC' 'Folder2'
|
|
|
|
$p5 = New-ConsoleApplication 'ProjectA'
|
|
|
|
# Assert
|
|
Assert-AreEqual $p1 (Get-Project 'Folder1\ProjectA')
|
|
Assert-AreEqual $p2 (Get-Project 'Folder1\ProjectB')
|
|
Assert-AreEqual $p2 (Get-Project 'ProjectB')
|
|
Assert-AreEqual $p3 (Get-Project 'Folder2\ProjectA')
|
|
Assert-AreEqual $p4 (Get-Project 'Folder2\ProjectC')
|
|
Assert-AreEqual $p4 (Get-Project 'ProjectC')
|
|
Assert-AreEqual $p5 (Get-Project 'ProjectA')
|
|
|
|
$s1 = (Get-Project 'Folder1' -ea SilentlyContinue)
|
|
Assert-Null $s1
|
|
|
|
$s2 = (Get-Project 'Folder2' -ea SilentlyContinue)
|
|
Assert-Null $s2
|
|
|
|
$fs = @( Get-Project 'Folder1*' )
|
|
Assert-AreEqual 2 $fs.Count
|
|
Assert-AreEqual $p1 $fs[0]
|
|
Assert-AreEqual $p2 $fs[1]
|
|
|
|
$gs = @( Get-Project '*ProjectA*' )
|
|
Assert-AreEqual 3 $gs.Count
|
|
Assert-AreEqual $p1 $gs[0]
|
|
Assert-AreEqual $p3 $gs[1]
|
|
Assert-AreEqual $p5 $gs[2]
|
|
}
|
|
|
|
function Test-SimpleNameDoesNotWorkWhenAllProjectsAreNested {
|
|
# Arrange
|
|
New-SolutionFolder 'Folder1'
|
|
$p1 = New-ClassLibrary 'ProjectA' 'Folder1'
|
|
|
|
New-SolutionFolder 'Folder2'
|
|
$p2 = New-ClassLibrary 'ProjectA' 'Folder2'
|
|
|
|
# Assert
|
|
Assert-Throws { (Get-Project -Name 'ProjectA') } "Project 'ProjectA' is not found."
|
|
}
|
|
|
|
function Test-RemovingAmbiguousProjectAllowsSimpleNameToBeUsed {
|
|
# Act
|
|
New-SolutionFolder 'foo'
|
|
$p1 = New-ClassLibrary 'A'
|
|
$p2 = New-ClassLibrary 'A' 'foo'
|
|
|
|
|
|
Assert-AreEqual $p2 (Get-Project -Name foo\A)
|
|
Assert-AreEqual $p1 (Get-Project -Name A)
|
|
|
|
Remove-Project $p1.Name
|
|
|
|
Assert-AreEqual $p2 (Get-Project -Name foo\A)
|
|
Assert-AreEqual $p2 (Get-Project -Name A)
|
|
}
|
|
|
|
function Test-RenameCreatingAmbiguityFollowedByRemovalAllowsSimpleNameToBeUsed {
|
|
# Act
|
|
New-SolutionFolder 'foo'
|
|
$p1 = New-ClassLibrary 'A'
|
|
$p2 = New-ClassLibrary 'B' 'foo'
|
|
|
|
|
|
Assert-AreEqual $p2 (Get-Project -Name foo\B)
|
|
Assert-AreEqual $p1 (Get-Project -Name A)
|
|
|
|
$p2.Name = 'A'
|
|
|
|
Assert-AreEqual $p2 (Get-Project -Name foo\A)
|
|
Assert-AreEqual $p1 (Get-Project -Name A)
|
|
|
|
Remove-Project $p1.Name
|
|
|
|
Assert-AreEqual $p2 (Get-Project -Name foo\A)
|
|
Assert-AreEqual $p2 (Get-Project -Name A)
|
|
}
|
|
|
|
function Test-RenamingSolutionFolderDoesNotAffectGetProject {
|
|
# Act
|
|
New-SolutionFolder 'foo'
|
|
$p1 = New-ClassLibrary 'A'
|
|
$p2 = New-ClassLibrary 'B' 'foo'
|
|
|
|
|
|
Assert-AreEqual $p2 (Get-Project -Name foo\B)
|
|
Assert-AreEqual $p1 (Get-Project -Name A)
|
|
|
|
$p2.Name = 'A'
|
|
|
|
Assert-AreEqual $p2 (Get-Project -Name foo\A)
|
|
Assert-AreEqual $p1 (Get-Project -Name A)
|
|
|
|
Rename-SolutionFolder 'foo' 'bar'
|
|
|
|
Assert-AreEqual $p2 (Get-Project -Name bar\A)
|
|
Assert-AreEqual $p1 (Get-Project -Name A)
|
|
|
|
Remove-Project $p1.Name
|
|
Assert-AreEqual $p2 (Get-Project -Name bar\A)
|
|
Assert-AreEqual $p2 (Get-Project -Name A)
|
|
}
|
|
|
|
function Test-RenamingSolutionFolderWithDeeplyNestedProjectsDoesNotAffectGetProject {
|
|
# Act
|
|
New-SolutionFolder 'foo'
|
|
New-SolutionFolder 'foo\bar'
|
|
New-SolutionFolder 'foo\empty'
|
|
|
|
$p1 = New-ClassLibrary 'A'
|
|
$p2 = New-ClassLibrary 'B' 'foo\bar'
|
|
|
|
|
|
Assert-AreEqual $p2 (Get-Project -Name foo\bar\B)
|
|
Assert-AreEqual $p1 (Get-Project -Name A)
|
|
|
|
$p2.Name = 'A'
|
|
|
|
Assert-AreEqual $p2 (Get-Project -Name foo\bar\A)
|
|
Assert-AreEqual $p1 (Get-Project -Name A)
|
|
|
|
Rename-SolutionFolder 'foo' 'bar2'
|
|
|
|
Assert-AreEqual $p2 (Get-Project -Name bar2\bar\A)
|
|
Assert-AreEqual $p1 (Get-Project -Name A)
|
|
|
|
Remove-Project $p1.Name
|
|
Assert-AreEqual $p2 (Get-Project -Name bar2\bar\A)
|
|
Assert-AreEqual $p2 (Get-Project -Name A)
|
|
}
|
|
|
|
function Test-GetProjectAfterDefaultProjectRemoved
|
|
{
|
|
param($context)
|
|
|
|
# Arrange
|
|
$p1 = New-ClassLibrary
|
|
$p2 = New-ClassLibrary
|
|
|
|
#Act
|
|
Remove-Project $p1.Name
|
|
|
|
# Assert
|
|
Assert-DefaultProject $p2
|
|
}
|
|
|
|
function Assert-DefaultProject($p) {
|
|
$actual = Get-Project
|
|
Assert-AreEqual $p $actual "Expected $($actual.UniqueName), but Default project is actually $($p.UniqueName)"
|
|
} |