Skip to content

WIP Update NuGet packages in 2.0.0 branch #831

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 17 commits into from

Conversation

bergmeister
Copy link
Contributor

@bergmeister bergmeister commented Dec 15, 2018

  • Use RTM version of PowerShellStandard.Library 5.1 everywhere
  • Update Serilog.Sinks.Async NuGet package
  • Update other xunit and testing packages used for testing only
  • Update .net core sdk to 2.1.500, which is now available in the AppVeyor image out of the box
  • Remove old dnx artifact from the .Net Core Preview days

Unfortunately the AppVeyor build is not working any more (the same error also happens in the unmodified 2.0.0 branch)

SeeminglyScience and others added 15 commits October 2, 2018 13:16
* Add infrastructure for managing context

Adds classes that manage the state of the prompt, nested contexts,
and multiple ReadLine implementations of varying complexity.

(cherry picked from commit 7ca8b9b)

* Console related classes changes

Change ReadLine method to call out to PowerShellContext. This lets
the PowerShellContext determine which ReadLine implementation to use
based on available modules.

Also includes some changes to the System.Console proxy classes to
account for PSReadLine.

(cherry picked from commit 59bfa3b)

* Rewrite command invocation operations for PSRL

Refactor PowerShellContext to have a more robust system for
tracking the context in which commands are invoked. This is a
significant change in that all interactions with the runspace
must be done through methods in PowerShellContext. These changes
also greatly increase stability.

(cherry picked from commit 21e6b5f)

* Rewrite direct SessionStateProxy calls

All interactions with the runspace must be done through
PowerShellContext now that nested PowerShell instances are
encountered frequently.

Also fix a bunch of race conditions that were made more obvious
with the changes.

(cherry picked from commit fa2faba)

* Pass feature flags to Start-EditorServicesHost

* Address feedback and fix travis build error

- Address feedback from @bergmeister

- Fix a few other similar mistakes I found

- Fix travis build failing due to missing documentation comment tag

* Fix all tests except ServiceLoadsProfileOnDemand

- Fix an issue where intellisense wouldn't finish if PSReadLine was not
  running

- Fix a crash that would occur if the PSHost was not set up for input
  like the one used in our tests

- Fix a compile error when building against PSv3/4

- Fix a hang that occurred when the PromptNest was disposed during a
  debug session

- Fix some XML documentation comment syntax errors

* Fix extra new lines outputted after each command

Removed a call to WriteOutput where it wasn't required.  This was
creating extra new lines which failed tests (and obviously didn't
look right).

* Remove unused field from InvocationEventQueue

And also fix spacing between the other fields.

* Remove copying of PDB's in build script

@rjmholt did a better job of this in a different PR that we can merge
into 2.0.0 later. It also doesn't make sense in this PR.

* Add AppVeyor tracking to branch 2.0.0

* Fix ambiguous method crash on CoreCLR

Simplify delegate creation in PSReadLineProxy and fix the immediate
ambiguous method crash the complicated code caused on CoreCLR.

* first round of feedback changes

* Some more feedback changes

* add a bunch of copyright headers I missed

* remove KeyAvailable query

* Get the latest PSReadLine module installed

* Add PSReadLine installation to build script

* the file should be downloaded as a .zip

* Address remaining feedback

* Attempt to fix issue with native apps and input

On Unix like platforms some native applications do not work properly if
our event subscriber is active. I suspect this is due to PSReadLine
querying cursor position prior to checking for events. I believe the
cursor position response emitted is being read as input.

I've attempted to fix this by hooking into PSHost.NotifyBeginApplication
to temporarly remove the event subscriber, and
PSHost.NotifyEndApplication to recreate it afterwards.

* Revert "Attempt to fix issue with native apps and input"

This reverts commit 1682410.

* Fix build failure
* Use PSRL release and filter out previous betas
* Use fully qualified type name for broad PowerShell support
* Fix CI module installation
* Move PSES builds to netstandard and use PSStandard APIs

