* RunTests dotnet run --no-build
* Remove duplicate run
* Add to Build.props
* Treat CA2007 as a warning in RunTests
* NoWarn CA2007
* Ignore NU5104 for System.CommandLine prerelease package
* PR Feedback
* PR Feedback
* Generate .config/dotnet-tools.json
- add generation to GenerateFiles.csproj
- include all required versions in eng/Versions.props
- nit: bump tool versions slightly
- `dotnet-dump` move from `5.0.0-*` to `6.0.322601` is largest version bump
- have `git` ignore generated file
- nit: put `*.svclog` together w/ other extension exclusions
* Add tool packages to Helix correlation payloads
* Do not restore tools from network
- get tool packages from Helix correlation root
- to do this, save and restore NuGet.config file
- this removes `--version` from `dotnet-dump` and `dotnet-ef` installations
- will only have a single package for each tool in the correlation payload
* Do not pass `dotnet-ef` version to `RunTests`
- mostly cleanup; no longer needed
* Remove DotNetToolsInstaller.csproj
- mostly cleanup
- `dotnet-ef` tool now restored by Arcade's Tools.proj much earlier in our build because
most configured tool packages are needed in `RunTests` on Helix agents
* Add `--playwright` option in `Runtests`
- remove `INSTALLPLAYWRIGHT` define and `$env:INSTALLPLAYWRIGHT`
- always reference Microsoft.Playwright in `RunTests`
- nit: `InstallPlaywrightAsync()` wasn't `async`; fix it and rename to `InstallPlaywright()`
* Use Arcade SDK in `RunTests` and `Publish` project
- match most other projects in this repo
- remove empty Directory.Build.props and .targets files preventing Arcade imports
- exclude project build if `$(SkipTestBuild)` (though not a test project)
* Correct minor problems in `RunTests` source
* Use file-scoped namespaces in `RunTests` source
* Use VS code fixes in `RunTests`
* Use published `RunTests` output on Helix agents
* Move `RunTests` under eng/tools/
- don't need the project on Helix agents
- restore Directory.Build.* files removed when switching to Arcade
* Add `RunTests` to tools.slnf
* Rename `RunTests` project to `HelixTestRunner`
- less confusing given `RunTests` target and runtests.sh et cetera
* !fixup! Define `$(ArtifactsBinDir)` in helix.proj
* !fixup! Use `$(Configuration)` in helix.proj
* !fixup! Fix typo in property function
* !fixup! Fix `dotnet` syntax in runtests.sh
* !fixup! Correct `%(HelixCorrelationPayload.Destination)`
Co-authored-by: Doug Bunting <6431421+dougbu@users.noreply.github.com>
- hook into `Build` target for VS testing and `VSTest` target for `dotnet test`
- VS (vstest.console.exe) examines the test assembly rather than using `msbuild`
- skip `PublishTestAssets` target more e.g. in source-build
- otherwise, attempted to build test assets that weren't restored
- targets ran even if regular `@(ProjectReference)` items had been ignored
- do above for FunctionalTestWithAssets.targets as well
Re-doing #40383 since it closed.
This PR uses CodeGen to produce a list of projects in the repo that have <Trimmable>true</Trimmable>. This list is then used to produce the list of assemblies to test for trim correctness.
- use .dotnet/ folders instead of App.Ref/App.Runtime packages for dotnet-cli layouts
- no need to unzip files into another layout
- fail fast or emit message when layouts don't exist
- set `$(TestDependsOnAspNetPackages)` to `false` by default
- no need to copy all packages into publish/ folders of most test projects
- upload very few times per queue (2 today, maybe 4 in the future), not for _every_ work item
- reduce the size of most work item payloads, saving bandwidth and time
- reduction should not cause problems, even around major version and TFM changes (see .dotnet/ folders)
- add `$(TestDependsOnAspNetAppPackages)` for the App.UnitTests case; just 2 packages needed there
- get App.UnitTests working in local builds
- grab RuntimeList.xml file from App.Runtime's obj/ folder
- find needed packages whether running locally or on Helix agents; should always exist
nits:
- remove test infrastructure we don't need anymore
- use one property for shared Fx and targeting pack versions; always the same
- remove `$env:ASPNET_RUNTIME_PATH`
- use `$(ArtifactsShippingPackagesDir)` in Helix.targets
- use `[MSBuild]::NormalizeDirectory(...)` and `$([System.IO.Path]::Combine(...)` in helix.proj
- rename silly ...ListListsContains... tests
- remove extra `$(TestDependsOnAspNetXyz)` settings to their new default values
- add more comments
- allow RunHelix.ps1 to use any Helix queue
- remove useless `$(IsPackable)` setting
- remove an extra App.Runtime reference; App.Ref brings it in
- in helix.proj:
- tie into inner `BeforeTest` target; ignore `Build` target
- do less work e.g. perform a few fewer up-to-date checks
- don't load NuGet.targets
- use `<Choose/>` to make some either/or options more obvious
- remove some settings
- e.g. leave `$(HelixTestConfigurationFilePath)` stuff to the Helix SDK
- Helix SDK does most of these but `$(EnableXUnitReporter)` has been obsolete for a while
- `Publish` in parallel
* Use `-noBuild` in second build steps of test jobs
- building again in Publish target adds nothing in most cases
- use `-noBuildRepoTasks` more consistently
- again, building the repo tasks wastefully repeated work done in previous build step
- use `-noBuildJava` more consistently in quarantined pipelines
- Java tests aren't worth testing _or building_ in these pipelines because they cannot be quarantined
- remove `-noRestore` and `-noBuildDeps` when `-noBuild` specified; redundant
- work around https://github.com/dotnet/sdk/issues/23777
- do not publish .cshtml files of most test asset projects when `$(NoBuild)` is set
- update FunctionalTestWithAssets.targets to help Publish succeed when `$(NoBuild)` is set
- fixes build jobs in quarantined-pr pipeline where `--no-build` was already specified
- for IIS test assets, perform all builds needed for their profiles within Build target
- move `ReferenceTestTasks=false` and comments about it to where property matters
- merge separate targets in FunctionalTest.props to make items available during (now separate) Publish
nits:
- touch up RunHelix.ps1 console output
- reorder command line arguments for consistency in changed parts of the YAML files
- move `NoBuild=true` setting out of FunctionalTestWithAssets.props
- use `BeforeTargets` in FunctionalTest.props to improve determinism
- remove separate step to restore Interop projects
- make Interop test asset projects more "normal"
- use usual mechanism to target latest ASP.NET Core bits
- remove use of `$(BuildInteropProjects)`
- expand FunctionalTestWithAssets.targets to help w/ local testing
- still delayed and done only when necessary
- handle non-Helix testing e.g. handle `dotnet test` too
- build test assets into location `InteropTests` expects on local machine
- add FunctionalTestWithAssets.props, providing relevant defaults
- expand `FunctionalTestWithAssets` use to Identity.FunctionalTests
nits:
- rename `@(FunctionalTestAssetProjectReference)` to `@(TestAssetProjectReference)`
- cleanup leftover reference to ProjectTemplates/testassets/ in Build.props
- should have been removed in 54ff379
- remove `/p:RunTemplateTests=true`; no need to specify the default
- clean up other projects that use `$(MvcTestingTargets)`
- none need special handling for publish (don't need pages, views, or wwwroot files)
- address confusion hit when fixing an internal 6.0 PR
- generally, reflect Helix.props' use of project settings better
- checks and settings that don't use project settings are in Helix.Common.props
- move `$(Is...Queue)` settings to Helix.Common.props
- these properties depend on the current queue and that's known in helix.proj
- move `$(IsWindowsOnlyTest)` checks to Helix.props
- property is set in projects; never seen in helix.proj
nit: also move `$(RunQuarantinedTests)` default to Helix.Common.props
- global property is visible in helix.proj and may at some point be useful there
- stop using `$(TargetArchitecture)` in Helix.Common.props and Helix.targets
- add `$(IsArm64HelixQueue)`
- make Helix queue choices more readable
- use `<Choose/>
- remove excess `Condition` clauses
- rename `$(IsHelixDaily)` ➡️ `$(IsHelixPRCheck)`
- use new property only in ci.yml and quarantined-pr.yml
- flip check in Helix.Common.props
nit: remove unused `$(IsRequiredCheck)` and `$(CreateHelixPayload)` properties
- part of dotnet/aspnetcore-internal#3950
- also touches on #36032
- update Helix queues from Alpine 3.12 to 3.14, OSX 10.14 to 10.15, and (for Arm64) Debian 9 to 11
- use OSX 11.00 when testing PRs and rolling builds; reduce 10.15 usage to scheduled runs
- remove overlap (all 3 queues) between PRs / rolling builds and scheduled runs
- remove quarantined-pr / quarantined-tests overlap
- build source-index on `windows-latest` (not `vs2017-win2016`)
- update build and Helix Docker images to latest tags
- skip a test class on macOS 10.15
- #38542
nits:
- don't skip unused Helix queues
- remove versions from pipeline job display names
- some were already outdated; rest will be confusing in the future
- remove most comments about unused Helix queues
* Add Server2022 to helix matrix & quarantine jobs
* Skip TLS1.1 test on 2022
* Off by 1
* Update src/Testing/src/xunit/WindowsVersions.cs
Co-authored-by: Chris Ross <chrross@microsoft.com>
* TLS test max versions
Co-authored-by: Chris Ross <chrross@microsoft.com>
* Improve project reference consistency
- use `Private` and `SkipGetTargetFrameworkProperties` w/ `ReferenceOutputAssemblies="false"`
- correct meaningless `$(ReferenceOutputAssemblies)` settings; no such metadata
- `Private="false"` avoids unnecessary file copies
- `SkipGetTargetFrameworkProperties="true"` should reduce useless TFM negotiation
- that said, it can't be used everywhere due to multi-targeting restrictions
- do not use `PrivateAssets="All"` in `@(ProjectReference)` items or `@(Reference) items that become them
- has no meaning in `@(ProjectReference)` items
- add warnings about mixed-up application of `%(Private)` and `%(PrivateAssets)`
nit: make references _look_ consistent too e.g. use consistent attribute order and wrap lines
* Remove most `UndefineProperties` use
- should not be necessary
- but, keep using this metadata when referring to .npmproj projects
* !fixup! Fix build issues found on CI
- remove `SkipGetTargetFrameworkProperties="true"` from App.Ref reference to App.CodeFixes
- need TFM negotiation when App.Ref builds on at least some platforms
- firm up `net7.0` ➡️ `netstandard2.0` transition
- fix typo in Rpm.TargetingPack.rpmproj
- align Microsoft.AspNetCore.AzureAppServices.SiteExtension.csproj w/ Microsoft.AspNetCore.Runtime.SiteExtension.pkgproj
- use same Microsoft.Web.Xdt.Extensions reference approach
nit: remove extra Microsoft.AspNetCore.App.Analyzers references; brought in by App.CodeFixes
* Updates npm dependencies to their latest versions.
* Standardizes build process for our JS dependencies on webpack 5 with babel, etc.
* Updates dependencies for the auth packages to their latest versions.
* Fixes test assets so that they can be run locally.
* Fixes for internal runtime usage in build and PRs
- Don't conditionalize queue adds based on use of open queues.
In eng/targets/Helix.targets, these are replaced with the non-open versions automatically
- Don't use default error detection for the repo tasks build in source build, as this may
pick up the error messages from the first attempts to install an internal runtime from a public location (it later succeeds using the private location.)
* Revert _UseOpenHelixQueues != 'true' for VS2019 Preview queues.
* Avoid running non-preview queues on internal daily test
* Sort
* Add some more comments
* Update eng/targets/Helix.Common.props
Co-authored-by: Doug Bunting <6431421+dougbu@users.noreply.github.com>
* Update eng/SourceBuild.props
Co-authored-by: Doug Bunting <6431421+dougbu@users.noreply.github.com>
* Update eng/targets/Helix.Common.props
Co-authored-by: Doug Bunting <6431421+dougbu@users.noreply.github.com>
Co-authored-by: Doug Bunting <6431421+dougbu@users.noreply.github.com>