Proper deployment of the Modules we support allowed me to remove my
work-arounds using the deprecated SnapIn system to load all PowerShell
libraries via Modules.
I still don't like that this is done in build scripts, but we need
better asset support from .NET CLI to change how this is done.
PowerShell.Utility now deploys the CoreClr manifest, so unsupported
commands don't show up erroneously.
Latest versions of .NET CLI ignore --output and instead publish to a
long path inside of it. Until this is resolved properly, we can work
around it by copying to the expected location.
Revert this when CLI is fixed.
Commands.Utility now needs Microsoft.CodeAnalysis.CSharp, which doesn't
explicitly target `dnxcore50`, so now Commands.Utility and the packages
which depend on it now much `import` the Portable Windows framework.
This also required adding the aspnetvnext feed.
System.Management.Automation now requires System.Diagnostics.StackTrace.
Removed CorePsPlatform.cs from the build mapping so that I could perform
it before merging.
Note that SMA by default now builds with a bunch of tracing files for
ETW, which cannot be compiled on Linux and must be hand-removed from the
windows-build auto-generated compileFiles output.
- Add badge to readme
- Use language 'cpp' because 'csharp' would bring in Mono
- Set to Trusty Tahr (Ubuntu 14.04)
- Only clone necessary submodules
- Use SSH for powershell-ci user access
- Install dotnet-cli
- Build PowerShell
- Run Pester tests
Instead of Microsoft.PowerShell.Linux.Host
Since this changes the name of the library,
System.Management.Automation's assembly info needed to be updated.
- Pester source code moved to `test/Pester`, deleted `ext-src`.
- Pester tests (.ps1 files) moved to `test/powershell`
- xUnit tests (.cs files) moved to `test/csharp`
- Third-party script test moved to `test/shebang`
- Removed more pre-processor conditionals
- Loads libpsl-native
- Pruned wmi (rewrote history)
The wmi folder was massive, and we did not need 99% of it, so a `git
filter-branch --tree-filter` was performed to remove all but the single
necessary subdirectory before pushing to GitHub.
The psl-monad repository can no longer be updated from the existing
GitSD sync. When the PSW teams have a Git repo for the monad codebase,
we will apply our patches to it and delete this fork.
The monad-native submodule no longer owns a native host whatsoever, with it moved to the provider, and the provider's build system refactored to use CMake.
Because CMake is way better, even for dealing with OMI.
The former is available, the latter is not. For our simple case of a
readline-esque shell on Linux, they seem equivalent. This removes the
import of libpsnative and the native calls to get terminal width/height.
PSRP will of course still require it, but now the managed host sets up
the assembly load context, meaning we can depend on the emitted binary
from dotnet-cli.
It is too messy to count on being able to stop the infinite processes
that Start-Process tests start. All processes will now stop on their
own, removing the dependency on Stop-Process. The wait test is now not
much of a test however.
This test was not viable as it didn't retain the process object,
instead relying on Get-Process with the process name, which could fail
to get the correct process (since no PID was available).
Since it is pointless to test Start-Process without -PassThru, and that
test was the exact same code as the fixed first test, it was removed.
Deploying module is a bit funky until dotnet-cli gives us more control
over which libraries to build and where. Theoretically we'll be able to
package System.Management.Automation and depend on the package instead,
so Commands.Omi can be its own project entirely.
Cleaned up the Commands.Omi project.json as it had some unnecessary
cruft from where it was copied. Also removed the AssemblyInfo as it does
not matter for a new module.
Moved the Get-OmiInstance Pester test to the project's test folder so it
doesn't run with our suite of tests (as it takes a dependency on OMI).
Link to them instead so they don't get out of date. Explicitly fix the
incorrectly named file with an explicit link name. Also deploy the types
files with fixes to monad to fix shell output for various cmdlets.
Bumps monad submodule.
For the special case of having a string to insert on the buffer, switch from calling this.Insert to appending the string directly (and incrementing the count appropriately).
After reading the docs, the prior test was incorrect as written, as by default, it will wait for any event. So to test the timeout, we needed to make it wait for an event that would enver come.
This works around the Get-ExecutionPolicy Pester test failure. It's not a good solution, but it's also (seemingly) not our code that is calling the extern function. This needs to be fixed in CoreFX itself.