PowerShell / SHiPS

Simple Hierarchy in PowerShell - developing PowerShell provider got so much easier
MIT License
185 stars 31 forks source link

Filtering does not work. Seems to remove all objects #125

Open glennsarti opened 5 years ago

glennsarti commented 5 years ago

I was trying to add filtering to a SHiPs module I was developing however it always filtered out everything which is very strange. I have created a minimal reproduction of the issue

https://github.com/glennsarti/PSSummitNA2019-Ships/tree/master/FilterRepro

Steps to reproduce

Expected behavior

Filtering should be honored

Importing module...
Without Filter
--------------
Using filter ''
Creating alpha leaf object
Creating beta leaf object
Creating gamma leaf object
Creating delta leaf object

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\alpha
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : alpha
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : alpha

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\beta
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : beta
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : beta

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\gamma
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : gamma
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : gamma

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\delta
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : delta
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : delta

With Empty Filter
--------------
Using filter ''
Creating alpha leaf object
Creating beta leaf object
Creating gamma leaf object
Creating delta leaf object

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\alpha
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : alpha
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : alpha

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\beta
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : beta
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : beta

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\gamma
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : gamma
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : gamma

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\delta
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : delta
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : delta

With a Filter
--------------
Using filter 'e'
Creating beta leaf object
Creating delta leaf object

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\beta
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : beta
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : beta

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\delta
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : delta
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : delta
--------------

Actual behavior

Importing module...
Without Filter
--------------
Using filter ''
Creating alpha leaf object
Creating beta leaf object
Creating gamma leaf object
Creating delta leaf object

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\alpha
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : alpha
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : alpha

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\beta
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : beta
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : beta

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\gamma
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : gamma
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : gamma

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\delta
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : delta
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : delta

With Empty Filter
--------------
Using filter ''
Creating alpha leaf object
Creating beta leaf object
Creating gamma leaf object
Creating delta leaf object

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\alpha
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : alpha
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : alpha

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\beta
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : beta
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : beta

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\gamma
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : gamma
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : gamma

SSItemMode    : .
PSPath        : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory\delta
PSParentPath  : SHiPS\SHiPS::FilterRepro#Root\ExampleDirectory
PSChildName   : delta
PSDrive       : Repro
PSProvider    : SHiPS\SHiPS
PSIsContainer : False
Name          : delta

With a Filter
--------------
Using filter 'e'
Creating beta leaf object
Creating delta leaf object
--------------

Environment data

Occurs in both ;

Name                           Value
----                           -----
PSVersion                      6.1.0
PSEdition                      Core
GitCommitId                    6.1.0
OS                             Microsoft Windows 10.0.17134
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
Name                           Value
----                           -----
PSVersion                      5.1.17134.228
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.17134.228
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Ships Version - 0.8.1 and 0.8.0