From 06252836ea9782fb136bcea74ecbfd1616838b1f Mon Sep 17 00:00:00 2001 From: Sergei Vorobev Date: Wed, 27 Jul 2016 15:02:57 -0700 Subject: [PATCH 1/2] Make 'cd' go to the HOME directory --- .../commands/management/Navigation.cs | 6 +++ .../Set-Location.Tests.ps1 | 51 ++++++++++++------- 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/src/Microsoft.PowerShell.Commands.Management/commands/management/Navigation.cs b/src/Microsoft.PowerShell.Commands.Management/commands/management/Navigation.cs index fb58250d3..7ba238ccd 100644 --- a/src/Microsoft.PowerShell.Commands.Management/commands/management/Navigation.cs +++ b/src/Microsoft.PowerShell.Commands.Management/commands/management/Navigation.cs @@ -996,6 +996,12 @@ namespace Microsoft.PowerShell.Commands try { // Change the current working directory + if (string.IsNullOrEmpty(Path)) + { + // If user just typed 'cd', go to FileSystem provider home directory + Path = SessionState.Internal.GetSingleProvider(Commands.FileSystemProvider.ProviderName).Home; + } + result = SessionState.Path.SetLocation(Path, CmdletProviderContext); } catch (PSNotSupportedException notSupported) diff --git a/test/powershell/Modules/Microsoft.PowerShell.Management/Set-Location.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Management/Set-Location.Tests.ps1 index c283b2e53..6c2ae93e9 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Management/Set-Location.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Management/Set-Location.Tests.ps1 @@ -3,64 +3,79 @@ Describe "Set-Location" -Tags "CI" { if ($IsWindows) { - $target = "C:\" + $target = "C:\" } else { - $target = "/" + $target = "/" } It "Should be able to be called without error" { - { Set-Location $target } | Should Not Throw + { Set-Location $target } | Should Not Throw } It "Should be able to be called on different providers" { - { Set-Location alias: } | Should Not Throw - { Set-Location env: } | Should Not Throw + { Set-Location alias: } | Should Not Throw + { Set-Location env: } | Should Not Throw } It "Should be able use the cd alias without error" { - { cd $target } | Should Not Throw + { cd $target } | Should Not Throw } It "Should be able to use the chdir alias without error" { - { chdir $target } | Should Not Throw + { chdir $target } | Should Not Throw } It "Should be able to use the sl alias without error" { - { sl $target } | Should Not Throw + { sl $target } | Should Not Throw } It "Should have the correct current location when using the set-location cmdlet" { - Set-Location $startDirectory + Set-Location $startDirectory - $(Get-Location).Path | Should Be $startDirectory.Path + $(Get-Location).Path | Should Be $startDirectory.Path } It "Should have the correct current location when using the cd alias" { - cd $target + cd $target - $(Get-Location).Path | Should Be $target + $(Get-Location).Path | Should Be $target } It "Should have the correct current location when using the chdir alias" { - chdir $target + chdir $target - $(Get-Location).Path | Should Be $target + $(Get-Location).Path | Should Be $target } It "Should have the correct current location when using the chdir alias" { - sl $target + sl $target - $(Get-Location).Path | Should Be $target + $(Get-Location).Path | Should Be $target } It "Should be able to use the Path switch" { - { Set-Location -Path $target } | Should Not Throw + { Set-Location -Path $target } | Should Not Throw } It "Should generate a pathinfo object when using the Passthru switch" { - $(Set-Location $target -PassThru).GetType().Name | Should Be PathInfo + $(Set-Location $target -PassThru).GetType().Name | Should Be PathInfo + } + + Context 'cd with no arguments' { + + It 'Should go to $env:HOME when cd run with no arguments from FileSystem provider' { + Set-Location 'TestDrive:\' + cd + (Get-Location).Path | Should Be (Get-PSProvider FileSystem).Home + } + + It 'Should go to $env:HOME when cd run with no arguments from Env: provider' { + Set-Location 'Env:' + cd + (Get-Location).Path | Should Be (Get-PSProvider FileSystem).Home + } } Set-Location $startDirectory From d591871b2cc88c9f6371017675bb62c19c9b0767 Mon Sep 17 00:00:00 2001 From: Sergei Vorobev Date: Wed, 27 Jul 2016 18:54:40 -0700 Subject: [PATCH 2/2] Add CI tag to SemanticVersion.Tests.ps1 --- test/powershell/engine/SemanticVersion.Tests.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/powershell/engine/SemanticVersion.Tests.ps1 b/test/powershell/engine/SemanticVersion.Tests.ps1 index c350dcfc7..734ad907a 100644 --- a/test/powershell/engine/SemanticVersion.Tests.ps1 +++ b/test/powershell/engine/SemanticVersion.Tests.ps1 @@ -1,7 +1,7 @@ using namespace System.Management.Automation using namespace System.Management.Automation.Language -Describe "SemanticVersion api tests" { +Describe "SemanticVersion api tests" -Tags 'CI' { Context "constructing valid versions" { It "string argument constructor" { $v = [SemanticVersion]::new("1.2.3-alpha") @@ -184,4 +184,4 @@ Describe "SemanticVersion api tests" { { [SemanticVersion]::new([Version]::new("1.2")) } | Should Throw # PSArgumentException } } -} \ No newline at end of file +}