* Add shim modules for Windows PowerShell and PowerShell Core 6.0

* Migrate tests to run on .NET Core and on *nix

* Make build file more declarative

* Use latest xunit

* Exclude host integration tests

* Clean out csproj files

* Fix up Travis build

* Retire compatibility APIs for PowerShell v3/4

* Introduce test hook for using InitialSessionState.CreateDefault2() when running on PowerShell Core SDK

* Fix session details gathering in nested prompts

To create a nested PowerShell instance you can't set the runspace
because the target runspace is assumed to be the runspace in TLS.
Copy link
Contributor

@rjmholt rjmholt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good. Thanks @bergmeister!

@rjmholt
Copy link
Contributor

rjmholt commented Dec 17, 2018

Looks like the build is failing because of an argument in the build.ps1 file.

@rkeithhill
Copy link
Contributor

So this is not my area of expertise. It seems that PowerShellStandard.Library replaces Microsoft.PowerShell.SDK and Microsoft.PowerShell.5.ReferenceAssemblies?

Copy link
Contributor

@rkeithhill rkeithhill left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with caveat that this is not my area of expertise.

@rjmholt
Copy link
Contributor

rjmholt commented Dec 17, 2018

@rkeithhill

So this is not my area of expertise. It seems that PowerShellStandard.Library replaces Microsoft.PowerShell.SDK and Microsoft.PowerShell.5.ReferenceAssemblies?

Yeah, PowerShellStandard takes the intersection of the two as a compile-time API. Meaning you can write code that targets both and the API surface is compile-checked. The whole assembly is just a shell with no implementation, but is versioned to be the same as the runtime target, so just slots in when loaded. It's not an ideal solution, but by far the simplest.

It doesn't do any translation or semantic checking though, so if APIs take and return the same types but do something different, we need to do runtime checks.

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
<PackageReference Include="xunit" Version="2.4.1-pre.build.4059" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<PackageReference Include="PowerShellStandard.Library" Version="5.1.0" PrivateAssets="All" />
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this working with Xunit now? The tests were not set up to reference PowerShell standard because Xunit runs in it's own process, not PowerShell's. So it was actually using the reference assembly. Microsoft.PowerShell.5.ReferenceAssemblies is also a reference assembly, but because it's full CLR (well, I'm guessing this is why) it properly redirects to the GAC assembly.

Copy link
Contributor Author

@bergmeister bergmeister Dec 18, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure due to the build failure that happens in 2.0.0 (also without any changes). It might be better to use dotnet test with a test adapter instead because the dotnet xunit has been deprecated ago due to the problems that it has. I did this change in the PowerShell repo PR here, a similar change could be applied here as welll.

Copy link
Contributor

@rjmholt rjmholt Dec 18, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This won't work with PSStandard. It will call the PSStandard default API and fail. It needs to target the relevant PowerShell implementation.

Ideally we would actually load the thing as a module in a PowerShell exe and test it out that way with Pester. But that would mean moving us off xunit.

It's Xunit XOR pwsh.exe

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
<PackageReference Include="xunit" Version="2.4.1-pre.build.4059" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<PackageReference Include="PowerShellStandard.Library" Version="5.1.0" PrivateAssets="All" />
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

echo: xunit question

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
<PackageReference Include="xunit" Version="2.4.1-pre.build.4059" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<PackageReference Include="PowerShellStandard.Library" Version="5.1.0" PrivateAssets="All" />
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

echo: xunit question

@bergmeister bergmeister changed the title Update NuGet packages in 2.0.0 branch WIP Update NuGet packages in 2.0.0 branch Dec 18, 2018
@rjmholt rjmholt force-pushed the 2.0.0 branch 2 times, most recently from 6e8c46b to 91f9b1a Compare January 18, 2019 20:26
@bergmeister
Copy link
Contributor Author

Closing due to merge conflicts being too big due to the rebase

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants