Skip to content

Commit

Permalink
Update from 16.8 (#2588)
Browse files Browse the repository at this point in the history
* Hide -release in console

* Add param block

* Match on whole branch name

* Set var

* Change assertion

* Trim version

* Update dependencies from https://github.com/dotnet/arcade build 20200602.3 (#2456)

Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SignTool , Microsoft.DotNet.SwaggerGenerator.MSBuild
 From Version 5.0.0-beta.20052.1 -> To Version 1.0.0-beta.20302.3

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>

* Update feeds

* Revert to previous dotnet version

* Added new exception handling (#2461)

* Test space added

* Exception handler was added to catch AccessDeniedException while trying to create TestResults folder

* Remove unnecessary space

* Deleted unnecessary test. Changed console message and corrected folder path in that message

* Remove unnecessary dot

* Removed unnecessary lines and usings and coreccted exception message

* Removed unnecessary line

* Updating resource files

* New exception handling was added

* Formatted exception message

* Adding test run attachments processing (#2463)

* v1

* Merging v1

* Rename to MultiTestRunsFinalization

* New version

* More changes

* More changes

* Next changes

* Fix

* test

* More changes

* Dmc chagnes

* next

* small changes

* compiled

* More changes

* acceptance tests green

* Review comments #1

* Resolving more comments

* Tests for design mode client

* Tests for events handler

* revert not related changes

* More changes

* Compiling OK, tests OK

* Unit tests for manager

* More changes

* More tests

* tests for reqeust sender

* more tests

* Tests for cancelling

* Acceptance tests done

* Remove not used stuff

* Fix comments

* Fix race condition in test

* Fix another race condition

* Fix converting to xml

* fix next test

* fix test

* Next changes

* Review changes #1

* Fixing multi test finalization manager tests

* Fixes

* Fix last unit test

* Fix acceptance tests

* Progress feature, compiling + unit tests

* acceptance tests changes

* More changes

* Fixing resources accesability

* Fix test

* Fix race conditions in acceptance tests

* RFC changes merged

* Log warning in case of unexpected message id

* Fix spelling

* Additional comment

* Restore some stuff in interfaces

* Big renaming

* Added processingSettings

* Fix naming

* Move explanation to <remarks>

* Add environment variables to enable MacOS dump

* Fixed code coverage compatibility issue (#2527)

Fixed code coverage compatibility issue

* Print version of the product in log (#2535)

* Trigger dumps asynchronously (#2533)

* Run each dump in a task in netclient dumper

* More reasonable timeout

* Revert "Trigger dumps asynchronously (#2533)" (#2541)

This reverts commit 3454261.

* Remove env variables

* Remove sleeps and extra process dumps from blame

* Fix blame parameter, warning, and add all testhosts to be ngend (#2579)

* Forward merge fixes from master to rc2 (#2581)

* Avoid logging >Task returned false but did not log an error.< (#2557)

* Avoid logging >Task returned false but did not log an error.< on test failure

* Add VSTEST_BUILD_DEBUG env var

* Using namespaces

* Invert the switch because it will be still backwards in the final release

* Use bitness from process or OS (#2571)

* Do not force .NET4.5 in case legacy test settings are provided (#2545)

* Do not force .NET4.5 in case legacy test settings are provided

* Net core app

* Fix runconfig

* Default platform

* Generate release notes in pipeline

* Fix release-notes-script

Co-authored-by: dotnet-maestro[bot] <42748379+dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Sanan Yuzbashiyev <Sanan07@users.noreply.github.com>
Co-authored-by: Jakub Chocholowicz <59966772+jakubch1@users.noreply.github.com>
Co-authored-by: Codrin-Victor Poienaru <cvpoienaru@gmail.com>
  • Loading branch information
6 people committed Oct 6, 2020
1 parent a319f62 commit 5e59fa4
Show file tree
Hide file tree
Showing 8 changed files with 445 additions and 27 deletions.
119 changes: 119 additions & 0 deletions scripts/write-release-notes.ps1
@@ -0,0 +1,119 @@
[CmdletBinding()]
param
(
[string] $Path = ".",
# if this is a pre-release or stable version
[switch] $Stable,
# externally provide the version number we will use
[string] $PackageVersion,
# in CI we don't know the end tag, so we diff till the current commit
[switch] $EndWithLatestCommit
)

if ($EndWithLatestCommit -and [string]::IsNullOrWhiteSpace($PackageVersion)) {
throw "EndWithLatestCommit was enabled, provide PackageVersion in this format 16.8.0-preview-20200924-01, or this format 16.8.0."
}

$repoUrl = $(if ((git -C $Path remote -v) -match "upstream") {
git -C $Path remote get-url --push upstream
}
else {
git -C $Path remote get-url --push origin
})-replace "\.git$"

# list all tags on this branch ordered by creator date to get the latest, stable or pre-release tag.
# For stable release we choose only tags without any dash, for pre-release we choose all tags.
$tags = git -C $Path tag -l --sort=creatordate | Where-Object { $_ -match "v\d+\.\d+\.\d+.*" -and (-not $Stable -or $_ -notlike '*-*') }

if ($EndWithLatestCommit) {
# in CI we don't have the tag yet, so we show changes between the most recent tag, and this commit
# we figure out the tag from the package version that is set by vsts-prebuild
$start = $tags | Select-Object -Last 1
$end = git -C $Path rev-parse HEAD
$tag = "v$PackageVersion"
}
else {
# normally we show changes between the latest two tags
$start, $end = $tags | Select-Object -Last 2
$tag = $end
}

# # override the tags to use if you need
# $start = "v16.8.0-preview-20200812-03"
# $end = $tag = "v16.8.0-preview-20200921-01"


Write-Host "Generating release notes for $start..$end$(if ($EndWithLatestCommit) { " (expected tag: $tag)" })"

$sourceBranch = $branch = git -C $Path rev-parse --abbrev-ref HEAD
if ($sourceBranch -eq "HEAD") {
# when CI checks out just the single commit, https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml
$sourceBranch = $env:BUILD_SOURCEBRANCH -replace "^refs/heads/"
}

if ([string]::IsNullOrWhiteSpace($branch)) {
throw "Branch is null or empty!"
}

if ([string]::IsNullOrWhiteSpace($sourceBranch)) {
throw "SourceBranch is null or empty!"
}

Write-Host "Branch is $branch"
Write-Host "SourceBranch is $sourceBranch"
$branchesWithStartTag = git -C $Path branch --contains tags/$start

if (-not $branchesWithStartTag -or -not ($branchesWithStartTag -match $branch)) {
Write-Host "This branch $branch$(if($branch -ne $sourceBranch){" ($sourceBranch)"}), does not contain the starting tag $start. Skipping generating release notes."
if ($branchesWithStartTag) {
Write-Host "The tag is present on branches:`n$($branchesWithStartTag)."
}
return
}
else {
Write-Host "Branch $branch$(if($branch -ne $sourceBranch){" ($sourceBranch)"}) has tag $start, getting log since that."
}

$prUrl = "$repoUrl/pull/"
$v = $tag -replace '^v'
$b = if ($Stable) { $v } else { $tag -replace '.*?(\d+-\d+)$', '$1' }
# using .. because I want to know the changes that are on this branch, but don't care about the changes that I don't have https://stackoverflow.com/a/24186641/3065397
$log = (git -C $Path log "$start..$end" --oneline --pretty="format:%s" --first-parent)
$issues = $log | ForEach-Object {
if ($_ -match '^(?<message>.+)\s\(#(?<pr>\d+)\)?$') {
$message = "* $($matches.message)"
if ($matches.pr) {
$pr = $matches.pr
$message += " [#$pr]($prUrl$pr)"
}

$message
}
else
{
"* $_"
}
}

$output = @"
See the release notes [here](https://github.com/microsoft/vstest-docs/blob/master/docs/releases.md#$($v -replace '\.')).
-------------------------------
## $v
### Issue Fixed
$($issues -join "`n")
See full log [here]($repoUrl/compare/$start...$tag)
### Drops
* TestPlatform vsix: [$v](https://vsdrop.corp.microsoft.com/file/v1/Products/DevDiv/microsoft/vstest/$sourceBranch/$b;/TestPlatform.vsix)
* Microsoft.TestPlatform.ObjectModel : [$v](https://www.nuget.org/packages/Microsoft.TestPlatform.ObjectModel/$v)
"@


$output
$output | clip
Expand Up @@ -348,6 +348,7 @@ private void ValidateAndAddHangBasedProcessDumpParameters(XmlElement collectDump

break;

// allow HangDumpType attribute to be used on the hang dump this is the prefered way
case XmlAttribute attribute when string.Equals(attribute.Name, Constants.HangDumpTypeKey, StringComparison.OrdinalIgnoreCase):

if (string.Equals(attribute.Value, Constants.FullConfigurationValue, StringComparison.OrdinalIgnoreCase) || string.Equals(attribute.Value, Constants.MiniConfigurationValue, StringComparison.OrdinalIgnoreCase))
Expand All @@ -361,6 +362,20 @@ private void ValidateAndAddHangBasedProcessDumpParameters(XmlElement collectDump

break;

// allow DumpType attribute to be used on the hang dump for backwards compatibility
case XmlAttribute attribute when string.Equals(attribute.Name, Constants.DumpTypeKey, StringComparison.OrdinalIgnoreCase):

if (string.Equals(attribute.Value, Constants.FullConfigurationValue, StringComparison.OrdinalIgnoreCase) || string.Equals(attribute.Value, Constants.MiniConfigurationValue, StringComparison.OrdinalIgnoreCase))
{
this.processFullDumpEnabled = string.Equals(attribute.Value, Constants.FullConfigurationValue, StringComparison.OrdinalIgnoreCase);
}
else
{
this.logger.LogWarning(this.context.SessionDataCollectionContext, string.Format(CultureInfo.CurrentUICulture, Resources.Resources.BlameParameterValueIncorrect, attribute.Name, Constants.FullConfigurationValue, Constants.MiniConfigurationValue));
}

break;

default:

this.logger.LogWarning(this.context.SessionDataCollectionContext, string.Format(CultureInfo.CurrentUICulture, Resources.Resources.BlameParameterKeyIncorrect, blameAttribute.Name));
Expand Down Expand Up @@ -454,7 +469,7 @@ private void SessionEndedHandler(object sender, SessionEndEventArgs args)
{
try
{
var dumpFiles = this.processDumpUtility.GetDumpFiles();
var dumpFiles = this.processDumpUtility.GetDumpFiles(warnOnNoDumpFiles: this.collectDumpAlways);
foreach (var dumpFile in dumpFiles)
{
if (!string.IsNullOrEmpty(dumpFile))
Expand Down
Expand Up @@ -11,10 +11,11 @@ public interface IProcessDumpUtility
/// <summary>
/// Get generated dump files
/// </summary>
/// <param name="warnOnNoDumpFiles">Writes warning when no dump file is found.</param>
/// <returns>
/// Path of dump file
/// </returns>
IEnumerable<string> GetDumpFiles();
IEnumerable<string> GetDumpFiles(bool warnOnNoDumpFiles = true);

/// <summary>
/// Launch proc dump process
Expand Down
Expand Up @@ -51,7 +51,7 @@ public ProcessDumpUtility(IProcessHelper processHelper, IFileHelper fileHelper,
};

/// <inheritdoc/>
public IEnumerable<string> GetDumpFiles()
public IEnumerable<string> GetDumpFiles(bool warnOnNoDumpFiles = true)
{
if (!this.wasHangDumped)
{
Expand Down Expand Up @@ -82,7 +82,7 @@ public IEnumerable<string> GetDumpFiles()
}
}

if (!foundDumps.Any())
if (warnOnNoDumpFiles && !foundDumps.Any())
{
EqtTrace.Error($"ProcessDumpUtility.GetDumpFile: Could not find any dump file in {this.hangDumpDirectory}.");
throw new FileNotFoundException(Resources.Resources.DumpFileNotGeneratedErrorMessage);
Expand Down
Expand Up @@ -27,7 +27,7 @@ public WindowsHangDumper(Action<string> logWarning)
public void Dump(int processId, string outputDirectory, DumpTypeOption type)
{
var process = Process.GetProcessById(processId);
var processTree = process.GetProcessTree();
var processTree = process.GetProcessTree().Where(p => p.Process.ProcessName != "conhost" && p.Process.ProcessName != "WerFault").ToList();

if (processTree.Count > 1)
{
Expand Down
16 changes: 16 additions & 0 deletions src/package/VSIXProject/TestPlatform.csproj
Expand Up @@ -238,6 +238,22 @@

<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.exe" Ngen="true" NgenArchitecture="X64" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.x86.exe" Ngen="true" NgenArchitecture="X86" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.x86.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net452.exe" Ngen="true" NgenArchitecture="X64" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net452.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net452.x86.exe" Ngen="true" NgenArchitecture="X86" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net452.x86.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net46.exe" Ngen="true" NgenArchitecture="X64" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net46.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net46.x86.exe" Ngen="true" NgenArchitecture="X86" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net46.x86.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net461.exe" Ngen="true" NgenArchitecture="X64" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net461.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net461.x86.exe" Ngen="true" NgenArchitecture="X86" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net461.x86.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net462.exe" Ngen="true" NgenArchitecture="X64" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net462.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net462.x86.exe" Ngen="true" NgenArchitecture="X86" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net462.x86.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net47.exe" Ngen="true" NgenArchitecture="X64" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net47.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net47.x86.exe" Ngen="true" NgenArchitecture="X86" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net47.x86.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net471.exe" Ngen="true" NgenArchitecture="X64" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net471.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net471.x86.exe" Ngen="true" NgenArchitecture="X86" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net471.x86.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net472.exe" Ngen="true" NgenArchitecture="X64" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net472.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net472.x86.exe" Ngen="true" NgenArchitecture="X86" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net472.x86.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net48.exe" Ngen="true" NgenArchitecture="X64" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net48.exe" />
<VsixSourceItem Update="$(VsixInputFileLocation)\testhost.net48.x86.exe" Ngen="true" NgenArchitecture="X86" NgenPriority="2" NgenApplication="$(ExtensionInstallationRelativeToVS)\testhost.net48.x86.exe" />
</ItemGroup>
<ItemGroup>
<Content Include="License.rtf">
Expand Down

0 comments on commit 5e59fa4

Please sign in to comment.