Skip to content

Update unix build to include solution parameter#82527

Draft
JoeRobich wants to merge 90 commits intomainfrom
dev/jorobich/what-if-we-build-it-all
Draft

Update unix build to include solution parameter#82527
JoeRobich wants to merge 90 commits intomainfrom
dev/jorobich/what-if-we-build-it-all

Conversation

@JoeRobich
Copy link
Copy Markdown
Member

No description provided.

@RikkiGibson
Copy link
Copy Markdown
Member

I am still only seeing windows results and I can't make sense of it.
image

https://dev.azure.com/dnceng-public/public/_build/results?buildId=1308622&view=ms.vss-test-web.build-test-results-tab

@RikkiGibson
Copy link
Copy Markdown
Member

Beautiful Joey, I see some of the tests I expected to fail now.

https://dev.azure.com/dnceng-public/public/_build/results?buildId=1309025&view=ms.vss-test-web.build-test-results-tab&runId=36567050&resultId=183818&paneView=debug

... unfortunately looking at a lot of failed tests now. 11,000?
Screenshot 2026-02-25 at 7 42 45 AM

akhera99 and others added 19 commits February 27, 2026 11:23
…tion

- LspFileChangeWatcherTests: Use TempRoot path instead of hardcoded Z:\ path
- TestLspClient: Use full socket path for NamedPipeServerStream on Unix
- WorkspaceTestBase: Normalize backslash paths in CreateFiles and GetSolutionFileName
- NetCoreTests: Normalize path separators in DotNetRestore and DotNetBuild
- NewlyCreatedProjectsFromDotNetNew: Skip WPF/WinForms templates on non-Windows

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nly markers

- SolutionTests: Replace hardcoded Z:\ paths with cross-platform s_testFileRoot helper
- CommandLineProjectTests: Mark 12 tests as WindowsOnly (use Windows path semantics)
- CommandLineProjectWorkspaceTests: Mark TestLoadProjectFromCommandLine as WindowsOnly
- FilePathUtilitiesTests: Mark 8 tests as WindowsOnly (test Windows path behavior)
- GeneratedCodeRecognitionTests: Fix z:\ paths with cross-platform helper
- SectionParserTests: Move Windows glob tests to WindowsOnly theory

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- EditAndContinueMethodDebugInfoReaderTests: Split native PDB test case to WindowsOnly
- EmitSolutionUpdateResultsTests: Fix backslash in relative path for cross-platform

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use .ReplaceLineEndings() to normalize CRLF vs LF differences in console output
comparisons across platforms.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- DiffUtilTests: Use ReplaceLineEndings() for cross-platform assertion
- StringTextTest/LargeTextTests: Detect actual newline length from text instead
  of using Environment.NewLine.Length, which differs between platforms when
  source files use CRLF line endings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- AnalyzerAssemblyLoaderTests: Normalize line endings with ReplaceLineEndings
- AnalyzerFileReferenceTests: Normalize both expected and actual strings
- SarifErrorLoggerTests: Add ReplaceLineEndings to JSON output assertions
- SuppressMessageAttributeCompilerTests: Mark test as WindowsOnly

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…NewLine

When no editorconfig sets end_of_line, the formatter defaults to
Environment.NewLine which produces different output on Windows vs Linux.
Change default to CRLF for consistent cross-platform behavior. This
only affects cases where end_of_line is not explicitly set. Projects
with an editorconfig end_of_line setting are unaffected.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- OrganizeUsingsTests: Use OrganizeImportsOptions.Default.NewLine instead
  of Environment.NewLine for consistent cross-platform behavior
- FormattingTests: Use LineFormattingOptions.Default.NewLine in
  AssertFormatBodyAsync transform helper
- FormattingTriviaTests: Use LineFormattingOptions.Default.NewLine
  in FormatWithTabs test

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add .ReplaceLineEndings() to normalize XML output comparison which
uses Environment.NewLine for line endings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ndling

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ixes

