* Fix chrome/selenium tests (#25330)
* Revert "Disable failing/hanging tests due to Chrome/Selenium issue (#25323)"
This reverts commit 332f1504128a63431cb67830703922cdeefee525.
* Update Selenium to latest
* Update API
* Try specifying a version
* Update Selenium to 4.0.0-beta5
* Disable browser log tests
* Fix components e2e tests and disable blazor standalone template test
* Disable tests using browser log
* Disable template test
* Avoid using .NET formatted strings in tests
* Annotate BasicTestApp suggesting that it needs the all globalization data
* Culture specific formatting relies on the ICU data carried by the OS. This
causes issues in our tests if WebAssembly carries a different set than the OS. Instead
updating these tests to use hardcoded strings.
* Additionally fixing an issue where some projects in the solution were using tasks from
the .dotnet SDK rather than the local copy of the SDK. This was causing issues building locally.
Co-authored-by: Pranav K <prkrishn@hotmail.com>
- dotnet-watch builds against runtime in the SDK
- other projects build after runtime project due to Ref.csproj reference
- but, when the targeting packs aren't building, there's no reason to use Ref.csproj
- followup on 76fbd1a283 and 84962660a3, reducing parallelism in build
- include all shipping packages in Helix payloads that need runtime
- remove hard-coded `-ci` that broke Helix tests with stable versions or local builds
- for local builds, do not assume `$(Configuration)` is Release
- support `$(HelixTargetQueues)` property used in RunHelix.ps1
- lost somewhere along the lines; script ran full matrix
nits:
- clean up redundant addition of runtime and ref/ packages
- `@(HelixContent)` additions in `_CreateHelixWorkItem` target are ignored
- mention '+' separation of `-HelixQueues` argument to RunHelix.ps1
- allow `$(IsUnitTestProject)` override in case we need it in the future
* Create data sources "per router" instance.
* Make a global shared order sequence "per router" for conventional and
controller and page routes.
* Create DynamicControllerEndpointSelector and DynamicPageEndpointSelector
instances per data source.
* Update gRPC version in template to 2.32.0-pre1
* Log server timeout detail
* Only run interop tests on windows queues
Co-authored-by: John Luo <johluo@microsoft.com>
* Correct `$(SharedFxVersion)` and `$(TargetingPackVersion)` values
- Ensure `$(SharedFxVersion)` doesn't change in `$(NoSemVer20)` projects
- Ignore current project's `$(VersionSuffix)` in `$(TargetingPackVersion)`
- Never assume `$(AspNetCoreBaselineVersion)` matches released targeting pack
- Stabilize both versions correctly
- Use these properties more widely
- Remove other mechanisms to get the same values
- Reduce use of the `_GetPackageVersionInfo` target
- Reduce use of `$(SharedFxVersion)` for the targeting pack
nits:
- Correct comments about old RTMVersions.csproj project
- Fix or remove a few other comments
* Do not pass package filenames on Helix command Lines
- remove parsing of these command-line arguments from `RuntestOptions`
- instead craft the names using passed `$(SharedFxVersion)`
- restore `$(DotNetRuntimeSourceFeedKey)` on Helix command line
- lost somewhere along the line
- correct argument count in runtests.sh
- treated 11th argument as both Helix timeout and feed credential
- count was messed up somewhere alone the line
nits:
- update C# syntax in `RuntestOptions` e.g. remove unused `public` setters
- sort and group properties and their assignments
templates will be showing the templates directly in the New Project
Dialog instead in the One ASP.NET dialog.
In this PR I have updated the English titles. For localized strings we
will need to get those from the localization team. I believe we are not
setup for that to be automated here.
I think we should merge the English strings because they are the most
used, and for other locales we will show the old localized names for
now. If it's difficult to get those localized, I can work with @phenning
to see if we can localize those files this time.
* Add option to specify hostName for refresh server
* Update env variable name per suggestion
Co-authored-by: Pranav K <prkrishn@hotmail.com>
Co-authored-by: Pranav K <prkrishn@hotmail.com>
This change makes TypeReference usage a little bit easier
- Marking it abstract make it so that usages cannot "forget" subclassing (or omitting the { } part). Previously the error message would be confusing as the supertype would be Object.
- Removing the instanceof check and relying on exception since instantiating TypeReference without a type parameter (new TypeReference() ) *is* exceptional as it goes against the intention of this class altogether.
- Added some clarification to the javadoc regarding intended usage, and a link to prior art for further reading.
This lets MVC use the defaults as specified by System.Text.Json. Right now, these defaults are identical
to the two properties that were removed. However this allows MVC to pick up new S.T.J defaults in 6.0 including when
users attempt to use a 6.0 versioned package with 5.0
Changes WiX toolset used to 3.14 to support ARM64
Generates targeting pack from the x86/x64 leg, as it gets produced using a zip that gets generated there.
The ARM64 leg now produces all the necessary msi's, exe, and wixlib needed for the installer to generate a bundle.
* Fix header tab ordering issues. Fixes 1163117
* Ensure text can be zoomed to 200% without switching to mobile layout. Fixes 1163184.
* Ensure "Log out" link can show focus state. Fixes 1162890
* Use screen reader-friendly link text. Fixes 1163642
* Update template test
* Fix caching of WASM resources on localhost
* Fix test server startup
* Add missing server variant of VirtualizationTest
* Make test namespaces consistent
* Fix VirtualizationTest cases
* Update BootResourceCachingTest
* Update JS interop to use auto-loaded ES6 module
* Test update
* Make it lazy for compatibility with prerendering
* Update comment
* Code style: go back to .AsTask - it's probably easier to read
[release/5.0-rc2] Update dependencies from dotnet/arcade dotnet/runtime dotnet/efcore
- Updates:
- System.ComponentModel.Annotations: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Diagnostics.DiagnosticSource: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Diagnostics.EventLog: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.DirectoryServices.Protocols: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Logging.Abstractions: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Logging.Configuration: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Logging.Console: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Logging.Debug: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Logging.EventLog: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Logging.EventSource: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Logging.TraceSource: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Options: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Options.ConfigurationExtensions: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Options.DataAnnotations: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Primitives: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Logging: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Internal.Transport: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Http: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Hosting.Abstractions: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Caching.Abstractions: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Caching.Memory: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Configuration: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Configuration.Abstractions: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Configuration.Binder: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Configuration.CommandLine: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Configuration.EnvironmentVariables: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Configuration.FileExtensions: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Configuration.Ini: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Configuration.UserSecrets: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Configuration.Xml: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.DependencyInjection: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.DependencyInjection.Abstractions: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.DependencyModel: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.FileProviders.Abstractions: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.FileProviders.Composite: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.FileProviders.Physical: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.FileSystemGlobbing: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.HostFactoryResolver.Sources: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Hosting: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Extensions.Configuration.Json: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.NETCore.App.Runtime.win-x64: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.NETCore.BrowserDebugHost.Transport: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.NETCore.Platforms: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Win32.Registry: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.Win32.SystemEvents: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.NETCore.App.Internal: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Microsoft.NETCore.App.Ref: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Drawing.Common: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Threading.Channels: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Windows.Extensions: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Text.Json: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Text.Encodings.Web: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.ServiceProcess.ServiceController: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.IO.Pipelines: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Net.Http.Json: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Net.Http.WinHttpHandler: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Net.WebSockets.WebSocketProtocol: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Reflection.Metadata: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Runtime.CompilerServices.Unsafe: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Security.AccessControl: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Security.Cryptography.Cng: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Security.Cryptography.Pkcs: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Security.Cryptography.Xml: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Security.Permissions: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Security.Principal.Windows: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- System.Resources.Extensions: from 5.0.0-rc.2.20452.8 to 5.0.0-rc.2.20454.25
- Updates:
- Microsoft.EntityFrameworkCore.Tools: from 5.0.0-rc.2.20452.4 to 5.0.0-rc.2.20458.4
- Microsoft.EntityFrameworkCore.SqlServer: from 5.0.0-rc.2.20452.4 to 5.0.0-rc.2.20458.4
- dotnet-ef: from 5.0.0-rc.2.20452.4 to 5.0.0-rc.2.20458.4
- Microsoft.EntityFrameworkCore: from 5.0.0-rc.2.20452.4 to 5.0.0-rc.2.20458.4
- Microsoft.EntityFrameworkCore.Design: from 5.0.0-rc.2.20452.4 to 5.0.0-rc.2.20458.4
- Microsoft.EntityFrameworkCore.Relational: from 5.0.0-rc.2.20452.4 to 5.0.0-rc.2.20458.4
- Microsoft.EntityFrameworkCore.Sqlite: from 5.0.0-rc.2.20452.4 to 5.0.0-rc.2.20458.4
- Microsoft.EntityFrameworkCore.InMemory: from 5.0.0-rc.2.20452.4 to 5.0.0-rc.2.20458.4
- Updates:
- Microsoft.DotNet.Build.Tasks.Installers: from 5.0.0-beta.20431.1 to 5.0.0-beta.20452.19
- Microsoft.DotNet.Helix.Sdk: from 5.0.0-beta.20431.1 to 5.0.0-beta.20452.19
- Microsoft.DotNet.Arcade.Sdk: from 5.0.0-beta.20431.1 to 5.0.0-beta.20452.19
- System.IO.Pipelines Fix
(cherry picked from commit 520b9e23f027d7cca49d33f1dc6b2a0e57c893b3)
- Skip reference check of System.IO.Pipelines ref/ assembly
- add Framework projects to solution
- add Framework.slnf and startvs.cmd in src/Framework
- Merge branch 'release/5.0-rc2' into darc-release/5.0-rc2-d6b9c1c0-be36-4d12-b860-e7e54a75cb6d
- part of #24347
- unable to do src/Components/Authorization due to contained `*.razor` file
- ignored src/Components/Analyzers and src/Components/WebAssembly/Sdk
This change includes several improvements to CSS isolation that we have gathered from validation and usage feedback.
We have switched from producing a single scoped CSS bundle file for the entire application with all the scoped css files from the current project, referenced projects and package projects to producing one bundle per referenced project/package and to include those bundles into an "application" bundle throught CSS @import statements.
We have cleaned up the bundle names to make them more unique by including the project name on them and we have also cleaned up the bundle extensions.
We have decided to put the individual bundles generated for the project scoped css assets into the static web assets base path of the project, so that when developers reference assets from their scoped css files (like using the CSS url function) the path they use matches what they have inside their library wwwroot folder.
We have decided to put the application bundle on the root path of the application provided that the developer has not overriden the default StaticWebAssetsBasePath.
This is so that the bundle location is consistent across templates, and can be found at ProjectName.styles.css independent of whether the app is a blazor webassembly app or a server side blazor app.
For cases where the default StaticWebAssetBasePath has been overriden, the value is respected and the bundle is placed at $(StaticWebAssetBasePath)/ProjectName.styles.css.
Packaged razor class libraries with scoped css files now package a "project" bundle instead of the individual files.
* Added IJSUnmarshalledObjectReference
* Working support for IJSUnmarshalledObjectReference
* CR feedback
* Removed IVT and made JSObjectReference public
* Updated JSON converter.
* Update JSObjectReferenceJsonConverterTest.cs
* Removed whitespace 😓
* Use ItemSize if it's close to the calculated item size.
* Update WeatherForecastService.cs
* Improved item size calculation.
* Always use calculated item size
* Disable overflow anchoring on scroll containers (except the document itself)
* Update JS files following rebase
* Apply overflow anchor fix to document element too
* Add OverscanCount parameter
Co-authored-by: Steve Sanderson <SteveSandersonMS@users.noreply.github.com>
* Separate MessagePackHubProtocol into its own package
* Remove gitignore
* Maybe undo this later
* More factoring
* Get gradle test working
* Get gradle test working
* Get rid of version.java
* Separate build.gradle files for all
* Create separate javaproj's for everything
* Fix warnings
* Resolve conflicts
* Fixup gitignore
* Feedback, fix error
* Fix error
* Change package name
* Fix folder structure
* Skip helix tests, fix .gitignore
* Make TransferFormat private
* Enable Public API analyzer for some projects
* Analyzers
* Antiforgery
* Azure (except AzureAD.UI and AzureADB2C.UI due to issues with Razor compiler)
* Configuration.KeyPerFile
* DataProtection
* DefaultBuilder
* Features/JsonPatch
* FileProviders
* HealthChecks
* Hosting
* Add light/lit command packages
This adds light command package generation to aspnetcore.
After build of a wix project, generate a light package based off of the inputs that are sent to light.exe/lit.exe.
- handle differing SiteExtensions package versions
- the arch-specific packages don't stabilize when final package does
- update 3.1 packages in bundle to 3.1.7 version
- remove useless empty folder from LoggingBranch (arch-specific) package
- double slashes help nobody but add an empty-named level in the package
nit: fix a binary log filename
- always use `$([MSBuild]::VersionXYZ(...))` for version checks
- use `$(NETCoreAppFrameworkIdentifier)` where it's available
- move `$(KnownAppHostPackOrFrameworkReferenceTfm)` setting to Directory.Build.props
- use it to correct `@(KnownFrameworkReference)` updates
- metadata of those items still uses `netcoreapp5.0`
- see also https://github.com/dotnet/efcore/pull/22279#discussion_r478674176
nits:
- do not assume `$(TargetFrameworkVersion)` starts with a 'v'; valid w/o it
- add `$(_IsMicrosoftNETCoreApp20OrOlder)` property in OpenAPI targets file
- evaluate the `Condition` once instead of three times
* Changes from API review
* Feedback from security review
* Update IBrowserFile.cs
* Updated documentation.
* Moved InputFile to M.A.Components.Forms
* More changes
* Move ProtectedBrowserStorage to it's own package
* Mark Components.Web.Extensions as non-shipping until we can move it over
* Allow InputFile.OpenReadStreamAsync to specify an expected file size.
* Fix E2E tests
* CR: Throw if user supplies too many files.
* Another build fix
* CR: Zero files is not a scenario
* Update E2E tests
* Update JS binaries after rebase
* Update test
Co-authored-by: Pranav K <prkrishn@hotmail.com>
Co-authored-by: Steve Sanderson <SteveSandersonMS@users.noreply.github.com>
* Restore legacy behavior for certs without private keys
- When trying to use an SSL certificate without a private key, SslStream would try to find another certificate in the cert store matching the thumbprint. Now that we're using the SslStreamCertificateContext, that behavor is no longer included so we need to restore it in Kestrel.
* Handle cert store failing to open
* Updating Web project templates to ms.id.web 0.3.0-preview
* version bump
and quick fix to the Blasorwasm default values for
the Web api so that customers have a better experience
* Microsoft.Graph is brought in transitively by MS.ID.Web
Co-authored-by: John Luo <johluo@microsoft.com>
* Use MonoProxy package for debugging
* Initial working end-to-end
* Update package version and polish up dbging issues
* Throw exception if DebugProxy received no output
- mostly duplicates #25217
- update `BaselineGenerator` to produce baselines useful in 6.0 (too)
- update Baseline.Designer.props using new generator (matching 3.1.7 release)
- always suppress references expressed only in `*.nuspec` files
- needed even in servicing builds
- restore warning and errors about removed references (new for 5.0)
- adjust exclusions to handle `@(_ProjectReferenceByAssemblyName)` removal
nit: do not generate empty `<ItemGroup />` elements
* Correct `@(SuppressBaselineReference)` items
- remove out-of-date `@(SuppressBaselineReference)` items
- either 3.1.7 baselines we're using don't include reference or still using package
- fix some comments and `Condition` attributes to make remainder easy to find
- add missing `@(SuppressBaselineReference)` items
* Record type follow ups:
* Throw an error if a record type property has validation metadata
* Disallow TryUpdateModel on a top-level record type
* Ignore previously specified model value when binding a record type
* Unskip record type tests
* Clean up record type detection
* Update src/Mvc/Mvc.Abstractions/src/Resources.resx
Co-authored-by: James Newton-King <james@newtonking.com>
* Fixup tests
* Update src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelMetadata.cs
* Update src/Mvc/Mvc.Abstractions/src/ModelBinding/ModelMetadata.cs
* Update src/Mvc/Mvc.Abstractions/src/Resources.resx
Co-authored-by: Doug Bunting <6431421+dougbu@users.noreply.github.com>
* Update src/Mvc/Mvc.Core/src/Resources.resx
Co-authored-by: Doug Bunting <6431421+dougbu@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: James Newton-King <james@newtonking.com>
Co-authored-by: Doug Bunting <6431421+dougbu@users.noreply.github.com>
* Support pseudoelements in CSS scoping. Fixes#25268
* CR: More test cases
* Another pseudoelement case
* Case insensitivity for single-colon pseudoelements
Not that anybody should ever want to do this
* Avoid an allocation
* Add net461 TFM to netstandard2.0 projects
* Fix a couple of errors
* Fix some errors
* Get rid of Sockets reference
* Respond to feedback
* net461 -> property
* Fixup clientSample
* Remove net461 from analyzers/razor
* Remove net461 from test projects
* Feedback
* Add net461 test configs
* Remove some incompatible test configs
* Fix test
Follow up to https://github.com/dotnet/aspnetcore/pull/24912.
Not shipping NodeServices isn't enough since it's referenced by SpaServices. This PR removes the two packages
that were announced to be removed in 5.0
dotnet-watch expects full paths to files to watch in all added items. For files in the current project, this
happens to work. However this does not work very well for files in referenced projects. Using the FullPath metadata
does not work during global evaluation, but we're able to do this in a target.
This change adds extensibility to the dotnet-watch tool that allows calling a target as part of "watch" evaluation.
Fixes https://github.com/dotnet/aspnetcore/issues/22219
* Do not include the shared framework in the packages
DevServer and dotnet-watch include binaries from the ASP.NET Core shared framework
as part of the package. This change compiles these projects against the most recently built
version of the shared framework which ensures build and publish work as normals. Individual
projects from the runtime can be referenced to pick up new runtime features when necessary
* More hacks!
* Ensure shared runtime is built before running tests
* Delete dotnet-watch.nuspec
* Guard against client disconnect exceptions that appear when performing ReadFormAsync
Reading the request body may throw an exception. This change adds some extra guards
for this and presents this as a 4xx response rather than a 5xx response.
* Add some tests
* Fixup test
* Reject @import rules in scoped CSS files
* CR feedback: Use SourceText
* CR feedback: Another test case
* Use same file reading mechanism as "generate" command