- FeaturesTestCompositions: Skip OOP test host on non-Windows (TemporaryStorageService is Windows-only)
- AbstractCodeActionOrUserDiagnosticTest: Guard InProcRemoteHostClientProvider access with Windows check
- CSharpAddDocCommentNodesCodeFixProvider: Use LineFormattingOptions.Default.NewLine instead of Environment.NewLine
- FormattingAnalyzerTests: Use explicit CRLF in TrailingWhitespace test
- RemoveUnnecessaryImportsTests: Use Path.DirectorySeparatorChar for source generator paths
- ConvertToRecordCodeRefactoringTests: Use Path.DirectorySeparatorChar for source generator paths

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…tions

- XmlDocCommentTests: Replace Environment.NewLine with literal CRLF in 67 assertions
- PreprocessorTests: Replace Environment.NewLine with literal CRLF in 10 assertions

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fixes ~1000+ CompileAndVerify test failures on Linux where program output uses LF
but expected strings from CRLF source files have CRLF.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- ConstantTests: Use literal CRLF in ParseAndGetConstantFoldingSteps
- UnsafeTests: Use literal CRLF in CheckIfVariablesNeedFixing

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- ConstantTests: Use CRLF in ParseAndGetConstantFoldingSteps helper
- UnsafeTests: Use CRLF in CheckIfVariablesNeedFixing helper
- CompilationEmitTests: Normalize XML doc output line endings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ency

- CSharpTestSource.Parse: Normalize source text to CRLF before creating SourceText
- BasicTestSource.Parse: Same fix for VB test infrastructure
- WithWindowsLineBreaks: Use ReplaceLineEndings instead of Replace to avoid
  double-converting \r\n when files already have CRLF line endings

Fixes 217 PDB test failures in CSharp.Emit2.UnitTests on Linux.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Change Assert.Equal to AssertEx.Equal for all GetDocumentationCommentXml()
comparisons with multi-line expected strings. AssertEx.Equal normalizes
line endings, preventing failures when actual output uses \n instead of \r\n.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
akhera99 and others added 22 commits March 10, 2026 00:53
…ests

- EditScriptDescription.VerifyEdits: Normalize line endings to LF before
  comparison so raw string expected values match on Linux
- ConvertBetweenRegularAndVerbatimStringTests: Use Environment.NewLine-based
  escape sequences for platform-correct expected output
- ConvertBetweenRegularAndVerbatimInterpolatedStringTests: Same fix

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…resTests

The CRLF normalization in analyzer verifiers was causing mixed line endings on Linux. Source normalized to CRLF but code fixes insert text with LF on Linux. Fix: Remove all CRLF normalization and FormattingOptions2.NewLine from verifiers. Also fix TestOverrideCompletionWithOutCommonReferences.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
OnAutoInsert_EnterKey3: Doc comment generation returns null on Linux (handler bug). OnAutoInsert_RawString_GrowDelimitersWhenEndExists_Interpolated: Same issue. FileRenamed_InWatchedDirectory_FireEventForOriginalPath: FileSystem watcher behavior difference.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ProtocolConversions BackslashPaths: AlwaysSkip with runtime issue link. RemoteE&C OOP: Skip OutOfProcess on non-Windows (OOP not available).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ation

- Fix ___BEGIN___COMMAND_DONE_MARKER___$LASTEXITCODE to ___BEGIN___COMMAND_DONE_MARKER___$LASTEXITCODE$ raw string interpolation in EscapedCurlyBracesInVerbatimString test
  to correctly produce literal {{1}} in expected output
- Remove CRLF normalization from AbstractSnippetProviderTests since the Formatter
  uses Environment.NewLine (platform-native), not hardcoded \r\n

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The verifier infrastructure no longer normalizes to CRLF, so the Copilot
test helper should not normalize the replacement node to CRLF either.
On Linux, the test source has LF and the Formatter produces LF.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The ConvertToRawString refactoring converts escape sequences like \r\n to
raw string content. On Linux, the raw string line endings are LF, so the
conversion changes the string value from CRLF to LF - a production code
bug. Skip these tests on non-Windows platforms.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Re-add CRLF normalization in AbstractSnippetProviderTests because
  NormalizeWhitespace() produces \r\n positions regardless of platform
- Change EndOfDocumentSequences from \r\n to Environment.NewLine in:
  - ConvertToBlockScopedNamespaceAnalyzerTests
  - ConvertToTopLevelStatementsAnalyzerTests
  - ConvertNamespaceRefactoringTests
- Fix MakeMethodSynchronousTests.RemoveAsyncKeepsTrivia to use
  ReplaceLineEndings() on expectedReturn parameter

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…tests

Code actions generate code via SyntaxFactory/NormalizeWhitespace which always
produce \r\n line endings regardless of platform. On Linux where
Environment.NewLine is \n, the Formatter produces \n, creating mixed line
endings in the actual output that don't match the expected \n-only test data.

Fix by:
- Always including end_of_line=crlf in the test editorconfig so the Formatter
  also produces \r\n, matching NormalizeWhitespace output
- Normalizing TestCode/FixedCode/BatchFixedCode to \r\n in all 4 verifier
  Test classes (C#/VB code fix and refactoring verifiers)
- Always adding end_of_line=crlf editorconfig in snippet tests
- Making CompletionFeaturesTests caret position platform-aware

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The EnablePreviewSdks PowerShell script is Windows/Visual Studio-specific
and cannot run on Linux where PowerShell is not installed. The powershell
command was being added unconditionally to command.sh, causing all Linux
Helix work items to exit with code 1.

Wrap the call in a platform check so it only runs on Windows.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… tests

The 'new' property setters on TestCode/FixedCode only work when tests set
those properties directly. Many tests set TestState.Sources and
FixedState.Sources instead, bypassing the normalization.

Move CRLF normalization into RunImplAsync where it processes all source
files in TestState, FixedState, BatchFixedState and their additional
projects. This ensures consistent CRLF line endings regardless of how
tests provide their source code.

Also fix Copilot tests that parse replacement code with
SyntaxFactory.ParseMemberDeclaration - the test data strings have
platform-native line endings which need to be normalized to CRLF.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… set

Tests that explicitly set FormattingOptions2.NewLine (e.g. to '\n') intentionally
test specific line ending behavior. The RunImplAsync CRLF normalization should
not override their intentional line ending choice.

This fixes 3 Windows test failures:
- TestImplementIDisposable_DisposePattern_LF_EndOfLine
- FileHeaderTests.TestNoFileHeaderAsync(lineEnding: '\n') (C# and VB)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Wrapping tests: Normalize input/output to CRLF in AbstractWrappingTests
  (C# and VB) so the wrapping code's 'already existing style' detection
  works consistently when the editorconfig generates CRLF trivia.

- FixAll tests: Add EnsureEditorConfigInAdditionalProjects to propagate
  end_of_line=crlf editorconfig to additional projects so code fixes that
  modify documents across projects produce consistent line endings.

- Global config: When EditorConfig uses is_global=true, add a separate
  regular editorconfig for end_of_line=crlf since global configs don't
  support file glob sections like [*.cs].

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…and BatchFixedState

The test framework's VerifyProjectAsync checks that AnalyzerConfigFiles count
matches between the expected state and actual project. When we added editorconfig
to TestState's additional projects, the FixedState/BatchFixedState additional
projects still had 0 AnalyzerConfigFiles, causing a mismatch.

Apply the editorconfig to all three states to keep them consistent.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- TestAsync: Change ReplaceLineEndings() to ReplaceLineEndings("\r\n") so legacy
  test infrastructure normalizes markup to CRLF on all platforms. This matches
  SyntaxFactory/NormalizeWhitespace which always generates CRLF, ensuring wrapping
  code's 'already existing style' detection works consistently.

- SharedVerifierState: When EditorConfig is a global config (is_global=true), place
  it at /.globalconfig instead of /.editorconfig. This frees /.editorconfig for a
  regular editorconfig with end_of_line=crlf that actually covers all test files.
  Previously the regular editorconfig was at /src/.editorconfig which didn't cover
  test files at /0/... paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…rcing

- Add ReplaceLineEndings() to TestActionCountAsync to match TestAsync behavior.
  Both methods now consistently normalize markup to platform-native line endings,
  fixing DoNotOffer wrapping test failures on Linux where TestActionCountAsync
  was using raw CRLF source while wrapping code generated LF trivia.

- Revert ReplaceLineEndings("\r\n") back to ReplaceLineEndings() in TestAsync.
  Forcing CRLF broke ConvertBetweenRegularAndVerbatimString tests (different escape
  sequences for \r\n vs \n in verbatim strings) and caused mixed-ending issues in
  wrapping Initializer/Collection/Chained tests.

- Revert CRLF normalization from AbstractWrappingTests.cs and
  AbstractParameterWrappingTests.vb. With consistent normalization in both
  TestAsync and TestActionCountAsync, wrapping tests work correctly on both
  platforms without source-level CRLF forcing.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
TestChangeNamespaceAsync has its own comparison logic that bypasses
the ReplaceLineEndings() normalization in TestAsync/TestOperationsAsync.
On Linux, the code fix produces LF for modified lines while the test
markup has CRLF, causing assertion failures.

Add ReplaceLineEndings() to:
- Input markup (initialMarkUp, expectedSourceOriginal, expectedSourceReference)
- Actual text comparison points (actualText, actualRefText)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…structure

- Change verifier test infrastructure from 'force CRLF everywhere' to 'use
  platform-native line endings'. The Roslyn formatter normalizes all EndOfLine
  trivia to match end_of_line, so NormalizeWhitespace's \r\n is converted to
  \n on Linux by the formatter.
- Fix z:\ root path in MakeProjectsAndDocumentsRooted for Linux (use / on Unix)
- Update all 4 verifier Test classes (C#/VB CodeFix/Refactoring)
- Update CodeFixVerifierHelper, SharedVerifierState, AbstractSnippetProviderTests
- Fixes ChangeUsingsInMultipleContainers and wrapping DoNotOffer on Linux

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…a opt-out

The platform-native line ending approach failed because the Roslyn formatter
only normalizes EndOfLine trivia it touches during formatting, not ALL trivia
in the document. Code fixes that insert \r\n (via NormalizeWhitespace) can
leave stray \r\n in the result on Linux.

Revert verifier infrastructure back to forced CRLF normalization (which works
for the majority of tests), and add a targeted opt-out for the
MatchFolderAndNamespace tests: the ChangeNamespace code fix uses
Environment.NewLine directly, so those tests set FormattingOptions2.NewLine
to skip CRLF normalization and use platform-native line endings instead.

SharedVerifierState.Apply() now respects the FormattingOptions2.NewLine option
when generating the regular editorconfig for global-config tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ntTo

Add virtual NormalizeMarkup in legacy test base, override in wrapping test
base classes to force CRLF. Add SetParameterDefaults override to ensure
FormattingOptions2.NewLine is set for all wrapping test paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The XML doc comment referenced SyntaxNode.IsEquivalentTo which is ambiguous
(two overloads). With --warnaserror in Correctness builds, this CS0419
warning was promoted to an error, failing Correctness_Analyzers,
Correctness_Determinism, and Correctness_Bootstrap_Build_Default.

Removed the <see cref> tag and used plain text instead.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@akhera99
Copy link
Copy Markdown
Member

/azp run roslyn-CI

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

akhera99 and others added 4 commits March 12, 2026 15:17
- Fix 10 CSharpRegexParserTests NegativeTests: convert hardcoded English
  diagnostic messages to FeaturesResources interpolation
- Fix 6 TopLevelEditingTests: use GetResource/DeletedSymbolDisplay for
  localized E&C diagnostic arguments
- Add operator mapping to EditingTestBase.TryGetResource
- Add IsEnglishLocal to LSP tests with hardcoded English strings:
  CompletionTests (3), CodeActionsTests (4), CompletionFeaturesTests (3),
  HoverTests (1)
- Add IsEnglishLocal to EnableNullableTests.IgnoreGeneratedCode and
  RemoveUnnecessaryCastTests.RemoveUnnecessaryCastAndParseCorrect

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The TestGetRegexCompletionsReplaceTextAsync and
TestGetRegexCompletionsWithoutItemDefaultSupportAsync tests have
locale-dependent completion descriptions that fail on non-English
locales. Add ConditionalTheory(typeof(IsEnglishLocal)) to skip
them on non-English CI machines.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This test uses AssertReleased() which relies on non-deterministic
GC behavior and fails on Linux CI under load. Seven sibling tests
using the same pattern are already skipped with issue #13433.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants