Showing preview only (6,950K chars total). Download the full file or copy to clipboard to get everything.
Repository: dotnet/xharness
Branch: main
Commit: 445cc8d23b5b
Files: 651
Total size: 6.5 MB
Directory structure:
gitextract_fjkujnb6/
├── .azuredevops/
│ └── dependabot.yml
├── .config/
│ └── tsaoptions.json
├── .editorconfig
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│ ├── copilot-instructions.md
│ └── workflows/
│ ├── backport.yml
│ └── copilot-setup-steps.yml
├── .gitignore
├── Build.cmd
├── CODE_OF_CONDUCT.md
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── LICENSE.TXT
├── NuGet.config
├── README.md
├── SECURITY.md
├── THIRD-PARTY-NOTICES.TXT
├── XHarness.slnx
├── azure-pipelines-public.yml
├── azure-pipelines.yml
├── build.sh
├── decoded_output.xml
├── docs/
│ ├── high-level-architecture.md
│ └── integrity-check.md
├── eng/
│ ├── Publishing.props
│ ├── Signing.props
│ ├── Version.Details.xml
│ ├── Versions.props
│ ├── common/
│ │ ├── AGENTS.md
│ │ ├── BuildConfiguration/
│ │ │ └── build-configuration.json
│ │ ├── CIBuild.cmd
│ │ ├── PSScriptAnalyzerSettings.psd1
│ │ ├── README.md
│ │ ├── SetupNugetSources.ps1
│ │ ├── SetupNugetSources.sh
│ │ ├── build.cmd
│ │ ├── build.ps1
│ │ ├── build.sh
│ │ ├── cibuild.sh
│ │ ├── core-templates/
│ │ │ ├── job/
│ │ │ │ ├── job.yml
│ │ │ │ ├── onelocbuild.yml
│ │ │ │ ├── publish-build-assets.yml
│ │ │ │ ├── renovate.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ └── source-index-stage1.yml
│ │ │ ├── jobs/
│ │ │ │ ├── jobs.yml
│ │ │ │ └── source-build.yml
│ │ │ ├── post-build/
│ │ │ │ ├── common-variables.yml
│ │ │ │ ├── post-build.yml
│ │ │ │ └── setup-maestro-vars.yml
│ │ │ ├── stages/
│ │ │ │ └── renovate.yml
│ │ │ ├── steps/
│ │ │ │ ├── cleanup-microbuild.yml
│ │ │ │ ├── enable-internal-runtimes.yml
│ │ │ │ ├── enable-internal-sources.yml
│ │ │ │ ├── generate-sbom.yml
│ │ │ │ ├── get-delegation-sas.yml
│ │ │ │ ├── get-federated-access-token.yml
│ │ │ │ ├── install-microbuild-impl.yml
│ │ │ │ ├── install-microbuild.yml
│ │ │ │ ├── publish-build-artifacts.yml
│ │ │ │ ├── publish-logs.yml
│ │ │ │ ├── publish-pipeline-artifacts.yml
│ │ │ │ ├── retain-build.yml
│ │ │ │ ├── send-to-helix.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ └── source-index-stage1-publish.yml
│ │ │ └── variables/
│ │ │ └── pool-providers.yml
│ │ ├── cross/
│ │ │ ├── armel/
│ │ │ │ └── tizen/
│ │ │ │ └── tizen.patch
│ │ │ ├── build-android-rootfs.sh
│ │ │ ├── build-rootfs.sh
│ │ │ ├── install-debs.py
│ │ │ ├── riscv64/
│ │ │ │ └── tizen/
│ │ │ │ └── tizen.patch
│ │ │ ├── tizen-build-rootfs.sh
│ │ │ ├── tizen-fetch.sh
│ │ │ └── toolchain.cmake
│ │ ├── darc-init.ps1
│ │ ├── darc-init.sh
│ │ ├── dotnet-install.cmd
│ │ ├── dotnet-install.ps1
│ │ ├── dotnet-install.sh
│ │ ├── dotnet.cmd
│ │ ├── dotnet.ps1
│ │ ├── dotnet.sh
│ │ ├── enable-cross-org-publishing.ps1
│ │ ├── generate-locproject.ps1
│ │ ├── helixpublish.proj
│ │ ├── init-tools-native.cmd
│ │ ├── init-tools-native.ps1
│ │ ├── init-tools-native.sh
│ │ ├── internal/
│ │ │ ├── Directory.Build.props
│ │ │ ├── NuGet.config
│ │ │ └── Tools.csproj
│ │ ├── internal-feed-operations.ps1
│ │ ├── internal-feed-operations.sh
│ │ ├── loc/
│ │ │ └── P22DotNetHtmlLocalization.lss
│ │ ├── msbuild.ps1
│ │ ├── msbuild.sh
│ │ ├── native/
│ │ │ ├── CommonLibrary.psm1
│ │ │ ├── common-library.sh
│ │ │ ├── init-compiler.sh
│ │ │ ├── init-distro-rid.sh
│ │ │ ├── init-os-and-arch.sh
│ │ │ ├── install-cmake-test.sh
│ │ │ ├── install-cmake.sh
│ │ │ ├── install-dependencies.sh
│ │ │ └── install-tool.ps1
│ │ ├── pipeline-logging-functions.ps1
│ │ ├── pipeline-logging-functions.sh
│ │ ├── post-build/
│ │ │ ├── check-channel-consistency.ps1
│ │ │ ├── nuget-validation.ps1
│ │ │ ├── nuget-verification.ps1
│ │ │ ├── publish-using-darc.ps1
│ │ │ ├── redact-logs.ps1
│ │ │ └── symbols-validation.ps1
│ │ ├── renovate.env
│ │ ├── retain-build.ps1
│ │ ├── sdk-task.ps1
│ │ ├── sdk-task.sh
│ │ ├── template-guidance.md
│ │ ├── templates/
│ │ │ ├── job/
│ │ │ │ ├── job.yml
│ │ │ │ ├── onelocbuild.yml
│ │ │ │ ├── publish-build-assets.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ └── source-index-stage1.yml
│ │ │ ├── jobs/
│ │ │ │ ├── jobs.yml
│ │ │ │ └── source-build.yml
│ │ │ ├── post-build/
│ │ │ │ ├── common-variables.yml
│ │ │ │ ├── post-build.yml
│ │ │ │ └── setup-maestro-vars.yml
│ │ │ ├── steps/
│ │ │ │ ├── enable-internal-runtimes.yml
│ │ │ │ ├── enable-internal-sources.yml
│ │ │ │ ├── generate-sbom.yml
│ │ │ │ ├── get-delegation-sas.yml
│ │ │ │ ├── get-federated-access-token.yml
│ │ │ │ ├── publish-build-artifacts.yml
│ │ │ │ ├── publish-logs.yml
│ │ │ │ ├── publish-pipeline-artifacts.yml
│ │ │ │ ├── retain-build.yml
│ │ │ │ ├── send-to-helix.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ ├── source-index-stage1-publish.yml
│ │ │ │ └── vmr-sync.yml
│ │ │ ├── variables/
│ │ │ │ └── pool-providers.yml
│ │ │ └── vmr-build-pr.yml
│ │ ├── templates-official/
│ │ │ ├── job/
│ │ │ │ ├── job.yml
│ │ │ │ ├── onelocbuild.yml
│ │ │ │ ├── publish-build-assets.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ └── source-index-stage1.yml
│ │ │ ├── jobs/
│ │ │ │ ├── jobs.yml
│ │ │ │ └── source-build.yml
│ │ │ ├── post-build/
│ │ │ │ ├── common-variables.yml
│ │ │ │ ├── post-build.yml
│ │ │ │ └── setup-maestro-vars.yml
│ │ │ ├── steps/
│ │ │ │ ├── enable-internal-runtimes.yml
│ │ │ │ ├── enable-internal-sources.yml
│ │ │ │ ├── generate-sbom.yml
│ │ │ │ ├── get-delegation-sas.yml
│ │ │ │ ├── get-federated-access-token.yml
│ │ │ │ ├── publish-build-artifacts.yml
│ │ │ │ ├── publish-logs.yml
│ │ │ │ ├── publish-pipeline-artifacts.yml
│ │ │ │ ├── retain-build.yml
│ │ │ │ ├── send-to-helix.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ └── source-index-stage1-publish.yml
│ │ │ └── variables/
│ │ │ └── pool-providers.yml
│ │ ├── tools.ps1
│ │ ├── tools.sh
│ │ ├── vmr-sync.ps1
│ │ └── vmr-sync.sh
│ ├── common-variables.yml
│ ├── e2e-test.yml
│ └── pipelines/
│ └── apiscan-steps.yml
├── es-metadata.yml
├── global.json
├── src/
│ ├── Microsoft.DotNet.XHarness.Android/
│ │ ├── AdbExitCodes.cs
│ │ ├── AdbFailureException.cs
│ │ ├── AdbRunner.cs
│ │ ├── AndroidDevice.cs
│ │ ├── ApkHelper.cs
│ │ ├── Execution/
│ │ │ ├── AdbProcessManager.cs
│ │ │ ├── AdbReportFactory.cs
│ │ │ ├── Api23AndOlderReportManager.cs
│ │ │ ├── IAdbProcessManager.cs
│ │ │ ├── IReportManager.cs
│ │ │ └── NewReportManager.cs
│ │ ├── InstrumentationRunner.cs
│ │ └── Microsoft.DotNet.XHarness.Android.csproj
│ ├── Microsoft.DotNet.XHarness.Apple/
│ │ ├── AppOperations/
│ │ │ ├── AppInstaller.cs
│ │ │ ├── AppRunner.cs
│ │ │ ├── AppRunnerBase.cs
│ │ │ ├── AppRunnerFactory.cs
│ │ │ ├── AppTester.cs
│ │ │ ├── AppTesterFactory.cs
│ │ │ └── AppUninstaller.cs
│ │ ├── CommunicationChannel.cs
│ │ ├── CrashSnapshotReporterFactory.cs
│ │ ├── Darwin.cs
│ │ ├── DeviceFinder.cs
│ │ ├── DeviceLogCapturerFactory.cs
│ │ ├── ErrorKnowledgeBase.cs
│ │ ├── ExitCodeDetector.cs
│ │ ├── ILogger.cs
│ │ ├── Microsoft.DotNet.XHarness.Apple.csproj
│ │ └── Orchestration/
│ │ ├── BaseOrchestrator.cs
│ │ ├── InstallOrchestrator.cs
│ │ ├── JustRunOrchestrator.cs
│ │ ├── JustTestOrchestrator.cs
│ │ ├── RunOrchestrator.cs
│ │ ├── SimulatorResetOrchestrator.cs
│ │ ├── TestOrchestrator.cs
│ │ └── UninstallOrchestrator.cs
│ ├── Microsoft.DotNet.XHarness.CLI/
│ │ ├── CommandArguments/
│ │ │ ├── Android/
│ │ │ │ ├── AndroidAdbCommandArguments.cs
│ │ │ │ ├── AndroidArchitecture.cs
│ │ │ │ ├── AndroidDeviceCommandArguments.cs
│ │ │ │ ├── AndroidInstallCommandArguments.cs
│ │ │ │ ├── AndroidRunCommandArguments.cs
│ │ │ │ ├── AndroidStateCommandArguments.cs
│ │ │ │ ├── AndroidTestCommandArguments.cs
│ │ │ │ ├── AndroidUninstallCommandArguments.cs
│ │ │ │ ├── Arguments/
│ │ │ │ │ ├── ApiVersionArgument.cs
│ │ │ │ │ ├── DeviceArchitectureArgument.cs
│ │ │ │ │ ├── DeviceIdArgument.cs
│ │ │ │ │ ├── DeviceOutputFolderArgument.cs
│ │ │ │ │ ├── InstrumentationArguments.cs
│ │ │ │ │ ├── InstrumentationNameArgument.cs
│ │ │ │ │ ├── LaunchTimeoutArgument.cs
│ │ │ │ │ ├── PackageNameArgument.cs
│ │ │ │ │ ├── ShowAdbPathArgument.cs
│ │ │ │ │ └── WifiArgument.cs
│ │ │ │ └── IAndroidAppRunArguments.cs
│ │ │ ├── AndroidHeadless/
│ │ │ │ ├── AndroidHeadlessInstallCommandArguments.cs
│ │ │ │ ├── AndroidHeadlessRunCommandArguments.cs
│ │ │ │ ├── AndroidHeadlessTestCommandArguments.cs
│ │ │ │ ├── AndroidHeadlessUninstallCommandArguments.cs
│ │ │ │ ├── Arguments/
│ │ │ │ │ ├── RuntimePathArgument.cs
│ │ │ │ │ ├── TestAssemblyArgument.cs
│ │ │ │ │ ├── TestPathArgument.cs
│ │ │ │ │ └── TestScriptArgument.cs
│ │ │ │ └── IAndroidHeadlessAppRunArguments.cs
│ │ │ ├── Apple/
│ │ │ │ ├── AppleDeviceCommandsArguments.cs
│ │ │ │ ├── AppleInstallCommandArguments.cs
│ │ │ │ ├── AppleJustRunCommandArguments.cs
│ │ │ │ ├── AppleJustTestCommandArguments.cs
│ │ │ │ ├── AppleMlaunchCommandArguments.cs
│ │ │ │ ├── AppleResetSimulatorCommandArguments.cs
│ │ │ │ ├── AppleRunCommandArguments.cs
│ │ │ │ ├── AppleStateCommandArguments.cs
│ │ │ │ ├── AppleTestCommandArguments.cs
│ │ │ │ ├── AppleUninstallCommandArguments.cs
│ │ │ │ ├── Arguments/
│ │ │ │ │ ├── BundleIdentifierArgument.cs
│ │ │ │ │ ├── CommunicationChannelArgument.cs
│ │ │ │ │ ├── DeviceNameArgument.cs
│ │ │ │ │ ├── EnableLldbArgument.cs
│ │ │ │ │ ├── EnvironmentalVariablesArgument.cs
│ │ │ │ │ ├── ForceInstallationArgument.cs
│ │ │ │ │ ├── HideProgressArgument.cs
│ │ │ │ │ ├── IncludeWirelessArgument.cs
│ │ │ │ │ ├── LaunchTimeoutArgument.cs
│ │ │ │ │ ├── ListInstalledArgument.cs
│ │ │ │ │ ├── MlaunchArgument.cs
│ │ │ │ │ ├── NoWaitArgument.cs
│ │ │ │ │ ├── ResetSimulatorArgument.cs
│ │ │ │ │ ├── ShowDevicesUUIDArgument.cs
│ │ │ │ │ ├── ShowSimulatorsUUIDArgument.cs
│ │ │ │ │ ├── SignalAppEndArgument.cs
│ │ │ │ │ ├── TargetArgument.cs
│ │ │ │ │ ├── XcodeArgument.cs
│ │ │ │ │ └── XmlResultJargonArgument.cs
│ │ │ │ ├── IAppleAppRunArguments.cs
│ │ │ │ ├── IAppleArguments.cs
│ │ │ │ └── Simulators/
│ │ │ │ ├── FindCommandArguments.cs
│ │ │ │ ├── InstallCommandArguments.cs
│ │ │ │ ├── ListCommandArguments.cs
│ │ │ │ └── SimulatorsCommandArguments.cs
│ │ │ ├── Argument.cs
│ │ │ ├── Arguments/
│ │ │ │ ├── AppPathArgument.cs
│ │ │ │ ├── ClassMethodFilters.cs
│ │ │ │ ├── EnableCoverageArgument.cs
│ │ │ │ ├── ExpectedExitCodeArgument.cs
│ │ │ │ ├── OutputDirectoryArgument.cs
│ │ │ │ ├── SingleMethodFilters.cs
│ │ │ │ ├── TimeoutArgument.cs
│ │ │ │ ├── TypeFromAssemblyArgument.cs
│ │ │ │ ├── WebServerHttpEnvironmentVariables.cs
│ │ │ │ ├── WebServerHttpsEnvironmentVariables.cs
│ │ │ │ ├── WebServerMiddlewareArgument.cs
│ │ │ │ ├── WebServerUploadResults.cs
│ │ │ │ ├── WebServerUseCorsArguments.cs
│ │ │ │ ├── WebServerUseCrossOriginPolicyArguments.cs
│ │ │ │ ├── WebServerUseDefaultFiles.cs
│ │ │ │ └── WebServerUseHttpsArguments.cs
│ │ │ ├── DiagnosticsArgument.cs
│ │ │ ├── HelpArgument.cs
│ │ │ ├── UseJsonArgument.cs
│ │ │ ├── VerbosityArgument.cs
│ │ │ ├── WASI/
│ │ │ │ ├── Arguments/
│ │ │ │ │ ├── WasmEngineArgument.cs
│ │ │ │ │ ├── WasmEngineArguments.cs
│ │ │ │ │ └── WasmEngineLocationArgument.cs
│ │ │ │ └── WasiTestCommandArguments.cs
│ │ │ ├── WASM/
│ │ │ │ ├── Arguments/
│ │ │ │ │ ├── BackgroundThrottlingArgument.cs
│ │ │ │ │ ├── BrowserArgument.cs
│ │ │ │ │ ├── BrowserArguments.cs
│ │ │ │ │ ├── BrowserLocationArgument.cs
│ │ │ │ │ ├── DebuggerPortArgument.cs
│ │ │ │ │ ├── ErrorPatternsFileArgument.cs
│ │ │ │ │ ├── HTMLFileArgument.cs
│ │ │ │ │ ├── JavaScriptEngineArgument.cs
│ │ │ │ │ ├── JavaScriptEngineArguments.cs
│ │ │ │ │ ├── JavaScriptEngineLocationArgument.cs
│ │ │ │ │ ├── JavaScriptFileArgument.cs
│ │ │ │ │ ├── LocaleArgument.cs
│ │ │ │ │ ├── NoHeadlessArgument.cs
│ │ │ │ │ ├── NoIncognitoArgument.cs
│ │ │ │ │ ├── NoQuitArgument.cs
│ │ │ │ │ ├── PageLoadStrategyArgument.cs
│ │ │ │ │ ├── SymbolMapFileArgument.cs
│ │ │ │ │ ├── SymbolicatePatternsFileArgument.cs
│ │ │ │ │ └── SymbolicatorArgument.cs
│ │ │ │ ├── IWebServerArguments.cs
│ │ │ │ ├── WasmTestBrowserCommandArguments.cs
│ │ │ │ ├── WasmTestCommandArguments.cs
│ │ │ │ └── WebServerCommandArguments.cs
│ │ │ └── XHarnessCommandArguments.cs
│ │ ├── Commands/
│ │ │ ├── Android/
│ │ │ │ ├── AndroidAdbCommand.cs
│ │ │ │ ├── AndroidCommand.cs
│ │ │ │ ├── AndroidCommandSet.cs
│ │ │ │ ├── AndroidDeviceCommand.cs
│ │ │ │ ├── AndroidInstallCommand.cs
│ │ │ │ ├── AndroidRunCommand.cs
│ │ │ │ ├── AndroidStateCommand.cs
│ │ │ │ ├── AndroidTestCommand.cs
│ │ │ │ ├── AndroidUninstallCommand.cs
│ │ │ │ └── IDiagnosticDataExtensions.cs
│ │ │ ├── AndroidHeadless/
│ │ │ │ ├── AndroidHeadlessCommandSet.cs
│ │ │ │ ├── AndroidHeadlessInstallCommand.cs
│ │ │ │ ├── AndroidHeadlessRunCommand.cs
│ │ │ │ ├── AndroidHeadlessTestCommand.cs
│ │ │ │ └── AndroidHeadlessUninstallCommand.cs
│ │ │ ├── Apple/
│ │ │ │ ├── AppleAppCommand.cs
│ │ │ │ ├── AppleCommand.cs
│ │ │ │ ├── AppleCommandSet.cs
│ │ │ │ ├── AppleDeviceCommand.cs
│ │ │ │ ├── AppleInstallCommand.cs
│ │ │ │ ├── AppleJustRunCommand.cs
│ │ │ │ ├── AppleJustTestCommand.cs
│ │ │ │ ├── AppleMlaunchCommand.cs
│ │ │ │ ├── AppleResetSimulatorCommand.cs
│ │ │ │ ├── AppleRunCommand.cs
│ │ │ │ ├── AppleStateCommand.cs
│ │ │ │ ├── AppleTestCommand.cs
│ │ │ │ ├── AppleUninstallCommand.cs
│ │ │ │ └── Simulators/
│ │ │ │ ├── FindCommand.cs
│ │ │ │ ├── InstallCommand.cs
│ │ │ │ ├── ListCommand.cs
│ │ │ │ ├── Simulator.cs
│ │ │ │ ├── SimulatorsCommand.cs
│ │ │ │ └── SimulatorsCommandSet.cs
│ │ │ ├── GetStateCommand.cs
│ │ │ ├── WASI/
│ │ │ │ ├── Engine/
│ │ │ │ │ └── WasiTestCommand.cs
│ │ │ │ └── WasiCommandSet.cs
│ │ │ ├── WASM/
│ │ │ │ ├── Browser/
│ │ │ │ │ ├── WasmBrowserTestRunner.cs
│ │ │ │ │ └── WasmTestBrowserCommand.cs
│ │ │ │ ├── ErrorPatternScanner.cs
│ │ │ │ ├── JS/
│ │ │ │ │ └── WasmTestCommand.cs
│ │ │ │ ├── WasmCommandSet.cs
│ │ │ │ ├── WasmLogMessage.cs
│ │ │ │ ├── WasmTestMessagesProcessor.cs
│ │ │ │ └── WebServerCommand.cs
│ │ │ ├── WebServer.cs
│ │ │ ├── XHarnessCommand.cs
│ │ │ ├── XHarnessHelpCommand.cs
│ │ │ └── XHarnessVersionCommand.cs
│ │ ├── Microsoft.DotNet.XHarness.CLI.csproj
│ │ ├── Program.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Resources/
│ │ │ ├── Strings.Designer.cs
│ │ │ └── Strings.resx
│ │ └── XHarnessConsoleLoggerFormatter.cs
│ ├── Microsoft.DotNet.XHarness.Common/
│ │ ├── CLI/
│ │ │ ├── EnvironmentVariables.cs
│ │ │ ├── ExitCode.cs
│ │ │ └── NoDeviceFoundException.cs
│ │ ├── CommandDiagnostics.cs
│ │ ├── Execution/
│ │ │ ├── IMacOSProcessManager.cs
│ │ │ ├── IProcessManager.cs
│ │ │ ├── LinuxProcessManager.cs
│ │ │ ├── MacOSProcessManager.cs
│ │ │ ├── ProcessManager.cs
│ │ │ ├── ProcessManagerFactory.cs
│ │ │ ├── UnixProcessManager.cs
│ │ │ └── WindowsProcessManager.cs
│ │ ├── Logging/
│ │ │ ├── AggregatedLog.cs
│ │ │ ├── CallbackLog.cs
│ │ │ ├── ConsoleLog.cs
│ │ │ ├── FileBackedLog.cs
│ │ │ ├── ILog.cs
│ │ │ ├── Log.cs
│ │ │ ├── MemoryLog.cs
│ │ │ ├── NullLog.cs
│ │ │ ├── ReadableLog.cs
│ │ │ └── ScanLog.cs
│ │ ├── Microsoft.DotNet.XHarness.Common.csproj
│ │ ├── RunSummaryEmitter.cs
│ │ ├── TargetPlatform.cs
│ │ ├── Utilities/
│ │ │ ├── DisposableList.cs
│ │ │ ├── Extensions.cs
│ │ │ ├── FileUtils.cs
│ │ │ └── StringUtils.cs
│ │ ├── WasmSymbolicatorBase.cs
│ │ └── XmlResultJargon.cs
│ ├── Microsoft.DotNet.XHarness.InstrumentationBase.Xunit/
│ │ ├── DefaultAndroidEntryPoint.cs
│ │ └── Microsoft.DotNet.XHarness.DefaultAndroidEntryPoint.Xunit.csproj
│ ├── Microsoft.DotNet.XHarness.TestRunners.Common/
│ │ ├── AndroidApplicationEntryPointBase.cs
│ │ ├── ApplicationEntryPoint.cs
│ │ ├── ApplicationOptions.cs
│ │ ├── CoverageManager.cs
│ │ ├── Extensions.cs
│ │ ├── IDevice.cs
│ │ ├── IgnoreFileParser.cs
│ │ ├── LogWriter.cs
│ │ ├── Microsoft.DotNet.XHarness.TestRunners.Common.csproj
│ │ ├── MinimumLogLevel.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── TcpTextWriter.cs
│ │ ├── TestAssemblyInfo.cs
│ │ ├── TestCompletionStatus.cs
│ │ ├── TestExecutionState.cs
│ │ ├── TestFailureInfo.cs
│ │ ├── TestResult.cs
│ │ ├── TestRunResult.cs
│ │ ├── TestRunSelector.cs
│ │ ├── TestRunSelectorType.cs
│ │ ├── TestRunner.cs
│ │ ├── WasmApplicationEntryPointBase.cs
│ │ └── iOSApplicationEntryPointBase.cs
│ ├── Microsoft.DotNet.XHarness.TestRunners.NUnit/
│ │ ├── FilterBuilder.cs
│ │ ├── INUnitTestRunner.cs
│ │ ├── IResultSummary.cs
│ │ ├── Microsoft.DotNet.XHarness.TestRunners.NUnit.csproj
│ │ ├── NUnit3XmlOutputWriter.cs
│ │ ├── NUnitTestListener.cs
│ │ ├── NUnitTestRunner.cs
│ │ ├── OutputWriter.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── ResultSummary.cs
│ │ ├── TestStatusExtensions.cs
│ │ └── XmlResultJargonExtensions.cs
│ ├── Microsoft.DotNet.XHarness.TestRunners.Xunit/
│ │ ├── AndroidApplicationEntryPoint.cs
│ │ ├── CompletionCallbackExecutionSink.cs
│ │ ├── CustomXunitTestRunner.cs
│ │ ├── EnvironmentVariables.cs
│ │ ├── Microsoft.DotNet.XHarness.TestRunners.Xunit.csproj
│ │ ├── NUnit3Xml.xslt
│ │ ├── NUnitXml.xslt
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── ReflectionBasedXunitTestRunner.cs
│ │ ├── TestCaseExtensions.cs
│ │ ├── ThreadlessXunitTestRunner.cs
│ │ ├── WasmApplicationEntryPoint.cs
│ │ ├── WasmThreadedTestRunner.cs
│ │ ├── WasmXmlResultWriter.cs
│ │ ├── XUnitFilter.cs
│ │ ├── XUnitFilterType.cs
│ │ ├── XUnitFiltersCollection.cs
│ │ ├── XUnitTestRunner.cs
│ │ ├── XunitTestRunnerBase.cs
│ │ ├── YieldingXunitTestFrameworkExecutor.cs
│ │ └── iOSApplicationEntryPoint.cs
│ └── Microsoft.DotNet.XHarness.iOS.Shared/
│ ├── AppBundleInformation.cs
│ ├── AppBundleInformationParser.cs
│ ├── Collections/
│ │ ├── BlockingEnumerableCollection.cs
│ │ └── IAsyncEnumerable.cs
│ ├── CrashSnapshotReporter.cs
│ ├── Execution/
│ │ ├── Arguments.cs
│ │ ├── EnviromentVariables.cs
│ │ ├── IMlaunchProcessManager.cs
│ │ ├── MLaunchArguments.cs
│ │ └── MlaunchProcessManager.cs
│ ├── Extension.cs
│ ├── Hardware/
│ │ ├── Device.cs
│ │ ├── HardwareDeviceLoader.cs
│ │ ├── IDevice.cs
│ │ ├── IDeviceLoader.cs
│ │ ├── IHardwareDevice.cs
│ │ ├── ISimulatorDevice.cs
│ │ ├── ISimulatorLoader.cs
│ │ ├── SimDevicePair.cs
│ │ ├── SimDeviceSpecification.cs
│ │ ├── SimDeviceType.cs
│ │ ├── SimRuntime.cs
│ │ ├── SimulatorDevice.cs
│ │ ├── SimulatorLoader.cs
│ │ ├── SimulatorSelector.cs
│ │ └── TCCDatabase.cs
│ ├── IErrorKnowledgeBase.cs
│ ├── IResultFileHandler.cs
│ ├── IResultParser.cs
│ ├── ITestReporter.cs
│ ├── Listeners/
│ │ ├── SimpleFileListener.cs
│ │ ├── SimpleHttpListener.cs
│ │ ├── SimpleListener.cs
│ │ ├── SimpleListenerFactory.cs
│ │ ├── SimpleTcpListener.cs
│ │ ├── TcpTunnel.cs
│ │ └── TunnelBore.cs
│ ├── Logging/
│ │ ├── AppInstallMonitorLog.cs
│ │ ├── CaptureLog.cs
│ │ ├── DeviceLogCapturer.cs
│ │ ├── IEventLogger.cs
│ │ ├── ILogs.cs
│ │ ├── LogFile.cs
│ │ ├── LogType.cs
│ │ ├── Logs.cs
│ │ └── WrenchLog.cs
│ ├── Microsoft.DotNet.XHarness.iOS.Shared.csproj
│ ├── ResultFileHandler.cs
│ ├── RunMode.cs
│ ├── SdkVersions.cs
│ ├── TestExecutingResult.cs
│ ├── TestReporter.cs
│ ├── TestReporterFactory.cs
│ ├── TestTarget.cs
│ ├── Utilities/
│ │ ├── DirectoryUtilities.cs
│ │ ├── Extensions.cs
│ │ ├── Helpers.cs
│ │ ├── PlistExtensions.cs
│ │ └── ProjectFileExtensions.cs
│ └── XmlResults/
│ ├── IXmlResultParser.cs
│ ├── NUnitV2ResultParser.cs
│ ├── NUnitV2TestReportGenerator.cs
│ ├── NUnitV3ResultParser.cs
│ ├── NUnitV3TestReportGenerator.cs
│ ├── TestReportGenerator.cs
│ ├── TouchUnitResultParser.cs
│ ├── TouchUnitTestReportGenerator.cs
│ ├── TrxResultParser.cs
│ ├── TrxTestReportGenerator.cs
│ ├── XUnitResultParser.cs
│ ├── XUnitTestReportGenerator.cs
│ └── XmlResultParser.cs
├── tests/
│ ├── Directory.Build.targets
│ ├── Microsoft.DotNet.XHarness.Android.Tests/
│ │ ├── AdbRunnerLogFilterTests.cs
│ │ ├── AdbRunnerTests.cs
│ │ ├── InstrumentationRunnerSummaryTests.cs
│ │ └── Microsoft.DotNet.XHarness.Android.Tests.csproj
│ ├── Microsoft.DotNet.XHarness.Apple.Tests/
│ │ ├── AppOperations/
│ │ │ ├── AppInstallerTests.cs
│ │ │ ├── AppRunTestBase.cs
│ │ │ ├── AppRunnerTests.cs
│ │ │ ├── AppTesterTests.cs
│ │ │ └── AppUninstallerTests.cs
│ │ ├── DeviceFinderTests.cs
│ │ ├── ErrorKnowledgeBaseTests.cs
│ │ ├── ExitCodeDetectorTests.cs
│ │ ├── Microsoft.DotNet.XHarness.Apple.Tests.csproj
│ │ ├── MockLogs.cs
│ │ └── Orchestration/
│ │ ├── CopyLogsToMainLogTests.cs
│ │ ├── InstallOrchestratorTests.cs
│ │ ├── JustRunOrchestratorTests.cs
│ │ ├── JustTestOrchestratorTests.cs
│ │ ├── OrchestratorTestBase.cs
│ │ ├── RunOrchestratorTests.cs
│ │ ├── SimulatorResetOrchestratorTests.cs
│ │ ├── TestOrchestratorTests.cs
│ │ └── UninstallOrchestratorTests.cs
│ ├── Microsoft.DotNet.XHarness.CLI.Tests/
│ │ ├── CommandArguments/
│ │ │ └── ArgumentTests.cs
│ │ ├── Commands/
│ │ │ └── XHarnessCommandTests.cs
│ │ ├── Microsoft.DotNet.XHarness.CLI.Tests.csproj
│ │ ├── Resources/
│ │ │ └── StringsTests.cs
│ │ ├── UnitTestArguments.cs
│ │ └── UnitTestCommand.cs
│ ├── Microsoft.DotNet.XHarness.Common.Tests/
│ │ ├── Execution/
│ │ │ └── ProcessManagerTests.cs
│ │ ├── Logging/
│ │ │ ├── CallbackLogTest.cs
│ │ │ ├── ConsoleLogTest.cs
│ │ │ └── ScanLogTest.cs
│ │ ├── Microsoft.DotNet.XHarness.Common.Tests.csproj
│ │ └── Utilities/
│ │ └── StringUtilsTests.cs
│ ├── Microsoft.DotNet.XHarness.TestRunners.Tests/
│ │ ├── CoverageManagerTests.cs
│ │ ├── Microsoft.DotNet.XHarness.TestRunners.Tests.csproj
│ │ ├── NUnit/
│ │ │ ├── NUnit3XmlOutputWriterTests.cs
│ │ │ └── TestStatusExtensionsTests.cs
│ │ └── xUnit/
│ │ ├── XUnitFilterTests.cs
│ │ └── XUnitFiltersCollectionTests.cs
│ ├── Microsoft.DotNet.XHarness.iOS.Shared.Tests/
│ │ ├── AppBundleInformationParserTests.cs
│ │ ├── CrashSnapshotReporterTests.cs
│ │ ├── Execution/
│ │ │ └── MlaunchArgumentsTests.cs
│ │ ├── Hardware/
│ │ │ ├── DefaultSimulatorSelectorTests.cs
│ │ │ ├── DeviceTest.cs
│ │ │ ├── HardwareDeviceLoaderTests.cs
│ │ │ ├── SimulatorDeviceTest.cs
│ │ │ ├── SimulatorLoaderTests.cs
│ │ │ └── TCCDatabaseTests.cs
│ │ ├── Listeners/
│ │ │ ├── SimpleFileListenerTest.cs
│ │ │ ├── SimpleListenerFactoryTest.cs
│ │ │ └── SimpleTcpListenerTest.cs
│ │ ├── Logging/
│ │ │ ├── CaptureLogTest.cs
│ │ │ ├── LogFileTest.cs
│ │ │ └── LogsTest.cs
│ │ ├── Microsoft.DotNet.XHarness.iOS.Shared.Tests.csproj
│ │ ├── ResultFileHandlerTests.cs
│ │ ├── Samples/
│ │ │ ├── Info.plist
│ │ │ ├── Issue8214.xml
│ │ │ ├── Issue95.xml
│ │ │ ├── MtouchArchMissingEverywhere.xml
│ │ │ ├── MtouchArchMissingInConfiguration.xml
│ │ │ ├── NUnitV2Sample.xml
│ │ │ ├── NUnitV2SampleFailure.xml
│ │ │ ├── NUnitV3Sample.xml
│ │ │ ├── NUnitV3SampleFailure.xml
│ │ │ ├── NUnitV3SampleFailures.xml
│ │ │ ├── NUnitV3SampleParameterizedFailure.xml
│ │ │ ├── NUnitV3SampleSuccess.xml
│ │ │ ├── TestCaseFailures.xml
│ │ │ ├── TestProject/
│ │ │ │ ├── Info.plist
│ │ │ │ └── SystemXunit.csproj
│ │ │ ├── TouchUnitSample.xml
│ │ │ ├── TouchUnitSample2.xml
│ │ │ ├── devices.xml
│ │ │ ├── run-log.txt
│ │ │ ├── simulators.xml
│ │ │ └── xUnitSample.xml
│ │ ├── TestExecutingResultTests.cs
│ │ ├── TestReporterTests.cs
│ │ ├── Utilities/
│ │ │ ├── PListExtensionsTests.cs
│ │ │ └── ProjectFileExtensionsTests.cs
│ │ └── XmlResultParserTests.cs
│ └── integration-tests/
│ ├── Android/
│ │ ├── Commands.Tests.proj
│ │ ├── Device.Tests.proj
│ │ ├── Simulator.Tests.proj
│ │ └── TestApks.proj
│ ├── Apple/
│ │ ├── Device.Commands.Tests.proj
│ │ ├── Device.iOS.Tests.proj
│ │ ├── Device.tvOS.Tests.proj
│ │ ├── Simulator.Commands.Tests.proj
│ │ ├── Simulator.Scouting.Commands.Tests.proj
│ │ ├── Simulator.Scouting.Tests.proj
│ │ ├── Simulator.Tests.proj
│ │ ├── SimulatorInstaller.Tests.proj
│ │ ├── TestAppBundle.proj
│ │ └── helix-payloads/
│ │ └── simulatorinstaller-integration-tests.sh
│ ├── Directory.Build.props
│ ├── Directory.Build.targets
│ ├── README.md
│ ├── Storage.props
│ └── WASM/
│ └── WASM.Helix.SDK.Tests.proj
└── tools/
├── Install-XHarness.ps1
├── install-xharness.sh
├── run-e2e-test.ps1
└── run-e2e-test.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: .azuredevops/dependabot.yml
================================================
version: 2
# Disabling dependabot on Azure DevOps as this is a mirrored repo. Updates should go through github.
enable-campaigned-updates: false
enable-security-updates: false
================================================
FILE: .config/tsaoptions.json
================================================
{
"instanceUrl": "https://devdiv.visualstudio.com/",
"template": "TFSDEVDIV",
"projectName": "DEVDIV",
"areaPath": "DevDiv\\NET Fundamentals\\Infrastructure\\XHarness",
"iterationPath": "DevDiv",
"notificationAliases": [ "runtimerepo-infra@microsoft.com" ],
"repositoryName":"dotnet-xharness",
"codebaseName": "dotnet-xharness",
"serviceTreeId": "97d8e3f4-a4c4-4c48-8ce1-d6b3342c16f1"
}
================================================
FILE: .editorconfig
================================================
# editorconfig.org
# top-most EditorConfig file
root = true
# Default settings:
# A newline ending every file
# Use 4 spaces as indentation
[*]
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
[project.json]
indent_size = 2
# C# files
[*.cs]
# New line preferences
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_between_query_expression_clauses = true
# Indentation preferences
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = true
csharp_indent_switch_labels = true
csharp_indent_labels = one_less_than_current
# Modifier preferences
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion
# avoid this. unless absolutely necessary
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion
# Types: use keywords instead of BCL types, and permit var only when the type is clear
csharp_style_var_for_built_in_types = true:silent
csharp_style_var_when_type_is_apparent = true:suggestion
csharp_style_var_elsewhere = false:silent
csharp_style_deconstructed_variable_declaration = true:silent
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion
# name all constant fields using PascalCase
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
dotnet_naming_symbols.constant_fields.applicable_kinds = field
dotnet_naming_symbols.constant_fields.required_modifiers = const
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
# static fields should have s_ prefix
dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion
dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields
dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style
dotnet_naming_symbols.static_fields.applicable_kinds = field
dotnet_naming_symbols.static_fields.required_modifiers = static
dotnet_naming_symbols.static_fields.applicable_accessibilities = private, internal, private_protected
dotnet_naming_style.static_prefix_style.required_prefix = s_
dotnet_naming_style.static_prefix_style.capitalization = camel_case
# internal and private fields should be _camelCase
dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields
dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style
dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal
dotnet_naming_style.camel_case_underscore_style.required_prefix = _
dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case
# Code style defaults
csharp_using_directive_placement = outside_namespace:suggestion
dotnet_sort_system_directives_first = true
csharp_prefer_braces = true:silent
csharp_preserve_single_line_blocks = true:none
csharp_preserve_single_line_statements = false:none
csharp_prefer_static_local_function = true:suggestion
csharp_prefer_simple_using_statement = false:none
csharp_style_prefer_switch_expression = true:suggestion
# Code quality
dotnet_style_readonly_field = true:suggestion
dotnet_code_quality_unused_parameters = non_public:suggestion
# Expression-level preferences
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_auto_properties = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
csharp_prefer_simple_default_expression = true:suggestion
# Expression-bodied members
csharp_style_expression_bodied_methods = true:silent
csharp_style_expression_bodied_constructors = true:silent
csharp_style_expression_bodied_operators = true:silent
csharp_style_expression_bodied_properties = true:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = true:silent
# Pattern matching
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
# Null checking preferences
csharp_style_throw_expression = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion
# Other features
csharp_style_prefer_index_operator = false:none
csharp_style_prefer_range_operator = false:none
csharp_style_pattern_local_over_anonymous_function = false:none
# Space preferences
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = do_not_ignore
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false
# Analyzers
dotnet_code_quality.ca1802.api_surface = private, internal
csharp_style_namespace_declarations=file_scoped:suggestion
# C++ Files
[*.{cpp,h,in}]
curly_bracket_next_line = true
indent_brace_style = Allman
# Xml project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}]
indent_size = 2
# Xml build files
[*.builds]
indent_size = 2
# Xml files
[*.{xml,stylecop,resx,ruleset}]
indent_size = 2
# Xml config files
[*.{props,targets,config,nuspec}]
indent_size = 2
# Shell scripts
[*.sh]
end_of_line = lf
[*.{cmd, bat}]
end_of_line = crlf
================================================
FILE: .git-blame-ignore-revs
================================================
# Change to file-scoped namespaces
2863beb74c1abad7ddfe9ef7afea6fc2605e8a03
================================================
FILE: .gitattributes
================================================
# Apply LF to shell scripts automatically
*.sh text eol=lf
================================================
FILE: .github/copilot-instructions.md
================================================
# XHarness Repository Copilot Instructions
## Project Overview
XHarness is a .NET command-line tool that enables running xUnit/NUnit tests on mobile platforms (Android, Apple iOS/tvOS/watchOS/xrOS/Mac Catalyst), WASI, and desktop browsers (WASM). It is part of the .NET ecosystem and is essential for cross-platform testing in the .NET Foundation projects.
**Key Capabilities:**
- Device/emulator management and discovery
- Application lifecycle management (install, run, uninstall)
- Test execution and result collection in multiple formats (text, xUnit/NUnit XML)
- Crash dump collection and symbolication
- TCP and USB connection modes
- Apple Simulator runtime installation
- Integration with Helix cloud testing infrastructure
## Architecture Overview
XHarness is organized into two main layers:
### Tooling Layer (src/)
- **Microsoft.DotNet.XHarness.CLI** - Main CLI entry point with command definitions
- **Microsoft.DotNet.XHarness.Android** - Android-specific operations using ADB
- **Microsoft.DotNet.XHarness.Apple** - Apple platform operations using mlaunch
- **Microsoft.DotNet.XHarness.iOS.Shared** - Apple mobile platforms shared functionality
- **Microsoft.DotNet.XHarness.Common** - Core building blocks (logging, execution, utilities, diagnostics)
### Application Layer (src/)
- **Microsoft.DotNet.XHarness.TestRunners.Common** - Test discovery, execution, and results aggregation
- **Microsoft.DotNet.XHarness.TestRunners.Xunit** - XUnit framework integration
- **Microsoft.DotNet.XHarness.TestRunners.NUnit** - NUnit framework integration
- **Microsoft.DotNet.XHarness.DefaultAndroidEntryPoint.Xunit** - Default Android entry point
## Command Structure
XHarness follows a platform → command pattern:
```bash
xharness [platform] [command] [options]
```
### Supported Platforms and Commands:
**Android Commands:**
- `AndroidTest`, `AndroidDevice`, `AndroidInstall`, `AndroidRun`, `AndroidUninstall`, `AndroidAdb`, `AndroidState`
**Apple Commands:**
- `AppleTest`, `AppleRun`, `AppleInstall`, `AppleUninstall`, `AppleJustTest`, `AppleJustRun`, `AppleDevice`, `AppleMlaunch`, `AppleState`
**Apple Simulator Commands:**
- `List`, `Find`, `Install`, `ResetSimulator`
**WASM Commands:**
- `WasmTest`, `WasmTestBrowser`, `WebServer`
**WASI Commands:**
- `WasiTest`
## Development Guidelines
### System Requirements
- .NET 6+ for development and runtime
- macOS with full Xcode installation for Apple scenarios
- Linux/macOS/Windows for Android scenarios
- Linux for browser scenarios
### Build System
- Use `./build.sh` (Linux/macOS) or `Build.cmd` (Windows) for proper SDK setup
- Alternative: `dotnet build XHarness.slnx` (requires correct .NET version)
- Integration with Arcade SDK for .NET Foundation build standards
- Azure DevOps pipelines for CI/CD
### Key Dependencies
- **ADB (Android Debug Bridge)** - Required for Android operations
- **mlaunch** - Required for Apple platform operations
- **Helix SDK** - For cloud testing integration
- Downloaded automatically during CLI build process
### Exit Codes
XHarness uses standardized exit codes (see `src/Microsoft.DotNet.XHarness.Common/CLI/ExitCode.cs`):
- `0` - SUCCESS
- `1` - TESTS_FAILED
- `70` - TIMED_OUT
- `78` - PACKAGE_INSTALLATION_FAILURE
- `80` - APP_CRASH
- `81` - DEVICE_NOT_FOUND
- And many more specific failure scenarios
## Platform-Specific Knowledge
### Android Development
- Uses ADB for device communication
- Supports APK installation and logcat collection
- Package name-based application identification
- Emulator and physical device support
### Apple Development
- Uses mlaunch for device/simulator communication
- Supports .app bundle and .ipa installations
- Requires proper code signing and provisioning profiles
- Complex simulator runtime management
- TCP connection workarounds for test result streaming
### WASM/WASI Development
- Browser-based test execution
- WebAssembly runtime requirements
- Custom web server for test hosting
## Testing Strategy
### Unit Tests
- Located in `tests/` directory with platform-specific test projects
- Follow naming convention: `Microsoft.DotNet.XHarness.[Component].Tests`
- Use xUnit framework consistently
### Integration Tests
- Located in `tests/integration-tests/`
- E2E tests that use Helix cloud infrastructure
- Test real device/simulator scenarios
- Use `./tools/run-e2e-test.sh` for execution
### Test Runners
- Applications must include TestRunner library for `apple test` command
- TestRunner handles environmental variables and TCP connections
- Alternative: Use `apple run` for apps without TestRunner
## Common Patterns and Conventions
### Command Implementation
- Extend `XHarnessCommand<T>` abstract base class
- Implement required properties: `CommandUsage`, `CommandDescription`, `Arguments`
- Use dependency injection for logging and services
- Return appropriate `ExitCode` enum values
### Logging
- Multiple logger types: `ConsoleLogger`, `FileLogger`, `MemoryLogger`, `AggregatedLogs`, `CallbackLogger`
- Console logger is default for commands
- File logger used for mlaunch and adb commands
- Memory logger used by platform-specific command runners
### Error Handling
- Use specific exception types in `Microsoft.DotNet.XHarness.Common.CLI`
- `NoDeviceFoundException` for device discovery failures
- Proper exit code mapping for different failure scenarios
### Environmental Variables
- `XHARNESS_DISABLE_COLORED_OUTPUT` - Disable colored logging
- `XHARNESS_LOG_WITH_TIMESTAMPS` - Enable timestamps
- `XHARNESS_LOG_TEST_START` - Log test start messages
- `XHARNESS_MLAUNCH_PATH` - Custom mlaunch path for development
## File and Directory Structure
```
/
├── src/ # Source code
├── tests/ # Unit and integration tests
├── docs/ # Documentation
├── eng/ # Build and engineering files
├── tools/ # Development tools and scripts
├── azure-pipelines*.yml # CI/CD pipeline definitions
├── XHarness.slnx # Main solution file
├── build.sh / Build.cmd # Build scripts
└── README.md # Main documentation
```
## Troubleshooting Guidelines
### Common Issues
1. **Apple unit tests not running**: Ensure TestRunner is included in app bundle
2. **iOS/tvOS device timeouts**: Use `--signal-app-end` flag and ensure app logs the `RUN_END_TAG`
3. **Build failures**: Check .NET SDK version and use provided build scripts
4. **Device not found**: Verify device connection and platform-specific tooling (ADB/mlaunch)
### Debugging Tips
- Use appropriate verbosity levels for logging
- Check device/simulator state before test execution
- Verify app signing and provisioning for Apple platforms
- Monitor TCP connections for test result streaming
## Development Workflow
### For Bug Fixes
1. Identify affected platform and component
2. Create unit tests to reproduce the issue
3. Implement minimal fix in appropriate layer
4. Ensure no regression in existing functionality
5. Update integration tests if needed
### For New Features
1. Understand platform-specific requirements
2. Design feature following existing command patterns
3. Implement with proper error handling and exit codes
4. Add comprehensive tests (unit and integration)
5. Update documentation and help text
### Code Quality
- Follow existing naming conventions and code patterns
- Use dependency injection for testability
- Implement proper logging throughout
- Handle platform-specific edge cases
- Maintain backwards compatibility when possible
## Self-Improvement Instructions
**IMPORTANT**: If you discover any issues, gaps, or outdated information in these instructions while working on XHarness issues, you must update this document with your new knowledge and learnings. This includes:
1. **New platform-specific quirks or workarounds discovered**
2. **Additional environmental variables or configuration options**
3. **Updated build procedures or dependency requirements**
4. **New testing patterns or debugging techniques**
5. **Command structure changes or new platform support**
6. **Performance optimization patterns**
7. **Security considerations or best practices**
When updating these instructions:
- Add specific examples and code snippets where helpful
- Include version information for any platform-specific requirements
- Document the context and scenario where the knowledge applies
- Maintain the existing structure and organization
- Test your changes to ensure accuracy
Your goal is to continuously improve these instructions to become the most effective autonomous agent for XHarness development, capable of solving issues, fixing bugs, and implementing new features efficiently.
---
*These instructions are designed to help you understand and work effectively with the XHarness codebase. Keep them updated as you learn more about the project.*
================================================
FILE: .github/workflows/backport.yml
================================================
name: Backport PR to branch
on:
issue_comment:
types: [created]
schedule:
# once a day at 13:00 UTC to cleanup old runs
- cron: '0 13 * * *'
permissions:
contents: write
issues: write
pull-requests: write
actions: write
jobs:
backport:
uses: dotnet/arcade/.github/workflows/backport-base.yml@main
================================================
FILE: .github/workflows/copilot-setup-steps.yml
================================================
# Automatically run the setup steps when they are changed to allow for easy validation, and
# allow manual testing through the repository's "Actions" tab
on:
workflow_dispatch:
push:
paths:
- .github/workflows/copilot-setup-steps.yml
pull_request:
paths:
- .github/workflows/copilot-setup-steps.yml
permissions:
contents: read
jobs:
copilot-setup-steps:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Do an initial restore to ensure all dependencies are restored
run: |
./eng/common/build.sh --restore
- name: Put repo-local dotnet install on PATH
run: |
echo "PATH=$PWD/.dotnet:$PATH" >> $GITHUB_ENV
- name: Check dotnet version
run: |
dotnet --version
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Local installations of .net core
.dotnet/
# Locally restored packages (when simulating AzDO build)
.packages/
# remove noise in mac os x
.DS_Store
# some ide stuff
.idea
.vscode/
.nuget/
================================================
FILE: Build.cmd
================================================
@echo off
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\common\Build.ps1""" -restore -build %*"
exit /b %ErrorLevel%
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code of Conduct
This project has adopted the code of conduct defined by the Contributor Covenant
to clarify expected behavior in our community.
For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).
================================================
FILE: Directory.Build.props
================================================
<Project>
<Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" />
<PropertyGroup>
<LangVersion>latest</LangVersion>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
<DisableImplicitNamespaceImports_DotNet>true</DisableImplicitNamespaceImports_DotNet>
<Copyright>$(CopyrightNetFoundation)</Copyright>
<Nullable>enable</Nullable>
<!-- All .NET TFMs that shipped XHarness packages must support.
Arcade defines NetCurrent/NetMinimum but drops older TFMs that downstream repos still need.
Update this property when changing the supported range. -->
<XHarnessNetTFMs>$(NetCurrent);net10.0;net9.0;net8.0</XHarnessNetTFMs>
</PropertyGroup>
</Project>
================================================
FILE: Directory.Build.targets
================================================
<Project>
<Import Project="Sdk.targets" Sdk="Microsoft.DotNet.Arcade.Sdk" />
</Project>
================================================
FILE: Directory.Packages.props
================================================
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
<!-- Arcade uses multiple feeds, so we need to supress this warning. -->
<NoWarn>$(NoWarn);NU1507</NoWarn>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Microsoft.Extensions.Logging" Version="8.0.1" />
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="8.0.1" />
<PackageVersion Include="Mono.Options" Version="6.12.0.148" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="Selenium.WebDriver" Version="4.0.0-alpha05" />
<PackageVersion Include="Microsoft.Tools.Mlaunch" Version="1.1.113" />
<PackageVersion Include="NUnit" Version="3.13.0" />
<PackageVersion Include="NUnit.Engine" Version="3.13.0" />
<PackageVersion Include="xunit.extensibility.execution" Version="$(XUnitVersion)" />
<PackageVersion Include="xunit.runner.utility" Version="$(XUnitVersion)" />
<PackageVersion Include="Moq" Version="4.20.70" />
</ItemGroup>
</Project>
================================================
FILE: LICENSE.TXT
================================================
The MIT License (MIT)
Copyright (c) .NET Foundation and Contributors
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: NuGet.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
<add key="dotnet-tools" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" />
<add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" />
</packageSources>
<disabledPackageSources />
</configuration>
================================================
FILE: README.md
================================================
# XHarness
This repo contains the code to build the **XHarness dotnet tool** and a **TestRunner library** that makes running unit tests in mobile platforms easier.
## What is XHarness
XHarness is primarily a command line tool that enables running xUnit like tests on Android, Apple iOS / tvOS / WatchOS / xrOS / Mac Catalyst, WASI and desktop browsers (WASM).
It can
- locate devices/emulators
- install a given application, run it and collect results uninstalling it after,
- perform the operations above as part of one command or separately if need be,
- handle application crashes by collecting crash dumps (symbolicate),
- use different types of connection modes (network, USB cable),
- output test results in various different formats from text to xUnit/NUnit XML
- install Apple Simulator runtimes (different versions of iOS, tvOS...).
## System requirements
The tool requires **.NET 6** or later to be run. It is packaged as a `dotnet tool` command and can be installed using the [dotnet tool CLI](https://docs.microsoft.com/en-us/dotnet/core/tools/).
- The Apple scenarios require you to run the tool on MacOS with full Xcode installation
- Android scenarios are supported on Linux, macOS and Windows systems
- Browsers scenarios are supported on Linux systems
## Try the tool out quickly
If you want to test the tool quickly, following script will install the required .NET SDK and the XHarness tool locally in the current folder.
```bash
# Using bash on Linux/MacOS
curl -L https://aka.ms/get-xharness | bash -
```
```powershell
# Using PowerShell on Windows
iex ((New-Object System.Net.WebClient).DownloadString('https://aka.ms/get-xharness-ps1'))
```
You can delete the folder after you're done, nothing is installed in your system.
## Installation and usage
To install the latest version of the tool run (in bash):
```bash
dotnet tool install Microsoft.DotNet.XHarness.CLI \
--global \
--add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json \
--version "11.0.0-prerelease*"
```
Or run (in PowerShell):
```powershell
dotnet tool install Microsoft.DotNet.XHarness.CLI `
--global `
--add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json `
--version "11.0.0-prerelease*"
```
You can get a specific version from [the dotnet-eng feed](https://dev.azure.com/dnceng/public/_packaging?_a=package&feed=dotnet-eng&view=versions&package=Microsoft.DotNet.XHarness.CLI&protocolType=NuGet) where it is published.
So far, we are in preview so omitting the version will fail to locate a stable version of the tool and fail the installation so a specific version has to be supplied.
To run the tool, use the `xharness` command.
The tool returns one of the exit codes [listed here (ExitCode.cs)](https://github.com/dotnet/xharness/blob/main/src/Microsoft.DotNet.XHarness.Common/CLI/ExitCode.cs).
The tool always expects the platform (`android`/`apple`/`browser`) followed by a command.
To get an up-to-date set of commands, please run `xharness help`.
> Applications run via the `apple test` command require a TestRunner inside of the iOS/tvOS app bundle to work properly.
The `apple run` command, on the other hand, doesn't expect the TestRunner and only runs the application and tries to detect the exit code. Detection of exit code might not work across different iOS versions reliably.
>
> **\*** See the [Test Runners section](#test-runners).
Example:
```bash
xharness android state
```
To list all the possible commands, use the `help` command:
```bash
xharness help
```
To get help for a specific command or sub-command, run:
```bash
xharness help apple
xharness help apple test
```
### Other settings
There are other settings which can be controlled via **environmental variables** and are primarily meant for build pipeline scenarios:
- `XHARNESS_DISABLE_COLORED_OUTPUT` - disable colored logging so that control characters are not making the logs hard to read
- `XHARNESS_LOG_WITH_TIMESTAMPS` - enable timestamps for logging
- `XHARNESS_LOG_TEST_START` - log test start messages, useful to diagnose when tests are hanging. Currently only works for WebAssembly
- `XHARNESS_MLAUNCH_PATH` - local path to the mlaunch binary when developing XHarness (when not using as .NET tool)
### Arcade/Helix integration
In case your repository is onboarded into [Arcade](https://github.com/dotnet/arcade) you can use the [Arcade Helix SDK](https://github.com/dotnet/arcade/tree/master/src/Microsoft.DotNet.Helix/Sdk) to run XHarness jobs over Helix. More on how to do that is described [here](https://github.com/dotnet/arcade/blob/master/src/Microsoft.DotNet.Helix/Sdk/tools/xharness-runner/Readme.md).
## Examples
To run an iOS/tvOS app bundle on a 64bit iPhone Simulator:
```bash
xharness apple test \
--app=/path/to/an.app \
--output-directory=out \
--target=ios-simulator-64
```
or the same can be achieved via the shorthand versions of the same options:
```bash
xharness apple test -a=/path/to/an.app -o=out -t=ios-simulator-64
```
The `out` dir will then contain log files such as these:
```console
iPhone X (iOS 13.3) - created by xharness.log # logs from the Simulator
test-Simulator_iOS64.log # logs from the tool itself
test-ios-simulator-64-20200430_025916.xml # test results in XML format
```
Example for Android apk:
```bash
xharness android test \
--output-directory=out \
--package-name=net.dot.System.Numerics.Vectors.Tests \
--app=/path/to/test.apk
```
Output directory will have a file with dump from logcat and a file with tests results.
## Test Runners
The repository also contains several TestRunners which are libraries that can be bundled inside of the application and execute the tests.
The TestRunner detects and executes unit tests inside of the application. It also connects to XHarness over TCP connection from within the running app bundle and reports test run results/state.
There is a library `Microsoft.DotNet.XHarness.DefaultAndroidEntryPoint.Xunit` that provides default logic for Android test app entry point.
It is possible to use `DefaultAndroidEntryPoint` from there for the test app by providing only test result path and test assemblies.
Other parameters can be overrided as well if needed.
Currently we support Xunit and NUnit test assemblies but the `Microsoft.DotNet.XHarness.Tests.Runners` supports implementation of custom runner too.
## Development instructions
When working on XHarness, there are couple of neat hacks that can improve the inner loop.
The repository can either be built using regular .NET, assuming you have new enough version:
```
dotnet build XHarness.slnx
```
or you can use the build scripts `build.sh` or `Build.cmd` in repository root which will install the correct .NET SDK into the `.dotnet` folder.
You can then use
```
./.dotnet/dotnet build XHarness.slnx
```
You can also use Visual Studio 2019+ and just F5 the `Microsoft.DotNet.XHarness.CLI` project.
### ADB, mlaunch
In order for XHarness to work, you will need ADB (for Android) and mlaunch (for anything Apple).
These are executables that go with the packaged .NET xharness tool.
The easiest way to get these at the moment for development purposes is to build the CLI project and they will be downloaded.
```
dotnet build src/Microsoft.DotNet.XHarness.CLI/Microsoft.DotNet.XHarness.CLI.csproj
```
You can then find these dependencies in `artifacts/obj/Microsoft.DotNet.XHarness.CLI/`.
For iOS flows, you can further store the path to mlaunch to an environmental variable `XHARNESS_MLAUNCH_PATH`
```
export XHARNESS_MLAUNCH_PATH='[xharness root]/artifacts/obj/Microsoft.DotNet.XHarness.CLI/mlaunch/bin/mlaunch'
```
and you won't have to specify the `--mlaunch` argument.
### Running E2E tests
In case you want to test your changes in XHarness, you can run E2E tests located in `/tests/integration-tests`. These usually download some pre-built application and send it to our "test cloud" called Helix together with an XHarness version built from your sources. There, XHarness executes the app on a device/simulator.
To run the E2E tests, you can find a script in `tools/` that will build everything and create the cloud job for you:
```
./tools/run-e2e-test.sh Apple/Simulator.Tests.proj
```
## Troubleshooting
Some XHarness commands only work in some scenarios and it's good to know what to expect from the tool.
Some Android/Apple versions also require some workarounds and those are also good to know about.
### My Apple unit tests are not running
For the `apple test` command, XHarness expects the application to contain a `TestRunner` which is a library you can find in this repository.
This library executes unit tests similarly how you would execute them on other platforms.
However, the `TestRunner` from this repository contains more mechanisms that help to work around some issues (mostly in Apple platforms).
The way it works is that XHarness usually sets some [environmental variables](https://github.com/dotnet/xharness/blob/main/src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/EnviromentVariables.cs) for the application and the [`TestRunner` recognizes them](https://github.com/dotnet/xharness/blob/main/src/Microsoft.DotNet.XHarness.TestRunners.Common/ApplicationOptions.cs) and acts upon them.
The workarounds we talk about are for example some TCP connections between the app and XHarness so that we can stream back the test results.
For these reasons, the `test` command won't just work with any app. For those scenarios, use the `apple run` commands.
### iOS/tvOS device runs are timing out
For some iOS/tvOS, we have problems detecting when the application exits on the real device (simulators work fine).
The workaround we went with lies in sharing a random string with the application using an [environmental variable `RUN_END_TAG`](https://github.com/dotnet/xharness/blob/main/src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/EnviromentVariables.cs) and expecting the app to output this string at the end of its run.
To turn this workaround on, run XHarness with `--signal-app-end` and make sure your application logs the string it reads from the env variable.
Using the `TestRunner` from this repository will automatically give you this functionality.
## Contribution
We welcome contributions! Please follow the [Code of Conduct](CODE_OF_CONDUCT.md).
## Filing issues
This repo should contain issues that are tied to the XHarness command line tool and the TestRunners.
For other issues, please use the following repos:
- For .NET runtime and Base Class Library issues, file in the [dotnet/runtime](https://github.com/dotnet/runtime) repo
- For overall .NET SDK issues, file in the [dotnet/sdk](https://github.com/dotnet/sdk) repo
## License
.NET (including the xharness repo) is licensed under the [MIT](LICENSE.TXT) license.
================================================
FILE: SECURITY.md
================================================
<!-- BEGIN MICROSOFT SECURITY.MD V0.0.3 BLOCK -->
## Security
Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
If you believe you have found a security vulnerability in any Microsoft-owned repository that meets Microsoft's [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)) of a security vulnerability, please report it to us as described below.
## Reporting Security Issues
**Please do not report security vulnerabilities through public GitHub issues.**
Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
* Full paths of source file(s) related to the manifestation of the issue
* The location of the affected source code (tag/branch/commit or direct URL)
* Any special configuration required to reproduce the issue
* Step-by-step instructions to reproduce the issue
* Proof-of-concept or exploit code (if possible)
* Impact of the issue, including how an attacker might exploit the issue
This information will help us triage your report more quickly.
If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
## Preferred Languages
We prefer all communications to be in English.
## Policy
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
<!-- END MICROSOFT SECURITY.MD BLOCK -->
================================================
FILE: THIRD-PARTY-NOTICES.TXT
================================================
.NET Core uses third-party libraries or other resources that may be
distributed under licenses different than the .NET Core software.
In the event that we accidentally failed to list a required notice, please
bring it to our attention. Post an issue or email us:
dotnet@microsoft.com
The attached notices are provided for information only.
No notices are provided at this time.
================================================
FILE: XHarness.slnx
================================================
<Solution>
<Folder Name="/Solution Items/">
<File Path=".editorconfig" />
<File Path="global.json" />
</Folder>
<Folder Name="/src/">
<Project Path="src/Microsoft.DotNet.XHarness.Android/Microsoft.DotNet.XHarness.Android.csproj" />
<Project Path="src/Microsoft.DotNet.XHarness.Apple/Microsoft.DotNet.XHarness.Apple.csproj" />
<Project Path="src/Microsoft.DotNet.XHarness.CLI/Microsoft.DotNet.XHarness.CLI.csproj" />
<Project Path="src/Microsoft.DotNet.XHarness.Common/Microsoft.DotNet.XHarness.Common.csproj" />
<Project Path="src/Microsoft.DotNet.XHarness.InstrumentationBase.Xunit/Microsoft.DotNet.XHarness.DefaultAndroidEntryPoint.Xunit.csproj" />
<Project Path="src/Microsoft.DotNet.XHarness.iOS.Shared/Microsoft.DotNet.XHarness.iOS.Shared.csproj" />
<Project Path="src/Microsoft.DotNet.XHarness.TestRunners.Common/Microsoft.DotNet.XHarness.TestRunners.Common.csproj" />
<Project Path="src/Microsoft.DotNet.XHarness.TestRunners.NUnit/Microsoft.DotNet.XHarness.TestRunners.NUnit.csproj" />
<Project Path="src/Microsoft.DotNet.XHarness.TestRunners.Xunit/Microsoft.DotNet.XHarness.TestRunners.Xunit.csproj" />
</Folder>
<Folder Name="/tests/">
<Project Path="tests/Microsoft.DotNet.XHarness.Android.Tests/Microsoft.DotNet.XHarness.Android.Tests.csproj" />
<Project Path="tests/Microsoft.DotNet.XHarness.Apple.Tests/Microsoft.DotNet.XHarness.Apple.Tests.csproj" />
<Project Path="tests/Microsoft.DotNet.XHarness.CLI.Tests/Microsoft.DotNet.XHarness.CLI.Tests.csproj" />
<Project Path="tests/Microsoft.DotNet.XHarness.Common.Tests/Microsoft.DotNet.XHarness.Common.Tests.csproj" />
<Project Path="tests/Microsoft.DotNet.XHarness.iOS.Shared.Tests/Microsoft.DotNet.XHarness.iOS.Shared.Tests.csproj" />
<Project Path="tests/Microsoft.DotNet.XHarness.TestRunners.Tests/Microsoft.DotNet.XHarness.TestRunners.Tests.csproj" />
</Folder>
</Solution>
================================================
FILE: azure-pipelines-public.yml
================================================
variables:
- template: /eng/common-variables.yml
- template: /eng/common/templates/variables/pool-providers.yml
# CI and PR triggers
trigger:
batch: true
branches:
include:
- main
- release/*
pr:
branches:
include:
- main
- release/*
# Build
stages:
- stage: Build_Windows_NT
displayName: Build Windows
jobs:
- template: /eng/common/templates/jobs/jobs.yml
parameters:
enableTelemetry: true
enablePublishBuildArtifacts: true
enableMicrobuild: true
publishingVersion: 4
enablePublishBuildAssets: true
helixRepo: dotnet/xharness
jobs:
- job: Windows_NT
enablePublishing: true
pool:
name: $(DncEngPublicBuildPool)
demands: ImageOverride -equals 1es-windows-2022-open
strategy:
matrix:
Release:
_BuildConfig: Release
_PublishArgs: ''
Debug:
_BuildConfig: Debug
_PublishArgs: /p:Publish=false
steps:
- script: eng\common\CIBuild.cmd
-configuration $(_BuildConfig)
-prepareMachine
$(_PublishArgs)
name: Build
displayName: Build and run tests
condition: succeeded()
- task: PublishTestResults@2
displayName: 'Publish Unit Test Results'
inputs:
testResultsFormat: xUnit
testResultsFiles: '$(Build.SourcesDirectory)/artifacts/TestResults/**/*.xml'
mergeTestResults: true
searchFolder: $(system.defaultworkingdirectory)
testRunTitle: XHarness unit tests - $(Agent.JobName)
condition: succeededOrFailed()
- stage: Build_OSX
displayName: Build OSX
dependsOn:
jobs:
- template: /eng/common/templates/jobs/jobs.yml
parameters:
enableTelemetry: true
enablePublishBuildArtifacts: true
enableMicrobuild: true
publishingVersion: 4
enablePublishBuildAssets: true
helixRepo: dotnet/xharness
jobs:
- job: OSX
enablePublishing: true
pool:
vmImage: macOS-15
strategy:
matrix:
Release:
_BuildConfig: Release
_PublishArgs: ''
Debug:
_BuildConfig: Debug
_PublishArgs: /p:Publish=false
steps:
- script: eng/common/cibuild.sh
--configuration $(_BuildConfig)
--prepareMachine
$(_PublishArgs)
name: Build
displayName: Build and run tests
condition: succeeded()
- publish: $(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping/Microsoft.DotNet.XHarness.CLI.11.0.0-ci.nupkg
artifact: Microsoft.DotNet.XHarness.CLI.$(_BuildConfig)
displayName: Publish XHarness CLI for Helix Testing
condition: and(succeeded(), eq(variables['_BuildConfig'], 'Debug'))
- task: PublishTestResults@2
displayName: 'Publish Unit Test Results'
inputs:
testResultsFormat: xUnit
testResultsFiles: '$(Build.SourcesDirectory)/artifacts/TestResults/**/*.xml'
mergeTestResults: true
searchFolder: $(system.defaultworkingdirectory)
testRunTitle: XHarness unit tests - $(Agent.JobName)
condition: succeededOrFailed()
# E2E tests
- template: eng/e2e-test.yml
parameters:
name: E2E_Android_Simulators
displayName: Android - Simulators
testProject: $(Build.SourcesDirectory)/tests/integration-tests/Android/Simulator.Tests.proj
- template: eng/e2e-test.yml
parameters:
name: E2E_Android_Devices
displayName: Android - Devices
testProject: $(Build.SourcesDirectory)/tests/integration-tests/Android/Device.Tests.proj
- template: eng/e2e-test.yml
parameters:
name: E2E_Android_Manual_Commands
displayName: Android - Manual Commands
testProject: $(Build.SourcesDirectory)/tests/integration-tests/Android/Commands.Tests.proj
- template: eng/e2e-test.yml
parameters:
name: E2E_Apple_Simulators
displayName: Apple - Simulators
testProject: $(Build.SourcesDirectory)/tests/integration-tests/Apple/Simulator.Tests.proj
- template: eng/e2e-test.yml
parameters:
name: E2E_iOS_Devices
displayName: Apple - iOS devices
testProject: $(Build.SourcesDirectory)/tests/integration-tests/Apple/Device.iOS.Tests.proj
- template: eng/e2e-test.yml
parameters:
name: E2E_tvOS_Devices
displayName: Apple - tvOS devices
testProject: $(Build.SourcesDirectory)/tests/integration-tests/Apple/Device.tvOS.Tests.proj
- template: eng/e2e-test.yml
parameters:
name: E2E_Apple_Simulator_Commands
displayName: Apple - Simulator Commands
testProject: $(Build.SourcesDirectory)/tests/integration-tests/Apple/Simulator.Commands.Tests.proj
- template: eng/e2e-test.yml
parameters:
name: E2E_Apple_Device_Commands
displayName: Apple - Device Commands
testProject: $(Build.SourcesDirectory)/tests/integration-tests/Apple/Device.Commands.Tests.proj
- template: eng/e2e-test.yml
parameters:
name: E2E_Apple_Simulator_Mgmt
displayName: Apple - Simulator management
testProject: $(Build.SourcesDirectory)/tests/integration-tests/Apple/SimulatorInstaller.Tests.proj
- template: eng/e2e-test.yml
parameters:
name: E2E_WASM
displayName: WASM
testProject: $(Build.SourcesDirectory)/tests/integration-tests/WASM/WASM.Helix.SDK.Tests.proj
================================================
FILE: azure-pipelines.yml
================================================
variables:
- template: /eng/common-variables.yml@self
- template: /eng/common/templates-official/variables/pool-providers.yml@self
# CI triggers
trigger:
batch: true
branches:
include:
- main
- release/*
- internal/release/*
pr: none
# Scheduled trigger - runs once per week on Sunday at midnight UTC
schedules:
- cron: '0 0 * * 0'
displayName: Weekly build
branches:
include:
- main
always: true
resources:
repositories:
- repository: 1ESPipelineTemplates
type: git
name: 1ESPipelineTemplates/1ESPipelineTemplates
ref: refs/tags/release
extends:
template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
parameters:
settings:
networkIsolationPolicy: Permissive,CFSClean,CFSClean2
sdl:
tsa:
enabled: true
policheck:
enabled: true
binskim:
enabled: true
codeql:
${{ if startsWith(variables['Build.SourceBranch'], 'refs/heads/release/') }}:
enabledOnNonDefaultBranches: true
pool:
name: $(DncEngInternalBuildPool)
image: 1es-windows-2022
os: windows
stages:
- stage: Build
jobs:
- template: /eng/common/templates-official/jobs/jobs.yml@self
parameters:
enableTelemetry: true
enablePublishBuildArtifacts: true
enableMicrobuild: true
publishingVersion: 4
${{ if ne(variables['Build.Reason'], 'Schedule') }}:
enablePublishBuildAssets: true
helixRepo: dotnet/xharness
jobs:
- job: Windows_NT
enablePublishing: true
displayName: Build Windows
timeoutInMinutes: 120
steps:
- script: eng\common\CIBuild.cmd -configuration $(_BuildConfig) -prepareMachine $(_InternalBuildArgs) /p:Test=false
name: Build
displayName: Build
condition: succeeded()
- template: /eng/pipelines/apiscan-steps.yml
templateContext:
outputs:
- output: pipelineArtifact
artifact: Artifacts_Windows_NT
path: '$(Build.SourcesDirectory)\artifacts\bin\Microsoft.DotNet.XHarness.CLI'
displayName: 'Publish Windows_NT Artifacts'
condition: succeeded()
- ${{ if ne(variables['Build.Reason'], 'Schedule') }}:
- template: /eng/common/templates-official/post-build/post-build.yml@self
parameters:
publishingInfraVersion: 4
enableSymbolValidation: true
enableSourceLinkValidation: true
================================================
FILE: build.sh
================================================
#!/usr/bin/env bash
source="${BASH_SOURCE[0]}"
# resolve $SOURCE until the file is no longer a symlink
while [[ -h $source ]]; do
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
source="$(readlink "$source")"
# if $source was a relative symlink, we need to resolve it relative to the path where the
# symlink file was located
[[ $source != /* ]] && source="$scriptroot/$source"
done
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
"$scriptroot/eng/common/build.sh" --build --restore $@
================================================
FILE: decoded_output.xml
================================================
================================================
FILE: docs/high-level-architecture.md
================================================
# Overview
This document provides a high-level overview of the XHarness architecture, which is organized into two main layers: the tooling layer and the application layer.
## Tooling layer
The tooling layer represents the foundation of the tool.
**XHarness.CLI** is the CLI that defines commands and arguments for interacting with XHarness. It serves as the main entry point for users.
Supported platforms include Android, Apple mobile, MacCatalyst, WASI, and desktop browsers (WASM). The available commands are:
### Android commands:
- `AndroidTest`
- `AndroidDevice`
- `AndroidInstall`
- `AndroidRun`
- `AndroidUninstall`
- `AndroidAdb`
- `AndroidState`
### Apple mobile commands:
- `AppleTest`
- `AppleRun`
- `AppleInstall`
- `AppleUninstall`
- `AppleJustTest`
- `AppleJustRun`
- `AppleDevice`
- `AppleMlaunch`
- `AppleState`
### Apple simulator commands:
- `List`
- `Find`
- `Install`
- `ResetSimulator`
### WASM commands:
- `WasmTest`
- `WasmTestBrowser`
- `WebServer`
### WASI commands:
- `WasiTest`
**XHarness.Android** and **XHarness.Apple** implement platform-specific operations and their orchestration. On Android, it uses `adb` runner for communication with devices and command execution. For Apple mobile platforms, it relies on `mlaunch` manager to interact with simulators and devices.
**XHarness.iOS.Shared** is specific to Apple mobile platforms, managing functionalities such as AppBundle information, simulators, and device configurations.
**XHarness.Common** provides the essential building blocks, including logging, execution, utilities, and diagnostics. Logging supports various formats, such as `ConsoleLogger`, `FileLogger`, `MemoryLogger`, `AggregatedLogs`, and `CallbackLogger`. The execution component implements platform-specific command runners. Utilities contain helper functions used across the tool. Diagnostics provide detailed information about the execution environment.
Logging is enabled by default, with the console logger being the default for commands. The file logger is used for `mlaunch` and `adb` commands. The memory logger is used by the platform-specific command runners.
## Application layer
The application layer manages test execution, discovery, and results aggregation.
**XHarness.TestRunners.XUnit** and **XHarness.TestRunners.NUnit** are framework-specific components designed to run tests using these frameworks.
**XHarness.TestRunners.Common** implements the tests discovery, execution, and results aggregation.

================================================
FILE: docs/integrity-check.md
================================================
# Integrity check of 3rd party dependencies
## NuGet dependencies
All NuGet dependencies are checked and verified by Component Governance tool as part of the official build in the 1ES production pipeline.
## Android platform tools
Android platform tools are distributed as part of the XHarness.CLI NuGet package.
The tools and required dependencies are downloaded from the official Google repository (as documented in: https://developer.android.com/studio/releases/platform-tools) and embedded in the XHarness.CLI NuGet package for each supported host operating system.
- NOTE: Example URL used for downloading specific platform tools version for Windows: https://dl.google.com/android/repository/platform-tools_r30.0.5-windows.zip
This dependency is listed in the SBOM manifest generated during the official build of XHarness.CLI NuGet package.
## Apple iOS simulator runtimes
XHarness enables users to download and install a specific iOS simulator runtime (available through `xharness apple simulators install <ios-simulator-64_version>` command).
Invoking the said command will:
- Fetch information about the available simulator runtimes from Apple repository
- Download the desired simulator runtime image
- Install/Mount the desired simulator runtime image
Regarding integrity check all the above operations are using:
- If Xcode version < 16:
- Official Apple sources: https://devimages-cdn.apple.com/downloads/xcode/simulators/index2.dvtdownloadableindex to acquire simulator image information like image build number, file size, download URL and similar
- Official download URLs acquired from the previous step to download runtime images (example: https://download.developer.apple.com/Developer_Tools/iOS_17.5_Simulator_Runtime/iOS_17.5_Simulator_Runtime.dmg)
- Download request uses ADC cookies
- Downloaded image payload is compared against the specified file size
- Official Apple tooling which performs package verification prior to installation/mounting:
- `xcrun simctl runtime add <path>` performs the following by default (from the official documentation `xcrun simctl runtime --help`):
```bash
Add a runtime disk image to the secure storage area. The image will be staged, verified, and mounted.
```
- `hdiutil attach <image>` performs the following by default (from the official documentation https://ss64.com/mac/hdiutil.html):
```bash
By default, hdiutil attach attempts to intelligently verify images that contain checksums before attaching them.
```
- If Xcode version >= 16.0
- Official Apple tooling to download/install/mount simulator runtime images through `xcode -downloadPlatform iOS` (source: https://developer.apple.com/documentation/xcode/installing-additional-simulator-runtimes)
================================================
FILE: eng/Publishing.props
================================================
<Project>
<!-- We include mlaunch and adb binaries we didn't build and which do not need sympkgs -->
<PropertyGroup>
<PublishingVersion>4</PublishingVersion>
<AutoGenerateSymbolPackages>false</AutoGenerateSymbolPackages>
</PropertyGroup>
</Project>
================================================
FILE: eng/Signing.props
================================================
<Project>
<ItemGroup>
<FileSignInfo Include="mlaunch.dll" CertificateName="3PartySHA2" />
<FileSignInfo Include="Newtonsoft.Json.dll" CertificateName="3PartySHA2" />
<FileSignInfo Include="WebDriver.dll" CertificateName="3PartySHA2" />
<FileSignInfo Include="Xamarin.Localization.Mlaunch.dll" CertificateName="3PartySHA2" />
<FileSignInfo Include="Xamarin.Localization.Mlaunch.resources.dll" CertificateName="3PartySHA2" />
<FileSignInfo Include="Microsoft.macOS.dll" CertificateName="3PartySHA2" />
</ItemGroup>
</Project>
================================================
FILE: eng/Version.Details.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<Dependencies>
<ProductDependencies>
</ProductDependencies>
<ToolsetDependencies>
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="11.0.0-beta.26251.2">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>3f6871376906201d8237b9c0167fd4a844098566</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="11.0.0-beta.26251.2">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>3f6871376906201d8237b9c0167fd4a844098566</Sha>
</Dependency>
</ToolsetDependencies>
</Dependencies>
================================================
FILE: eng/Versions.props
================================================
<Project>
<PropertyGroup>
<!-- change the following places when changing the VersionPrefix:
- README.md
- azure-pipelines-public.yml
- tools/install-xharness.sh and .ps1
-->
<VersionPrefix>11.0.0</VersionPrefix>
<PreReleaseVersionLabel>prerelease</PreReleaseVersionLabel>
<!-- Don't allow netstandard1.x dependencies in this repository. -->
<FlagNetStandard1XDependencies>true</FlagNetStandard1XDependencies>
</PropertyGroup>
</Project>
================================================
FILE: eng/common/AGENTS.md
================================================
# `eng/common`
Files under `eng/common` come from [Arcade](https://github.com/dotnet/arcade).
Edits in `eng/common` will be overwritten by automation unless the changes are made directly in the Arcade repository.
For more information, see the [Arcade documentation](https://github.com/dotnet/arcade/tree/main/Documentation).
================================================
FILE: eng/common/BuildConfiguration/build-configuration.json
================================================
{
"RetryCountLimit": 1,
"RetryByAnyError": false
}
================================================
FILE: eng/common/CIBuild.cmd
================================================
@echo off
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*"
================================================
FILE: eng/common/PSScriptAnalyzerSettings.psd1
================================================
@{
IncludeRules=@('PSAvoidUsingCmdletAliases',
'PSAvoidUsingWMICmdlet',
'PSAvoidUsingPositionalParameters',
'PSAvoidUsingInvokeExpression',
'PSUseDeclaredVarsMoreThanAssignments',
'PSUseCmdletCorrectly',
'PSStandardDSCFunctionsInResource',
'PSUseIdenticalMandatoryParametersForDSC',
'PSUseIdenticalParametersForDSC')
}
================================================
FILE: eng/common/README.md
================================================
# Don't touch this folder
uuuuuuuuuuuuuuuuuuuu
u" uuuuuuuuuuuuuuuuuu "u
u" u$$$$$$$$$$$$$$$$$$$$u "u
u" u$$$$$$$$$$$$$$$$$$$$$$$$u "u
u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u
u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u
u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u
$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $
$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $
$ $$$" ... "$... ...$" ... "$$$ ... "$$$ $
$ $$$u `"$$$$$$$ $$$ $$$$$ $$ $$$ $$$ $
$ $$$$$$uu "$$$$ $$$ $$$$$ $$ """ u$$$ $
$ $$$""$$$ $$$$ $$$u "$$$" u$$ $$$$$$$$ $
$ $$$$....,$$$$$..$$$$$....,$$$$..$$$$$$$$ $
$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $
"u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u"
"u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u"
"u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u"
"u "$$$$$$$$$$$$$$$$$$$$$$$$" u"
"u "$$$$$$$$$$$$$$$$$$$$" u"
"u """""""""""""""""" u"
""""""""""""""""""""
!!! Changes made in this directory are subject to being overwritten by automation !!!
The files in this directory are shared by all Arcade repos and managed by automation. If you need to make changes to these files, open an issue or submit a pull request to https://github.com/dotnet/arcade first.
================================================
FILE: eng/common/SetupNugetSources.ps1
================================================
# This script adds internal feeds required to build commits that depend on internal package sources. For instance,
# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
# disabled internal Maestro (darc-int*) feeds.
#
# Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
#
# See example call for this script below.
#
# - task: PowerShell@2
# displayName: Setup internal Feeds Credentials
# condition: eq(variables['Agent.OS'], 'Windows_NT')
# inputs:
# filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
# arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token
# env:
# Token: $(dn-bot-dnceng-artifact-feeds-rw)
#
# Note that the NuGetAuthenticate task should be called after SetupNugetSources.
# This ensures that:
# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt)
# - The credential provider is installed.
#
# This logic is also abstracted into enable-internal-sources.yml.
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)][string]$ConfigFile,
$Password
)
$ErrorActionPreference = "Stop"
Set-StrictMode -Version 2.0
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
. $PSScriptRoot\tools.ps1
# Adds or enables the package source with the given name
function AddOrEnablePackageSource($sources, $disabledPackageSources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) {
if ($disabledPackageSources -eq $null -or -not (EnableInternalPackageSource -DisabledPackageSources $disabledPackageSources -Creds $creds -PackageSourceName $SourceName)) {
AddPackageSource -Sources $sources -SourceName $SourceName -SourceEndPoint $SourceEndPoint -Creds $creds -Username $userName -pwd $Password
}
}
# Add source entry to PackageSources
function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) {
$packageSource = $sources.SelectSingleNode("add[@key='$SourceName']")
if ($packageSource -eq $null)
{
Write-Host "Adding package source $SourceName"
$packageSource = $doc.CreateElement("add")
$packageSource.SetAttribute("key", $SourceName)
$packageSource.SetAttribute("value", $SourceEndPoint)
$sources.AppendChild($packageSource) | Out-Null
}
else {
Write-Host "Package source $SourceName already present and enabled."
}
AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd
}
# Add a credential node for the specified source
function AddCredential($creds, $source, $username, $pwd) {
# If no cred supplied, don't do anything.
if (!$pwd) {
return;
}
Write-Host "Inserting credential for feed: " $source
# Looks for credential configuration for the given SourceName. Create it if none is found.
$sourceElement = $creds.SelectSingleNode($Source)
if ($sourceElement -eq $null)
{
$sourceElement = $doc.CreateElement($Source)
$creds.AppendChild($sourceElement) | Out-Null
}
# Add the <Username> node to the credential if none is found.
$usernameElement = $sourceElement.SelectSingleNode("add[@key='Username']")
if ($usernameElement -eq $null)
{
$usernameElement = $doc.CreateElement("add")
$usernameElement.SetAttribute("key", "Username")
$sourceElement.AppendChild($usernameElement) | Out-Null
}
$usernameElement.SetAttribute("value", $Username)
# Add the <ClearTextPassword> to the credential if none is found.
# Add it as a clear text because there is no support for encrypted ones in non-windows .Net SDKs.
# -> https://github.com/NuGet/Home/issues/5526
$passwordElement = $sourceElement.SelectSingleNode("add[@key='ClearTextPassword']")
if ($passwordElement -eq $null)
{
$passwordElement = $doc.CreateElement("add")
$passwordElement.SetAttribute("key", "ClearTextPassword")
$sourceElement.AppendChild($passwordElement) | Out-Null
}
$passwordElement.SetAttribute("value", $pwd)
}
# Enable all darc-int package sources.
function EnableMaestroInternalPackageSources($DisabledPackageSources, $Creds) {
$maestroInternalSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]")
ForEach ($DisabledPackageSource in $maestroInternalSources) {
EnableInternalPackageSource -DisabledPackageSources $DisabledPackageSources -Creds $Creds -PackageSourceName $DisabledPackageSource.key
}
}
# Enables an internal package source by name, if found. Returns true if the package source was found and enabled, false otherwise.
function EnableInternalPackageSource($DisabledPackageSources, $Creds, $PackageSourceName) {
$DisabledPackageSource = $DisabledPackageSources.SelectSingleNode("add[@key='$PackageSourceName']")
if ($DisabledPackageSource) {
Write-Host "Enabling internal source '$($DisabledPackageSource.key)'."
# Due to https://github.com/NuGet/Home/issues/10291, we must actually remove the disabled entries
$DisabledPackageSources.RemoveChild($DisabledPackageSource)
AddCredential -Creds $creds -Source $DisabledPackageSource.Key -Username $userName -pwd $Password
return $true
}
return $false
}
if (!(Test-Path $ConfigFile -PathType Leaf)) {
Write-PipelineTelemetryError -Category 'Build' -Message "Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile"
ExitWithExitCode 1
}
# Load NuGet.config
$doc = New-Object System.Xml.XmlDocument
$filename = (Get-Item $ConfigFile).FullName
$doc.Load($filename)
# Get reference to <PackageSources> - fail if none exist
$sources = $doc.DocumentElement.SelectSingleNode("packageSources")
if ($sources -eq $null) {
Write-PipelineTelemetryError -Category 'Build' -Message "Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. NuGet config file must contain a packageSources section: $ConfigFile"
ExitWithExitCode 1
}
$creds = $null
$feedSuffix = "v3/index.json"
if ($Password) {
$feedSuffix = "v2"
# Looks for a <PackageSourceCredentials> node. Create it if none is found.
$creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials")
if ($creds -eq $null) {
$creds = $doc.CreateElement("packageSourceCredentials")
$doc.DocumentElement.AppendChild($creds) | Out-Null
}
}
$userName = "dn-bot"
# Check for disabledPackageSources; we'll enable any darc-int ones we find there
$disabledSources = $doc.DocumentElement.SelectSingleNode("disabledPackageSources")
if ($disabledSources -ne $null) {
Write-Host "Checking for any darc-int disabled package sources in the disabledPackageSources node"
EnableMaestroInternalPackageSources -DisabledPackageSources $disabledSources -Creds $creds
}
$dotnetVersions = @('5','6','7','8','9','10')
foreach ($dotnetVersion in $dotnetVersions) {
$feedPrefix = "dotnet" + $dotnetVersion;
$dotnetSource = $sources.SelectSingleNode("add[@key='$feedPrefix']")
if ($dotnetSource -ne $null) {
AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password
AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password
}
}
$doc.Save($filename)
================================================
FILE: eng/common/SetupNugetSources.sh
================================================
#!/usr/bin/env bash
# This script adds internal feeds required to build commits that depend on internal package sources. For instance,
# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
# disabled internal Maestro (darc-int*) feeds.
#
# Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
#
# See example call for this script below.
#
# - task: Bash@3
# displayName: Setup Internal Feeds
# inputs:
# filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh
# arguments: $(System.DefaultWorkingDirectory)/NuGet.config
# condition: ne(variables['Agent.OS'], 'Windows_NT')
# - task: NuGetAuthenticate@1
#
# Note that the NuGetAuthenticate task should be called after SetupNugetSources.
# This ensures that:
# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt)
# - The credential provider is installed.
#
# This logic is also abstracted into enable-internal-sources.yml.
ConfigFile=$1
CredToken=$2
NL='\n'
TB=' '
source="${BASH_SOURCE[0]}"
# resolve $source until the file is no longer a symlink
while [[ -h "$source" ]]; do
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
source="$(readlink "$source")"
# if $source was a relative symlink, we need to resolve it relative to the path where the
# symlink file was located
[[ $source != /* ]] && source="$scriptroot/$source"
done
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
. "$scriptroot/tools.sh"
if [ ! -f "$ConfigFile" ]; then
Write-PipelineTelemetryError -Category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile"
ExitWithExitCode 1
fi
if [[ `uname -s` == "Darwin" ]]; then
NL=$'\\\n'
TB=''
fi
# Enables an internal package source by name, if found. Returns 0 if found and enabled, 1 if not found.
EnableInternalPackageSource() {
local PackageSourceName="$1"
# Check if disabledPackageSources section exists
grep -i "<disabledPackageSources>" "$ConfigFile" > /dev/null
if [ "$?" != "0" ]; then
return 1 # No disabled sources section
fi
# Check if this source name is disabled
grep -i "<add key=\"$PackageSourceName\" value=\"true\"" "$ConfigFile" > /dev/null
if [ "$?" == "0" ]; then
echo "Enabling internal source '$PackageSourceName'."
# Remove the disabled entry (including any surrounding comments or whitespace on the same line)
sed -i.bak "/<add key=\"$PackageSourceName\" value=\"true\" \/>/d" "$ConfigFile"
# Add the source name to PackageSources for credential handling
PackageSources+=("$PackageSourceName")
return 0 # Found and enabled
fi
return 1 # Not found in disabled sources
}
# Add source entry to PackageSources
AddPackageSource() {
local SourceName="$1"
local SourceEndPoint="$2"
# Check if source already exists
grep -i "<add key=\"$SourceName\"" "$ConfigFile" > /dev/null
if [ "$?" == "0" ]; then
echo "Package source $SourceName already present and enabled."
PackageSources+=("$SourceName")
return
fi
echo "Adding package source $SourceName"
PackageSourcesNodeFooter="</packageSources>"
PackageSourceTemplate="${TB}<add key=\"$SourceName\" value=\"$SourceEndPoint\" />"
sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" "$ConfigFile"
PackageSources+=("$SourceName")
}
# Adds or enables the package source with the given name
AddOrEnablePackageSource() {
local SourceName="$1"
local SourceEndPoint="$2"
# Try to enable if disabled, if not found then add new source
EnableInternalPackageSource "$SourceName"
if [ "$?" != "0" ]; then
AddPackageSource "$SourceName" "$SourceEndPoint"
fi
}
# Enable all darc-int package sources
EnableMaestroInternalPackageSources() {
# Check if disabledPackageSources section exists
grep -i "<disabledPackageSources>" "$ConfigFile" > /dev/null
if [ "$?" != "0" ]; then
return # No disabled sources section
fi
# Find all darc-int disabled sources
local DisabledDarcIntSources=()
DisabledDarcIntSources+=$(grep -oh '"darc-int-[^"]*" value="true"' "$ConfigFile" | tr -d '"')
for DisabledSourceName in ${DisabledDarcIntSources[@]} ; do
if [[ $DisabledSourceName == darc-int* ]]; then
EnableInternalPackageSource "$DisabledSourceName"
fi
done
}
# Ensure there is a <packageSources>...</packageSources> section.
grep -i "<packageSources>" $ConfigFile
if [ "$?" != "0" ]; then
Write-PipelineTelemetryError -Category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. NuGet config file must contain a packageSources section: $ConfigFile"
ExitWithExitCode 1
fi
PackageSources=()
# Set feed suffix based on whether credentials are provided
FeedSuffix="v3/index.json"
if [ -n "$CredToken" ]; then
FeedSuffix="v2"
# Ensure there is a <packageSourceCredentials>...</packageSourceCredentials> section.
grep -i "<packageSourceCredentials>" $ConfigFile
if [ "$?" != "0" ]; then
echo "Adding <packageSourceCredentials>...</packageSourceCredentials> section."
PackageSourcesNodeFooter="</packageSources>"
PackageSourceCredentialsTemplate="${TB}<packageSourceCredentials>${NL}${TB}</packageSourceCredentials>"
sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourcesNodeFooter${NL}$PackageSourceCredentialsTemplate|" $ConfigFile
fi
fi
# Check for disabledPackageSources; we'll enable any darc-int ones we find there
grep -i "<disabledPackageSources>" $ConfigFile > /dev/null
if [ "$?" == "0" ]; then
echo "Checking for any darc-int disabled package sources in the disabledPackageSources node"
EnableMaestroInternalPackageSources
fi
DotNetVersions=('5' '6' '7' '8' '9' '10')
for DotNetVersion in ${DotNetVersions[@]} ; do
FeedPrefix="dotnet${DotNetVersion}";
grep -i "<add key=\"$FeedPrefix\"" $ConfigFile > /dev/null
if [ "$?" == "0" ]; then
AddOrEnablePackageSource "$FeedPrefix-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$FeedPrefix-internal/nuget/$FeedSuffix"
AddOrEnablePackageSource "$FeedPrefix-internal-transport" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$FeedPrefix-internal-transport/nuget/$FeedSuffix"
fi
done
# I want things split line by line
PrevIFS=$IFS
IFS=$'\n'
PackageSources+="$IFS"
PackageSources+=$(grep -oh '"darc-int-[^"]*"' $ConfigFile | tr -d '"')
IFS=$PrevIFS
if [ "$CredToken" ]; then
for FeedName in ${PackageSources[@]} ; do
# Check if there is no existing credential for this FeedName
grep -i "<$FeedName>" $ConfigFile
if [ "$?" != "0" ]; then
echo " Inserting credential for feed: $FeedName"
PackageSourceCredentialsNodeFooter="</packageSourceCredentials>"
NewCredential="${TB}${TB}<$FeedName>${NL}${TB}<add key=\"Username\" value=\"dn-bot\" />${NL}${TB}${TB}<add key=\"ClearTextPassword\" value=\"$CredToken\" />${NL}${TB}${TB}</$FeedName>"
sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile
fi
done
fi
================================================
FILE: eng/common/build.cmd
================================================
@echo off
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0build.ps1""" %*"
exit /b %ErrorLevel%
================================================
FILE: eng/common/build.ps1
================================================
[CmdletBinding(PositionalBinding=$false)]
Param(
[string][Alias('c')]$configuration = "Debug",
[string]$platform = $null,
[string] $projects,
[string][Alias('v')]$verbosity = "minimal",
[string] $msbuildEngine = $null,
[bool] $warnAsError = $true,
[string] $warnNotAsError = '',
[bool] $nodeReuse = $true,
[switch] $buildCheck = $false,
[switch][Alias('r')]$restore,
[switch] $deployDeps,
[switch][Alias('b')]$build,
[switch] $rebuild,
[switch] $deploy,
[switch][Alias('t')]$test,
[switch] $integrationTest,
[switch] $performanceTest,
[switch] $sign,
[switch] $pack,
[switch] $publish,
[switch] $clean,
[switch][Alias('pb')]$productBuild,
[switch]$fromVMR,
[switch][Alias('bl')]$binaryLog,
[switch][Alias('nobl')]$excludeCIBinarylog,
[switch] $ci,
[switch] $prepareMachine,
[string] $runtimeSourceFeed = '',
[string] $runtimeSourceFeedKey = '',
[switch] $excludePrereleaseVS,
[switch] $nativeToolsOnMachine,
[switch] $help,
[Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
)
# Unset 'Platform' environment variable to avoid unwanted collision in InstallDotNetCore.targets file
# some computer has this env var defined (e.g. Some HP)
if($env:Platform) {
$env:Platform=""
}
function Print-Usage() {
Write-Host "Common settings:"
Write-Host " -configuration <value> Build configuration: 'Debug' or 'Release' (short: -c)"
Write-Host " -platform <value> Platform configuration: 'x86', 'x64' or any valid Platform value to pass to msbuild"
Write-Host " -verbosity <value> Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] (short: -v)"
Write-Host " -binaryLog Output binary log (short: -bl)"
Write-Host " -help Print help and exit"
Write-Host ""
Write-Host "Actions:"
Write-Host " -restore Restore dependencies (short: -r)"
Write-Host " -build Build solution (short: -b)"
Write-Host " -rebuild Rebuild solution"
Write-Host " -deploy Deploy built VSIXes"
Write-Host " -deployDeps Deploy dependencies (e.g. VSIXes for integration tests)"
Write-Host " -test Run all unit tests in the solution (short: -t)"
Write-Host " -integrationTest Run all integration tests in the solution"
Write-Host " -performanceTest Run all performance tests in the solution"
Write-Host " -pack Package build outputs into NuGet packages and Willow components"
Write-Host " -sign Sign build outputs"
Write-Host " -publish Publish artifacts (e.g. symbols)"
Write-Host " -clean Clean the solution"
Write-Host " -productBuild Build the solution in the way it will be built in the full .NET product (VMR) build (short: -pb)"
Write-Host ""
Write-Host "Advanced settings:"
Write-Host " -projects <value> Semi-colon delimited list of sln/proj's to build. Globbing is supported (*.sln)"
Write-Host " -ci Set when running on CI server"
Write-Host " -excludeCIBinarylog Don't output binary log (short: -nobl)"
Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build"
Write-Host " -warnAsError <value> Sets warnaserror msbuild parameter ('true' or 'false')"
Write-Host " -warnNotAsError <value> Sets a semi-colon delimited list of warning codes that should not be treated as errors"
Write-Host " -msbuildEngine <value> Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)."
Write-Host " -excludePrereleaseVS Set to exclude build engines in prerelease versions of Visual Studio"
Write-Host " -nativeToolsOnMachine Sets the native tools on machine environment variable (indicating that the script should use native tools on machine)"
Write-Host " -nodeReuse <value> Sets nodereuse msbuild parameter ('true' or 'false')"
Write-Host " -buildCheck Sets /check msbuild parameter"
Write-Host " -fromVMR Set when building from within the VMR"
Write-Host ""
Write-Host "Command line arguments not listed above are passed thru to msbuild."
Write-Host "The above arguments can be shortened as much as to be unambiguous (e.g. -co for configuration, -t for test, etc.)."
}
. $PSScriptRoot\tools.ps1
function InitializeCustomToolset {
if (-not $restore) {
return
}
$script = Join-Path $EngRoot 'restore-toolset.ps1'
if (Test-Path $script) {
. $script
}
}
function Build {
$toolsetBuildProj = InitializeToolset
InitializeCustomToolset
$bl = if ($binaryLog) { '/bl:' + (Join-Path $LogDir 'Build.binlog') } else { '' }
$platformArg = if ($platform) { "/p:Platform=$platform" } else { '' }
$check = if ($buildCheck) { '/check' } else { '' }
if ($projects) {
# Re-assign properties to a new variable because PowerShell doesn't let us append properties directly for unclear reasons.
# Explicitly set the type as string[] because otherwise PowerShell would make this char[] if $properties is empty.
[string[]] $msbuildArgs = $properties
# Resolve relative project paths into full paths
$projects = ($projects.Split(';').ForEach({Resolve-Path $_}) -join ';')
$msbuildArgs += "/p:Projects=$projects"
$properties = $msbuildArgs
}
MSBuild $toolsetBuildProj `
$bl `
$platformArg `
$check `
/p:Configuration=$configuration `
/p:RepoRoot=$RepoRoot `
/p:Restore=$restore `
/p:DeployDeps=$deployDeps `
/p:Build=$build `
/p:Rebuild=$rebuild `
/p:Deploy=$deploy `
/p:Test=$test `
/p:Pack=$pack `
/p:DotNetBuild=$productBuild `
/p:DotNetBuildFromVMR=$fromVMR `
/p:IntegrationTest=$integrationTest `
/p:PerformanceTest=$performanceTest `
/p:Sign=$sign `
/p:Publish=$publish `
/p:RestoreStaticGraphEnableBinaryLogger=$binaryLog `
@properties
}
try {
if ($clean) {
if (Test-Path $ArtifactsDir) {
Remove-Item -Recurse -Force $ArtifactsDir
Write-Host 'Artifacts directory deleted.'
}
exit 0
}
if ($help -or (($null -ne $properties) -and ($properties.Contains('/help') -or $properties.Contains('/?')))) {
Print-Usage
exit 0
}
if ($ci) {
if (-not $excludeCIBinarylog) {
$binaryLog = $true
}
$nodeReuse = $false
}
if ($nativeToolsOnMachine) {
$env:NativeToolsOnMachine = $true
}
if ($restore) {
InitializeNativeTools
}
Build
}
catch {
Write-Host $_.ScriptStackTrace
Write-PipelineTelemetryError -Category 'InitializeToolset' -Message $_
ExitWithExitCode 1
}
ExitWithExitCode 0
================================================
FILE: eng/common/build.sh
================================================
#!/usr/bin/env bash
# Stop script if unbound variable found (use ${var:-} if intentional)
set -u
# Stop script if command returns non-zero exit code.
# Prevents hidden errors caused by missing error code propagation.
set -e
usage()
{
echo "Common settings:"
echo " --configuration <value> Build configuration: 'Debug' or 'Release' (short: -c)"
echo " --verbosity <value> Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] (short: -v)"
echo " --binaryLog Create MSBuild binary log (short: -bl)"
echo " --help Print help and exit (short: -h)"
echo ""
echo "Actions:"
echo " --restore Restore dependencies (short: -r)"
echo " --build Build solution (short: -b)"
echo " --sourceBuild Source-build the solution (short: -sb)"
echo " Will additionally trigger the following actions: --restore, --build, --pack"
echo " If --configuration is not set explicitly, will also set it to 'Release'"
echo " --productBuild Build the solution in the way it will be built in the full .NET product (VMR) build (short: -pb)"
echo " Will additionally trigger the following actions: --restore, --build, --pack"
echo " If --configuration is not set explicitly, will also set it to 'Release'"
echo " --rebuild Rebuild solution"
echo " --test Run all unit tests in the solution (short: -t)"
echo " --integrationTest Run all integration tests in the solution"
echo " --performanceTest Run all performance tests in the solution"
echo " --pack Package build outputs into NuGet packages and Willow components"
echo " --sign Sign build outputs"
echo " --publish Publish artifacts (e.g. symbols)"
echo " --clean Clean the solution"
echo ""
echo "Advanced settings:"
echo " --projects <value> Project or solution file(s) to build"
echo " --ci Set when running on CI server"
echo " --excludeCIBinarylog Don't output binary log (short: -nobl)"
echo " --prepareMachine Prepare machine for CI run, clean up processes after build"
echo " --nodeReuse <value> Sets nodereuse msbuild parameter ('true' or 'false')"
echo " --warnAsError <value> Sets warnaserror msbuild parameter ('true' or 'false')"
echo " --warnNotAsError <value> Sets a semi-colon delimited list of warning codes that should not be treated as errors"
echo " --buildCheck <value> Sets /check msbuild parameter"
echo " --fromVMR Set when building from within the VMR"
echo ""
echo "Command line arguments not listed above are passed thru to msbuild."
echo "Arguments can also be passed in with a single hyphen."
}
source="${BASH_SOURCE[0]}"
# resolve $source until the file is no longer a symlink
while [[ -h "$source" ]]; do
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
source="$(readlink "$source")"
# if $source was a relative symlink, we need to resolve it relative to the path where the
# symlink file was located
[[ $source != /* ]] && source="$scriptroot/$source"
done
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
restore=false
build=false
source_build=false
product_build=false
from_vmr=false
rebuild=false
test=false
integration_test=false
performance_test=false
pack=false
publish=false
sign=false
public=false
ci=false
clean=false
warn_as_error=true
warn_not_as_error=''
node_reuse=true
build_check=false
binary_log=false
exclude_ci_binary_log=false
pipelines_log=false
projects=''
configuration=''
prepare_machine=false
verbosity='minimal'
runtime_source_feed=''
runtime_source_feed_key=''
properties=()
while [[ $# -gt 0 ]]; do
opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")"
case "$opt" in
-help|-h)
usage
exit 0
;;
-clean)
clean=true
;;
-configuration|-c)
configuration=$2
shift
;;
-verbosity|-v)
verbosity=$2
shift
;;
-binarylog|-bl)
binary_log=true
;;
-excludecibinarylog|-nobl)
exclude_ci_binary_log=true
;;
-pipelineslog|-pl)
pipelines_log=true
;;
-restore|-r)
restore=true
;;
-build|-b)
build=true
;;
-rebuild)
rebuild=true
;;
-pack)
pack=true
;;
-sourcebuild|-source-build|-sb)
build=true
source_build=true
product_build=true
restore=true
pack=true
;;
-productbuild|-product-build|-pb)
build=true
product_build=true
restore=true
pack=true
;;
-fromvmr|-from-vmr)
from_vmr=true
;;
-test|-t)
test=true
;;
-integrationtest)
integration_test=true
;;
-performancetest)
performance_test=true
;;
-sign)
sign=true
;;
-publish)
publish=true
;;
-preparemachine)
prepare_machine=true
;;
-projects)
projects=$2
shift
;;
-ci)
ci=true
;;
-warnaserror)
warn_as_error=$2
shift
;;
-warnnotaserror)
warn_not_as_error=$2
shift
;;
-nodereuse)
node_reuse=$2
shift
;;
-buildcheck)
build_check=true
;;
-runtimesourcefeed)
runtime_source_feed=$2
shift
;;
-runtimesourcefeedkey)
runtime_source_feed_key=$2
shift
;;
*)
properties+=("$1")
;;
esac
shift
done
if [[ -z "$configuration" ]]; then
if [[ "$source_build" = true ]]; then configuration="Release"; else configuration="Debug"; fi
fi
if [[ "$ci" == true ]]; then
pipelines_log=true
node_reuse=false
if [[ "$exclude_ci_binary_log" == false ]]; then
binary_log=true
fi
fi
. "$scriptroot/tools.sh"
function InitializeCustomToolset {
local script="$eng_root/restore-toolset.sh"
if [[ -a "$script" ]]; then
. "$script"
fi
}
function Build {
InitializeToolset
InitializeCustomToolset
if [[ ! -z "$projects" ]]; then
properties+=("/p:Projects=$projects")
fi
local bl=""
if [[ "$binary_log" == true ]]; then
bl="/bl:\"$log_dir/Build.binlog\""
fi
local check=""
if [[ "$build_check" == true ]]; then
check="/check"
fi
MSBuild $_InitializeToolset \
$bl \
$check \
/p:Configuration=$configuration \
/p:RepoRoot="$repo_root" \
/p:Restore=$restore \
/p:Build=$build \
/p:DotNetBuild=$product_build \
/p:DotNetBuildSourceOnly=$source_build \
/p:DotNetBuildFromVMR=$from_vmr \
/p:Rebuild=$rebuild \
/p:Test=$test \
/p:Pack=$pack \
/p:IntegrationTest=$integration_test \
/p:PerformanceTest=$performance_test \
/p:Sign=$sign \
/p:Publish=$publish \
/p:RestoreStaticGraphEnableBinaryLogger=$binary_log \
${properties[@]+"${properties[@]}"}
ExitWithExitCode 0
}
if [[ "$clean" == true ]]; then
if [ -d "$artifacts_dir" ]; then
rm -rf $artifacts_dir
echo "Artifacts directory deleted."
fi
exit 0
fi
if [[ "$restore" == true ]]; then
InitializeNativeTools
fi
Build
================================================
FILE: eng/common/cibuild.sh
================================================
#!/usr/bin/env bash
source="${BASH_SOURCE[0]}"
# resolve $SOURCE until the file is no longer a symlink
while [[ -h $source ]]; do
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
source="$(readlink "$source")"
# if $source was a relative symlink, we need to resolve it relative to the path where
# the symlink file was located
[[ $source != /* ]] && source="$scriptroot/$source"
done
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
. "$scriptroot/build.sh" --restore --build --test --pack --publish --ci $@
================================================
FILE: eng/common/core-templates/job/job.yml
================================================
parameters:
# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
cancelTimeoutInMinutes: ''
condition: ''
container: ''
continueOnError: false
dependsOn: ''
displayName: ''
pool: ''
steps: []
strategy: ''
timeoutInMinutes: ''
variables: []
workspace: ''
templateContext: {}
# Job base template specific parameters
# See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md
# publishing defaults
artifacts: ''
enableMicrobuild: false
enablePreviewMicrobuild: false
microbuildPluginVersion: 'latest'
enableMicrobuildForMacAndLinux: false
microbuildUseESRP: true
enablePublishBuildArtifacts: false
enablePublishBuildAssets: false
enablePublishTestResults: false
enablePublishing: false
enableBuildRetry: false
mergeTestResults: false
testRunTitle: ''
testResultsFormat: ''
name: ''
preSteps: []
artifactPublishSteps: []
runAsPublic: false
# 1es specific parameters
is1ESPipeline: ''
jobs:
- job: ${{ parameters.name }}
${{ if ne(parameters.cancelTimeoutInMinutes, '') }}:
cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }}
${{ if ne(parameters.condition, '') }}:
condition: ${{ parameters.condition }}
${{ if ne(parameters.container, '') }}:
container: ${{ parameters.container }}
${{ if ne(parameters.continueOnError, '') }}:
continueOnError: ${{ parameters.continueOnError }}
${{ if ne(parameters.dependsOn, '') }}:
dependsOn: ${{ parameters.dependsOn }}
${{ if ne(parameters.displayName, '') }}:
displayName: ${{ parameters.displayName }}
${{ if ne(parameters.pool, '') }}:
pool: ${{ parameters.pool }}
${{ if ne(parameters.strategy, '') }}:
strategy: ${{ parameters.strategy }}
${{ if ne(parameters.timeoutInMinutes, '') }}:
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
${{ if ne(parameters.templateContext, '') }}:
templateContext: ${{ parameters.templateContext }}
variables:
- name: AllowPtrToDetectTestRunRetryFiles
value: true
- ${{ if ne(parameters.enableTelemetry, 'false') }}:
- name: DOTNET_CLI_TELEMETRY_PROFILE
value: '$(Build.Repository.Uri)'
# Retry signature validation up to three times, waiting 2 seconds between attempts.
# See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures
- name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY
value: 3,2000
- ${{ each variable in parameters.variables }}:
# handle name-value variable syntax
# example:
# - name: [key]
# value: [value]
- ${{ if ne(variable.name, '') }}:
- name: ${{ variable.name }}
value: ${{ variable.value }}
# handle variable groups
- ${{ if ne(variable.group, '') }}:
- group: ${{ variable.group }}
# handle template variable syntax
# example:
# - template: path/to/template.yml
# parameters:
# [key]: [value]
- ${{ if ne(variable.template, '') }}:
- template: ${{ variable.template }}
${{ if ne(variable.parameters, '') }}:
parameters: ${{ variable.parameters }}
# handle key-value variable syntax.
# example:
# - [key]: [value]
- ${{ if and(eq(variable.name, ''), eq(variable.group, ''), eq(variable.template, '')) }}:
- ${{ each pair in variable }}:
- name: ${{ pair.key }}
value: ${{ pair.value }}
# DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds
- ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- group: DotNet-HelixApi-Access
${{ if ne(parameters.workspace, '') }}:
workspace: ${{ parameters.workspace }}
steps:
- ${{ if eq(parameters.is1ESPipeline, '') }}:
- 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
- ${{ if ne(parameters.preSteps, '') }}:
- ${{ each preStep in parameters.preSteps }}:
- ${{ preStep }}
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- template: /eng/common/core-templates/steps/install-microbuild.yml
parameters:
enableMicrobuild: ${{ parameters.enableMicrobuild }}
enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
microbuildPluginVersion: ${{ parameters.microbuildPluginVersion }}
enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }}
microbuildUseESRP: ${{ parameters.microbuildUseESRP }}
continueOnError: ${{ parameters.continueOnError }}
- ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}:
- task: NuGetAuthenticate@1
- ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}:
- task: DownloadPipelineArtifact@2
inputs:
buildType: current
artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }}
targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }}
itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }}
- ${{ each step in parameters.steps }}:
- ${{ step }}
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- template: /eng/common/core-templates/steps/cleanup-microbuild.yml
parameters:
enableMicrobuild: ${{ parameters.enableMicrobuild }}
enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
microbuildPluginVersion: ${{ parameters.microbuildPluginVersion }}
enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }}
continueOnError: ${{ parameters.continueOnError }}
# Publish test results
- ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'xunit')) }}:
- task: PublishTestResults@2
displayName: Publish XUnit Test Results
inputs:
testResultsFormat: 'xUnit'
testResultsFiles: '*.xml'
searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)'
testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit
mergeTestResults: ${{ parameters.mergeTestResults }}
continueOnError: true
condition: always()
- ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'vstest')) }}:
- task: PublishTestResults@2
displayName: Publish TRX Test Results
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '*.trx'
searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)'
testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx
mergeTestResults: ${{ parameters.mergeTestResults }}
continueOnError: true
condition: always()
# gather artifacts
- ${{ if ne(parameters.artifacts.publish, '') }}:
- ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}:
- task: CopyFiles@2
displayName: Gather binaries for publish to artifacts
inputs:
SourceFolder: 'artifacts/bin'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin'
- task: CopyFiles@2
displayName: Gather packages for publish to artifacts
inputs:
SourceFolder: 'artifacts/packages'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
- ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}:
- task: CopyFiles@2
displayName: Gather logs for publish to artifacts
inputs:
SourceFolder: 'artifacts/log'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/log'
continueOnError: true
condition: always()
- ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
- task: CopyFiles@2
displayName: Gather logs for publish to artifacts
inputs:
SourceFolder: 'artifacts/log/$(_BuildConfig)'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)'
continueOnError: true
condition: always()
- ${{ if eq(parameters.enableBuildRetry, 'true') }}:
- task: CopyFiles@2
displayName: Gather buildconfiguration for build retry
inputs:
SourceFolder: '$(System.DefaultWorkingDirectory)/eng/common/BuildConfiguration'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/eng/common/BuildConfiguration'
continueOnError: true
condition: always()
- ${{ each step in parameters.artifactPublishSteps }}:
- ${{ step }}
================================================
FILE: eng/common/core-templates/job/onelocbuild.yml
================================================
parameters:
# Optional: dependencies of the job
dependsOn: ''
# Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
pool: ''
CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex
GithubPat: $(BotAccount-dotnet-bot-repo-PAT)
SourcesDirectory: $(System.DefaultWorkingDirectory)
CreatePr: true
AutoCompletePr: false
ReusePr: true
UseLfLineEndings: true
UseCheckedInLocProjectJson: false
SkipLocProjectJsonGeneration: false
LanguageSet: VS_Main_Languages
LclSource: lclFilesInRepo
LclPackageId: ''
RepoType: gitHub
GitHubOrg: dotnet
MirrorRepo: ''
MirrorBranch: main
xLocCustomPowerShellScript: ''
condition: ''
JobNameSuffix: ''
is1ESPipeline: ''
jobs:
- job: OneLocBuild${{ parameters.JobNameSuffix }}
dependsOn: ${{ parameters.dependsOn }}
displayName: OneLocBuild${{ parameters.JobNameSuffix }}
variables:
- group: OneLocBuildVariables # Contains the CeapexPat and GithubPat
- name: _GenerateLocProjectArguments
value: -SourcesDirectory ${{ parameters.SourcesDirectory }}
-LanguageSet "${{ parameters.LanguageSet }}"
-CreateNeutralXlfs
- ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}:
- name: _GenerateLocProjectArguments
value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson
- template: /eng/common/core-templates/variables/pool-providers.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
${{ if ne(parameters.pool, '') }}:
pool: ${{ parameters.pool }}
${{ if eq(parameters.pool, '') }}:
pool:
# We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
name: AzurePipelines-EO
image: 1ESPT-Windows2025
demands: Cmd
os: windows
# If it's not devdiv, it's dnceng
${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
name: $(DncEngInternalBuildPool)
image: windows.vs2026.amd64
os: windows
steps:
- ${{ if eq(parameters.is1ESPipeline, '') }}:
- 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
- ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}:
- task: Powershell@2
inputs:
filePath: $(System.DefaultWorkingDirectory)/eng/common/generate-locproject.ps1
arguments: $(_GenerateLocProjectArguments)
displayName: Generate LocProject.json
condition: ${{ parameters.condition }}
- task: OneLocBuild@2
displayName: OneLocBuild
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
inputs:
locProj: eng/Localize/LocProject.json
outDir: $(Build.ArtifactStagingDirectory)
lclSource: ${{ parameters.LclSource }}
lclPackageId: ${{ parameters.LclPackageId }}
isCreatePrSelected: ${{ parameters.CreatePr }}
isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }}
${{ if eq(parameters.CreatePr, true) }}:
isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }}
isShouldReusePrSelected: ${{ parameters.ReusePr }}
packageSourceAuth: patAuth
patVariable: ${{ parameters.CeapexPat }}
${{ if eq(parameters.RepoType, 'gitHub') }}:
repoType: ${{ parameters.RepoType }}
gitHubPatVariable: "${{ parameters.GithubPat }}"
${{ if ne(parameters.MirrorRepo, '') }}:
isMirrorRepoSelected: true
gitHubOrganization: ${{ parameters.GitHubOrg }}
mirrorRepo: ${{ parameters.MirrorRepo }}
mirrorBranch: ${{ parameters.MirrorBranch }}
${{ if ne(parameters.xLocCustomPowerShellScript, '') }}:
xLocCustomPowerShellScript: ${{ parameters.xLocCustomPowerShellScript }}
condition: ${{ parameters.condition }}
# Copy the locProject.json to the root of the Loc directory, then publish a pipeline artifact
- task: CopyFiles@2
displayName: Copy LocProject.json
inputs:
SourceFolder: '$(System.DefaultWorkingDirectory)/eng/Localize/'
Contents: 'LocProject.json'
TargetFolder: '$(Build.ArtifactStagingDirectory)/loc'
condition: ${{ parameters.condition }}
- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
args:
targetPath: '$(Build.ArtifactStagingDirectory)/loc'
artifactName: 'Loc'
displayName: 'Publish Localization Files'
condition: ${{ parameters.condition }}
================================================
FILE: eng/common/core-templates/job/publish-build-assets.yml
================================================
parameters:
configuration: 'Debug'
# Optional: condition for the job to run
condition: ''
# Optional: 'true' if future jobs should run even if this job fails
continueOnError: false
# Optional: dependencies of the job
dependsOn: ''
# Optional: Include PublishBuildArtifacts task
enablePublishBuildArtifacts: false
# Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
pool: {}
# Optional: should run as a public build even in the internal project
# if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
runAsPublic: false
# Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing
publishAssetsImmediately: false
artifactsPublishingAdditionalParameters: ''
signingValidationAdditionalParameters: ''
is1ESPipeline: ''
# Optional: 🌤️ or not the build has assets it wants to publish to BAR
isAssetlessBuild: false
# Optional, publishing version
publishingVersion: 3
# Optional: A minimatch pattern for the asset manifests to publish to BAR
assetManifestsPattern: '*/manifests/**/*.xml'
repositoryAlias: self
officialBuildId: ''
jobs:
- job: Asset_Registry_Publish
dependsOn: ${{ parameters.dependsOn }}
timeoutInMinutes: 150
${{ if eq(parameters.publishAssetsImmediately, 'true') }}:
displayName: Publish Assets
${{ else }}:
displayName: Publish to Build Asset Registry
variables:
- template: /eng/common/core-templates/variables/pool-providers.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- group: Publish-Build-Assets
- group: AzureDevOps-Artifact-Feeds-Pats
- name: runCodesignValidationInjection
value: false
# unconditional - needed for logs publishing (redactor tool version)
- template: /eng/common/core-templates/post-build/common-variables.yml
- name: OfficialBuildId
${{ if ne(parameters.officialBuildId, '') }}:
value: ${{ parameters.officialBuildId }}
${{ else }}:
value: $(Build.BuildNumber)
pool:
# We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
name: AzurePipelines-EO
image: 1ESPT-Windows2025
demands: Cmd
os: windows
# If it's not devdiv, it's dnceng
${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
name: NetCore1ESPool-Publishing-Internal
image: windows.vs2026.amd64
os: windows
steps:
- ${{ if eq(parameters.is1ESPipeline, '') }}:
- 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- checkout: ${{ parameters.repositoryAlias }}
fetchDepth: 3
clean: true
- ${{ if eq(parameters.isAssetlessBuild, 'false') }}:
- ${{ if eq(parameters.publishingVersion, 3) }}:
- task: DownloadPipelineArtifact@2
displayName: Download Asset Manifests
inputs:
artifactName: AssetManifests
targetPath: '$(Build.StagingDirectory)/AssetManifests'
condition: ${{ parameters.condition }}
continueOnError: ${{ parameters.continueOnError }}
- ${{ if eq(parameters.publishingVersion, 4) }}:
- task: DownloadPipelineArtifact@2
displayName: Download V4 asset manifests
inputs:
itemPattern: '*/manifests/**/*.xml'
targetPath: '$(Build.StagingDirectory)/AllAssetManifests'
condition: ${{ parameters.condition }}
continueOnError: ${{ parameters.continueOnError }}
- task: CopyFiles@2
displayName: Copy V4 asset manifests to AssetManifests
inputs:
SourceFolder: '$(Build.StagingDirectory)/AllAssetManifests'
Contents: ${{ parameters.assetManifestsPattern }}
TargetFolder: '$(Build.StagingDirectory)/AssetManifests'
flattenFolders: true
condition: ${{ parameters.condition }}
continueOnError: ${{ parameters.continueOnError }}
- task: NuGetAuthenticate@1
# Populate internal runtime variables.
- template: /eng/common/templates/steps/enable-internal-sources.yml
${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
parameters:
legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw)
- template: /eng/common/templates/steps/enable-internal-runtimes.yml
- task: AzureCLI@2
displayName: Publish Build Assets
inputs:
azureSubscription: "Darc: Maestro Production"
scriptType: ps
scriptLocation: scriptPath
scriptPath: $(System.DefaultWorkingDirectory)/eng/common/sdk-task.ps1
arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet
/p:ManifestsPath='$(Build.StagingDirectory)/AssetManifests'
/p:IsAssetlessBuild=${{ parameters.isAssetlessBuild }}
/p:MaestroApiEndpoint=https://maestro.dot.net
/p:OfficialBuildId=$(OfficialBuildId)
-runtimeSourceFeed https://ci.dot.net/internal
-runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'
condition: ${{ parameters.condition }}
continueOnError: ${{ parameters.continueOnError }}
- task: powershell@2
displayName: Create ReleaseConfigs Artifact
inputs:
targetType: inline
script: |
New-Item -Path "$(Build.StagingDirectory)/ReleaseConfigs" -ItemType Directory -Force
$filePath = "$(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt"
Add-Content -Path $filePath -Value $(BARBuildId)
Add-Content -Path $filePath -Value "$(DefaultChannels)"
Add-Content -Path $filePath -Value $(IsStableBuild)
$symbolExclusionfile = "$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt"
if (Test-Path -Path $symbolExclusionfile)
{
Write-Host "SymbolExclusionFile exists"
Copy-Item -Path $symbolExclusionfile -Destination "$(Build.StagingDirectory)/ReleaseConfigs"
}
- ${{ if eq(parameters.publishingVersion, 4) }}:
- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
args:
targetPath: '$(Build.ArtifactStagingDirectory)/MergedManifest.xml'
artifactName: AssetManifests
displayName: 'Publish Merged Manifest'
retryCountOnTaskFailure: 10 # for any files being locked
isProduction: false # just metadata for publishing
- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
args:
displayName: Publish ReleaseConfigs Artifact
targetPath: '$(Build.StagingDirectory)/ReleaseConfigs'
artifactName: ReleaseConfigs
retryCountOnTaskFailure: 10 # for any files being locked
isProduction: false # just metadata for publishing
- ${{ if or(eq(parameters.publishAssetsImmediately, 'true'), eq(parameters.isAssetlessBuild, 'true')) }}:
- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
parameters:
BARBuildId: ${{ parameters.BARBuildId }}
PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
is1ESPipeline: ${{ parameters.is1ESPipeline }}
# Darc is targeting 8.0, so make sure it's installed
- task: UseDotNet@2
inputs:
version: 8.0.x
- task: AzureCLI@2
displayName: Publish Using Darc
inputs:
azureSubscription: "Darc: Maestro Production"
scriptType: ps
scriptLocation: scriptPath
scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1
arguments: >
-BuildId $(BARBuildId)
-PublishingInfraVersion 3
-AzdoToken '$(System.AccessToken)'
-WaitPublishingFinish true
-ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
-SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
-SkipAssetsPublishing '${{ parameters.isAssetlessBuild }}'
-runtimeSourceFeed https://ci.dot.net/internal
-runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'
- ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
- template: /eng/common/core-templates/steps/publish-logs.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
StageLabel: 'BuildAssetRegistry'
JobLabel: 'Publish_Artifacts_Logs'
================================================
FILE: eng/common/core-templates/job/renovate.yml
================================================
# --------------------------------------------------------------------------------------
# Renovate Bot Job Template
# --------------------------------------------------------------------------------------
# This Azure DevOps pipeline job template runs Renovate (https://docs.renovatebot.com/)
# to automatically update dependencies in a GitHub repository.
#
# Renovate scans the repository for dependency files and creates pull requests to update
# outdated dependencies based on the configuration specified in the renovateConfigPath
# parameter.
#
# Usage:
# For each product repo wanting to make use of Renovate, this template is called from
# an internal Azure DevOps pipeline, typically with a schedule trigger, to check for
# and propose dependency updates.
#
# For more info, see https://github.com/dotnet/arcade/blob/main/Documentation/Renovate.md
# --------------------------------------------------------------------------------------
parameters:
# Path to the Renovate configuration file within the repository.
- name: renovateConfigPath
type: string
default: 'eng/renovate.json'
# GitHub repository to run Renovate against, in the format 'owner/repo'.
# This could technically be any repo but convention is to target the same
# repo that contains the calling pipeline. The Renovate config file would
# be co-located with the pipeline's repo and, in most cases, the config
# file is specific to the repo being targeted.
- name: gitHubRepo
type: string
# List of base branches to target for Renovate PRs.
# NOTE: The Renovate configuration file is always read from the branch where the
# pipeline is run, NOT from the target branches specified here. If you need different
# configurations for different branches, run the pipeline from each branch separately.
- name: baseBranches
type: object
default:
- main
# When true, Renovate will run in dry run mode, which previews changes without creating PRs.
# See the 'Run Renovate' step log output for details of what would have been changed.
- name: dryRun
type: boolean
default: false
# By default, Renovate will not recreate a PR for a given dependency/version pair that was
# previously closed. This allows opting in to always recreating PRs even if they were
# previously closed.
- name: forceRecreatePR
type: boolean
default: false
# Name of the arcade repository resource in the pipeline.
# This allows repos which haven't been onboarded to Arcade to still use this
# template by checking out the repo as a resource with a custom name and pointing
# this parameter to it.
- name: arcadeRepoResource
type: string
default: self
# Directory name for the self repo under $(Build.SourcesDirectory) in multi-checkout.
# In multi-checkout (when arcadeRepoResource != 'self'), Azure DevOps checks out the
# self repo to $(Build.SourcesDirectory)/<repoName>. Set this to match the auto-generated
# directory name. Using the auto-generated name is necessary rather than explicitly
# defining a checkout path because container jobs expect repos to live under the agent's
# workspace ($(Pipeline.Workspace)). On some self-hosted setups the host path
# (e.g., /mnt/vss/_work) differs from the container path (e.g., /__w), and a custom checkout
# path can fail validation. Using the default checkout location keeps the paths consistent
# and avoids this issue.
- name: selfRepoName
type: string
default: ''
- name: arcadeRepoName
type: string
default: ''
# Pool configuration for the job.
- name: pool
type: object
default:
name: NetCore1ESPool-Internal
image: build.azurelinux.3.amd64
os: linux
jobs:
- job: Renovate
displayName: Run Renovate
container: RenovateContainer
variables:
- group: dotnet-renovate-bot
# The Renovate version is automatically updated by https://github.com/dotnet/arcade/blob/main/azure-pipelines-renovate.yml.
# Changing the variable name here would require updating the name in https://github.com/dotnet/arcade/blob/main/eng/renovate.json as well.
- name: renovateVersion
value: '42'
readonly: true
- name: renovateLogFilePath
value: '$(Build.ArtifactStagingDirectory)/renovate.json'
readonly: true
- name: dryRunArg
readonly: true
${{ if eq(parameters.dryRun, true) }}:
value: 'full'
${{ else }}:
value: ''
- name: recreateWhenArg
readonly: true
${{ if eq(parameters.forceRecreatePR, true) }}:
value: 'always'
${{ else }}:
value: ''
# In multi-checkout (without custom paths), Azure DevOps places each repo under
# $(Build.SourcesDirectory)/<repoName>. selfRepoName must be provided in that case.
- name: selfRepoPath
readonly: true
${{ if eq(parameters.arcadeRepoResource, 'self') }}:
value: '$(Build.SourcesDirectory)'
${{ else }}:
value: '$(Build.SourcesDirectory)/${{ parameters.selfRepoName }}'
- name: arcadeRepoPath
readonly: true
${{ if eq(parameters.arcadeRepoResource, 'self') }}:
value: '$(Build.SourcesDirectory)'
${{ else }}:
value: '$(Build.SourcesDirectory)/${{ parameters.arcadeRepoName }}'
pool: ${{ parameters.pool }}
templateContext:
outputParentDirectory: $(Build.ArtifactStagingDirectory)
outputs:
- output: pipelineArtifact
displayName: Publish Renovate Log
condition: succeededOrFailed()
targetPath: $(Build.ArtifactStagingDirectory)
artifactName: $(Agent.JobName)_Logs_Attempt$(System.JobAttempt)
isProduction: false # logs are non-production artifacts
steps:
- checkout: self
fetchDepth: 1
- ${{ if ne(parameters.arcadeRepoResource, 'self') }}:
- checkout: ${{ parameters.arcadeRepoResource }}
fetchDepth: 1
- script: |
renovate-config-validator $(selfRepoPath)/${{parameters.renovateConfigPath}} 2>&1 | tee /tmp/renovate-config-validator.out
validatorExit=${PIPESTATUS[0]}
if grep -q '^ WARN:' /tmp/renovate-config-validator.out; then
echo "##vso[task.logissue type=warning]Renovate config validator produced warnings."
echo "##vso[task.complete result=SucceededWithIssues]"
fi
exit $validatorExit
displayName: Validate Renovate config
env:
LOG_LEVEL: info
LOG_FILE_LEVEL: debug
LOG_FILE: $(Build.ArtifactStagingDirectory)/renovate-config-validator.json
- script: |
. $(arcadeRepoPath)/eng/common/renovate.env
renovate 2>&1 | tee /tmp/renovate.out
renovateExit=${PIPESTATUS[0]}
if grep -q '^ WARN:' /tmp/renovate.out; then
echo "##vso[task.logissue type=warning]Renovate produced warnings."
echo "##vso[task.complete result=SucceededWithIssues]"
fi
exit $renovateExit
displayName: Run Renovate
env:
RENOVATE_FORK_TOKEN: $(BotAccount-dotnet-renovate-bot-PAT)
RENOVATE_TOKEN: $(BotAccount-dotnet-renovate-bot-PAT)
RENOVATE_REPOSITORIES: ${{parameters.gitHubRepo}}
RENOVATE_BASE_BRANCHES: ${{ convertToJson(parameters.baseBranches) }}
RENOVATE_DRY_RUN: $(dryRunArg)
RENOVATE_RECREATE_WHEN: $(recreateWhenArg)
LOG_LEVEL: info
LOG_FILE_LEVEL: debug
LOG_FILE: $(renovateLogFilePath)
RENOVATE_CONFIG_FILE: $(selfRepoPath)/${{parameters.renovateConfigPath}}
- script: |
echo "PRs created by Renovate:"
if [ -s "$(renovateLogFilePath)" ]; then
if ! jq -r 'select(.msg == "PR created" and .pr != null) | "https://github.com/\(.repository)/pull/\(.pr)"' "$(renovateLogFilePath)" | sort -u; then
echo "##vso[task.logissue type=warning]Failed to parse Renovate log file with jq."
echo "##vso[task.complete result=SucceededWithIssues]"
fi
else
echo "##vso[task.logissue type=warning]No Renovate log file found or file is empty."
echo "##vso[task.complete result=SucceededWithIssues]"
fi
displayName: List created PRs
condition: and(succeededOrFailed(), eq('${{ parameters.dryRun }}', false))
================================================
FILE: eng/common/core-templates/job/source-build.yml
================================================
parameters:
# This template adds arcade-powered source-build to CI. The template produces a server job with a
# default ID 'Source_Build_Complete' to put in a dependency list if necessary.
# Specifies the prefix for source-build jobs added to pipeline. Use this if disambiguation needed.
jobNamePrefix: 'Source_Build'
# Defines the platform on which to run the job. By default, a linux-x64 machine, suitable for
# managed-only repositories. This is an object with these properties:
#
# name: ''
# The name of the job. This is included in the job ID.
# targetRID: ''
# The name of the target RID to use, instead of the one auto-detected by Arcade.
# portableBuild: false
# Enables non-portable mode. This means a more specific RID (e.g. fedora.32-x64 rather than
# linux-x64), and compiling against distro-provided packages rather than portable ones. The
# default is portable mode.
# skipPublishValidation: false
# Disables publishing validation. By default, a check is performed to ensure no packages are
# published by source-build.
# container: ''
# A container to use. Runs in docker.
# pool: {}
# A pool to use. Runs directly on an agent.
# buildScript: ''
# Specifies the build script to invoke to perform the build in the repo. The default
# './build.sh' should work for typical Arcade repositories, but this is customizable for
# difficult situations.
# buildArguments: ''
# Specifies additional build arguments to pass to the build script.
# jobProperties: {}
# A list of job properties to inject at the top level, for potential extensibility beyond
# container and pool.
platform: {}
is1ESPipeline: ''
# If set to true and running on a non-public project,
# Internal nuget and blob storage locations will be enabled.
# This is not enabled by default because many repositories do not need internal sources
# and do not need to have the required service connections approved in the pipeline.
enableInternalSources: false
jobs:
- job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }}
displayName: Source-Build (${{ parameters.platform.name }})
${{ each property in parameters.platform.jobProperties }}:
${{ property.key }}: ${{ property.value }}
${{ if ne(parameters.platform.container, '') }}:
container: ${{ parameters.platform.container }}
${{ if eq(parameters.platform.pool, '') }}:
# The default VM host AzDO pool. This should be capable of running Docker containers: almost all
# source-build builds run in Docker, including the default managed platform.
# /eng/common/core-templates/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic
${{ if eq(parameters.is1ESPipeline, 'true') }}:
pool:
${{ if eq(variables['System.TeamProject'], 'public') }}:
name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
demands: ImageOverride -equals build.azurelinux.3.amd64.open
${{ if eq(variables['System.TeamProject'], 'internal') }}:
name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
image: build.azurelinux.3.amd64
os: linux
${{ else }}:
pool:
${{ if eq(variables['System.TeamProject'], 'public') }}:
name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
demands: ImageOverride -equals build.azurelinux.3.amd64.open
${{ if eq(variables['System.TeamProject'], 'internal') }}:
name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
demands: ImageOverride -equals build.azurelinux.3.amd64
${{ if ne(parameters.platform.pool, '') }}:
pool: ${{ parameters.platform.pool }}
workspace:
clean: all
steps:
- ${{ if eq(parameters.is1ESPipeline, '') }}:
- 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
- ${{ if eq(parameters.enableInternalSources, true) }}:
- template: /eng/common/core-templates/steps/enable-internal-sources.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
- template: /eng/common/core-templates/steps/enable-internal-runtimes.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
- template: /eng/common/core-templates/steps/source-build.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
platform: ${{ parameters.platform }}
================================================
FILE: eng/common/core-templates/job/source-index-stage1.yml
================================================
parameters:
runAsPublic: false
sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci"
preSteps: []
binlogPath: artifacts/log/Debug/Build.binlog
condition: eq(variables['Build.SourceBranch'], 'refs/heads/main')
dependsOn: ''
pool: ''
is1ESPipeline: ''
jobs:
- job: SourceIndexStage1
dependsOn: ${{ parameters.dependsOn }}
condition: ${{ parameters.condition }}
variables:
- name: BinlogPath
value: ${{ parameters.binlogPath }}
- name: skipComponentGovernanceDetection
value: true
- template: /eng/common/core-templates/variables/pool-providers.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
${{ if ne(parameters.pool, '') }}:
pool: ${{ parameters.pool }}
${{ if eq(parameters.pool, '') }}:
pool:
${{ if eq(variables['System.TeamProject'], 'public') }}:
name: $(DncEngPublicBuildPool)
image: windows.vs2026.amd64.open
${{ if eq(variables['System.TeamProject'], 'internal') }}:
name: $(DncEngInternalBuildPool)
image: windows.vs2026.amd64
steps:
- ${{ if eq(parameters.is1ESPipeline, '') }}:
- 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
- ${{ each preStep in parameters.preSteps }}:
- ${{ preStep }}
- script: ${{ parameters.sourceIndexBuildCommand }}
displayName: Build Repository
- template: /eng/common/core-templates/steps/source-index-stage1-publish.yml
parameters:
binLogPath: ${{ parameters.binLogPath }}
================================================
FILE: eng/common/core-templates/jobs/jobs.yml
================================================
parameters:
# See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md
continueOnError: false
# Optional: Include PublishBuildArtifacts task
enablePublishBuildArtifacts: false
# Optional: Enable running the source-build jobs to build repo from source
enableSourceBuild: false
# Optional: Parameters for source-build template.
# See /eng/common/core-templates/jobs/source-build.yml for options
sourceBuildParameters: []
graphFileGeneration:
# Optional: Enable generating the graph files at the end of the build
enabled: false
# Optional: Include toolset dependencies in the generated graph files
includeToolset: false
# Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
jobs: []
# Optional: Override automatically derived dependsOn value for "publish build assets" job
publishBuildAssetsDependsOn: ''
# Optional: Publish the assets as soon as the publish to BAR stage is complete, rather doing so in a separate stage.
publishAssetsImmediately: false
# Optional: 🌤️ or not the build has assets it wants to publish to BAR
isAssetlessBuild: false
# Optional: If using publishAssetsImmediately and additional parameters are needed, can be used to send along additional parameters (normally sent to post-build.yml)
artifactsPublishingAdditionalParameters: ''
signingValidationAdditionalParameters: ''
# Optional: should run as a public build even in the internal project
# if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
runAsPublic: false
enableSourceIndex: false
sourceIndexParams: {}
artifacts: {}
is1ESPipeline: ''
# Publishing version w/default.
publishingVersion: 3
repositoryAlias: self
officialBuildId: ''
# Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
# and some (Microbuild) should only be applied to non-PR cases for internal builds.
jobs:
- ${{ each job in parameters.jobs }}:
- ${{ if eq(parameters.is1ESPipeline, 'true') }}:
- template: /eng/common/templates-official/job/job.yml
parameters:
# pass along parameters
${{ each parameter in parameters }}:
${{ if ne(parameter.key, 'jobs') }}:
${{ parameter.key }}: ${{ parameter.value }}
# pass along job properties
${{ each property in job }}:
${{ if ne(property.key, 'job') }}:
${{ property.key }}: ${{ property.value }}
name: ${{ job.job }}
- ${{ else }}:
- template: /eng/common/templates/job/job.yml
parameters:
# pass along parameters
${{ each parameter in parameters }}:
${{ if ne(parameter.key, 'jobs') }}:
${{ parameter.key }}: ${{ parameter.value }}
# pass along job properties
${{ each property in job }}:
${{ if ne(property.key, 'job') }}:
${{ property.key }}: ${{ property.value }}
name: ${{ job.job }}
- ${{ if eq(parameters.enableSourceBuild, true) }}:
- template: /eng/common/core-templates/jobs/source-build.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
${{ each parameter in parameters.sourceBuildParameters }}:
${{ parameter.key }}: ${{ parameter.value }}
- ${{ if eq(parameters.enableSourceIndex, 'true') }}:
- template: ../job/source-index-stage1.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
runAsPublic: ${{ parameters.runAsPublic }}
${{ each parameter in parameters.sourceIndexParams }}:
${{ parameter.key }}: ${{ parameter.value }}
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, ''), eq(parameters.isAssetlessBuild, true)) }}:
- template: ../job/publish-build-assets.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
continueOnError: ${{ parameters.continueOnError }}
publishingVersion: ${{ parameters.publishingVersion }}
dependsOn:
- ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}:
- ${{ each job in parameters.publishBuildAssetsDependsOn }}:
- ${{ job.job }}
- ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}:
- ${{ each job in parameters.jobs }}:
- ${{ job.job }}
runAsPublic: ${{ parameters.runAsPublic }}
publishAssetsImmediately: ${{ or(parameters.publishAssetsImmediately, parameters.isAssetlessBuild) }}
isAssetlessBuild: ${{ parameters.isAssetlessBuild }}
enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }}
artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }}
repositoryAlias: ${{ parameters.repositoryAlias }}
officialBuildId: ${{ parameters.officialBuildId }}
================================================
FILE: eng/common/core-templates/jobs/source-build.yml
================================================
parameters:
# This template adds arcade-powered source-build to CI. A job is created for each platform, as
# well as an optional server job that completes when all platform jobs complete.
# See /eng/common/core-templates/job/source-build.yml
jobNamePrefix: 'Source_Build'
# This is the default platform provided by Arcade, intended for use by a managed-only repo.
defaultManagedPlatform:
name: 'Managed'
container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-10-amd64'
# Defines the platforms on which to run build jobs. One job is created for each platform, and the
# object in this array is sent to the job template as 'platform'. If no platforms are specified,
# one job runs on 'defaultManagedPlatform'.
platforms: []
is1ESPipeline: ''
# If set to true and running on a non-public project,
# Internal nuget and blob storage locations will be enabled.
# This is not enabled by default because many repositories do not need internal sources
# and do not need to have the required service connections approved in the pipeline.
enableInternalSources: false
jobs:
- ${{ each platform in parameters.platforms }}:
- template: /eng/common/core-templates/job/source-build.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
jobNamePrefix: ${{ parameters.jobNamePrefix }}
platform: ${{ platform }}
enableInternalSources: ${{ parameters.enableInternalSources }}
- ${{ if eq(length(parameters.platforms), 0) }}:
- template: /eng/common/core-templates/job/source-build.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
jobNamePrefix: ${{ parameters.jobNamePrefix }}
platform: ${{ parameters.defaultManagedPlatform }}
enableInternalSources: ${{ parameters.enableInternalSources }}
================================================
FILE: eng/common/core-templates/post-build/common-variables.yml
================================================
variables:
- group: Publish-Build-Assets
# Whether the build is internal or not
- name: IsInternalBuild
value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }}
# Default Maestro++ API Endpoint and API Version
- name: MaestroApiEndPoint
value: "https://maestro.dot.net"
- name: MaestroApiVersion
value: "2020-02-20"
- name: SymbolToolVersion
value: 1.0.1
- name: BinlogToolVersion
value: 1.0.11
- name: runCodesignValidationInjection
value: false
================================================
FILE: eng/common/core-templates/post-build/post-build.yml
================================================
parameters:
# Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST.
# Publishing V1 is no longer supported
# Publishing V2 is no longer supported
# Publishing V3 is the default
- name: publishingInfraVersion
displayName: Which version of publishing should be used to promote the build definition?
type: number
default: 3
values:
- 3
- 4
- name: BARBuildId
displayName: BAR Build Id
type: number
default: 0
- name: PromoteToChannelIds
displayName: Channel to promote BARBuildId to
type: string
default: ''
- name: enableSourceLinkValidation
displayName: Enable SourceLink validation
type: boolean
default: false
- name: enableSigningValidation
displayName: Enable signing validation
type: boolean
default: true
- name: enableSymbolValidation
displayName: Enable symbol validation
type: boolean
default: false
- name: enableNugetValidation
displayName: Enable NuGet validation
type: boolean
default: true
- name: publishInstallersAndChecksums
displayName: Publish installers and checksums
type: boolean
default: true
- name: requireDefaultChannels
displayName: Fail the build if there are no default channel(s) registrations for the current build
type: boolean
default: false
- name: isAssetlessBuild
type: boolean
displayName: Is Assetless Build
default: false
# These parameters let the user customize the call to sdk-task.ps1 for publishing
# symbols & general artifacts as well as for signing validation
- name: symbolPublishingAdditionalParameters
displayName: Symbol publishing additional parameters
type: string
default: ''
- name: artifactsPublishingAdditionalParameters
displayName: Artifact publishing additional parameters
type: string
default: ''
- name: signingValidationAdditionalParameters
displayName: Signing validation additional parameters
type: string
default: ''
# Which stages should finish execution before post-build stages start
- name: validateDependsOn
type: object
default:
- build
- name: publishDependsOn
type: object
default:
- Validate
# Optional: Call asset publishing rather than running in a separate stage
- name: publishAssetsImmediately
type: boolean
default: false
- name: is1ESPipeline
type: boolean
default: false
stages:
- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true')) }}:
- stage: Validate
dependsOn: ${{ parameters.validateDependsOn }}
displayName: Validate Build Assets
variables:
- template: /eng/common/core-templates/post-build/common-variables.yml
- template: /eng/common/core-templates/variables/pool-providers.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
jobs:
- job:
displayName: NuGet Validation
condition: and(succeededOrFailed(), eq( ${{ parameters.enableNugetValidation }}, 'true'))
pool:
# We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
name: AzurePipelines-EO
image: 1ESPT-Windows2025
demands: Cmd
os: windows
# If it's not devdiv, it's dnceng
${{ else }}:
${{ if eq(parameters.is1ESPipeline, true) }}:
name: $(DncEngInternalBuildPool)
image: windows.vs2026.amd64
os: windows
${{ else }}:
name: $(DncEngInternalBuildPool)
demands: ImageOverride -equals windows.vs2026.amd64
steps:
- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
parameters:
BARBuildId: ${{ parameters.BARBuildId }}
PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
is1ESPipeline: ${{ parameters.is1ESPipeline }}
- ${{ if ne(parameters.publishingInfraVersion, 4) }}:
- task: DownloadBuildArtifacts@0
displayName: Download Package Artifacts
inputs:
buildType: specific
buildVersionToDownload: specific
project: $(AzDOProjectName)
pipeline: $(AzDOPipelineId)
buildId: $(AzDOBuildId)
artifactName: PackageArtifacts
checkDownloadedFiles: true
- ${{ if eq(parameters.publishingInfraVersion, 4) }}:
- task: DownloadPipelineArtifact@2
displayName: Download Pipeline Artifacts (V4)
inputs:
itemPattern: '*/packages/**/*.nupkg'
targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
- task: CopyFiles@2
displayName: Flatten packages to PackageArtifacts
inputs:
SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
Contents: '**/*.nupkg'
TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts'
flattenFolders: true
- task: PowerShell@2
displayName: Validate
inputs:
filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1
arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/
- job:
displayName: Signing Validation
condition: and( eq( ${{ parameters.enableSigningValidation }}, 'true'), ne( variables['PostBuildSign'], 'true'))
pool:
# We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
name: AzurePipelines-EO
image: 1ESPT-Windows2025
demands: Cmd
os: windows
# If it's not devdiv, it's dnceng
${{ else }}:
${{ if eq(parameters.is1ESPipeline, true) }}:
name: $(DncEngInternalBuildPool)
image: windows.vs2026.amd64
os: windows
${{ else }}:
name: $(DncEngInternalBuildPool)
demands: ImageOverride -equals windows.vs2026.amd64
steps:
- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
parameters:
BARBuildId: ${{ parameters.BARBuildId }}
PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
is1ESPipeline: ${{ parameters.is1ESPipeline }}
- ${{ if ne(parameters.publishingInfraVersion, 4) }}:
- task: DownloadBuildArtifacts@0
displayName: Download Package Artifacts
inputs:
buildType: specific
buildVersionToDownload: specific
project: $(AzDOProjectName)
pipeline: $(AzDOPipelineId)
buildId: $(AzDOBuildId)
artifactName: PackageArtifacts
checkDownloadedFiles: true
- ${{ if eq(parameters.publishingInfraVersion, 4) }}:
- task: DownloadPipelineArtifact@2
displayName: Download Pipeline Artifacts (V4)
inputs:
itemPattern: '*/packages/**/*.nupkg'
targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
- task: CopyFiles@2
displayName: Flatten packages to PackageArtifacts
inputs:
SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
Contents: '**/*.nupkg'
TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts'
flattenFolders: true
# This is necessary whenever we want to publish/restore to an AzDO private feed
# Since sdk-task.ps1 tries to restore packages we need to do this authentication here
# otherwise it'll complain about accessing a private feed.
- task: NuGetAuthenticate@1
displayName: 'Authenticate to AzDO Feeds'
# Signing validation will optionally work with the buildmanifest file which is downloaded from
# Azure DevOps above.
- task: PowerShell@2
displayName: Validate
inputs:
filePath: eng\common\sdk-task.ps1
arguments: -task SigningValidation -restore -msbuildEngine dotnet
/p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts'
/p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt'
${{ parameters.signingValidationAdditionalParameters }}
- template: /eng/common/core-templates/steps/publish-logs.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
StageLabel: 'Validation'
JobLabel: 'Signing'
BinlogToolVersion: $(BinlogToolVersion)
# SourceLink validation has been removed — the underlying CLI tool
# (targeting netcoreapp2.1) has not functioned for years.
# The enableSourceLinkValidation parameter is kept but ignored so
# existing pipelines that pass it are not broken.
# See https://github.com/dotnet/arcade/issues/16647
- ${{ if eq(parameters.enableSourceLinkValidation, 'true') }}:
- job:
displayName: 'SourceLink Validation Removed - please remove enableSourceLinkValidation from your pipeline'
pool: server
steps:
- task: Delay@1
displayName: 'Warning: SourceLink validation removed (see https://github.com/dotnet/arcade/issues/16647)'
inputs:
delayForMinutes: '0'
- ${{ if ne(parameters.publishAssetsImmediately, 'true') }}:
- stage: publish_using_darc
${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true')) }}:
dependsOn: ${{ parameters.publishDependsOn }}
${{ else }}:
dependsOn: ${{ parameters.validateDependsOn }}
displayName: Publish using Darc
variables:
- template: /eng/common/core-templates/post-build/common-variables.yml
- template: /eng/common/core-templates/variables/pool-providers.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
jobs:
- job:
displayName: Publish Using Darc
timeoutInMinutes: 120
pool:
# We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
name: AzurePipelines-EO
image: 1ESPT-Windows2025
demands: Cmd
os: windows
# If it's not devdiv, it's dnceng
${{ else }}:
${{ if eq(parameters.is1ESPipeline, true) }}:
name: NetCore1ESPool-Publishing-Internal
image: windows.vs2026.amd64
os: windows
${{ else }}:
name: NetCore1ESPool-Publishing-Internal
demands: ImageOverride -equals windows.vs2026.amd64
steps:
- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
parameters:
BARBuildId: ${{ parameters.BARBuildId }}
PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
is1ESPipeline: ${{ parameters.is1ESPipeline }}
- task: NuGetAuthenticate@1
# Populate internal runtime variables.
- template: /eng/common/templates/steps/enable-internal-sources.yml
parameters:
legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw)
- template: /eng/common/templates/steps/enable-internal-runtimes.yml
- task: UseDotNet@2
inputs:
version: 8.0.x
- task: AzureCLI@2
displayName: Publish Using Darc
inputs:
azureSubscription: "Darc: Maestro Production"
scriptType: ps
scriptLocation: scriptPath
scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1
arguments: >
-BuildId $(BARBuildId)
-PublishingInfraVersion 3
-AzdoToken '$(System.AccessToken)'
-WaitPublishingFinish true
-RequireDefaultChannels ${{ parameters.requireDefaultChannels }}
-ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
-SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
-SkipAssetsPublishing '${{ parameters.isAssetlessBuild }}'
-runtimeSourceFeed https://ci.dot.net/internal
-runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'
================================================
FILE: eng/common/core-templates/post-build/setup-maestro-vars.yml
================================================
parameters:
BARBuildId: ''
PromoteToChannelIds: ''
is1ESPipeline: ''
steps:
- ${{ if eq(parameters.is1ESPipeline, '') }}:
- 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
- ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}:
- task: DownloadPipelineArtifact@2
displayName: Download Release Configs
inputs:
artifactName: ReleaseConfigs
targetPath: '$(Build.StagingDirectory)/ReleaseConfigs'
- task: AzureCLI@2
name: setReleaseVars
displayName: Set Release Configs Vars
inputs:
azureSubscription: "Darc: Maestro Production"
scriptType: pscore
scriptLocation: inlineScript
inlineScript: |
try {
if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') {
$Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt
$BarId = $Content | Select -Index 0
$Channels = $Content | Select -Index 1
$IsStableBuild = $Content | Select -Index 2
$AzureDevOpsProject = $Env:System_TeamProject
$AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId
$AzureDevOpsBuildId = $Env:Build_BuildId
}
else {
. $(System.DefaultWorkingDirectory)\eng\common\tools.ps1
$darc = Get-Darc
$buildInfo = & $darc get-build `
--id ${{ parameters.BARBuildId }} `
--extended `
--output-format json `
--ci `
| convertFrom-Json
$BarId = ${{ parameters.BARBuildId }}
$Channels = $Env:PromoteToMaestroChannels -split ","
$Channels = $Channels -join "]["
$Channels = "[$Channels]"
$IsStableBuild = $buildInfo.stable
$AzureDevOpsProject = $buildInfo.azureDevOpsProject
$AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId
$AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId
}
Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId"
Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels"
Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild"
Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject"
Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId"
Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId"
}
catch {
Write-Host $_
Write-Host $_.Exception
Write-Host $_.ScriptStackTrace
exit 1
}
env:
PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }}
================================================
FILE: eng/common/core-templates/stages/renovate.yml
================================================
# --------------------------------------------------------------------------------------
# Renovate Pipeline Template
# --------------------------------------------------------------------------------------
# This template provides a complete reusable pipeline definition for running Renovate
# in a 1ES Official pipeline. Pipelines can extend from this template and only need
# to pass the Renovate job parameters.
#
# For more info, see https://github.com/dotnet/arcade/blob/main/Documentation/Renovate.md
# --------------------------------------------------------------------------------------
parameters:
# Path to the Renovate configuration file within the repository.
- name: renovateConfigPath
type: string
default: 'eng/renovate.json'
# GitHub repository to run Renovate against, in the format 'owner/repo'.
- name: gitHubRepo
type: string
# List of base branches to target for Renovate PRs.
- name: baseBranches
type: object
default:
- main
# When true, Renovate will run in dry run mode.
- name: dryRun
type: boolean
default: false
# When true, Renovate will recreate PRs even if they were previously closed.
- name: forceRecreatePR
type: boolean
default: false
# Name of the arcade repository resource in the pipeline.
# This allows repos which haven't been onboarded to Arcade to still use this
# template by checking out the repo as a resource with a custom name and pointing
# this parameter to it.
- name: arcadeRepoResource
type: string
default: 'self'
- name: selfRepoName
type: string
default: ''
- name: arcadeRepoName
type: string
default: ''
# Pool configuration for the pipeline.
- name: pool
type: object
default:
name: NetCore1ESPool-Internal
image: build.azurelinux.3.amd64
os: linux
# Renovate version used in the container image tag.
- name: renovateVersion
default: 43
type: number
# Pool configuration for SDL analysis.
- name: sdlPool
type: object
default:
name: NetCore1ESPool-Internal
image: windows.vs2026.amd64
os: windows
resources:
repositories:
- repository: 1ESPipelineTemplates
type: git
name: 1ESPipelineTemplates/1ESPipelineTemplates
ref: refs/tags/release
extends:
template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
parameters:
pool: ${{ parameters.pool }}
sdl:
sourceAnalysisPool: ${{ parameters.sdlPool }}
# When repos that aren't onboarded to Arcade use this template, they set the
# arcadeRepoResource parameter to point to their Arcade repo resource. In that case,
# Aracde will be excluded from SDL analysis.
${{ if ne(parameters.arcadeRepoResource, 'self') }}:
sourceRepositoriesToScan:
exclude:
- repository: ${{ parameters.arcadeRepoResource }}
containers:
RenovateContainer:
image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-renovate-${{ parameters.renovateVersion }}-amd64
stages:
- stage: Renovate
displayName: Run Renovate
jobs:
- template: /eng/common/core-templates/job/renovate.yml@${{ parameters.arcadeRepoResource }}
parameters:
renovateConfigPath: ${{ parameters.renovateConfigPath }}
gitHubRepo: ${{ parameters.gitHubRepo }}
baseBranches: ${{ parameters.baseBranches }}
dryRun: ${{ parameters.dryRun }}
forceRecreatePR: ${{ parameters.forceRecreatePR }}
pool: ${{ parameters.pool }}
arcadeRepoResource: ${{ parameters.arcadeRepoResource }}
selfRepoName: ${{ parameters.selfRepoName }}
arcadeRepoName: ${{ parameters.arcadeRepoName }}
================================================
FILE: eng/common/core-templates/steps/cleanup-microbuild.yml
================================================
parameters:
# Enable cleanup tasks for MicroBuild
enableMicrobuild: false
# Enable cleanup tasks for MicroBuild on Mac and Linux
# Will be ignored if 'enableMicrobuild' is false or 'Agent.Os' is 'Windows_NT'
enableMicrobuildForMacAndLinux: false
continueOnError: false
steps:
- ${{ if eq(parameters.enableMicrobuild, 'true') }}:
- task: MicroBuildCleanup@1
displayName: Execute Microbuild cleanup tasks
condition: and(
always(),
or(
and(
eq(variables['Agent.Os'], 'Windows_NT'),
in(variables['_SignType'], 'real', 'test')
),
and(
${{ eq(parameters.enableMicrobuildForMacAndLinux, true) }},
ne(variables['Agent.Os'], 'Windows_NT'),
eq(variables['_SignType'], 'real')
)
))
continueOnError: ${{ parameters.continueOnError }}
env:
TeamName: $(_TeamName)
================================================
FILE: eng/common/core-templates/steps/enable-internal-runtimes.yml
================================================
# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64'
# variable with the base64-encoded SAS token, by default
parameters:
- name: federatedServiceConnection
type: string
default: 'dotnetbuilds-internal-read'
- name: outputVariableName
type: string
default: 'dotnetbuilds-internal-container-read-token-base64'
- name: expiryInHours
type: number
default: 1
- name: base64Encode
type: boolean
default: true
- name: is1ESPipeline
type: boolean
default: false
steps:
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
- template: /eng/common/core-templates/steps/get-delegation-sas.yml
parameters:
federatedServiceConnection: ${{ parameters.federatedServiceConnection }}
outputVariableName: ${{ parameters.outputVariableName }}
expiryInHours: ${{ parameters.expiryInHours }}
base64Encode: ${{ parameters.base64Encode }}
storageAccount: dotnetbuilds
container: internal
permissions: rl
is1ESPipeline: ${{ parameters.is1ESPipeline }}
================================================
FILE: eng/common/core-templates/steps/enable-internal-sources.yml
================================================
parameters:
# This is the Azure federated service connection that we log into to get an access token.
- name: nugetFederatedServiceConnection
type: string
default: 'dnceng-artifacts-feeds-read'
- name: is1ESPipeline
type: boolean
default: false
# Legacy parameters to allow for PAT usage
- name: legacyCredential
type: string
default: ''
steps:
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
- ${{ if ne(parameters.legacyCredential, '') }}:
- task: PowerShell@2
displayName: Setup Internal Feeds
inputs:
filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token
env:
Token: ${{ parameters.legacyCredential }}
# If running on dnceng (internal project), just use the default behavior for NuGetAuthenticate.
# If running on DevDiv, NuGetAuthenticate is not really an option. It's scoped to a single feed, and we have many feeds that
# may be added. Instead, we'll use the traditional approach (add cred to nuget.config), but use an account token.
- ${{ else }}:
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- task: PowerShell@2
displayName: Setup Internal Feeds
inputs:
filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config
- ${{ else }}:
- template: /eng/common/templates/steps/get-federated-access-token.yml
parameters:
federatedServiceConnection: ${{ parameters.nugetFederatedServiceConnection }}
outputVariableName: 'dnceng-artifacts-feeds-read-access-token'
- task: PowerShell@2
displayName: Setup Internal Feeds
inputs:
filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $(dnceng-artifacts-feeds-read-access-token)
# This is required in certain scenarios to install the ADO credential provider.
# It installed by default in some msbuild invocations (e.g. VS msbuild), but needs to be installed for others
# (e.g. dotnet msbuild).
- task: NuGetAuthenticate@1
================================================
FILE: eng/common/core-templates/steps/generate-sbom.yml
================================================
parameters:
PackageVersion: unused
BuildDropPath: unused
PackageName: unused
ManifestDirPath: unused
IgnoreDirectories: unused
sbomContinueOnError: unused
is1ESPipeline: unused
publishArtifacts: unused
steps:
- script: |
echo "##vso[task.logissue type=warning]Including generate-sbom.yml is deprecated, SBOM generation is handled 1ES PT now. Remove this include."
displayName: Issue generate-sbom.yml deprecation warning
================================================
FILE: eng/common/core-templates/steps/get-delegation-sas.yml
================================================
parameters:
- name: federatedServiceConnection
type: string
- name: outputVariableName
type: string
- name: expiryInHours
type: number
default: 1
- name: base64Encode
type: boolean
default: false
- name: storageAccount
type: string
- name: container
type: string
- name: permissions
type: string
default: 'rl'
- name: is1ESPipeline
type: boolean
default: false
steps:
- task: AzureCLI@2
displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}'
inputs:
azureSubscription: ${{ parameters.federatedServiceConnection }}
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
# Calculate the expiration of the SAS token and convert to UTC
$expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
$sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv
if ($LASTEXITCODE -ne 0) {
Write-Error "Failed to generate SAS token."
exit 1
}
if ('${{ parameters.base64Encode }}' -eq 'true') {
$sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas))
}
Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value"
Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas"
================================================
FILE: eng/common/core-templates/steps/get-federated-access-token.yml
================================================
parameters:
- name: federatedServiceConnection
type: string
- name: outputVariableName
type: string
- name: is1ESPipeline
type: boolean
- name: stepName
type: string
default: 'getFederatedAccessToken'
- name: condition
type: string
default: ''
# Resource to get a token for. Common values include:
# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps
# - 'https://storage.azure.com/' for storage
# Defaults to Azure DevOps
- name: resource
type: string
default: '499b84ac-1321-427f-aa17-267ca6975798'
- name: isStepOutputVariable
type: boolean
default: false
steps:
- task: AzureCLI@2
displayName: 'Getting federated access token for feeds'
name: ${{ parameters.stepName }}
${{ if ne(parameters.condition, '') }}:
condition: ${{ parameters.condition }}
inputs:
azureSubscription: ${{ parameters.federatedServiceConnection }}
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
$accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv
if ($LASTEXITCODE -ne 0) {
Write-Error "Failed to get access token for resource '${{ parameters.resource }}'"
exit 1
}
Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value"
Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken"
================================================
FILE: eng/common/core-templates/steps/install-microbuild-impl.yml
================================================
parameters:
- name: microbuildTaskInputs
type: object
default: {}
- name: microbuildEnv
type: object
default: {}
- name: enablePreviewMicrobuild
type: boolean
default: false
- name: condition
type: string
- name: continueOnError
type: boolean
steps:
- ${{ if eq(parameters.enablePreviewMicrobuild, true) }}:
- task: MicroBuildSigningPluginPreview@4
displayName: Install Preview MicroBuild plugin
inputs: ${{ parameters.microbuildTaskInputs }}
env: ${{ parameters.microbuildEnv }}
continueOnError: ${{ parameters.continueOnError }}
condition: ${{ parameters.condition }}
- ${{ else }}:
- task: MicroBuildSigningPlugin@4
displayName: Install MicroBuild plugin
inputs: ${{ parameters.microbuildTaskInputs }}
env: ${{ parameters.microbuildEnv }}
continueOnError: ${{ parameters.continueOnError }}
condition: ${{ parameters.condition }}
================================================
FILE: eng/common/core-templates/steps/install-microbuild.yml
================================================
parameters:
# Enable install tasks for MicroBuild
enableMicrobuild: false
# Enable install tasks for MicroBuild on Mac and Linux
# Will be ignored if 'enableMicrobuild' is false or 'Agent.Os' is 'Windows_NT'
enableMicrobuildForMacAndLinux: false
# Enable preview version of MB signing plugin
enablePreviewMicrobuild: false
# Determines whether the ESRP service connection information should be passed to the signing plugin.
# This overlaps with _SignType to some degree. We only need the service connection for real signing.
# It's important that the service connection not be passed to the MicroBuildSigningPlugin task in this place.
# Doing so will cause the service connection to be authorized for the pipeline, which isn't allowed and won't work for non-prod.
# Unfortunately, _SignType can't be used to exclude the use of the service connection in non-real sign scenarios. The
# variable is not available in template expression. _SignType has a very large proliferation across .NET, so replacing it is tough.
microbuildUseESRP: true
# Microbuild installation directory
microBuildOutputFolder: $(Agent.TempDirectory)/MicroBuild
# Microbuild version
microbuildPluginVersion: 'latest'
continueOnError: false
steps:
- ${{ if eq(parameters.enableMicrobuild, 'true') }}:
- ${{ if eq(parameters.enableMicrobuildForMacAndLinux, 'true') }}:
# Needed to download the MicroBuild plugin nupkgs on Mac and Linux when nuget.exe is unavailable
- task: UseDotNet@2
displayName: Install .NET 8.0 SDK for MicroBuild Plugin
inputs:
packageType: sdk
version: 8.0.x
installationPath: ${{ parameters.microBuildOutputFolder }}/.dotnet-microbuild
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
- script: |
set -euo pipefail
# UseDotNet@2 prepends the dotnet executable path to the PATH variable, so we can call dotnet directly
version=$(dotnet --version)
cat << 'EOF' > ${{ parameters.microBuildOutputFolder }}/global.json
{
"sdk": {
"version": "$version",
"paths": [
"${{ parameters.microBuildOutputFolder }}/.dotnet-microbuild"
],
"errorMessage": "The .NET SDK version $version is required to install the MicroBuild signing plugin."
}
}
EOF
displayName: 'Add global.json to MicroBuild Installation path'
workingDirectory: ${{ parameters.microBuildOutputFolder }}
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
- script: |
REM Check if ESRP is disabled while SignType is real
if /I "${{ parameters.microbuildUseESRP }}"=="false" if /I "$(_SignType)"=="real" (
echo Error: ESRP must be enabled when SignType is real.
exit /b 1
)
displayName: 'Validate ESRP usage (Windows)'
condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'))
- script: |
# Check if ESRP is disabled while SignType is real
if [ "${{ parameters.microbuildUseESRP }}" = "false" ] && [ "$(_SignType)" = "real" ]; then
echo "Error: ESRP must be enabled when SignType is real."
exit 1
fi
displayName: 'Validate ESRP usage (Non-Windows)'
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
# Two different MB install steps. This is due to not being able to use the agent OS during
# YAML expansion, and Windows vs. Linux/Mac uses different service connections. However,
# we can avoid including the MB install step if not enabled at all. This avoids a bunch of
# extra pipeline authorizations, since most pipelines do not sign on non-Windows.
- template: /eng/common/core-templates/steps/install-microbuild-impl.yml
parameters:
enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
microbuildTaskInputs:
signType: $(_SignType)
zipSources: false
feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
version: ${{ parameters.microbuildPluginVersion }}
${{ if eq(parameters.microbuildUseESRP, true) }}:
ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea
${{ else }}:
ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca
microbuildEnv:
TeamName: $(_TeamName)
MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
continueOnError: ${{ parameters.continueOnError }}
condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'), in(variables['_SignType'], 'real', 'test'))
- ${{ if eq(parameters.enableMicrobuildForMacAndLinux, true) }}:
- template: /eng/common/core-templates/steps/install-microbuild-impl.yml
parameters:
enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
microbuildTaskInputs:
signType: $(_SignType)
zipSources: false
feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
version: ${{ parameters.microbuildPluginVersion }}
workingDirectory: ${{ parameters.microBuildOutputFolder }}
${{ if eq(parameters.microbuildUseESRP, true) }}:
ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
ConnectedPMEServiceName: beb8cb23-b303-4c95-ab26-9e44bc958d39
${{ else }}:
ConnectedPMEServiceName: c24de2a5-cc7a-493d-95e4-8e5ff5cad2bc
microbuildEnv:
TeamName: $(_TeamName)
MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
continueOnError: ${{ parameters.continueOnError }}
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'), eq(variables['_SignType'], 'real'))
================================================
FILE: eng/common/core-templates/steps/publish-build-artifacts.yml
================================================
parameters:
- name: is1ESPipeline
type: boolean
default: false
- name: args
type: object
default: {}
steps:
- ${{ if ne(parameters.is1ESPipeline, true) }}:
- template: /eng/common/templates/steps/publish-build-artifacts.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
${{ each parameter in parameters.args }}:
${{ parameter.key }}: ${{ parameter.value }}
- ${{ else }}:
- template: /eng/common/templates-official/steps/publish-build-artifacts.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
${{ each parameter in parameters.args }}:
${{ parameter.key }}: ${{ parameter.value }}
================================================
FILE: eng/common/core-templates/steps/publish-logs.yml
================================================
parameters:
StageLabel: ''
JobLabel: ''
CustomSensitiveDataList: ''
# A default - in case value from eng/common/core-templates/post-build/common-variables.yml is not passed
BinlogToolVersion: '1.0.11'
is1ESPipeline: false
steps:
- task: Powershell@2
displayName: Prepare Binlogs to Upload
inputs:
targetType: inline
script: |
New-Item -ItemType Directory $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
Move-Item -Path $(System.DefaultWorkingDirectory)/artifacts/log/Debug/* $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
continueOnError: true
condition: always()
- task: PowerShell@2
displayName: Redact Logs
inputs:
filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/redact-logs.ps1
# For now this needs to have explicit list of all sensitive data. Taken from eng/publishing/v3/publish.yml
# Sensitive data can as well be added to $(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt'
# If the file exists - sensitive data for redaction will be sourced from it
# (single entry per line, lines starting with '# ' are considered comments and skipped)
arguments: -InputPath '$(System.DefaultWorkingDirectory)/PostBuildLogs'
-BinlogToolVersion '${{parameters.BinlogToolVersion}}'
-TokensFilePath '$(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt'
-runtimeSourceFeed https://ci.dot.net/internal
-runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'
'$(publishing-dnceng-devdiv-code-r-build-re)'
'$(dn-bot-all-orgs-artifact-feeds-rw)'
'$(akams-client-id)'
'$(microsoft-symbol-server-pat)'
'$(symweb-symbol-server-pat)'
'$(dnceng-symbol-server-pat)'
'$(dn-bot-all-orgs-build-rw-code-rw)'
'$(System.AccessToken)'
${{parameters.CustomSensitiveDataList}}
continueOnError: true
condition: always()
- task: CopyFiles@2
displayName: Gather post build logs
inputs:
SourceFolder: '$(System.DefaultWorkingDirectory)/PostBuildLogs'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
condition: always()
- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
args:
displayName: Publish Logs
targetPath: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
artifactName: PostBuildLogs_${{ parameters.StageLabel }}_${{ parameters.JobLabel }}_Attempt$(System.JobAttempt)
continueOnError: true
condition: always()
retryCountOnTaskFailure: 10 # for any files being locked
isProduction: false # logs are non-production artifacts
================================================
FILE: eng/common/core-templates/steps/publish-pipeline-artifacts.yml
================================================
parameters:
- name: is1ESPipeline
type: boolean
default: false
- name: args
type: object
default: {}
steps:
- ${{ if ne(parameters.is1ESPipeline, true) }}:
- template: /eng/common/templates/steps/publish-pipeline-artifacts.yml
parameters:
${{ each parameter in parameters }}:
${{ parameter.key }}: ${{ parameter.value }}
- ${{ else }}:
- template: /eng/common/templates-official/steps/publish-pipeline-artifacts.yml
parameters:
${{ each parameter in parameters }}:
${{ parameter.key }}: ${{ parameter.value }}
================================================
FILE: eng/common/core-templates/steps/retain-build.yml
================================================
parameters:
# Optional azure devops PAT with build execute permissions for the build's organization,
# only needed if the build that should be retained ran on a different organization than
# the pipeline where this template is executing from
Token: ''
# Optional BuildId to retain, defaults to the current running build
BuildId: ''
# Azure devops Organization URI for the build in the https://dev.azure.com/<organization> format.
# Defaults to the organization the current pipeline is running on
AzdoOrgUri: '$(System.CollectionUri)'
# Azure devops project for the build. Defaults to the project the current pipeline is running on
AzdoProject: '$(System.TeamProject)'
steps:
- task: powershell@2
inputs:
targetType: 'filePath'
filePath: eng/common/retain-build.ps1
pwsh: true
arguments: >
-AzdoOrgUri: ${{parameters.AzdoOrgUri}}
-AzdoProject ${{parameters.AzdoProject}}
-Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }}
-BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}}
displayName: Enable permanent build retention
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
BUILD_ID: $(Build.BuildId)
================================================
FILE: eng/common/core-templates/steps/send-to-helix.yml
================================================
# Please remember to update the documentation if you make changes to these parameters!
parameters:
HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/
HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/'
HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number
HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues
HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group
HelixProjectPath: 'eng/common/helixpublish.proj' # optional -- path to the project file to build relative to BUILD_SOURCESDIRECTORY
HelixProjectArguments: '' # optional -- arguments passed to the build command
HelixConfiguration: '' # optional -- additional property attached to a job
HelixPreCommands: '' # optional -- commands to run before Helix work item execution
HelixPostCommands: '' # optional -- commands to run after Helix work item execution
WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects
WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects
WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects
CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload
XUnitProjects: '' # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true
XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects
XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects
XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner
XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects
IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion
DotNetCliPackageType: '' # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json
DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json
WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget."
IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set
HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net )
Creator: '' # optional -- if the build is external, use this to specify who is sending the job
DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO
condition: succeeded() # optional -- condition for step to execute; defaults to succeeded()
continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false
steps:
- powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"'
displayName: ${{ parameters.DisplayNamePrefix }} (Windows)
env:
BuildConfig: $(_BuildConfig)
HelixSource: ${{ parameters.HelixSource }}
HelixType: ${{ parameters.HelixType }}
HelixBuild: ${{ parameters.HelixBuild }}
HelixConfiguration: ${{ parameters.HelixConfiguration }}
HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
HelixAccessToken: ${{ parameters.HelixAccessToken }}
HelixPreCommands: ${{ parameters.HelixPreCommands }}
HelixPostCommands: ${{ parameters.HelixPostCommands }}
WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
WorkItemCommand: ${{ parameters.WorkItemCommand }}
WorkItemTimeout: ${{ parameters.WorkItemTimeout }}
CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
XUnitProjects: ${{ parameters.XUnitProjects }}
XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }}
XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }}
XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }}
XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
HelixBaseUri: ${{ parameters.HelixBaseUri }}
Creator: ${{ parameters.Creator }}
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT'))
continueOnError: ${{ parameters.continueOnError }}
- script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog
displayName: ${{ parameters.DisplayNamePrefix }} (Unix)
env:
BuildConfig: $(_BuildConfig)
HelixSource: ${{ parameters.HelixSource }}
HelixType: ${{ parameters.HelixType }}
HelixBuild: ${{ parameters.HelixBuild }}
HelixConfiguration: ${{ parameters.HelixConfiguration }}
HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
HelixAccessToken: ${{ parameters.HelixAccessToken }}
HelixPreCommands: ${{ parameters.HelixPreCommands }}
HelixPostCommands: ${{ parameters.HelixPostCommands }}
WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
WorkItemCommand: ${{ parameters.WorkItemCommand }}
WorkItemTimeout: ${{ parameters.WorkItemTimeout }}
CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
XUnitProjects: ${{ parameters.XUnitProjects }}
XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }}
XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }}
XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }}
XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
HelixBaseUri: ${{ parameters.HelixBaseUri }}
Creator: ${{ parameters.Creator }}
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT'))
continueOnError: ${{ parameters.continueOnError }}
================================================
FILE: eng/common/core-templates/steps/source-build.yml
================================================
parameters:
# This template adds arcade-powered source-build to CI.
# This is a 'steps' template, and is intended for advanced scenarios where the existing build
# infra has a careful build methodology that must be followed. For example, a repo
# (dotnet/runtime) might choose to clone the GitHub repo only once and store it as a pipeline
# artifact for all subsequent jobs to use, to reduce dependence on a strong network connection to
# GitHub. Using this steps template leaves room for that infra to be included.
# Defines the platform on which to run the steps. See 'eng/common/core-templates/job/source-build.yml'
# for details. The entire object is described in the 'job' template for simplicity, even though
# the usage of the properties on this object is split between the 'job' and 'steps' templates.
platform: {}
is1ESPipeline: false
steps:
# Build. Keep it self-contained for simple reusability. (No source-build-specific job variables.)
- script: |
set -x
df -h
# If building on the internal project, the internal storage variable may be available (usually only if needed)
# In that case, add variables to allow the download of internal runtimes if the specified versions are not found
# in the default public locations.
internalRuntimeDownloadArgs=
if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then
internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)'
fi
buildConfig=Release
# Check if AzDO substitutes in a build config from a variable, and use it if so.
if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then
buildConfig='$(_BuildConfig)'
fi
targetRidArgs=
if [ '${{ parameters.platform.targetRID }}' != '' ]; then
targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}'
fi
portableBuildArgs=
if [ '${{ parameters.platform.portableBuild }}' != '' ]; then
portableBuildArgs='/p:PortableBuild=${{ parameters.platform.portableBuild }}'
fi
${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \
--configuration $buildConfig \
--restore --build --pack -bl \
--source-build \
${{ parameters.platform.buildArguments }} \
$internalRuntimeDownloadArgs \
$targetRidArgs \
$portableBuildArgs \
displayName: Build
- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
args:
displayName: Publish BuildLogs
targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }}
artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt)
continueOnError: true
condition: succeededOrFailed()
isProduction: false # logs are non-production artifacts
================================================
FILE: eng/common/core-templates/steps/source-index-stage1-publish.yml
================================================
parameters:
sourceIndexUploadPackageVersion: 2.0.0-20250906.1
sourceIndexProcessBinlogPackageVersion: 1.0.1-20250906.1
sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json
bi
gitextract_fjkujnb6/
├── .azuredevops/
│ └── dependabot.yml
├── .config/
│ └── tsaoptions.json
├── .editorconfig
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│ ├── copilot-instructions.md
│ └── workflows/
│ ├── backport.yml
│ └── copilot-setup-steps.yml
├── .gitignore
├── Build.cmd
├── CODE_OF_CONDUCT.md
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── LICENSE.TXT
├── NuGet.config
├── README.md
├── SECURITY.md
├── THIRD-PARTY-NOTICES.TXT
├── XHarness.slnx
├── azure-pipelines-public.yml
├── azure-pipelines.yml
├── build.sh
├── decoded_output.xml
├── docs/
│ ├── high-level-architecture.md
│ └── integrity-check.md
├── eng/
│ ├── Publishing.props
│ ├── Signing.props
│ ├── Version.Details.xml
│ ├── Versions.props
│ ├── common/
│ │ ├── AGENTS.md
│ │ ├── BuildConfiguration/
│ │ │ └── build-configuration.json
│ │ ├── CIBuild.cmd
│ │ ├── PSScriptAnalyzerSettings.psd1
│ │ ├── README.md
│ │ ├── SetupNugetSources.ps1
│ │ ├── SetupNugetSources.sh
│ │ ├── build.cmd
│ │ ├── build.ps1
│ │ ├── build.sh
│ │ ├── cibuild.sh
│ │ ├── core-templates/
│ │ │ ├── job/
│ │ │ │ ├── job.yml
│ │ │ │ ├── onelocbuild.yml
│ │ │ │ ├── publish-build-assets.yml
│ │ │ │ ├── renovate.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ └── source-index-stage1.yml
│ │ │ ├── jobs/
│ │ │ │ ├── jobs.yml
│ │ │ │ └── source-build.yml
│ │ │ ├── post-build/
│ │ │ │ ├── common-variables.yml
│ │ │ │ ├── post-build.yml
│ │ │ │ └── setup-maestro-vars.yml
│ │ │ ├── stages/
│ │ │ │ └── renovate.yml
│ │ │ ├── steps/
│ │ │ │ ├── cleanup-microbuild.yml
│ │ │ │ ├── enable-internal-runtimes.yml
│ │ │ │ ├── enable-internal-sources.yml
│ │ │ │ ├── generate-sbom.yml
│ │ │ │ ├── get-delegation-sas.yml
│ │ │ │ ├── get-federated-access-token.yml
│ │ │ │ ├── install-microbuild-impl.yml
│ │ │ │ ├── install-microbuild.yml
│ │ │ │ ├── publish-build-artifacts.yml
│ │ │ │ ├── publish-logs.yml
│ │ │ │ ├── publish-pipeline-artifacts.yml
│ │ │ │ ├── retain-build.yml
│ │ │ │ ├── send-to-helix.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ └── source-index-stage1-publish.yml
│ │ │ └── variables/
│ │ │ └── pool-providers.yml
│ │ ├── cross/
│ │ │ ├── armel/
│ │ │ │ └── tizen/
│ │ │ │ └── tizen.patch
│ │ │ ├── build-android-rootfs.sh
│ │ │ ├── build-rootfs.sh
│ │ │ ├── install-debs.py
│ │ │ ├── riscv64/
│ │ │ │ └── tizen/
│ │ │ │ └── tizen.patch
│ │ │ ├── tizen-build-rootfs.sh
│ │ │ ├── tizen-fetch.sh
│ │ │ └── toolchain.cmake
│ │ ├── darc-init.ps1
│ │ ├── darc-init.sh
│ │ ├── dotnet-install.cmd
│ │ ├── dotnet-install.ps1
│ │ ├── dotnet-install.sh
│ │ ├── dotnet.cmd
│ │ ├── dotnet.ps1
│ │ ├── dotnet.sh
│ │ ├── enable-cross-org-publishing.ps1
│ │ ├── generate-locproject.ps1
│ │ ├── helixpublish.proj
│ │ ├── init-tools-native.cmd
│ │ ├── init-tools-native.ps1
│ │ ├── init-tools-native.sh
│ │ ├── internal/
│ │ │ ├── Directory.Build.props
│ │ │ ├── NuGet.config
│ │ │ └── Tools.csproj
│ │ ├── internal-feed-operations.ps1
│ │ ├── internal-feed-operations.sh
│ │ ├── loc/
│ │ │ └── P22DotNetHtmlLocalization.lss
│ │ ├── msbuild.ps1
│ │ ├── msbuild.sh
│ │ ├── native/
│ │ │ ├── CommonLibrary.psm1
│ │ │ ├── common-library.sh
│ │ │ ├── init-compiler.sh
│ │ │ ├── init-distro-rid.sh
│ │ │ ├── init-os-and-arch.sh
│ │ │ ├── install-cmake-test.sh
│ │ │ ├── install-cmake.sh
│ │ │ ├── install-dependencies.sh
│ │ │ └── install-tool.ps1
│ │ ├── pipeline-logging-functions.ps1
│ │ ├── pipeline-logging-functions.sh
│ │ ├── post-build/
│ │ │ ├── check-channel-consistency.ps1
│ │ │ ├── nuget-validation.ps1
│ │ │ ├── nuget-verification.ps1
│ │ │ ├── publish-using-darc.ps1
│ │ │ ├── redact-logs.ps1
│ │ │ └── symbols-validation.ps1
│ │ ├── renovate.env
│ │ ├── retain-build.ps1
│ │ ├── sdk-task.ps1
│ │ ├── sdk-task.sh
│ │ ├── template-guidance.md
│ │ ├── templates/
│ │ │ ├── job/
│ │ │ │ ├── job.yml
│ │ │ │ ├── onelocbuild.yml
│ │ │ │ ├── publish-build-assets.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ └── source-index-stage1.yml
│ │ │ ├── jobs/
│ │ │ │ ├── jobs.yml
│ │ │ │ └── source-build.yml
│ │ │ ├── post-build/
│ │ │ │ ├── common-variables.yml
│ │ │ │ ├── post-build.yml
│ │ │ │ └── setup-maestro-vars.yml
│ │ │ ├── steps/
│ │ │ │ ├── enable-internal-runtimes.yml
│ │ │ │ ├── enable-internal-sources.yml
│ │ │ │ ├── generate-sbom.yml
│ │ │ │ ├── get-delegation-sas.yml
│ │ │ │ ├── get-federated-access-token.yml
│ │ │ │ ├── publish-build-artifacts.yml
│ │ │ │ ├── publish-logs.yml
│ │ │ │ ├── publish-pipeline-artifacts.yml
│ │ │ │ ├── retain-build.yml
│ │ │ │ ├── send-to-helix.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ ├── source-index-stage1-publish.yml
│ │ │ │ └── vmr-sync.yml
│ │ │ ├── variables/
│ │ │ │ └── pool-providers.yml
│ │ │ └── vmr-build-pr.yml
│ │ ├── templates-official/
│ │ │ ├── job/
│ │ │ │ ├── job.yml
│ │ │ │ ├── onelocbuild.yml
│ │ │ │ ├── publish-build-assets.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ └── source-index-stage1.yml
│ │ │ ├── jobs/
│ │ │ │ ├── jobs.yml
│ │ │ │ └── source-build.yml
│ │ │ ├── post-build/
│ │ │ │ ├── common-variables.yml
│ │ │ │ ├── post-build.yml
│ │ │ │ └── setup-maestro-vars.yml
│ │ │ ├── steps/
│ │ │ │ ├── enable-internal-runtimes.yml
│ │ │ │ ├── enable-internal-sources.yml
│ │ │ │ ├── generate-sbom.yml
│ │ │ │ ├── get-delegation-sas.yml
│ │ │ │ ├── get-federated-access-token.yml
│ │ │ │ ├── publish-build-artifacts.yml
│ │ │ │ ├── publish-logs.yml
│ │ │ │ ├── publish-pipeline-artifacts.yml
│ │ │ │ ├── retain-build.yml
│ │ │ │ ├── send-to-helix.yml
│ │ │ │ ├── source-build.yml
│ │ │ │ └── source-index-stage1-publish.yml
│ │ │ └── variables/
│ │ │ └── pool-providers.yml
│ │ ├── tools.ps1
│ │ ├── tools.sh
│ │ ├── vmr-sync.ps1
│ │ └── vmr-sync.sh
│ ├── common-variables.yml
│ ├── e2e-test.yml
│ └── pipelines/
│ └── apiscan-steps.yml
├── es-metadata.yml
├── global.json
├── src/
│ ├── Microsoft.DotNet.XHarness.Android/
│ │ ├── AdbExitCodes.cs
│ │ ├── AdbFailureException.cs
│ │ ├── AdbRunner.cs
│ │ ├── AndroidDevice.cs
│ │ ├── ApkHelper.cs
│ │ ├── Execution/
│ │ │ ├── AdbProcessManager.cs
│ │ │ ├── AdbReportFactory.cs
│ │ │ ├── Api23AndOlderReportManager.cs
│ │ │ ├── IAdbProcessManager.cs
│ │ │ ├── IReportManager.cs
│ │ │ └── NewReportManager.cs
│ │ ├── InstrumentationRunner.cs
│ │ └── Microsoft.DotNet.XHarness.Android.csproj
│ ├── Microsoft.DotNet.XHarness.Apple/
│ │ ├── AppOperations/
│ │ │ ├── AppInstaller.cs
│ │ │ ├── AppRunner.cs
│ │ │ ├── AppRunnerBase.cs
│ │ │ ├── AppRunnerFactory.cs
│ │ │ ├── AppTester.cs
│ │ │ ├── AppTesterFactory.cs
│ │ │ └── AppUninstaller.cs
│ │ ├── CommunicationChannel.cs
│ │ ├── CrashSnapshotReporterFactory.cs
│ │ ├── Darwin.cs
│ │ ├── DeviceFinder.cs
│ │ ├── DeviceLogCapturerFactory.cs
│ │ ├── ErrorKnowledgeBase.cs
│ │ ├── ExitCodeDetector.cs
│ │ ├── ILogger.cs
│ │ ├── Microsoft.DotNet.XHarness.Apple.csproj
│ │ └── Orchestration/
│ │ ├── BaseOrchestrator.cs
│ │ ├── InstallOrchestrator.cs
│ │ ├── JustRunOrchestrator.cs
│ │ ├── JustTestOrchestrator.cs
│ │ ├── RunOrchestrator.cs
│ │ ├── SimulatorResetOrchestrator.cs
│ │ ├── TestOrchestrator.cs
│ │ └── UninstallOrchestrator.cs
│ ├── Microsoft.DotNet.XHarness.CLI/
│ │ ├── CommandArguments/
│ │ │ ├── Android/
│ │ │ │ ├── AndroidAdbCommandArguments.cs
│ │ │ │ ├── AndroidArchitecture.cs
│ │ │ │ ├── AndroidDeviceCommandArguments.cs
│ │ │ │ ├── AndroidInstallCommandArguments.cs
│ │ │ │ ├── AndroidRunCommandArguments.cs
│ │ │ │ ├── AndroidStateCommandArguments.cs
│ │ │ │ ├── AndroidTestCommandArguments.cs
│ │ │ │ ├── AndroidUninstallCommandArguments.cs
│ │ │ │ ├── Arguments/
│ │ │ │ │ ├── ApiVersionArgument.cs
│ │ │ │ │ ├── DeviceArchitectureArgument.cs
│ │ │ │ │ ├── DeviceIdArgument.cs
│ │ │ │ │ ├── DeviceOutputFolderArgument.cs
│ │ │ │ │ ├── InstrumentationArguments.cs
│ │ │ │ │ ├── InstrumentationNameArgument.cs
│ │ │ │ │ ├── LaunchTimeoutArgument.cs
│ │ │ │ │ ├── PackageNameArgument.cs
│ │ │ │ │ ├── ShowAdbPathArgument.cs
│ │ │ │ │ └── WifiArgument.cs
│ │ │ │ └── IAndroidAppRunArguments.cs
│ │ │ ├── AndroidHeadless/
│ │ │ │ ├── AndroidHeadlessInstallCommandArguments.cs
│ │ │ │ ├── AndroidHeadlessRunCommandArguments.cs
│ │ │ │ ├── AndroidHeadlessTestCommandArguments.cs
│ │ │ │ ├── AndroidHeadlessUninstallCommandArguments.cs
│ │ │ │ ├── Arguments/
│ │ │ │ │ ├── RuntimePathArgument.cs
│ │ │ │ │ ├── TestAssemblyArgument.cs
│ │ │ │ │ ├── TestPathArgument.cs
│ │ │ │ │ └── TestScriptArgument.cs
│ │ │ │ └── IAndroidHeadlessAppRunArguments.cs
│ │ │ ├── Apple/
│ │ │ │ ├── AppleDeviceCommandsArguments.cs
│ │ │ │ ├── AppleInstallCommandArguments.cs
│ │ │ │ ├── AppleJustRunCommandArguments.cs
│ │ │ │ ├── AppleJustTestCommandArguments.cs
│ │ │ │ ├── AppleMlaunchCommandArguments.cs
│ │ │ │ ├── AppleResetSimulatorCommandArguments.cs
│ │ │ │ ├── AppleRunCommandArguments.cs
│ │ │ │ ├── AppleStateCommandArguments.cs
│ │ │ │ ├── AppleTestCommandArguments.cs
│ │ │ │ ├── AppleUninstallCommandArguments.cs
│ │ │ │ ├── Arguments/
│ │ │ │ │ ├── BundleIdentifierArgument.cs
│ │ │ │ │ ├── CommunicationChannelArgument.cs
│ │ │ │ │ ├── DeviceNameArgument.cs
│ │ │ │ │ ├── EnableLldbArgument.cs
│ │ │ │ │ ├── EnvironmentalVariablesArgument.cs
│ │ │ │ │ ├── ForceInstallationArgument.cs
│ │ │ │ │ ├── HideProgressArgument.cs
│ │ │ │ │ ├── IncludeWirelessArgument.cs
│ │ │ │ │ ├── LaunchTimeoutArgument.cs
│ │ │ │ │ ├── ListInstalledArgument.cs
│ │ │ │ │ ├── MlaunchArgument.cs
│ │ │ │ │ ├── NoWaitArgument.cs
│ │ │ │ │ ├── ResetSimulatorArgument.cs
│ │ │ │ │ ├── ShowDevicesUUIDArgument.cs
│ │ │ │ │ ├── ShowSimulatorsUUIDArgument.cs
│ │ │ │ │ ├── SignalAppEndArgument.cs
│ │ │ │ │ ├── TargetArgument.cs
│ │ │ │ │ ├── XcodeArgument.cs
│ │ │ │ │ └── XmlResultJargonArgument.cs
│ │ │ │ ├── IAppleAppRunArguments.cs
│ │ │ │ ├── IAppleArguments.cs
│ │ │ │ └── Simulators/
│ │ │ │ ├── FindCommandArguments.cs
│ │ │ │ ├── InstallCommandArguments.cs
│ │ │ │ ├── ListCommandArguments.cs
│ │ │ │ └── SimulatorsCommandArguments.cs
│ │ │ ├── Argument.cs
│ │ │ ├── Arguments/
│ │ │ │ ├── AppPathArgument.cs
│ │ │ │ ├── ClassMethodFilters.cs
│ │ │ │ ├── EnableCoverageArgument.cs
│ │ │ │ ├── ExpectedExitCodeArgument.cs
│ │ │ │ ├── OutputDirectoryArgument.cs
│ │ │ │ ├── SingleMethodFilters.cs
│ │ │ │ ├── TimeoutArgument.cs
│ │ │ │ ├── TypeFromAssemblyArgument.cs
│ │ │ │ ├── WebServerHttpEnvironmentVariables.cs
│ │ │ │ ├── WebServerHttpsEnvironmentVariables.cs
│ │ │ │ ├── WebServerMiddlewareArgument.cs
│ │ │ │ ├── WebServerUploadResults.cs
│ │ │ │ ├── WebServerUseCorsArguments.cs
│ │ │ │ ├── WebServerUseCrossOriginPolicyArguments.cs
│ │ │ │ ├── WebServerUseDefaultFiles.cs
│ │ │ │ └── WebServerUseHttpsArguments.cs
│ │ │ ├── DiagnosticsArgument.cs
│ │ │ ├── HelpArgument.cs
│ │ │ ├── UseJsonArgument.cs
│ │ │ ├── VerbosityArgument.cs
│ │ │ ├── WASI/
│ │ │ │ ├── Arguments/
│ │ │ │ │ ├── WasmEngineArgument.cs
│ │ │ │ │ ├── WasmEngineArguments.cs
│ │ │ │ │ └── WasmEngineLocationArgument.cs
│ │ │ │ └── WasiTestCommandArguments.cs
│ │ │ ├── WASM/
│ │ │ │ ├── Arguments/
│ │ │ │ │ ├── BackgroundThrottlingArgument.cs
│ │ │ │ │ ├── BrowserArgument.cs
│ │ │ │ │ ├── BrowserArguments.cs
│ │ │ │ │ ├── BrowserLocationArgument.cs
│ │ │ │ │ ├── DebuggerPortArgument.cs
│ │ │ │ │ ├── ErrorPatternsFileArgument.cs
│ │ │ │ │ ├── HTMLFileArgument.cs
│ │ │ │ │ ├── JavaScriptEngineArgument.cs
│ │ │ │ │ ├── JavaScriptEngineArguments.cs
│ │ │ │ │ ├── JavaScriptEngineLocationArgument.cs
│ │ │ │ │ ├── JavaScriptFileArgument.cs
│ │ │ │ │ ├── LocaleArgument.cs
│ │ │ │ │ ├── NoHeadlessArgument.cs
│ │ │ │ │ ├── NoIncognitoArgument.cs
│ │ │ │ │ ├── NoQuitArgument.cs
│ │ │ │ │ ├── PageLoadStrategyArgument.cs
│ │ │ │ │ ├── SymbolMapFileArgument.cs
│ │ │ │ │ ├── SymbolicatePatternsFileArgument.cs
│ │ │ │ │ └── SymbolicatorArgument.cs
│ │ │ │ ├── IWebServerArguments.cs
│ │ │ │ ├── WasmTestBrowserCommandArguments.cs
│ │ │ │ ├── WasmTestCommandArguments.cs
│ │ │ │ └── WebServerCommandArguments.cs
│ │ │ └── XHarnessCommandArguments.cs
│ │ ├── Commands/
│ │ │ ├── Android/
│ │ │ │ ├── AndroidAdbCommand.cs
│ │ │ │ ├── AndroidCommand.cs
│ │ │ │ ├── AndroidCommandSet.cs
│ │ │ │ ├── AndroidDeviceCommand.cs
│ │ │ │ ├── AndroidInstallCommand.cs
│ │ │ │ ├── AndroidRunCommand.cs
│ │ │ │ ├── AndroidStateCommand.cs
│ │ │ │ ├── AndroidTestCommand.cs
│ │ │ │ ├── AndroidUninstallCommand.cs
│ │ │ │ └── IDiagnosticDataExtensions.cs
│ │ │ ├── AndroidHeadless/
│ │ │ │ ├── AndroidHeadlessCommandSet.cs
│ │ │ │ ├── AndroidHeadlessInstallCommand.cs
│ │ │ │ ├── AndroidHeadlessRunCommand.cs
│ │ │ │ ├── AndroidHeadlessTestCommand.cs
│ │ │ │ └── AndroidHeadlessUninstallCommand.cs
│ │ │ ├── Apple/
│ │ │ │ ├── AppleAppCommand.cs
│ │ │ │ ├── AppleCommand.cs
│ │ │ │ ├── AppleCommandSet.cs
│ │ │ │ ├── AppleDeviceCommand.cs
│ │ │ │ ├── AppleInstallCommand.cs
│ │ │ │ ├── AppleJustRunCommand.cs
│ │ │ │ ├── AppleJustTestCommand.cs
│ │ │ │ ├── AppleMlaunchCommand.cs
│ │ │ │ ├── AppleResetSimulatorCommand.cs
│ │ │ │ ├── AppleRunCommand.cs
│ │ │ │ ├── AppleStateCommand.cs
│ │ │ │ ├── AppleTestCommand.cs
│ │ │ │ ├── AppleUninstallCommand.cs
│ │ │ │ └── Simulators/
│ │ │ │ ├── FindCommand.cs
│ │ │ │ ├── InstallCommand.cs
│ │ │ │ ├── ListCommand.cs
│ │ │ │ ├── Simulator.cs
│ │ │ │ ├── SimulatorsCommand.cs
│ │ │ │ └── SimulatorsCommandSet.cs
│ │ │ ├── GetStateCommand.cs
│ │ │ ├── WASI/
│ │ │ │ ├── Engine/
│ │ │ │ │ └── WasiTestCommand.cs
│ │ │ │ └── WasiCommandSet.cs
│ │ │ ├── WASM/
│ │ │ │ ├── Browser/
│ │ │ │ │ ├── WasmBrowserTestRunner.cs
│ │ │ │ │ └── WasmTestBrowserCommand.cs
│ │ │ │ ├── ErrorPatternScanner.cs
│ │ │ │ ├── JS/
│ │ │ │ │ └── WasmTestCommand.cs
│ │ │ │ ├── WasmCommandSet.cs
│ │ │ │ ├── WasmLogMessage.cs
│ │ │ │ ├── WasmTestMessagesProcessor.cs
│ │ │ │ └── WebServerCommand.cs
│ │ │ ├── WebServer.cs
│ │ │ ├── XHarnessCommand.cs
│ │ │ ├── XHarnessHelpCommand.cs
│ │ │ └── XHarnessVersionCommand.cs
│ │ ├── Microsoft.DotNet.XHarness.CLI.csproj
│ │ ├── Program.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── Resources/
│ │ │ ├── Strings.Designer.cs
│ │ │ └── Strings.resx
│ │ └── XHarnessConsoleLoggerFormatter.cs
│ ├── Microsoft.DotNet.XHarness.Common/
│ │ ├── CLI/
│ │ │ ├── EnvironmentVariables.cs
│ │ │ ├── ExitCode.cs
│ │ │ └── NoDeviceFoundException.cs
│ │ ├── CommandDiagnostics.cs
│ │ ├── Execution/
│ │ │ ├── IMacOSProcessManager.cs
│ │ │ ├── IProcessManager.cs
│ │ │ ├── LinuxProcessManager.cs
│ │ │ ├── MacOSProcessManager.cs
│ │ │ ├── ProcessManager.cs
│ │ │ ├── ProcessManagerFactory.cs
│ │ │ ├── UnixProcessManager.cs
│ │ │ └── WindowsProcessManager.cs
│ │ ├── Logging/
│ │ │ ├── AggregatedLog.cs
│ │ │ ├── CallbackLog.cs
│ │ │ ├── ConsoleLog.cs
│ │ │ ├── FileBackedLog.cs
│ │ │ ├── ILog.cs
│ │ │ ├── Log.cs
│ │ │ ├── MemoryLog.cs
│ │ │ ├── NullLog.cs
│ │ │ ├── ReadableLog.cs
│ │ │ └── ScanLog.cs
│ │ ├── Microsoft.DotNet.XHarness.Common.csproj
│ │ ├── RunSummaryEmitter.cs
│ │ ├── TargetPlatform.cs
│ │ ├── Utilities/
│ │ │ ├── DisposableList.cs
│ │ │ ├── Extensions.cs
│ │ │ ├── FileUtils.cs
│ │ │ └── StringUtils.cs
│ │ ├── WasmSymbolicatorBase.cs
│ │ └── XmlResultJargon.cs
│ ├── Microsoft.DotNet.XHarness.InstrumentationBase.Xunit/
│ │ ├── DefaultAndroidEntryPoint.cs
│ │ └── Microsoft.DotNet.XHarness.DefaultAndroidEntryPoint.Xunit.csproj
│ ├── Microsoft.DotNet.XHarness.TestRunners.Common/
│ │ ├── AndroidApplicationEntryPointBase.cs
│ │ ├── ApplicationEntryPoint.cs
│ │ ├── ApplicationOptions.cs
│ │ ├── CoverageManager.cs
│ │ ├── Extensions.cs
│ │ ├── IDevice.cs
│ │ ├── IgnoreFileParser.cs
│ │ ├── LogWriter.cs
│ │ ├── Microsoft.DotNet.XHarness.TestRunners.Common.csproj
│ │ ├── MinimumLogLevel.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── TcpTextWriter.cs
│ │ ├── TestAssemblyInfo.cs
│ │ ├── TestCompletionStatus.cs
│ │ ├── TestExecutionState.cs
│ │ ├── TestFailureInfo.cs
│ │ ├── TestResult.cs
│ │ ├── TestRunResult.cs
│ │ ├── TestRunSelector.cs
│ │ ├── TestRunSelectorType.cs
│ │ ├── TestRunner.cs
│ │ ├── WasmApplicationEntryPointBase.cs
│ │ └── iOSApplicationEntryPointBase.cs
│ ├── Microsoft.DotNet.XHarness.TestRunners.NUnit/
│ │ ├── FilterBuilder.cs
│ │ ├── INUnitTestRunner.cs
│ │ ├── IResultSummary.cs
│ │ ├── Microsoft.DotNet.XHarness.TestRunners.NUnit.csproj
│ │ ├── NUnit3XmlOutputWriter.cs
│ │ ├── NUnitTestListener.cs
│ │ ├── NUnitTestRunner.cs
│ │ ├── OutputWriter.cs
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── ResultSummary.cs
│ │ ├── TestStatusExtensions.cs
│ │ └── XmlResultJargonExtensions.cs
│ ├── Microsoft.DotNet.XHarness.TestRunners.Xunit/
│ │ ├── AndroidApplicationEntryPoint.cs
│ │ ├── CompletionCallbackExecutionSink.cs
│ │ ├── CustomXunitTestRunner.cs
│ │ ├── EnvironmentVariables.cs
│ │ ├── Microsoft.DotNet.XHarness.TestRunners.Xunit.csproj
│ │ ├── NUnit3Xml.xslt
│ │ ├── NUnitXml.xslt
│ │ ├── Properties/
│ │ │ └── AssemblyInfo.cs
│ │ ├── ReflectionBasedXunitTestRunner.cs
│ │ ├── TestCaseExtensions.cs
│ │ ├── ThreadlessXunitTestRunner.cs
│ │ ├── WasmApplicationEntryPoint.cs
│ │ ├── WasmThreadedTestRunner.cs
│ │ ├── WasmXmlResultWriter.cs
│ │ ├── XUnitFilter.cs
│ │ ├── XUnitFilterType.cs
│ │ ├── XUnitFiltersCollection.cs
│ │ ├── XUnitTestRunner.cs
│ │ ├── XunitTestRunnerBase.cs
│ │ ├── YieldingXunitTestFrameworkExecutor.cs
│ │ └── iOSApplicationEntryPoint.cs
│ └── Microsoft.DotNet.XHarness.iOS.Shared/
│ ├── AppBundleInformation.cs
│ ├── AppBundleInformationParser.cs
│ ├── Collections/
│ │ ├── BlockingEnumerableCollection.cs
│ │ └── IAsyncEnumerable.cs
│ ├── CrashSnapshotReporter.cs
│ ├── Execution/
│ │ ├── Arguments.cs
│ │ ├── EnviromentVariables.cs
│ │ ├── IMlaunchProcessManager.cs
│ │ ├── MLaunchArguments.cs
│ │ └── MlaunchProcessManager.cs
│ ├── Extension.cs
│ ├── Hardware/
│ │ ├── Device.cs
│ │ ├── HardwareDeviceLoader.cs
│ │ ├── IDevice.cs
│ │ ├── IDeviceLoader.cs
│ │ ├── IHardwareDevice.cs
│ │ ├── ISimulatorDevice.cs
│ │ ├── ISimulatorLoader.cs
│ │ ├── SimDevicePair.cs
│ │ ├── SimDeviceSpecification.cs
│ │ ├── SimDeviceType.cs
│ │ ├── SimRuntime.cs
│ │ ├── SimulatorDevice.cs
│ │ ├── SimulatorLoader.cs
│ │ ├── SimulatorSelector.cs
│ │ └── TCCDatabase.cs
│ ├── IErrorKnowledgeBase.cs
│ ├── IResultFileHandler.cs
│ ├── IResultParser.cs
│ ├── ITestReporter.cs
│ ├── Listeners/
│ │ ├── SimpleFileListener.cs
│ │ ├── SimpleHttpListener.cs
│ │ ├── SimpleListener.cs
│ │ ├── SimpleListenerFactory.cs
│ │ ├── SimpleTcpListener.cs
│ │ ├── TcpTunnel.cs
│ │ └── TunnelBore.cs
│ ├── Logging/
│ │ ├── AppInstallMonitorLog.cs
│ │ ├── CaptureLog.cs
│ │ ├── DeviceLogCapturer.cs
│ │ ├── IEventLogger.cs
│ │ ├── ILogs.cs
│ │ ├── LogFile.cs
│ │ ├── LogType.cs
│ │ ├── Logs.cs
│ │ └── WrenchLog.cs
│ ├── Microsoft.DotNet.XHarness.iOS.Shared.csproj
│ ├── ResultFileHandler.cs
│ ├── RunMode.cs
│ ├── SdkVersions.cs
│ ├── TestExecutingResult.cs
│ ├── TestReporter.cs
│ ├── TestReporterFactory.cs
│ ├── TestTarget.cs
│ ├── Utilities/
│ │ ├── DirectoryUtilities.cs
│ │ ├── Extensions.cs
│ │ ├── Helpers.cs
│ │ ├── PlistExtensions.cs
│ │ └── ProjectFileExtensions.cs
│ └── XmlResults/
│ ├── IXmlResultParser.cs
│ ├── NUnitV2ResultParser.cs
│ ├── NUnitV2TestReportGenerator.cs
│ ├── NUnitV3ResultParser.cs
│ ├── NUnitV3TestReportGenerator.cs
│ ├── TestReportGenerator.cs
│ ├── TouchUnitResultParser.cs
│ ├── TouchUnitTestReportGenerator.cs
│ ├── TrxResultParser.cs
│ ├── TrxTestReportGenerator.cs
│ ├── XUnitResultParser.cs
│ ├── XUnitTestReportGenerator.cs
│ └── XmlResultParser.cs
├── tests/
│ ├── Directory.Build.targets
│ ├── Microsoft.DotNet.XHarness.Android.Tests/
│ │ ├── AdbRunnerLogFilterTests.cs
│ │ ├── AdbRunnerTests.cs
│ │ ├── InstrumentationRunnerSummaryTests.cs
│ │ └── Microsoft.DotNet.XHarness.Android.Tests.csproj
│ ├── Microsoft.DotNet.XHarness.Apple.Tests/
│ │ ├── AppOperations/
│ │ │ ├── AppInstallerTests.cs
│ │ │ ├── AppRunTestBase.cs
│ │ │ ├── AppRunnerTests.cs
│ │ │ ├── AppTesterTests.cs
│ │ │ └── AppUninstallerTests.cs
│ │ ├── DeviceFinderTests.cs
│ │ ├── ErrorKnowledgeBaseTests.cs
│ │ ├── ExitCodeDetectorTests.cs
│ │ ├── Microsoft.DotNet.XHarness.Apple.Tests.csproj
│ │ ├── MockLogs.cs
│ │ └── Orchestration/
│ │ ├── CopyLogsToMainLogTests.cs
│ │ ├── InstallOrchestratorTests.cs
│ │ ├── JustRunOrchestratorTests.cs
│ │ ├── JustTestOrchestratorTests.cs
│ │ ├── OrchestratorTestBase.cs
│ │ ├── RunOrchestratorTests.cs
│ │ ├── SimulatorResetOrchestratorTests.cs
│ │ ├── TestOrchestratorTests.cs
│ │ └── UninstallOrchestratorTests.cs
│ ├── Microsoft.DotNet.XHarness.CLI.Tests/
│ │ ├── CommandArguments/
│ │ │ └── ArgumentTests.cs
│ │ ├── Commands/
│ │ │ └── XHarnessCommandTests.cs
│ │ ├── Microsoft.DotNet.XHarness.CLI.Tests.csproj
│ │ ├── Resources/
│ │ │ └── StringsTests.cs
│ │ ├── UnitTestArguments.cs
│ │ └── UnitTestCommand.cs
│ ├── Microsoft.DotNet.XHarness.Common.Tests/
│ │ ├── Execution/
│ │ │ └── ProcessManagerTests.cs
│ │ ├── Logging/
│ │ │ ├── CallbackLogTest.cs
│ │ │ ├── ConsoleLogTest.cs
│ │ │ └── ScanLogTest.cs
│ │ ├── Microsoft.DotNet.XHarness.Common.Tests.csproj
│ │ └── Utilities/
│ │ └── StringUtilsTests.cs
│ ├── Microsoft.DotNet.XHarness.TestRunners.Tests/
│ │ ├── CoverageManagerTests.cs
│ │ ├── Microsoft.DotNet.XHarness.TestRunners.Tests.csproj
│ │ ├── NUnit/
│ │ │ ├── NUnit3XmlOutputWriterTests.cs
│ │ │ └── TestStatusExtensionsTests.cs
│ │ └── xUnit/
│ │ ├── XUnitFilterTests.cs
│ │ └── XUnitFiltersCollectionTests.cs
│ ├── Microsoft.DotNet.XHarness.iOS.Shared.Tests/
│ │ ├── AppBundleInformationParserTests.cs
│ │ ├── CrashSnapshotReporterTests.cs
│ │ ├── Execution/
│ │ │ └── MlaunchArgumentsTests.cs
│ │ ├── Hardware/
│ │ │ ├── DefaultSimulatorSelectorTests.cs
│ │ │ ├── DeviceTest.cs
│ │ │ ├── HardwareDeviceLoaderTests.cs
│ │ │ ├── SimulatorDeviceTest.cs
│ │ │ ├── SimulatorLoaderTests.cs
│ │ │ └── TCCDatabaseTests.cs
│ │ ├── Listeners/
│ │ │ ├── SimpleFileListenerTest.cs
│ │ │ ├── SimpleListenerFactoryTest.cs
│ │ │ └── SimpleTcpListenerTest.cs
│ │ ├── Logging/
│ │ │ ├── CaptureLogTest.cs
│ │ │ ├── LogFileTest.cs
│ │ │ └── LogsTest.cs
│ │ ├── Microsoft.DotNet.XHarness.iOS.Shared.Tests.csproj
│ │ ├── ResultFileHandlerTests.cs
│ │ ├── Samples/
│ │ │ ├── Info.plist
│ │ │ ├── Issue8214.xml
│ │ │ ├── Issue95.xml
│ │ │ ├── MtouchArchMissingEverywhere.xml
│ │ │ ├── MtouchArchMissingInConfiguration.xml
│ │ │ ├── NUnitV2Sample.xml
│ │ │ ├── NUnitV2SampleFailure.xml
│ │ │ ├── NUnitV3Sample.xml
│ │ │ ├── NUnitV3SampleFailure.xml
│ │ │ ├── NUnitV3SampleFailures.xml
│ │ │ ├── NUnitV3SampleParameterizedFailure.xml
│ │ │ ├── NUnitV3SampleSuccess.xml
│ │ │ ├── TestCaseFailures.xml
│ │ │ ├── TestProject/
│ │ │ │ ├── Info.plist
│ │ │ │ └── SystemXunit.csproj
│ │ │ ├── TouchUnitSample.xml
│ │ │ ├── TouchUnitSample2.xml
│ │ │ ├── devices.xml
│ │ │ ├── run-log.txt
│ │ │ ├── simulators.xml
│ │ │ └── xUnitSample.xml
│ │ ├── TestExecutingResultTests.cs
│ │ ├── TestReporterTests.cs
│ │ ├── Utilities/
│ │ │ ├── PListExtensionsTests.cs
│ │ │ └── ProjectFileExtensionsTests.cs
│ │ └── XmlResultParserTests.cs
│ └── integration-tests/
│ ├── Android/
│ │ ├── Commands.Tests.proj
│ │ ├── Device.Tests.proj
│ │ ├── Simulator.Tests.proj
│ │ └── TestApks.proj
│ ├── Apple/
│ │ ├── Device.Commands.Tests.proj
│ │ ├── Device.iOS.Tests.proj
│ │ ├── Device.tvOS.Tests.proj
│ │ ├── Simulator.Commands.Tests.proj
│ │ ├── Simulator.Scouting.Commands.Tests.proj
│ │ ├── Simulator.Scouting.Tests.proj
│ │ ├── Simulator.Tests.proj
│ │ ├── SimulatorInstaller.Tests.proj
│ │ ├── TestAppBundle.proj
│ │ └── helix-payloads/
│ │ └── simulatorinstaller-integration-tests.sh
│ ├── Directory.Build.props
│ ├── Directory.Build.targets
│ ├── README.md
│ ├── Storage.props
│ └── WASM/
│ └── WASM.Helix.SDK.Tests.proj
└── tools/
├── Install-XHarness.ps1
├── install-xharness.sh
├── run-e2e-test.ps1
└── run-e2e-test.sh
Showing preview only (254K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2389 symbols across 407 files)
FILE: eng/common/cross/install-debs.py
function download_file (line 19) | async def download_file(session, url, dest_path, max_retries=3, retry_de...
function download_deb_files_parallel (line 42) | async def download_deb_files_parallel(mirror, packages, tmp_dir):
function download_package_index_parallel (line 58) | async def download_package_index_parallel(mirror, arch, suites):
function fetch_and_decompress (line 80) | async def fetch_and_decompress(session, url):
function parse_debian_version (line 95) | def parse_debian_version(version):
function compare_upstream_version (line 103) | def compare_upstream_version(v1, v2):
function compare_debian_versions (line 121) | def compare_debian_versions(version1, version2):
function resolve_dependencies (line 135) | def resolve_dependencies(packages, aliases, desired_packages):
function parse_package_index (line 160) | def parse_package_index(content):
function install_packages (line 196) | def install_packages(mirror, packages_info, aliases, tmp_dir, extract_di...
function extract_deb_file (line 230) | def extract_deb_file(deb_file, tmp_dir, extract_dir, ar_tool):
function finalize_setup (line 273) | def finalize_setup(rootfsdir):
FILE: src/Microsoft.DotNet.XHarness.Android/AdbExitCodes.cs
type AdbExitCodes (line 10) | public enum AdbExitCodes
FILE: src/Microsoft.DotNet.XHarness.Android/AdbFailureException.cs
class AdbFailureException (line 9) | public class AdbFailureException : Exception
method AdbFailureException (line 11) | public AdbFailureException(string message) : base(message)
FILE: src/Microsoft.DotNet.XHarness.Android/AdbRunner.cs
class AdbRunner (line 18) | public class AdbRunner
type AdbProperty (line 20) | private enum AdbProperty
method GetActiveDevice (line 56) | public AndroidDevice? GetActiveDevice() => _activeDevice;
method AdbRunner (line 58) | public AdbRunner(ILogger log, string adbExePath = "") : this(log, new ...
method AdbRunner (line 60) | public AdbRunner(ILogger log, IAdbProcessManager processManager, strin...
method GetCliAdbExePath (line 95) | private static string GetCliAdbExePath()
method GetAdbVersion (line 119) | public string GetAdbVersion()
method GetAdbState (line 126) | public string GetAdbState() => RunAdbCommand("get-state").StandardOutput;
method RebootAndroidDevice (line 128) | public string RebootAndroidDevice()
method ClearAdbLog (line 135) | public void ClearAdbLog()
method EnableWifi (line 143) | public void EnableWifi(bool enable) => RunAdbCommand("shell", "svc", "...
method TryDumpAdbLog (line 146) | public bool TryDumpAdbLog(string outputFilePath, string filterSpec = "")
method FilterToDotnetLines (line 179) | public static string FilterToDotnetLines(string logcatOutput)
method CountLines (line 199) | private static int CountLines(string text)
method DumpBugReport (line 218) | public string DumpBugReport(string outputFilePathWithoutFormat)
method GetDeviceApiVersion (line 224) | public int GetDeviceApiVersion()
method GetSettingValue (line 248) | private static int? GetSettingValue (string value)
method VerifyPackageVerificationSettingValue (line 260) | private void VerifyPackageVerificationSettingValue(string settingName,...
method CheckPackageVerificationSettings (line 270) | public void CheckPackageVerificationSettings()
method WaitForDevice (line 278) | public bool WaitForDevice()
method StartAdbServer (line 314) | public void StartAdbServer()
method KillAdbServer (line 351) | public void KillAdbServer() => RunAdbCommand(new[] { "kill-server" })....
method TryRecoverEmulator (line 363) | public bool TryRecoverEmulator()
method RunSystemCommand (line 510) | private static ProcessExecutionResults RunSystemCommand(string command...
method CopyHeadlessFolder (line 567) | public int CopyHeadlessFolder(string testPath, bool sharedRuntime = fa...
method InstallApk (line 640) | public int InstallApk(string apkPath)
method DeleteHeadlessFolder (line 707) | public int DeleteHeadlessFolder(string testPath)
method UninstallApk (line 742) | public int UninstallApk(string apkName)
method KillApk (line 780) | public int KillApk(string apkName)
method KillProcess (line 795) | public int KillProcess(string testName)
method PullFiles (line 813) | public List<string> PullFiles(string apkPackageName, string devicePath...
method HeadlessPullFiles (line 896) | public int HeadlessPullFiles(string devicePath, string localPath)
method GetDevices (line 918) | public IReadOnlyCollection<AndroidDevice> GetDevices() => GetDevices(
method GetDevice (line 933) | public AndroidDevice? GetDevice(
method GetSingleDevice (line 959) | public AndroidDevice? GetSingleDevice(
method GetAllDevices (line 983) | private IReadOnlyCollection<AndroidDevice> GetAllDevices(
method GetDevice (line 1091) | private AndroidDevice? GetDevice(
method GetDevices (line 1142) | private IReadOnlyCollection<AndroidDevice> GetDevices(params AdbProper...
method GetDeviceProperty (line 1227) | private string? GetDeviceProperty(AdbProperty property, string? device...
method TestFileExists (line 1263) | private bool TestFileExists(string path, string? deviceName = null)
method SetActiveDevice (line 1300) | public void SetActiveDevice(AndroidDevice? device)
method RunHeadlessCommand (line 1315) | public ProcessExecutionResults RunHeadlessCommand(string testPath, str...
method RunApkInstrumentation (line 1352) | public ProcessExecutionResults RunApkInstrumentation(string apkName, s...
method DisableChatty (line 1393) | private void DisableChatty()
method RunAdbCommand (line 1407) | public ProcessExecutionResults RunAdbCommand(params string[] arguments...
method RunAdbCommand (line 1409) | public ProcessExecutionResults RunAdbCommand(IEnumerable<string> argum...
method Retry (line 1419) | private bool Retry(Func<bool> action, TimeSpan retryInterval, TimeSpan...
method Retry (line 1422) | private T Retry<T>(Func<T> action, Func<T, bool> needsRetry, TimeSpan ...
FILE: src/Microsoft.DotNet.XHarness.Android/AndroidDevice.cs
type AndroidDevice (line 9) | public record AndroidDevice
FILE: src/Microsoft.DotNet.XHarness.Android/ApkHelper.cs
class ApkHelper (line 9) | public static class ApkHelper
method GetApkSupportedArchitectures (line 11) | public static List<string> GetApkSupportedArchitectures(string apkPath)
FILE: src/Microsoft.DotNet.XHarness.Android/Execution/AdbProcessManager.cs
class AdbProcessManager (line 12) | public class AdbProcessManager : IAdbProcessManager
method AdbProcessManager (line 15) | public AdbProcessManager(ILogger logger) => _log = logger;
method Run (line 23) | public ProcessExecutionResults Run(string adbExePath, IEnumerable<stri...
FILE: src/Microsoft.DotNet.XHarness.Android/Execution/AdbReportFactory.cs
class AdbReportFactory (line 9) | internal class AdbReportFactory
method CreateReportManager (line 13) | internal static IReportManager CreateReportManager(ILogger log, int api)
FILE: src/Microsoft.DotNet.XHarness.Android/Execution/Api23AndOlderReportManager.cs
class Api23AndOlderReportManager (line 12) | internal class Api23AndOlderReportManager : IReportManager
method Api23AndOlderReportManager (line 16) | public Api23AndOlderReportManager(ILogger log)
method DumpBugReport (line 21) | public string DumpBugReport(AdbRunner runner, string outputFilePathWit...
FILE: src/Microsoft.DotNet.XHarness.Android/Execution/IAdbProcessManager.cs
class ProcessExecutionResults (line 12) | public class ProcessExecutionResults
method ThrowIfFailed (line 20) | public void ThrowIfFailed(string failureMessage)
method ToString (line 28) | public override string ToString()
type IAdbProcessManager (line 45) | public interface IAdbProcessManager
method Run (line 49) | public ProcessExecutionResults Run(string filename, IEnumerable<string...
FILE: src/Microsoft.DotNet.XHarness.Android/Execution/IReportManager.cs
type IReportManager (line 7) | internal interface IReportManager
method DumpBugReport (line 9) | string DumpBugReport(AdbRunner runner, string outputFilePathWithoutFor...
FILE: src/Microsoft.DotNet.XHarness.Android/Execution/NewReportManager.cs
class NewReportManager (line 7) | class NewReportManager : IReportManager
method NewReportManager (line 10) | public NewReportManager(ILogger log)
method DumpBugReport (line 15) | public string DumpBugReport(AdbRunner runner, string outputFilePathWit...
FILE: src/Microsoft.DotNet.XHarness.Android/InstrumentationRunner.cs
class InstrumentationRunner (line 16) | public class InstrumentationRunner
method InstrumentationRunner (line 31) | public InstrumentationRunner(ILogger logger, AdbRunner runner)
method RunApkInstrumentation (line 37) | public ExitCode RunApkInstrumentation(
method DetermineExitCode (line 113) | private ExitCode DetermineExitCode(ProcessExecutionResults result, boo...
method ParseInstrumentationResult (line 151) | private (int? ExitCode, bool Crashed, bool FilePullFailed) ParseInstru...
method PullResultXMLs (line 215) | private bool PullResultXMLs(string apkPackageName, string outputDirect...
method ParseInstrumentationOutputs (line 248) | private IReadOnlyDictionary<string, string> ParseInstrumentationOutput...
method EmitRunSummary (line 281) | private void EmitRunSummary(ExitCode exitCode, int? instrumentationExi...
FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppInstaller.cs
type IAppInstaller (line 18) | public interface IAppInstaller
method InstallApp (line 20) | Task<ProcessExecutionResult> InstallApp(
class AppInstaller (line 27) | public class AppInstaller : IAppInstaller
method AppInstaller (line 32) | public AppInstaller(IMlaunchProcessManager processManager, ILog mainLog)
method InstallApp (line 38) | public async Task<ProcessExecutionResult> InstallApp(
FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppRunner.cs
type IAppRunner (line 21) | public interface IAppRunner
method RunApp (line 23) | Task<ProcessExecutionResult> RunApp(
method RunMacCatalystApp (line 35) | Task<ProcessExecutionResult> RunMacCatalystApp(
class AppRunner (line 48) | public class AppRunner : AppRunnerBase, IAppRunner
method AppRunner (line 57) | public AppRunner(
method RunMacCatalystApp (line 76) | public async Task<ProcessExecutionResult> RunMacCatalystApp(
method RunApp (line 110) | public async Task<ProcessExecutionResult> RunApp(
method RunDeviceApp (line 199) | private async Task<ProcessExecutionResult> RunDeviceApp(
method GetCommonArguments (line 229) | private static MlaunchArguments GetCommonArguments(
method GetSimulatorArguments (line 248) | private MlaunchArguments GetSimulatorArguments(
method GetDeviceArguments (line 278) | private MlaunchArguments GetDeviceArguments(
FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppRunnerBase.cs
class AppRunnerBase (line 22) | public abstract class AppRunnerBase
method AppRunnerBase (line 34) | protected AppRunnerBase(
method RunMacCatalystApp (line 58) | protected async Task<ProcessExecutionResult> RunMacCatalystApp(
method RunSimulatorApp (line 128) | protected async Task<ProcessExecutionResult> RunSimulatorApp(
method AddExtraEnvVars (line 230) | protected void AddExtraEnvVars(Dictionary<string, string?> envVariable...
method GetSetEnvVariableArguments (line 248) | protected static IEnumerable<SetEnvVariableArgument> GetSetEnvVariable...
method GetSetEnvVariableArguments (line 253) | protected static IEnumerable<SetEnvVariableArgument> GetSetEnvVariable...
method WatchForAppEndTag (line 256) | protected string WatchForAppEndTag(
method RunAndWatchForAppSignal (line 277) | protected async Task<ProcessExecutionResult> RunAndWatchForAppSignal(F...
method CaptureMacCatalystLog (line 295) | protected CancellationTokenSource CaptureMacCatalystLog(AppBundleInfor...
method CaptureSimulatorLog (line 302) | protected async Task<CancellationTokenSource> CaptureSimulatorLog(
method CaptureLogStream (line 317) | private CancellationTokenSource CaptureLogStream(string appName, bool ...
FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppRunnerFactory.cs
type IAppRunnerFactory (line 13) | public interface IAppRunnerFactory
method Create (line 15) | IAppRunner Create(IFileBackedLog log, ILogs logs, Action<string>? logC...
class AppRunnerFactory (line 18) | public class AppRunnerFactory : IAppRunnerFactory
method AppRunnerFactory (line 26) | public AppRunnerFactory(
method Create (line 40) | public IAppRunner Create(IFileBackedLog log, ILogs logs, Action<string...
FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppTester.cs
type IAppTester (line 23) | public interface IAppTester
method TestApp (line 27) | Task<(TestExecutingResult Result, string ResultMessage)> TestApp(
method TestMacCatalystApp (line 42) | Task<(TestExecutingResult Result, string ResultMessage)> TestMacCataly...
class AppTester (line 59) | public class AppTester : AppRunnerBase, IAppTester
method AppTester (line 77) | public AppTester(
method TestMacCatalystApp (line 102) | public async Task<(TestExecutingResult Result, string ResultMessage)> ...
method TestApp (line 155) | public async Task<(TestExecutingResult Result, string ResultMessage)> ...
method RunSimulatorTests (line 322) | private async Task RunSimulatorTests(
method RunDeviceTests (line 397) | private async Task RunDeviceTests(
method RunMacCatalystTests (line 522) | private async Task<(TestExecutingResult Result, string ResultMessage)>...
method GetCoverageSettings (line 632) | private static (bool EnableCoverage, string CoverageFileName) GetCover...
method GetEnvVariables (line 643) | private Dictionary<string, string?> GetEnvVariables(
method GetCommonArguments (line 697) | private MlaunchArguments GetCommonArguments(
method GetSimulatorArguments (line 730) | private MlaunchArguments GetSimulatorArguments(
method GetDeviceArguments (line 776) | private MlaunchArguments GetDeviceArguments(
FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppTesterFactory.cs
type IAppTesterFactory (line 15) | public interface IAppTesterFactory
method Create (line 17) | IAppTester Create(CommunicationChannel communicationChannel, bool isSi...
class AppTesterFactory (line 20) | public class AppTesterFactory : IAppTesterFactory
method AppTesterFactory (line 30) | public AppTesterFactory(
method Create (line 48) | public IAppTester Create(
FILE: src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppUninstaller.cs
type IAppUninstaller (line 15) | public interface IAppUninstaller
method UninstallSimulatorApp (line 17) | Task<ProcessExecutionResult> UninstallSimulatorApp(ISimulatorDevice si...
method UninstallDeviceApp (line 18) | Task<ProcessExecutionResult> UninstallDeviceApp(IHardwareDevice device...
class AppUninstaller (line 21) | public class AppUninstaller : IAppUninstaller
method AppUninstaller (line 26) | public AppUninstaller(IMlaunchProcessManager processManager, ILog main...
method UninstallSimulatorApp (line 32) | public Task<ProcessExecutionResult> UninstallSimulatorApp(ISimulatorDe...
method UninstallDeviceApp (line 40) | public Task<ProcessExecutionResult> UninstallDeviceApp(IHardwareDevice...
FILE: src/Microsoft.DotNet.XHarness.Apple/CommunicationChannel.cs
type CommunicationChannel (line 10) | public enum CommunicationChannel
FILE: src/Microsoft.DotNet.XHarness.Apple/CrashSnapshotReporterFactory.cs
type ICrashSnapshotReporterFactory (line 13) | public interface ICrashSnapshotReporterFactory
method Create (line 15) | ICrashSnapshotReporter Create(ILog log, ILogs logs, bool isDevice, str...
class CrashSnapshotReporterFactory (line 18) | public class CrashSnapshotReporterFactory : ICrashSnapshotReporterFactory
method CrashSnapshotReporterFactory (line 22) | public CrashSnapshotReporterFactory(IMlaunchProcessManager processMana...
method Create (line 27) | public ICrashSnapshotReporter Create(ILog log, ILogs logs, bool isDevi...
FILE: src/Microsoft.DotNet.XHarness.Apple/Darwin.cs
class Darwin (line 9) | public static class Darwin
method GetKernelRelease (line 14) | private static string GetKernelRelease()
method GetVersion (line 46) | public static string GetVersion()
method sysctl (line 65) | [DllImport("libc")]
FILE: src/Microsoft.DotNet.XHarness.Apple/DeviceFinder.cs
type IDeviceFinder (line 17) | public interface IDeviceFinder
method FindDevice (line 19) | Task<DevicePair> FindDevice(
type DevicePair (line 28) | public record DevicePair(IDevice Device, IDevice? CompanionDevice);
class DeviceFinder (line 30) | public class DeviceFinder : IDeviceFinder
method DeviceFinder (line 35) | public DeviceFinder(IHardwareDeviceLoader deviceLoader, ISimulatorLoad...
method FindDevice (line 41) | public async Task<DevicePair> FindDevice(
FILE: src/Microsoft.DotNet.XHarness.Apple/DeviceLogCapturerFactory.cs
type IDeviceLogCapturerFactory (line 12) | public interface IDeviceLogCapturerFactory
method Create (line 14) | IDeviceLogCapturer Create(ILog mainLog, ILog deviceLog, string deviceU...
class DeviceLogCapturerFactory (line 17) | public class DeviceLogCapturerFactory : IDeviceLogCapturerFactory
method Create (line 19) | public IDeviceLogCapturer Create(ILog mainLog, ILog deviceLog, string ...
FILE: src/Microsoft.DotNet.XHarness.Apple/ErrorKnowledgeBase.cs
class ErrorKnowledgeBase (line 15) | public class ErrorKnowledgeBase : IErrorKnowledgeBase
method IsKnownBuildIssue (line 77) | public bool IsKnownBuildIssue(IFileBackedLog buildLog, [NotNullWhen(tr...
method IsKnownTestIssue (line 80) | public bool IsKnownTestIssue(IFileBackedLog runLog, [NotNullWhen(true)...
method IsKnownInstallIssue (line 83) | public bool IsKnownInstallIssue(IFileBackedLog installLog, [NotNullWhe...
method TryFindErrors (line 86) | private static bool TryFindErrors(IFileBackedLog log, Dictionary<strin...
FILE: src/Microsoft.DotNet.XHarness.Apple/ExitCodeDetector.cs
type IExitCodeDetector (line 13) | public interface IExitCodeDetector
method DetectExitCode (line 15) | int? DetectExitCode(AppBundleInformation appBundleInfo, IReadableLog s...
type IiOSExitCodeDetector (line 17) | public interface IiOSExitCodeDetector : IExitCodeDetector
type IMacCatalystExitCodeDetector (line 21) | public interface IMacCatalystExitCodeDetector : IExitCodeDetector
class ExitCodeDetector (line 25) | public abstract class ExitCodeDetector : IExitCodeDetector
method DetectExitCode (line 34) | public int? DetectExitCode(AppBundleInformation appBundleInfo, IReadab...
method IsSignalLine (line 61) | protected virtual Match? IsSignalLine(AppBundleInformation appBundleIn...
method IsStdoutExitLine (line 75) | private static bool IsStdoutExitLine(AppBundleInformation appBundleInf...
method IsAbnormalExitLine (line 80) | private static bool IsAbnormalExitLine(AppBundleInformation appBundleI...
class iOSExitCodeDetector (line 84) | public class iOSExitCodeDetector : ExitCodeDetector, IiOSExitCodeDetector
method IsSignalLine (line 95) | protected override Match? IsSignalLine(AppBundleInformation appBundleI...
class MacCatalystExitCodeDetector (line 118) | public class MacCatalystExitCodeDetector : ExitCodeDetector, IMacCatalys...
FILE: src/Microsoft.DotNet.XHarness.Apple/ILogger.cs
type ILogger (line 12) | public interface ILogger
method LogDebug (line 14) | void LogDebug(string message);
method LogInformation (line 15) | void LogInformation(string message);
method LogWarning (line 16) | void LogWarning(string message);
method LogError (line 17) | void LogError(string message);
method LogCritical (line 18) | void LogCritical(string message);
FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/BaseOrchestrator.cs
class BaseOrchestrator (line 31) | public abstract class BaseOrchestrator : IDisposable
method BaseOrchestrator (line 60) | protected BaseOrchestrator(
method OrchestrateOperation (line 84) | protected async Task<ExitCode> OrchestrateOperation(
method OrchestrateOperationInternal (line 122) | private async Task<ExitCode> OrchestrateOperationInternal(
method EmitAppleRunSummary (line 372) | protected void EmitAppleRunSummary(ExitCode exitCode)
method Dispose (line 429) | public void Dispose()
method InstallApp (line 441) | protected virtual async Task<ExitCode> InstallApp(
method UninstallApp (line 502) | protected virtual async Task<ExitCode> UninstallApp(TestTarget target,...
method CleanUpSimulators (line 546) | protected virtual async Task CleanUpSimulators(IDevice device, IDevice...
method GetAppBundleFromId (line 568) | protected async Task<AppBundleInformation> GetAppBundleFromId(TestTarg...
method GetAppBundleFromPath (line 585) | protected Task<AppBundleInformation> GetAppBundleFromPath(TestTargetOs...
method IsLldbEnabled (line 592) | protected static bool IsLldbEnabled() => File.Exists(s_mlaunchLldbConf...
method NotifyUserLldbCommand (line 594) | protected static void NotifyUserLldbCommand(ILogger logger, string line)
FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/InstallOrchestrator.cs
type IInstallOrchestrator (line 18) | public interface IInstallOrchestrator
method OrchestrateInstall (line 20) | Task<ExitCode> OrchestrateInstall(
class InstallOrchestrator (line 34) | public class InstallOrchestrator : BaseOrchestrator, IInstallOrchestrator
method InstallOrchestrator (line 36) | public InstallOrchestrator(
method OrchestrateInstall (line 51) | public async Task<ExitCode> OrchestrateInstall(
method CleanUpSimulators (line 88) | protected override Task CleanUpSimulators(IDevice device, IDevice? com...
method UninstallApp (line 91) | protected override Task<ExitCode> UninstallApp(TestTarget target, stri...
FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/JustRunOrchestrator.cs
type IJustRunOrchestrator (line 19) | public interface IJustRunOrchestrator
method OrchestrateRun (line 21) | Task<ExitCode> OrchestrateRun(
class JustRunOrchestrator (line 42) | public class JustRunOrchestrator : RunOrchestrator, IJustRunOrchestrator
method JustRunOrchestrator (line 44) | public JustRunOrchestrator(
method OrchestrateRun (line 62) | Task<ExitCode> IJustRunOrchestrator.OrchestrateRun(
method CleanUpSimulators (line 92) | protected override Task CleanUpSimulators(IDevice device, IDevice? com...
method InstallApp (line 95) | protected override Task<ExitCode> InstallApp(AppBundleInformation appB...
method UninstallApp (line 98) | protected override Task<ExitCode> UninstallApp(TestTarget target, stri...
FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/JustTestOrchestrator.cs
type IJustTestOrchestrator (line 19) | public interface IJustTestOrchestrator
method OrchestrateTest (line 21) | Task<ExitCode> OrchestrateTest(
class JustTestOrchestrator (line 47) | public class JustTestOrchestrator : TestOrchestrator, IJustTestOrchestrator
method JustTestOrchestrator (line 49) | public JustTestOrchestrator(
method OrchestrateTest (line 65) | Task<ExitCode> IJustTestOrchestrator.OrchestrateTest(
method CleanUpSimulators (line 99) | protected override Task CleanUpSimulators(IDevice device, IDevice? com...
method InstallApp (line 102) | protected override Task<ExitCode> InstallApp(AppBundleInformation appB...
method UninstallApp (line 105) | protected override Task<ExitCode> UninstallApp(TestTarget target, stri...
FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/RunOrchestrator.cs
type IRunOrchestrator (line 21) | public interface IRunOrchestrator
method OrchestrateRun (line 23) | Task<ExitCode> OrchestrateRun(
class RunOrchestrator (line 45) | public class RunOrchestrator : BaseOrchestrator, IRunOrchestrator
method RunOrchestrator (line 56) | public RunOrchestrator(
method OrchestrateRun (line 83) | public Task<ExitCode> OrchestrateRun(
method UninstallApp (line 114) | protected override Task<ExitCode> UninstallApp(TestTarget target, stri...
method CleanUpSimulators (line 124) | protected override Task CleanUpSimulators(IDevice device, IDevice? com...
method OrchestrateRun (line 134) | protected async Task<ExitCode> OrchestrateRun(
method ExecuteApp (line 233) | private async Task<ExitCode> ExecuteApp(
method ExecuteMacCatalystApp (line 274) | private async Task<ExitCode> ExecuteMacCatalystApp(
method ParseResult (line 304) | private ExitCode ParseResult(
FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/SimulatorResetOrchestrator.cs
type ISimulatorResetOrchestrator (line 18) | public interface ISimulatorResetOrchestrator
method OrchestrateSimulatorReset (line 20) | Task<ExitCode> OrchestrateSimulatorReset(
class SimulatorResetOrchestrator (line 30) | public class SimulatorResetOrchestrator : BaseOrchestrator, ISimulatorRe...
method SimulatorResetOrchestrator (line 34) | public SimulatorResetOrchestrator(
method OrchestrateSimulatorReset (line 49) | public Task<ExitCode> OrchestrateSimulatorReset(
method InstallApp (line 79) | protected override Task<ExitCode> InstallApp(AppBundleInformation appB...
method UninstallApp (line 82) | protected override Task<ExitCode> UninstallApp(TestTarget target, stri...
method CleanUpSimulators (line 85) | protected override Task CleanUpSimulators(IDevice device, IDevice? com...
class FakeAppBundleInformationParser (line 89) | private class FakeAppBundleInformationParser : IAppBundleInformationPa...
method ParseFromAppBundle (line 91) | public Task<AppBundleInformation> ParseFromAppBundle(string appPacka...
method ParseFromProject (line 94) | public Task<AppBundleInformation> ParseFromProject(string projectFil...
FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/TestOrchestrator.cs
type ITestOrchestrator (line 21) | public interface ITestOrchestrator
method OrchestrateTest (line 23) | Task<ExitCode> OrchestrateTest(
class TestOrchestrator (line 45) | public class TestOrchestrator : BaseOrchestrator, ITestOrchestrator
method TestOrchestrator (line 53) | public TestOrchestrator(
method OrchestrateTest (line 74) | public Task<ExitCode> OrchestrateTest(
method OrchestrateTest (line 109) | public virtual async Task<ExitCode> OrchestrateTest(
method ExecuteApp (line 201) | private async Task<ExitCode> ExecuteApp(
method ExecuteMacCatalystApp (line 260) | private async Task<ExitCode> ExecuteMacCatalystApp(
method GetAppTester (line 295) | private IAppTester GetAppTester(CommunicationChannel communicationChan...
method ParseResult (line 303) | private ExitCode ParseResult(TestExecutingResult testResult, string re...
method CopyLogsToMainLog (line 382) | private void CopyLogsToMainLog(bool isMacCatalyst = false)
FILE: src/Microsoft.DotNet.XHarness.Apple/Orchestration/UninstallOrchestrator.cs
type IUninstallOrchestrator (line 18) | public interface IUninstallOrchestrator
method OrchestrateAppUninstall (line 20) | Task<ExitCode> OrchestrateAppUninstall(
class UninstallOrchestrator (line 34) | public class UninstallOrchestrator : BaseOrchestrator, IUninstallOrchest...
method UninstallOrchestrator (line 36) | public UninstallOrchestrator(
method OrchestrateAppUninstall (line 51) | public Task<ExitCode> OrchestrateAppUninstall(
method InstallApp (line 79) | protected override Task<ExitCode> InstallApp(AppBundleInformation appB...
method UninstallApp (line 82) | protected override Task<ExitCode> UninstallApp(TestTarget target, stri...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidAdbCommandArguments.cs
class AndroidAdbCommandArguments (line 10) | internal class AndroidAdbCommandArguments : XHarnessCommandArguments
method GetArguments (line 14) | protected override IEnumerable<Argument> GetArguments() => new[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidArchitecture.cs
type AndroidArchitecture (line 5) | internal enum AndroidArchitecture
class AndroidArchitectureHelper (line 13) | internal static class AndroidArchitectureHelper
method ParseAsAndroidArchitecture (line 15) | public static AndroidArchitecture ParseAsAndroidArchitecture(this stri...
method AsString (line 24) | public static string AsString(this AndroidArchitecture arch) => arch s...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidDeviceCommandArguments.cs
class AndroidDeviceCommandArguments (line 9) | internal class AndroidDeviceCommandArguments : XHarnessCommandArguments
method GetArguments (line 15) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidInstallCommandArguments.cs
class AndroidInstallCommandArguments (line 11) | internal class AndroidInstallCommandArguments : XHarnessCommandArguments...
method GetArguments (line 22) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
method Validate (line 34) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidRunCommandArguments.cs
class AndroidRunCommandArguments (line 10) | internal class AndroidRunCommandArguments : XHarnessCommandArguments, IA...
method GetArguments (line 25) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidStateCommandArguments.cs
class AndroidStateCommandArguments (line 9) | internal class AndroidStateCommandArguments : XHarnessCommandArguments
method GetArguments (line 13) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidTestCommandArguments.cs
class AndroidTestCommandArguments (line 11) | internal class AndroidTestCommandArguments : XHarnessCommandArguments, I...
method GetArguments (line 28) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
method Validate (line 46) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/AndroidUninstallCommandArguments.cs
class AndroidUninstallCommandArguments (line 9) | internal class AndroidUninstallCommandArguments : XHarnessCommandArguments
method GetArguments (line 14) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/ApiVersionArgument.cs
class ApiVersionArgument (line 7) | internal class ApiVersionArgument : OptionalIntArgument
method ApiVersionArgument (line 9) | public ApiVersionArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/DeviceArchitectureArgument.cs
class DeviceArchitectureArgument (line 9) | internal class DeviceArchitectureArgument : RepeatableArgument
method DeviceArchitectureArgument (line 11) | public DeviceArchitectureArgument()
method Validate (line 17) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/DeviceIdArgument.cs
class DeviceIdArgument (line 11) | internal class DeviceIdArgument : StringArgument
method DeviceIdArgument (line 13) | public DeviceIdArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/DeviceOutputFolderArgument.cs
class DeviceOutputFolderArgument (line 10) | internal class DeviceOutputFolderArgument : PathArgument
method DeviceOutputFolderArgument (line 12) | public DeviceOutputFolderArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/InstrumentationArguments.cs
class InstrumentationArguments (line 13) | internal class InstrumentationArguments : Argument<Dictionary<string, st...
method InstrumentationArguments (line 15) | public InstrumentationArguments()
method Action (line 20) | public override void Action(string argumentValue)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/InstrumentationNameArgument.cs
class InstrumentationNameArgument (line 11) | internal class InstrumentationNameArgument : StringArgument
method InstrumentationNameArgument (line 13) | public InstrumentationNameArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/LaunchTimeoutArgument.cs
class LaunchTimeoutArgument (line 12) | internal class LaunchTimeoutArgument : TimeSpanArgument
method LaunchTimeoutArgument (line 14) | public LaunchTimeoutArgument(TimeSpan defaultValue)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/PackageNameArgument.cs
class PackageNameArgument (line 7) | internal class PackageNameArgument : RequiredStringArgument
method PackageNameArgument (line 9) | public PackageNameArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/ShowAdbPathArgument.cs
class ShowAdbPathArgument (line 7) | internal class ShowAdbPathArgument : SwitchArgument
method ShowAdbPathArgument (line 9) | public ShowAdbPathArgument() : base("adb|show-adb-path", "Prints ONLY ...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/Arguments/WifiArgument.cs
class WifiArgument (line 10) | internal class WifiArgument : Argument<WifiStatus>
method WifiArgument (line 12) | public WifiArgument()
method Action (line 17) | public override void Action(string argumentValue)
type WifiStatus (line 25) | internal enum WifiStatus
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Android/IAndroidAppRunArguments.cs
type IAndroidAppRunArguments (line 7) | internal interface IAndroidAppRunArguments
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/AndroidHeadlessInstallCommandArguments.cs
class AndroidHeadlessInstallCommandArguments (line 11) | internal class AndroidHeadlessInstallCommandArguments : XHarnessCommandA...
method GetArguments (line 24) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/AndroidHeadlessRunCommandArguments.cs
class AndroidHeadlessRunCommandArguments (line 11) | internal class AndroidHeadlessRunCommandArguments : XHarnessCommandArgum...
method GetArguments (line 26) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/AndroidHeadlessTestCommandArguments.cs
class AndroidHeadlessTestCommandArguments (line 11) | internal class AndroidHeadlessTestCommandArguments : XHarnessCommandArgu...
method GetArguments (line 26) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/AndroidHeadlessUninstallCommandArguments.cs
class AndroidHeadlessUninstallCommandArguments (line 10) | internal class AndroidHeadlessUninstallCommandArguments : XHarnessComman...
method GetArguments (line 16) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/Arguments/RuntimePathArgument.cs
class RuntimePathArgument (line 7) | internal class RuntimePathArgument : RequiredStringArgument
method RuntimePathArgument (line 9) | public RuntimePathArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/Arguments/TestAssemblyArgument.cs
class TestAssemblyArgument (line 7) | internal class TestAssemblyArgument : RequiredStringArgument
method TestAssemblyArgument (line 9) | public TestAssemblyArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/Arguments/TestPathArgument.cs
class TestPathArgument (line 7) | internal class TestPathArgument : RequiredStringArgument
method TestPathArgument (line 9) | public TestPathArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/Arguments/TestScriptArgument.cs
class TestScriptArgument (line 7) | internal class TestScriptArgument : RequiredStringArgument
method TestScriptArgument (line 9) | public TestScriptArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/AndroidHeadless/IAndroidHeadlessAppRunArguments.cs
type IAndroidHeadlessAppRunArguments (line 8) | internal interface IAndroidHeadlessAppRunArguments
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleDeviceCommandsArguments.cs
class AppleDeviceCommandArguments (line 9) | internal class AppleDeviceCommandArguments : XHarnessCommandArguments, I...
method GetArguments (line 16) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleInstallCommandArguments.cs
class AppleInstallCommandArguments (line 11) | internal class AppleInstallCommandArguments : XHarnessCommandArguments, ...
method GetArguments (line 23) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
method Validate (line 36) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleJustRunCommandArguments.cs
class AppleJustRunCommandArguments (line 12) | internal class AppleJustRunCommandArguments : XHarnessCommandArguments, ...
method GetArguments (line 28) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
method Validate (line 45) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleJustTestCommandArguments.cs
class AppleJustTestCommandArguments (line 11) | internal class AppleJustTestCommandArguments : XHarnessCommandArguments,...
method GetArguments (line 31) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
method Validate (line 52) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleMlaunchCommandArguments.cs
class AppleMlaunchCommandArguments (line 10) | internal class AppleMlaunchCommandArguments : XHarnessCommandArguments, ...
method GetArguments (line 17) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleResetSimulatorCommandArguments.cs
class AppleResetSimulatorCommandArguments (line 11) | internal class AppleResetSimulatorCommandArguments : XHarnessCommandArgu...
method GetArguments (line 20) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
method Validate (line 30) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleRunCommandArguments.cs
class AppleRunCommandArguments (line 11) | internal class AppleRunCommandArguments : XHarnessCommandArguments, IApp...
method GetArguments (line 29) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
method Validate (line 48) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleStateCommandArguments.cs
class AppleStateCommandArguments (line 9) | internal class AppleStateCommandArguments : XHarnessCommandArguments
method GetArguments (line 18) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleTestCommandArguments.cs
class AppleTestCommandArguments (line 10) | internal class AppleTestCommandArguments : XHarnessCommandArguments, IAp...
method GetArguments (line 31) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/AppleUninstallCommandArguments.cs
class AppleUninstallCommandArguments (line 11) | internal class AppleUninstallCommandArguments : XHarnessCommandArguments...
method GetArguments (line 22) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
method Validate (line 34) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/BundleIdentifierArgument.cs
class BundleIdentifierArgument (line 7) | internal class BundleIdentifierArgument : RequiredStringArgument
method BundleIdentifierArgument (line 9) | public BundleIdentifierArgument() : base("app|a=", "Bundle identifier ...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/CommunicationChannelArgument.cs
class CommunicationChannelArgument (line 12) | internal class CommunicationChannelArgument : Argument<CommunicationChan...
method CommunicationChannelArgument (line 14) | public CommunicationChannelArgument()
method Action (line 19) | public override void Action(string argumentValue)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/DeviceNameArgument.cs
class DeviceNameArgument (line 10) | internal class DeviceNameArgument : StringArgument
method DeviceNameArgument (line 12) | public DeviceNameArgument() : base("device=", "Name or UDID of a simul...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/EnableLldbArgument.cs
class EnableLldbArgument (line 10) | internal class EnableLldbArgument : SwitchArgument
method EnableLldbArgument (line 12) | public EnableLldbArgument() : base("enable-lldb", "Allow to debug the ...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/EnvironmentalVariablesArgument.cs
class EnvironmentalVariablesArgument (line 13) | internal class EnvironmentalVariablesArgument : Argument
method EnvironmentalVariablesArgument (line 18) | public EnvironmentalVariablesArgument() : base("set-env=", "Environmen...
method Action (line 22) | public override void Action(string argumentValue)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/ForceInstallationArgument.cs
class ForceInstallationArgument (line 7) | internal class ForceInstallationArgument : SwitchArgument
method ForceInstallationArgument (line 9) | public ForceInstallationArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/HideProgressArgument.cs
class HideProgressArgument (line 7) | internal class HideProgressArgument : SwitchArgument
method HideProgressArgument (line 9) | public HideProgressArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/IncludeWirelessArgument.cs
class IncludeWirelessArgument (line 10) | internal class IncludeWirelessArgument : SwitchArgument
method IncludeWirelessArgument (line 12) | public IncludeWirelessArgument() : base("wireless:|include-wireless-de...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/LaunchTimeoutArgument.cs
class LaunchTimeoutArgument (line 12) | internal class LaunchTimeoutArgument : TimeSpanArgument
method LaunchTimeoutArgument (line 14) | public LaunchTimeoutArgument(TimeSpan defaultValue)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/ListInstalledArgument.cs
class ListInstalledArgument (line 7) | internal class ListInstalledArgument : SwitchArgument
method ListInstalledArgument (line 9) | public ListInstalledArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/MlaunchArgument.cs
class MlaunchArgument (line 16) | internal class MlaunchArgument : Argument<string>
method MlaunchArgument (line 18) | public MlaunchArgument() : base("mlaunch=", "Path to the mlaunch binar...
method Action (line 22) | public override void Action(string argumentValue) => Value = RootPath(...
method Validate (line 24) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/NoWaitArgument.cs
class NoWaitArgument (line 7) | internal class NoWaitArgument : SwitchArgument
method NoWaitArgument (line 9) | public NoWaitArgument() : base("no-wait|nowait", "Don't wait for the a...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/ResetSimulatorArgument.cs
class ResetSimulatorArgument (line 10) | internal class ResetSimulatorArgument : SwitchArgument
method ResetSimulatorArgument (line 12) | public ResetSimulatorArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/ShowDevicesUUIDArgument.cs
class ShowDevicesUUIDArgument (line 7) | internal class ShowDevicesUUIDArgument : SwitchArgument
method ShowDevicesUUIDArgument (line 9) | public ShowDevicesUUIDArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/ShowSimulatorsUUIDArgument.cs
class ShowSimulatorsUUIDArgument (line 7) | internal class ShowSimulatorsUUIDArgument : SwitchArgument
method ShowSimulatorsUUIDArgument (line 9) | public ShowSimulatorsUUIDArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/SignalAppEndArgument.cs
class SignalAppEndArgument (line 10) | internal class SignalAppEndArgument : SwitchArgument
method SignalAppEndArgument (line 12) | public SignalAppEndArgument() : base("signal-app-end", "Tells the test...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/TargetArgument.cs
class TargetArgument (line 14) | internal class TargetArgument : Argument<TestTargetOs>
method TargetArgument (line 16) | public TargetArgument() : base("target=|targets=|t=", "Test target (de...
method Action (line 20) | public override void Action(string argumentValue)
method Validate (line 36) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/XcodeArgument.cs
class XcodeArgument (line 13) | internal class XcodeArgument : PathArgument
method XcodeArgument (line 15) | public XcodeArgument() : base("xcode=", "Path where Xcode is installed...
method Validate (line 19) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Arguments/XmlResultJargonArgument.cs
class XmlResultJargonArgument (line 12) | internal class XmlResultJargonArgument : Argument<XmlResultJargon>
method XmlResultJargonArgument (line 14) | public XmlResultJargonArgument()
method Action (line 19) | public override void Action(string argumentValue)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/IAppleAppRunArguments.cs
type IAppleAppRunArguments (line 7) | internal interface IAppleAppRunArguments : IAppleArguments
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/IAppleArguments.cs
type IAppleArguments (line 7) | internal interface IAppleArguments : IXHarnessCommandArguments
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Simulators/FindCommandArguments.cs
class FindCommandArguments (line 10) | internal class FindCommandArguments : SimulatorsCommandArguments
method GetAdditionalArguments (line 12) | protected override IEnumerable<Argument> GetAdditionalArguments() => E...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Simulators/InstallCommandArguments.cs
class InstallCommandArguments (line 9) | internal class InstallCommandArguments : SimulatorsCommandArguments
method GetAdditionalArguments (line 15) | protected override IEnumerable<Argument> GetAdditionalArguments() => n...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Simulators/ListCommandArguments.cs
class ListCommandArguments (line 9) | internal class ListCommandArguments : SimulatorsCommandArguments
method GetAdditionalArguments (line 13) | protected override IEnumerable<Argument> GetAdditionalArguments() => n...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Apple/Simulators/SimulatorsCommandArguments.cs
class SimulatorsCommandArguments (line 10) | internal abstract class SimulatorsCommandArguments : XHarnessCommandArgu...
method GetArguments (line 14) | protected sealed override IEnumerable<Argument> GetArguments() =>
method GetAdditionalArguments (line 20) | protected abstract IEnumerable<Argument> GetAdditionalArguments();
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Argument.cs
class Argument (line 13) | public abstract class Argument
method Argument (line 19) | protected Argument(string prototype, string description)
method Action (line 28) | public abstract void Action(string argumentValue);
method Validate (line 34) | public virtual void Validate()
method RootPath (line 38) | protected string RootPath(string path)
method GetAllowedValues (line 55) | protected static string GetAllowedValues<TEnum>(Func<TEnum, string>? d...
method ParseArgument (line 79) | protected static TEnum ParseArgument<TEnum>(string argumentName, strin...
method Argument (line 128) | protected Argument(string prototype, string description, T defaultValue)
method ToString (line 136) | public override string ToString() => Value?.ToString() ?? base.ToStrin...
class Argument (line 124) | public abstract class Argument<T> : Argument
method Argument (line 19) | protected Argument(string prototype, string description)
method Action (line 28) | public abstract void Action(string argumentValue);
method Validate (line 34) | public virtual void Validate()
method RootPath (line 38) | protected string RootPath(string path)
method GetAllowedValues (line 55) | protected static string GetAllowedValues<TEnum>(Func<TEnum, string>? d...
method ParseArgument (line 79) | protected static TEnum ParseArgument<TEnum>(string argumentName, strin...
method Argument (line 128) | protected Argument(string prototype, string description, T defaultValue)
method ToString (line 136) | public override string ToString() => Value?.ToString() ?? base.ToStrin...
class IntArgument (line 139) | public abstract class IntArgument : Argument<int>
method IntArgument (line 141) | public IntArgument(string prototype, string description, int defaultVa...
method Action (line 146) | public override void Action(string argumentValue)
class OptionalIntArgument (line 158) | public abstract class OptionalIntArgument : Argument<int?>
method OptionalIntArgument (line 160) | public OptionalIntArgument(string prototype, string description)
method Action (line 165) | public override void Action(string argumentValue)
class StringArgument (line 177) | public abstract class StringArgument : Argument<string?>
method StringArgument (line 179) | public StringArgument(string prototype, string description)
method Action (line 184) | public override void Action(string argumentValue) => Value = argumentV...
class RequiredStringArgument (line 187) | public abstract class RequiredStringArgument : Argument<string>
method RequiredStringArgument (line 189) | public RequiredStringArgument(string prototype, string description, st...
method Action (line 194) | public override void Action(string argumentValue) => Value = argumentV...
method Validate (line 196) | public override void Validate()
class TimeSpanArgument (line 205) | public abstract class TimeSpanArgument : Argument<TimeSpan>
method TimeSpanArgument (line 207) | protected TimeSpanArgument(string prototype, string description, TimeS...
method Action (line 212) | public override void Action(string argumentValue)
class PathArgument (line 230) | public abstract class PathArgument : StringArgument
method PathArgument (line 234) | protected PathArgument(string prototype, string description, bool isRe...
method Action (line 239) | public override void Action(string argumentValue) => Value = RootPath(...
method Validate (line 241) | public override void Validate()
class RequiredPathArgument (line 250) | public abstract class RequiredPathArgument : RequiredStringArgument
method RequiredPathArgument (line 252) | protected RequiredPathArgument(string prototype, string description) :...
method Action (line 256) | public override void Action(string argumentValue) => Value = RootPath(...
class SwitchArgument (line 259) | public abstract class SwitchArgument : Argument<bool>
method SwitchArgument (line 263) | public SwitchArgument(string prototype, string description, bool defau...
method Action (line 269) | public override void Action(string argumentValue)
method ToString (line 284) | public override string ToString() => Value ? "true" : "false";
class EnumPageLoadStrategyArgument (line 287) | public abstract class EnumPageLoadStrategyArgument : Argument<PageLoadSt...
method EnumPageLoadStrategyArgument (line 291) | public EnumPageLoadStrategyArgument(string prototype, string descripti...
method Action (line 297) | public override void Action(string argumentValue)
class RepeatableArgument (line 313) | public abstract class RepeatableArgument : Argument<IEnumerable<string>>
method RepeatableArgument (line 317) | protected RepeatableArgument(string prototype, string description) : b...
method Action (line 323) | public override void Action(string argumentValue) => _values.Add(argum...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/AppPathArgument.cs
class AppPathArgument (line 10) | internal class AppPathArgument : RequiredPathArgument
method AppPathArgument (line 12) | public AppPathArgument() : base("app|a=", "Path to an already-packaged...
class OptionalAppPathArgument (line 20) | internal class OptionalAppPathArgument : PathArgument
method OptionalAppPathArgument (line 22) | public OptionalAppPathArgument() : base("app|a=", "Path to an already-...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/ClassMethodFilters.cs
class ClassMethodFilters (line 10) | internal class ClassMethodFilters : RepeatableArgument
method ClassMethodFilters (line 12) | public ClassMethodFilters()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/EnableCoverageArgument.cs
class EnableCoverageArgument (line 10) | internal class EnableCoverageArgument : SwitchArgument
method EnableCoverageArgument (line 12) | public EnableCoverageArgument() : base("enable-coverage", "Enable code...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/ExpectedExitCodeArgument.cs
class ExpectedExitCodeArgument (line 10) | internal class ExpectedExitCodeArgument : IntArgument
method ExpectedExitCodeArgument (line 12) | public ExpectedExitCodeArgument(int defaultValue)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/OutputDirectoryArgument.cs
class OutputDirectoryArgument (line 13) | internal class OutputDirectoryArgument : RequiredPathArgument
method OutputDirectoryArgument (line 15) | public OutputDirectoryArgument() : base("output-directory=|o=", "Direc...
method Validate (line 19) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/SingleMethodFilters.cs
class SingleMethodFilters (line 10) | internal class SingleMethodFilters : RepeatableArgument
method SingleMethodFilters (line 12) | public SingleMethodFilters()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/TimeoutArgument.cs
class TimeoutArgument (line 12) | internal class TimeoutArgument : TimeSpanArgument
method TimeoutArgument (line 14) | public TimeoutArgument(TimeSpan defaultTimeout)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/TypeFromAssemblyArgument.cs
class TypeFromAssemblyArgument (line 13) | internal class TypeFromAssemblyArgument<T> : Argument<IList<(string path...
method TypeFromAssemblyArgument (line 18) | public TypeFromAssemblyArgument(string prototype, string description, ...
method GetLoadedTypes (line 24) | public IEnumerable<Type> GetLoadedTypes()
method Action (line 37) | public override void Action(string argumentValue)
method Validate (line 46) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerHttpEnvironmentVariables.cs
class WebServerHttpEnvironmentVariables (line 10) | internal class WebServerHttpEnvironmentVariables : Argument<IEnumerable<...
method WebServerHttpEnvironmentVariables (line 12) | public WebServerHttpEnvironmentVariables()
method Action (line 20) | public override void Action(string argumentValue) => Value = argumentV...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerHttpsEnvironmentVariables.cs
class WebServerHttpsEnvironmentVariables (line 10) | internal class WebServerHttpsEnvironmentVariables : Argument<IEnumerable...
method WebServerHttpsEnvironmentVariables (line 12) | public WebServerHttpsEnvironmentVariables()
method Action (line 20) | public override void Action(string argumentValue) => Value = argumentV...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerMiddlewareArgument.cs
class WebServerMiddlewareArgument (line 9) | internal class WebServerMiddlewareArgument : TypeFromAssemblyArgument<Type>
method WebServerMiddlewareArgument (line 11) | public WebServerMiddlewareArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerUploadResults.cs
class WebServerUploadResults (line 7) | internal class WebServerUploadResults : SwitchArgument
method WebServerUploadResults (line 9) | public WebServerUploadResults()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerUseCorsArguments.cs
class WebServerUseCorsArguments (line 7) | internal class WebServerUseCorsArguments : SwitchArgument
method WebServerUseCorsArguments (line 9) | public WebServerUseCorsArguments()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerUseCrossOriginPolicyArguments.cs
class WebServerUseCrossOriginPolicyArguments (line 7) | internal class WebServerUseCrossOriginPolicyArguments : SwitchArgument
method WebServerUseCrossOriginPolicyArguments (line 9) | public WebServerUseCrossOriginPolicyArguments()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerUseDefaultFiles.cs
class WebServerUseDefaultFilesArguments (line 7) | internal class WebServerUseDefaultFilesArguments : SwitchArgument
method WebServerUseDefaultFilesArguments (line 9) | public WebServerUseDefaultFilesArguments()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/Arguments/WebServerUseHttpsArguments.cs
class WebServerUseHttpsArguments (line 7) | internal class WebServerUseHttpsArguments : SwitchArgument
method WebServerUseHttpsArguments (line 9) | public WebServerUseHttpsArguments()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/DiagnosticsArgument.cs
class DiagnosticsArgument (line 7) | public class DiagnosticsArgument : StringArgument
method DiagnosticsArgument (line 9) | public DiagnosticsArgument() : base("diagnostics=", "Path to a file wh...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/HelpArgument.cs
class HelpArgument (line 7) | public class HelpArgument : SwitchArgument
method HelpArgument (line 9) | public HelpArgument() : base("help|h", string.Empty, false)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/UseJsonArgument.cs
class UseJsonArgument (line 7) | internal class UseJsonArgument : SwitchArgument
method UseJsonArgument (line 9) | public UseJsonArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/VerbosityArgument.cs
class VerbosityArgument (line 9) | public class VerbosityArgument : Argument
method VerbosityArgument (line 13) | public VerbosityArgument(LogLevel level)
method Action (line 19) | public override void Action(string argumentValue)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASI/Arguments/WasmEngineArgument.cs
class WasmEngineArgument (line 9) | internal class WasmEngineArgument : Argument<WasmEngine?>
method WasmEngineArgument (line 11) | public WasmEngineArgument()
method Action (line 16) | public override void Action(string argumentValue) =>
method Validate (line 20) | public override void Validate() => Value ??= WasmEngine.WasmTime;
type WasmEngine (line 26) | internal enum WasmEngine
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASI/Arguments/WasmEngineArguments.cs
class WasmEngineArguments (line 7) | internal class WasmEngineArguments : RepeatableArgument
method WasmEngineArguments (line 9) | public WasmEngineArguments()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASI/Arguments/WasmEngineLocationArgument.cs
class WasmEngineLocationArgument (line 7) | internal class WasmEngineLocationArgument : StringArgument
method WasmEngineLocationArgument (line 9) | public WasmEngineLocationArgument() : base("wasm-engine-path=", "Path ...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASI/WasiTestCommandArguments.cs
class WasiTestCommandArguments (line 11) | internal class WasiTestCommandArguments : XHarnessCommandArguments, IWeb...
method GetArguments (line 30) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/BackgroundThrottlingArgument.cs
class BackgroundThrottlingArgument (line 7) | internal class BackgroundThrottlingArgument : SwitchArgument
method BackgroundThrottlingArgument (line 9) | public BackgroundThrottlingArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/BrowserArgument.cs
class BrowserArgument (line 10) | internal class BrowserArgument : Argument<Browser>
method BrowserArgument (line 12) | public BrowserArgument()
method Action (line 17) | public override void Action(string argumentValue) =>
method Validate (line 20) | public override void Validate()
type Browser (line 34) | internal enum Browser
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/BrowserArguments.cs
class BrowserArguments (line 7) | internal class BrowserArguments : RepeatableArgument
method BrowserArguments (line 9) | public BrowserArguments()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/BrowserLocationArgument.cs
class BrowserLocationArgument (line 7) | internal class BrowserLocationArgument : StringArgument
method BrowserLocationArgument (line 9) | public BrowserLocationArgument() : base("browser-path=", "Path to the ...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/DebuggerPortArgument.cs
class DebuggerPortArgument (line 9) | internal class DebuggerPortArgument : Argument<int?>
method DebuggerPortArgument (line 11) | public DebuggerPortArgument()
method Action (line 15) | public override void Action(string argumentValue)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/ErrorPatternsFileArgument.cs
class ErrorPatternsFileArgument (line 10) | internal class ErrorPatternsFileArgument : StringArgument
method ErrorPatternsFileArgument (line 12) | public ErrorPatternsFileArgument()
method Validate (line 17) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/HTMLFileArgument.cs
class HTMLFileArgument (line 10) | internal class HTMLFileArgument : RequiredStringArgument
method HTMLFileArgument (line 12) | public HTMLFileArgument(string defaultValue)
method Validate (line 17) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/JavaScriptEngineArgument.cs
class JavaScriptEngineArgument (line 9) | internal class JavaScriptEngineArgument : Argument<JavaScriptEngine?>
method JavaScriptEngineArgument (line 11) | public JavaScriptEngineArgument()
method Action (line 16) | public override void Action(string argumentValue) =>
method Validate (line 19) | public override void Validate()
type JavaScriptEngine (line 31) | internal enum JavaScriptEngine
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/JavaScriptEngineArguments.cs
class JavaScriptEngineArguments (line 7) | internal class JavaScriptEngineArguments : RepeatableArgument
method JavaScriptEngineArguments (line 9) | public JavaScriptEngineArguments()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/JavaScriptEngineLocationArgument.cs
class JavaScriptEngineLocationArgument (line 7) | internal class JavaScriptEngineLocationArgument : StringArgument
method JavaScriptEngineLocationArgument (line 9) | public JavaScriptEngineLocationArgument() : base("js-engine-path=", "P...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/JavaScriptFileArgument.cs
class JavaScriptFileArgument (line 7) | internal class JavaScriptFileArgument : RequiredStringArgument
method JavaScriptFileArgument (line 9) | public JavaScriptFileArgument(string defaultValue)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/LocaleArgument.cs
class LocaleArgument (line 8) | internal class LocaleArgument : RequiredStringArgument
method LocaleArgument (line 10) | public LocaleArgument(string defaultValue)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/NoHeadlessArgument.cs
class NoHeadlessArgument (line 7) | internal class NoHeadlessArgument : SwitchArgument
method NoHeadlessArgument (line 9) | public NoHeadlessArgument()
method Set (line 14) | public void Set(bool value) => Value = value;
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/NoIncognitoArgument.cs
class NoIncognitoArgument (line 7) | internal class NoIncognitoArgument : SwitchArgument
method NoIncognitoArgument (line 9) | public NoIncognitoArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/NoQuitArgument.cs
class NoQuitArgument (line 7) | internal class NoQuitArgument : SwitchArgument
method NoQuitArgument (line 9) | public NoQuitArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/PageLoadStrategyArgument.cs
class PageLoadStrategyArgument (line 10) | internal class PageLoadStrategyArgument : EnumPageLoadStrategyArgument
method PageLoadStrategyArgument (line 18) | public PageLoadStrategyArgument(PageLoadStrategy defaultValue)
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/SymbolMapFileArgument.cs
class SymbolMapFileArgument (line 7) | internal class SymbolMapFileArgument : StringArgument
method SymbolMapFileArgument (line 9) | public SymbolMapFileArgument() : base("symbol-map=|s=", "Path to wasm ...
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/SymbolicatePatternsFileArgument.cs
class SymbolicatePatternsFileArgument (line 10) | internal class SymbolicatePatternsFileArgument : StringArgument
method SymbolicatePatternsFileArgument (line 16) | public SymbolicatePatternsFileArgument()
method Validate (line 21) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/Arguments/SymbolicatorArgument.cs
class SymbolicatorArgument (line 9) | internal class SymbolicatorArgument : TypeFromAssemblyArgument<WasmSymbo...
method SymbolicatorArgument (line 11) | public SymbolicatorArgument()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/IWebServerArguments.cs
type IWebServerArguments (line 7) | internal interface IWebServerArguments
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/WasmTestBrowserCommandArguments.cs
class WasmTestBrowserCommandArguments (line 12) | internal class WasmTestBrowserCommandArguments : XHarnessCommandArgument...
method GetArguments (line 45) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
method Validate (line 76) | public override void Validate()
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/WasmTestCommandArguments.cs
class WasmTestCommandArguments (line 10) | internal class WasmTestCommandArguments : XHarnessCommandArguments, IWeb...
method GetArguments (line 37) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/WASM/WebServerCommandArguments.cs
class WebServerCommandArguments (line 10) | internal class WebServerCommandArguments : XHarnessCommandArguments, IWe...
method GetArguments (line 28) | protected override IEnumerable<Argument> GetArguments() => new Argument[]
FILE: src/Microsoft.DotNet.XHarness.CLI/CommandArguments/XHarnessCommandArguments.cs
type IXHarnessCommandArguments (line 11) | public interface IXHarnessCommandArguments
method GetCommandArguments (line 16) | IEnumerable<Argument> GetCommandArguments();
method Validate (line 17) | void Validate();
class XHarnessCommandArguments (line 20) | public abstract class XHarnessCommandArguments : IXHarnessCommandArguments
method GetCommandArguments (line 26) | public IEnumerable<Argument> GetCommandArguments() => GetArguments().C...
method Validate (line 33) | public virtual void Validate()
method GetArguments (line 44) | protected abstract IEnumerable<Argument> GetArguments();
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidAdbCommand.cs
class AndroidAdbCommand (line 17) | internal class AndroidAdbCommand : XHarnessCommand<AndroidAdbCommandArgu...
method AndroidAdbCommand (line 25) | public AndroidAdbCommand() : base(TargetPlatform.Android, "adb", false...
method InvokeInternal (line 29) | protected override Task<ExitCode> InvokeInternal(ILogger logger)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidCommand.cs
class AndroidCommand (line 17) | internal abstract class AndroidCommand<TArguments> : XHarnessCommand<TAr...
method AndroidCommand (line 22) | protected AndroidCommand(string name, bool allowsExtraArgs, string? he...
method InvokeInternal (line 28) | protected sealed override Task<ExitCode> InvokeInternal(ILogger logger)
method InvokeCommand (line 52) | protected abstract ExitCode InvokeCommand(ILogger logger);
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidCommandSet.cs
class AndroidCommandSet (line 14) | public class AndroidCommandSet : CommandSet
method AndroidCommandSet (line 16) | public AndroidCommandSet() : base("android")
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidDeviceCommand.cs
class AndroidDeviceCommand (line 18) | internal class AndroidDeviceCommand : AndroidCommand<AndroidDeviceComman...
method AndroidDeviceCommand (line 34) | public AndroidDeviceCommand() : base("device", false, CommandHelp)
method InvokeCommand (line 38) | protected override ExitCode InvokeCommand(ILogger logger)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidInstallCommand.cs
class AndroidInstallCommand (line 14) | internal class AndroidInstallCommand : AndroidCommand<AndroidInstallComm...
method AndroidInstallCommand (line 27) | public AndroidInstallCommand() : base("install", false, CommandHelp)
method InvokeCommand (line 31) | protected override ExitCode InvokeCommand(ILogger logger)
method InvokeHelper (line 53) | public static ExitCode InvokeHelper(
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidRunCommand.cs
class AndroidRunCommand (line 13) | internal class AndroidRunCommand : AndroidCommand<AndroidRunCommandArgum...
method AndroidRunCommand (line 31) | public AndroidRunCommand() : base("run", false, CommandHelp)
method InvokeCommand (line 35) | protected override ExitCode InvokeCommand(ILogger logger)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidStateCommand.cs
class AndroidStateCommand (line 21) | internal class AndroidStateCommand : GetStateCommand<AndroidStateCommand...
method AndroidStateCommand (line 27) | public AndroidStateCommand() : base(TargetPlatform.Android, new Servic...
method InvokeInternal (line 31) | protected override Task<ExitCode> InvokeInternal(ILogger logger)
method GetStateData (line 94) | private static StateData GetStateData(ILogger logger)
type StateData (line 113) | private record StateData(
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidTestCommand.cs
class AndroidTestCommand (line 14) | internal class AndroidTestCommand : AndroidCommand<AndroidTestCommandArg...
method AndroidTestCommand (line 34) | public AndroidTestCommand() : base("test", false, CommandHelp)
method InvokeCommand (line 38) | protected override ExitCode InvokeCommand(ILogger logger)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/AndroidUninstallCommand.cs
class AndroidUninstallCommand (line 13) | internal class AndroidUninstallCommand : AndroidCommand<AndroidUninstall...
method AndroidUninstallCommand (line 26) | public AndroidUninstallCommand() : base("uninstall", false, CommandHelp)
method InvokeCommand (line 30) | protected override ExitCode InvokeCommand(ILogger logger)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Android/IDiagnosticDataExtensions.cs
class IDiagnosticDataExtensions (line 10) | internal static class IDiagnosticDataExtensions
method CaptureDeviceInfo (line 12) | public static void CaptureDeviceInfo(this IDiagnosticsData data, Andro...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/AndroidHeadless/AndroidHeadlessCommandSet.cs
class AndroidHeadlessCommandSet (line 15) | public class AndroidHeadlessCommandSet : CommandSet
method AndroidHeadlessCommandSet (line 17) | public AndroidHeadlessCommandSet() : base("android-headless")
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/AndroidHeadless/AndroidHeadlessInstallCommand.cs
class AndroidHeadlessInstallCommand (line 16) | internal class AndroidHeadlessInstallCommand : AndroidCommand<AndroidHea...
method AndroidHeadlessInstallCommand (line 29) | public AndroidHeadlessInstallCommand() : base("install", false, Comman...
method InvokeCommand (line 33) | protected override ExitCode InvokeCommand(ILogger logger)
method InvokeHelper (line 73) | public static ExitCode InvokeHelper(
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/AndroidHeadless/AndroidHeadlessRunCommand.cs
class AndroidHeadlessRunCommand (line 17) | internal class AndroidHeadlessRunCommand : AndroidCommand<AndroidHeadles...
method AndroidHeadlessRunCommand (line 30) | public AndroidHeadlessRunCommand() : base("run", false, CommandHelp)
method InvokeCommand (line 34) | protected override ExitCode InvokeCommand(ILogger logger)
method InvokeHelper (line 73) | public static ExitCode InvokeHelper(
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/AndroidHeadless/AndroidHeadlessTestCommand.cs
class AndroidHeadlessTestCommand (line 16) | internal class AndroidHeadlessTestCommand : AndroidCommand<AndroidHeadle...
method AndroidHeadlessTestCommand (line 29) | public AndroidHeadlessTestCommand() : base("test", false, CommandHelp)
method InvokeCommand (line 33) | protected override ExitCode InvokeCommand(ILogger logger)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/AndroidHeadless/AndroidHeadlessUninstallCommand.cs
class AndroidHeadlessUninstallCommand (line 15) | internal class AndroidHeadlessUninstallCommand : AndroidCommand<AndroidH...
method AndroidHeadlessUninstallCommand (line 28) | public AndroidHeadlessUninstallCommand() : base("uninstall", false, Co...
method InvokeCommand (line 32) | protected override ExitCode InvokeCommand(ILogger logger)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleAppCommand.cs
class AppleAppCommand (line 24) | internal abstract class AppleAppCommand<TArguments> : AppleCommand<TArgu...
method AppleAppCommand (line 28) | protected AppleAppCommand(string name, bool allowsExtraArgs, IServiceC...
method Invoke (line 33) | protected sealed override async Task<ExitCode> Invoke(Extensions.Loggi...
method InvokeInternal (line 71) | protected abstract Task<ExitCode> InvokeInternal(ServiceProvider servi...
class ConsoleLogger (line 73) | [SuppressMessage("Usage", "CA2254:The logging message template should ...
method ConsoleLogger (line 78) | public ConsoleLogger(Extensions.Logging.ILogger logger)
method LogDebug (line 83) | public void LogDebug(string message) => _logger.LogDebug(message);
method LogInformation (line 84) | public void LogInformation(string message) => _logger.LogInformation...
method LogWarning (line 85) | public void LogWarning(string message) => _logger.LogWarning(message);
method LogError (line 86) | public void LogError(string message) => _logger.LogError(message);
method LogCritical (line 87) | public void LogCritical(string message) => _logger.LogCritical(messa...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleCommand.cs
class AppleCommand (line 17) | internal abstract class AppleCommand<TArguments> : XHarnessCommand<TArgu...
method AppleCommand (line 19) | protected AppleCommand(string name, bool allowsExtraArgs, IServiceColl...
method InvokeInternal (line 24) | protected sealed override Task<ExitCode> InvokeInternal(ILogger logger)
method Invoke (line 34) | protected abstract Task<ExitCode> Invoke(ILogger logger);
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleCommandSet.cs
class AppleCommandSet (line 18) | internal class AppleCommandSet : CommandSet
method AppleCommandSet (line 20) | public AppleCommandSet() : base("apple")
method GetAppleDependencies (line 43) | public static IServiceCollection GetAppleDependencies()
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleDeviceCommand.cs
class AppleDeviceCommand (line 20) | internal class AppleDeviceCommand : AppleCommand<AppleDeviceCommandArgum...
method AppleDeviceCommand (line 33) | public AppleDeviceCommand(IServiceCollection services) : base("device"...
method Invoke (line 37) | protected override async Task<ExitCode> Invoke(Extensions.Logging.ILog...
method ParseTarget (line 76) | private TestTargetOs ParseTarget()
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleInstallCommand.cs
class AppleInstallCommand (line 14) | internal class AppleInstallCommand : AppleAppCommand<AppleInstallCommand...
method AppleInstallCommand (line 23) | public AppleInstallCommand(IServiceCollection services) : base("instal...
method InvokeInternal (line 27) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleJustRunCommand.cs
class AppleJustRunCommand (line 14) | internal class AppleJustRunCommand : AppleAppCommand<AppleJustRunCommand...
method AppleJustRunCommand (line 23) | public AppleJustRunCommand(IServiceCollection services) : base("just-r...
method InvokeInternal (line 27) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleJustTestCommand.cs
class AppleJustTestCommand (line 15) | internal class AppleJustTestCommand : AppleAppCommand<AppleJustTestComma...
method AppleJustTestCommand (line 23) | public AppleJustTestCommand(IServiceCollection services) : base("just-...
method InvokeInternal (line 27) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleMlaunchCommand.cs
class AppleMlaunchCommand (line 18) | internal class AppleMlaunchCommand : AppleCommand<AppleMlaunchCommandArg...
method AppleMlaunchCommand (line 26) | public AppleMlaunchCommand(IServiceCollection services) : base("mlaunc...
method Invoke (line 30) | protected override async Task<ExitCode> Invoke(ILogger logger)
class SimpleMlaunchArgument (line 81) | private class SimpleMlaunchArgument : iOS.Shared.Execution.MlaunchArgu...
method SimpleMlaunchArgument (line 85) | public SimpleMlaunchArgument(string argument)
method AsCommandLineArgument (line 90) | public override string AsCommandLineArgument() => Escape(_argument);
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleResetSimulatorCommand.cs
class AppleResetSimulatorCommand (line 14) | internal class AppleResetSimulatorCommand : AppleAppCommand<AppleResetSi...
method AppleResetSimulatorCommand (line 22) | public AppleResetSimulatorCommand(IServiceCollection services) : base(...
method InvokeInternal (line 26) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleRunCommand.cs
class AppleRunCommand (line 17) | internal class AppleRunCommand : AppleAppCommand<AppleRunCommandArguments>
method AppleRunCommand (line 26) | public AppleRunCommand(IServiceCollection services) : base("run", fals...
method InvokeInternal (line 30) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleStateCommand.cs
class AppleStateCommand (line 23) | internal class AppleStateCommand : GetStateCommand<AppleStateCommandArgu...
class DeviceInfo (line 27) | private class DeviceInfo
method DeviceInfo (line 35) | public DeviceInfo(string name, string uDID, string type, string oSVe...
class SystemInfo (line 45) | private class SystemInfo
method SystemInfo (line 58) | public SystemInfo(string machineName, string oSName, string oSVersio...
method AppleStateCommand (line 73) | public AppleStateCommand() : base(TargetPlatform.Apple, new ServiceCol...
method AsJson (line 79) | private static async Task AsJson(SystemInfo info)
method AsText (line 89) | private void AsText(SystemInfo info)
method InvokeInternal (line 144) | protected override async Task<ExitCode> InvokeInternal(Extensions.Logg...
class MlaunchVersionArgument (line 235) | private class MlaunchVersionArgument : OptionArgument
method MlaunchVersionArgument (line 237) | public MlaunchVersionArgument() : base("version")
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleTestCommand.cs
class AppleTestCommand (line 19) | internal class AppleTestCommand : AppleAppCommand<AppleTestCommandArgume...
method AppleTestCommand (line 25) | public AppleTestCommand(IServiceCollection services) : base("test", fa...
method InvokeInternal (line 29) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/AppleUninstallCommand.cs
class AppleUninstallCommand (line 14) | internal class AppleUninstallCommand : AppleAppCommand<AppleUninstallCom...
method AppleUninstallCommand (line 22) | public AppleUninstallCommand(IServiceCollection services) : base("unin...
method InvokeInternal (line 26) | protected override Task<ExitCode> InvokeInternal(ServiceProvider servi...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/Simulators/FindCommand.cs
class FindCommand (line 14) | internal class FindCommand : SimulatorsCommand
method FindCommand (line 25) | public FindCommand() : base(CommandName, true, CommandHelp)
method InvokeInternal (line 29) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/Simulators/InstallCommand.cs
class InstallCommand (line 19) | internal class InstallCommand : SimulatorsCommand
method InstallCommand (line 31) | public InstallCommand() : base(CommandName, true, CommandHelp)
method InvokeInternal (line 35) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)
method Install (line 122) | private async Task<bool> Install(Simulator simulator)
method CanSimulatorBeInstalledUsingXcodeCLI (line 195) | private static bool CanSimulatorBeInstalledUsingXcodeCLI(Simulator sim...
method CanXcodeDownloadSimulatorsUsingCLI (line 209) | private static bool CanXcodeDownloadSimulatorsUsingCLI(Version xcodeVe...
method DownloadSimulator (line 215) | private async Task DownloadSimulator(Simulator simulator, string downl...
method InstallSimulator (line 304) | private async Task<bool> InstallSimulator(Simulator simulator, string ...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/Simulators/ListCommand.cs
class ListCommand (line 14) | internal class ListCommand : SimulatorsCommand
method ListCommand (line 25) | public ListCommand() : base(CommandName, false, CommandHelp)
method InvokeInternal (line 29) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/Simulators/Simulator.cs
class Simulator (line 9) | internal class Simulator
method Simulator (line 21) | public Simulator(string name, string platform, string identifier, stri...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/Simulators/SimulatorsCommand.cs
class SimulatorsCommand (line 27) | internal abstract class SimulatorsCommand : XHarnessCommand<SimulatorsCo...
method SimulatorsCommand (line 46) | protected SimulatorsCommand(string name, bool allowsExtraArgs, string ...
method ExecuteCommand (line 66) | protected async Task<(bool Succeeded, string Stdout)> ExecuteCommand(
method GetAvailableSimulators (line 91) | protected async Task<IEnumerable<Simulator>> GetAvailableSimulators()
method ReplaceStringUsingKey (line 172) | [return: NotNullIfNotNull("value")]
method IsInstalled (line 186) | protected async Task<Version?> IsInstalled(Simulator simulator)
method ParseSimulatorIds (line 291) | protected IEnumerable<string> ParseSimulatorIds()
method GetSimulatorIndexXml (line 343) | private async Task<string?> GetSimulatorIndexXml()
method DownloadFile (line 392) | private async Task<bool> DownloadFile(string url, string destinationPath)
method GetXcodeVersion (line 421) | protected async Task<Version> GetXcodeVersion()
method GetXcodeUuid (line 448) | private async Task<string> GetXcodeUuid()
class FailedToGetIndexException (line 469) | [Serializable]
method FailedToGetIndexException (line 472) | public FailedToGetIndexException() : this("Failed to download the li...
method FailedToGetIndexException (line 476) | public FailedToGetIndexException(string? message) : base(message)
method FailedToGetIndexException (line 480) | public FailedToGetIndexException(string? message, Exception? innerEx...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/Apple/Simulators/SimulatorsCommandSet.cs
class SimulatorsCommandSet (line 13) | public class SimulatorsCommandSet : CommandSet
method SimulatorsCommandSet (line 15) | public SimulatorsCommandSet() : base("simulators")
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/GetStateCommand.cs
class GetStateCommand (line 11) | internal abstract class GetStateCommand<TArguments> : XHarnessCommand<TA...
method GetStateCommand (line 16) | public GetStateCommand(TargetPlatform targetPlatform, ServiceCollectio...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASI/Engine/WasiTestCommand.cs
class WasiTestCommand (line 24) | internal class WasiTestCommand : XHarnessCommand<WasiTestCommandArguments>
method WasiTestCommand (line 32) | public WasiTestCommand() : base(TargetPlatform.WASI, "test", true, new...
method InvokeInternal (line 36) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASI/WasiCommandSet.cs
class WasiCommandSet (line 12) | public class WasiCommandSet : CommandSet
method WasiCommandSet (line 14) | public WasiCommandSet() : base("wasi")
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/Browser/WasmBrowserTestRunner.cs
class WasmBrowserTestRunner (line 26) | internal class WasmBrowserTestRunner
method WasmBrowserTestRunner (line 37) | public WasmBrowserTestRunner(WasmTestBrowserCommandArguments arguments...
method RunTestsWithWebDriver (line 46) | public async Task<ExitCode> RunTestsWithWebDriver(DriverService driver...
method RunConsoleMessagesPump (line 172) | private async Task RunConsoleMessagesPump(WebSocket socket, Cancellati...
method BuildUrl (line 219) | private string BuildUrl(ServerURLs serverURLs)
method VerbosityToString (line 267) | private string VerbosityToString() => _arguments.Verbosity.Value switch
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/Browser/WasmTestBrowserCommand.cs
class WasmTestBrowserCommand (line 26) | internal class WasmTestBrowserCommand : XHarnessCommand<WasmTestBrowserC...
method WasmTestBrowserCommand (line 35) | public WasmTestBrowserCommand()
method InvokeInternal (line 40) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)
method GetSafariDriver (line 155) | private (DriverService, IWebDriver) GetSafariDriver(ILogger logger)
method GetFirefoxDriver (line 167) | private (DriverService, IWebDriver) GetFirefoxDriver(ILogger logger)
method GetChromeDriver (line 227) | private (DriverService, IWebDriver) GetChromeDriver(string sessionLang...
method GetEdgeDriver (line 234) | private (DriverService, IWebDriver) GetEdgeDriver(string sessionLangua...
method GetChromiumDriver (line 244) | private (DriverService, IWebDriver) GetChromiumDriver<TDriverOptions, ...
method CreateWebDriver (line 392) | private static (DriverService, IWebDriver) CreateWebDriver<TDriverServ...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/ErrorPatternScanner.cs
class ErrorPatternScanner (line 10) | public class ErrorPatternScanner
method ErrorPatternScanner (line 17) | public ErrorPatternScanner(string patternsFile, ILogger logger)
method IsError (line 66) | public bool IsError(string line, out string? matchedPattern)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/JS/WasmTestCommand.cs
class WasmTestCommand (line 25) | internal class WasmTestCommand : XHarnessCommand<WasmTestCommandArguments>
method WasmTestCommand (line 33) | public WasmTestCommand() : base(TargetPlatform.WASM, "test", true, new...
method InvokeInternal (line 37) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/WasmCommandSet.cs
class WasmCommandSet (line 12) | public class WasmCommandSet : CommandSet
method WasmCommandSet (line 14) | public WasmCommandSet() : base("wasm")
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/WasmLogMessage.cs
class WasmLogMessage (line 3) | class WasmLogMessage
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/WasmTestMessagesProcessor.cs
class WasmTestMessagesProcessor (line 19) | public class WasmTestMessagesProcessor
method WasmTestMessagesProcessor (line 43) | public WasmTestMessagesProcessor(string xmlResultsFilePath, string std...
method RunAsync (line 66) | public async Task RunAsync(CancellationToken token)
method Invoke (line 87) | public void Invoke(string message, bool isError = false)
method InvokeAsync (line 97) | public Task InvokeAsync(string message, CancellationToken token, bool ...
method WarnOnceIfStopped (line 117) | private void WarnOnceIfStopped()
method LogMessage (line 126) | private void LogMessage(string message, bool isError)
method CompleteAndFlushAsync (line 134) | public async Task<ExitCode> CompleteAndFlushAsync(TimeSpan? timeout = ...
method ProcessMessage (line 157) | private void ProcessMessage(string message, bool isError = false)
method Symbolicate (line 272) | private string Symbolicate(string msg)
method ScanMessageForErrorPatterns (line 280) | private void ScanMessageForErrorPatterns(string message)
method ProcessErrorMessage (line 289) | public void ProcessErrorMessage(string message) => Invoke(message, isE...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WASM/WebServerCommand.cs
class WebServerCommand (line 16) | internal class WebServerCommand : XHarnessCommand<WebServerCommandArgume...
method WebServerCommand (line 25) | public WebServerCommand()
method InvokeInternal (line 30) | protected override async Task<ExitCode> InvokeInternal(ILogger logger)
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/WebServer.cs
class WebServer (line 29) | public class WebServer
method Start (line 31) | internal static Task<ServerURLs> Start(IWebServerArguments arguments, ...
method Start (line 38) | internal static async Task<ServerURLs> Start(TestWebServerOptions webS...
class TestWebServerStartup (line 112) | private class TestWebServerStartup
method TestWebServerStartup (line 116) | public TestWebServerStartup(IWebHostEnvironment hostingEnvironment)
method Configure (line 121) | public void Configure(IApplicationBuilder app, IOptionsMonitor<TestW...
class TestWebServerOptions (line 207) | internal class TestWebServerOptions
method CopyTo (line 219) | public void CopyTo(TestWebServerOptions otherOptions)
method FromArguments (line 232) | public static TestWebServerOptions FromArguments(IWebServerArguments...
type ServerURLs (line 250) | public record ServerURLs(string Http, string? Https);
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/XHarnessCommand.cs
class XHarnessCommand (line 20) | public abstract class XHarnessCommand<T> : Command where T : IXHarnessCo...
method XHarnessCommand (line 44) | protected XHarnessCommand(
method Invoke (line 71) | public sealed override int Invoke(IEnumerable<string> arguments)
method InvokeInternal (line 164) | protected abstract Task<ExitCode> InvokeInternal(ILogger logger);
method CreateLoggerFactory (line 166) | private static ILoggerFactory CreateLoggerFactory(LogLevel verbosity) ...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/XHarnessHelpCommand.cs
class XHarnessHelpCommand (line 19) | internal class XHarnessHelpCommand : HelpCommand
method Invoke (line 21) | public override int Invoke(IEnumerable<string> arguments)
method PrintCommandHelp (line 82) | private static void PrintCommandHelp(CommandSet commandSet, string? su...
FILE: src/Microsoft.DotNet.XHarness.CLI/Commands/XHarnessVersionCommand.cs
class XHarnessVersionCommand (line 10) | internal class XHarnessVersionCommand : Command
method XHarnessVersionCommand (line 12) | public XHarnessVersionCommand() : base("version") { }
method Invoke (line 14) | public override int Invoke(IEnumerable<string> arguments)
method GetAssemblyVersion (line 34) | public static FileVersionInfo GetAssemblyVersion() => FileVersionInfo....
FILE: src/Microsoft.DotNet.XHarness.CLI/Program.cs
class Program (line 19) | public static class Program
method Main (line 27) | public static int Main(string[] args)
method GetXHarnessCommandSet (line 70) | public static CommandSet GetXHarnessCommandSet()
method IsOutputSensitive (line 98) | private static bool IsOutputSensitive(string[] args)
FILE: src/Microsoft.DotNet.XHarness.CLI/Resources/Strings.Designer.cs
class Strings (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Strings (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: src/Microsoft.DotNet.XHarness.CLI/XHarnessConsoleLoggerFormatter.cs
class XHarnessConsoleLoggerFormatter (line 29) | internal class XHarnessConsoleLoggerFormatter : ConsoleFormatter
method XHarnessConsoleLoggerFormatter (line 41) | public XHarnessConsoleLoggerFormatter(IOptionsMonitor<SimpleConsoleFor...
method Write (line 49) | public override void Write<TState>(in LogEntry<TState> logEntry, IExte...
method WriteMessage (line 88) | private void WriteMessage(TextWriter textWriter, string message, bool ...
method GetLogLevelString (line 103) | private static string GetLogLevelString(LogLevel logLevel) => logLevel...
method GetLogLevelConsoleColors (line 114) | private (ConsoleColor? Foreground, ConsoleColor? Background) GetLogLev...
method WriteColoredMessage (line 135) | private static void WriteColoredMessage(TextWriter textWriter, string ...
method GetForegroundColorEscapeCode (line 161) | private static string GetForegroundColorEscapeCode(ConsoleColor color)...
method GetBackgroundColorEscapeCode (line 181) | private static string GetBackgroundColorEscapeCode(ConsoleColor color)...
FILE: src/Microsoft.DotNet.XHarness.Common/CLI/EnvironmentVariables.cs
class EnvironmentVariables (line 9) | public static class EnvironmentVariables
class Names (line 11) | public static class Names
method IsTrue (line 19) | public static bool IsTrue(string varName) =>
FILE: src/Microsoft.DotNet.XHarness.Common/CLI/ExitCode.cs
type ExitCode (line 11) | public enum ExitCode
FILE: src/Microsoft.DotNet.XHarness.Common/CLI/NoDeviceFoundException.cs
class NoDeviceFoundException (line 10) | public class NoDeviceFoundException : Exception
method NoDeviceFoundException (line 12) | public NoDeviceFoundException()
method NoDeviceFoundException (line 16) | public NoDeviceFoundException(string message) : base(message)
method NoDeviceFoundException (line 20) | public NoDeviceFoundException(string message, Exception innerException...
FILE: src/Microsoft.DotNet.XHarness.Common/CommandDiagnostics.cs
type IDiagnosticsData (line 15) | public interface IDiagnosticsData
class CommandDiagnostics (line 48) | public class CommandDiagnostics : IDiagnosticsData
method CommandDiagnostics (line 77) | public CommandDiagnostics(ILogger logger, TargetPlatform platform, str...
method SaveToJsonFile (line 96) | public void SaveToJsonFile(string targetFile)
class DiagnosticsFile (line 163) | public class DiagnosticsFile
FILE: src/Microsoft.DotNet.XHarness.Common/Execution/IMacOSProcessManager.cs
type IMacOSProcessManager (line 13) | public interface IMacOSProcessManager : IProcessManager
method ExecuteXcodeCommandAsync (line 19) | Task<ProcessExecutionResult> ExecuteXcodeCommandAsync(
method ExecuteXcodeCommandAsync (line 26) | Task<ProcessExecutionResult> ExecuteXcodeCommandAsync(
FILE: src/Microsoft.DotNet.XHarness.Common/Execution/IProcessManager.cs
class ProcessExecutionResult (line 14) | public class ProcessExecutionResult
type IProcessManager (line 24) | public interface IProcessManager
method ExecuteCommandAsync (line 26) | Task<ProcessExecutionResult> ExecuteCommandAsync(
method ExecuteCommandAsync (line 34) | Task<ProcessExecutionResult> ExecuteCommandAsync(
method RunAsync (line 44) | Task<ProcessExecutionResult> RunAsync(
method RunAsync (line 52) | Task<ProcessExecutionResult> RunAsync(
method KillTreeAsync (line 62) | Task KillTreeAsync(Process process, ILog log, bool? diagnostics = true);
method KillTreeAsync (line 63) | Task KillTreeAsync(int pid, ILog log, bool? diagnostics = true);
FILE: src/Microsoft.DotNet.XHarness.Common/Execution/LinuxProcessManager.cs
class LinuxProcessManager (line 9) | public class LinuxProcessManager : UnixProcessManager
method kill (line 11) | [DllImport("libc")]
method Kill (line 14) | protected override int Kill(int pid, int sig) => kill(pid, sig);
FILE: src/Microsoft.DotNet.XHarness.Common/Execution/MacOSProcessManager.cs
class MacOSProcessManager (line 18) | public class MacOSProcessManager : UnixProcessManager, IMacOSProcessManager
method MacOSProcessManager (line 28) | public MacOSProcessManager(string? xcodeRoot = null)
method ExecuteXcodeCommandAsync (line 61) | public Task<ProcessExecutionResult> ExecuteXcodeCommandAsync(
method ExecuteXcodeCommandAsync (line 74) | public Task<ProcessExecutionResult> ExecuteXcodeCommandAsync(string ex...
method kill (line 79) | [DllImport("/usr/lib/libc.dylib")]
method Kill (line 84) | protected override int Kill(int pid, int sig) => kill(pid, sig);
method DetectXcodePath (line 90) | public static string DetectXcodePath()
method DetectMlaunchPath (line 129) | public static string DetectMlaunchPath()
FILE: src/Microsoft.DotNet.XHarness.Common/Execution/ProcessManager.cs
class ProcessManager (line 20) | public abstract class ProcessManager : IProcessManager
method Kill (line 24) | protected abstract int Kill(int pid, int sig);
method GetChildProcessIds (line 25) | protected abstract List<int> GetChildProcessIds(ILog log, int pid);
method ExecuteCommandAsync (line 31) | public async Task<ProcessExecutionResult> ExecuteCommandAsync(string f...
method ExecuteCommandAsync (line 39) | public async Task<ProcessExecutionResult> ExecuteCommandAsync(string f...
method RunAsync (line 54) | public Task<ProcessExecutionResult> RunAsync(
method RunAsync (line 63) | public Task<ProcessExecutionResult> RunAsync(
method KillTreeAsync (line 74) | public Task KillTreeAsync(Process process, ILog log, bool? diagnostics...
method KillTreeAsync (line 76) | public Task KillTreeAsync(int pid, ILog log, bool? diagnostics = true)...
method KillTreeAsync (line 78) | protected static async Task KillTreeAsync(
method RunAsyncInternal (line 161) | protected Task<ProcessExecutionResult> RunAsyncInternal(
method RunAsyncInternal (line 181) | protected static async Task<ProcessExecutionResult> RunAsyncInternal(
method WaitForExitAsync (line 371) | private static async Task<bool> WaitForExitAsync(Process process, Time...
method ToDictionary (line 409) | private static Dictionary<string, string?> ToDictionary(IEnumerable en...
FILE: src/Microsoft.DotNet.XHarness.Common/Execution/ProcessManagerFactory.cs
class ProcessManagerFactory (line 10) | public static class ProcessManagerFactory
method CreateProcessManager (line 12) | public static IProcessManager CreateProcessManager()
FILE: src/Microsoft.DotNet.XHarness.Common/Execution/UnixProcessManager.cs
class UnixProcessManager (line 12) | public abstract class UnixProcessManager : ProcessManager
method GetChildProcessIds (line 14) | protected override List<int> GetChildProcessIds(ILog log, int pid) => ...
method GetChildProcessIdsInternal (line 16) | protected static List<int> GetChildProcessIdsInternal(ILog log, int pid)
FILE: src/Microsoft.DotNet.XHarness.Common/Execution/WindowsProcessManager.cs
class WindowsProcessManager (line 11) | public class WindowsProcessManager : ProcessManager
method GetChildProcessIds (line 15) | protected override List<int> GetChildProcessIds(ILog log, int pid) => ...
method Kill (line 17) | protected override int Kill(int pid, int sig)
FILE: src/Microsoft.DotNet.XHarness.Common/Logging/AggregatedLog.cs
class Log (line 11) | public abstract partial class Log
method CreateReadableAggregatedLog (line 13) | public static IFileBackedLog CreateReadableAggregatedLog(IFileBackedLo...
method CreateAggregatedLog (line 15) | public static ILog CreateAggregatedLog(params ILog[] logs) => new Aggr...
class AggregatedLog (line 18) | private class AggregatedLog : Log
method AggregatedLog (line 22) | public AggregatedLog(params ILog[] logs)
method WriteImpl (line 28) | protected override void WriteImpl(string? value)
method Write (line 36) | public override void Write(byte[] buffer, int offset, int count)
method Flush (line 44) | public override void Flush()
method Dispose (line 52) | public override void Dispose()
class ReadableAggregatedLog (line 61) | private class ReadableAggregatedLog : AggregatedLog, IFileBackedLog
method ReadableAggregatedLog (line 65) | public ReadableAggregatedLog(IFileBackedLog defaultLog, params ILog[...
method GetReader (line 73) | public StreamReader GetReader() => _defaultLog.GetReader();
FILE: src/Microsoft.DotNet.XHarness.Common/Logging/CallbackLog.cs
class CallbackLog (line 13) | public class CallbackLog : Log
method CallbackLog (line 18) | public CallbackLog(Action<string> onWrite)
method Dispose (line 25) | public override void Dispose()
method Flush (line 30) | public override void Flush()
method WriteImpl (line 34) | protected override void WriteImpl(string? value)
FILE: src/Microsoft.DotNet.XHarness.Common/Logging/ConsoleLog.cs
class ConsoleLog (line 14) | public class ConsoleLog : ReadableLog
method WriteImpl (line 18) | protected override void WriteImpl(string? value)
method GetReader (line 28) | public override StreamReader GetReader()
method Flush (line 37) | public override void Flush()
method Dispose (line 41) | public override void Dispose()
FILE: src/Microsoft.DotNet.XHarness.Common/Logging/FileBackedLog.cs
type IFileBackedLog (line 7) | public interface IFileBackedLog : IReadableLog
class FileBackedLog (line 12) | public abstract class FileBackedLog : ReadableLog, IFileBackedLog
method FileBackedLog (line 14) | protected FileBackedLog(string? description = null) : base(description...
FILE: src/Microsoft.DotNet.XHarness.Common/Logging/ILog.cs
type ILog (line 10) | public interface ILog : IDisposable
method Write (line 15) | void Write(byte[] buffer, int offset, int count);
method Write (line 16) | void Write(string? value);
method WriteLine (line 17) | void WriteLine(string? value);
method WriteLine (line 18) | void WriteLine(string format, params object?[] args);
method Flush (line 19) | void Flush();
FILE: src/Microsoft.DotNet.XHarness.Common/Logging/Log.cs
class Log (line 10) | public abstract partial class Log : ILog
method Log (line 16) | protected Log(string? description = null)
method Write (line 21) | public virtual void Write(byte[] buffer, int offset, int count) => Wri...
method Write (line 23) | public void Write(string? value)
method WriteLine (line 35) | public void WriteLine(string? value) => Write((value ?? string.Empty) ...
method WriteLine (line 37) | public void WriteLine(string format, params object?[] args) => Write(s...
method ToString (line 39) | public override string ToString() => Description ?? string.Empty;
method Flush (line 41) | public abstract void Flush();
method Dispose (line 43) | public abstract void Dispose();
method WriteImpl (line 45) | protected abstract void WriteImpl(string? value);
FILE: src/Microsoft.DotNet.XHarness.Common/Logging/MemoryLog.cs
class MemoryLog (line 14) | public class MemoryLog : ReadableLog
method WriteImpl (line 18) | protected override void WriteImpl(string? value) => _captured.Append(v...
method GetReader (line 20) | public override StreamReader GetReader()
method Flush (line 26) | public override void Flush()
method Dispose (line 30) | public override void Dispose()
method ToString (line 35) | public override string ToString() => _captured.ToString();
FILE: src/Microsoft.DotNet.XHarness.Common/Logging/NullLog.cs
class NullLog (line 13) | public class NullLog : ILog
method Dispose (line 20) | public void Dispose()
method Flush (line 25) | public void Flush()
method Write (line 29) | public void Write(byte[] buffer, int offset, int count)
method Write (line 33) | public void Write(string? value)
method WriteLine (line 37) | public void WriteLine(string? value)
method WriteLine (line 41) | public static void WriteLine(StringBuilder value)
method WriteLine (line 45) | public void WriteLine(string format, params object?[] args)
FILE: src/Microsoft.DotNet.XHarness.Common/Logging/ReadableLog.cs
type IReadableLog (line 9) | public interface IReadableLog : ILog
method GetReader (line 11) | StreamReader GetReader();
class ReadableLog (line 14) | public abstract class ReadableLog : Log, IReadableLog
method ReadableLog (line 16) | protected ReadableLog(string? description = null) : base(description) { }
method GetReader (line 18) | public abstract StreamReader GetReader();
FILE: src/Microsoft.DotNet.XHarness.Common/Logging/ScanLog.cs
class ScanLog (line 12) | public class ScanLog : Log
method ScanLog (line 22) | public ScanLog(string tag, Action tagFoundNotify)
method WriteImpl (line 35) | protected override void WriteImpl(string? value)
method Flush (line 53) | public override void Flush()
method Dispose (line 57) | public override void Dispose()
method Add (line 62) | private void Add(char c)
method IsMatch (line 75) | private bool IsMatch()
FILE: src/Microsoft.DotNet.XHarness.Common/RunSummaryEmitter.cs
class RunSummaryEmitter (line 18) | public static class RunSummaryEmitter
method EmitRunSummary (line 26) | public static void EmitRunSummary(
method EmitRunSummary (line 45) | public static void EmitRunSummary(
method EmitJsonResultBlock (line 62) | public static void EmitJsonResultBlock(
method WriteResultJsonFile (line 89) | public static void WriteResultJsonFile(
method BuildResultData (line 120) | private static Dictionary<string, object?> BuildResultData(
FILE: src/Microsoft.DotNet.XHarness.Common/TargetPlatform.cs
type TargetPlatform (line 7) | public enum TargetPlatform
FILE: src/Microsoft.DotNet.XHarness.Common/Utilities/DisposableList.cs
class DisposableList (line 10) | public class DisposableList<T> : List<T>, IDisposable where T : IDisposable
method Dispose (line 12) | public void Dispose()
FILE: src/Microsoft.DotNet.XHarness.Common/Utilities/Extensions.cs
class Extensions (line 10) | public static class Extensions
method TimeoutAfter (line 13) | public static async Task<bool> TimeoutAfter(this Task task, TimeSpan t...
method TimeoutAfter (line 31) | public static async Task<bool> TimeoutAfter<T>(this Task<T> task, Time...
FILE: src/Microsoft.DotNet.XHarness.Common/Utilities/FileUtils.cs
class FileUtils (line 13) | public static class FileUtils
method TryFindExecutableInPATH (line 19) | public static bool TryFindExecutableInPATH(string filename, [NotNullWh...
FILE: src/Microsoft.DotNet.XHarness.Common/Utilities/StringUtils.cs
class StringUtils (line 12) | public class StringUtils
method StringUtils (line 18) | static StringUtils()
method FormatArguments (line 31) | public static string FormatArguments(params string[] arguments) => For...
method FormatArguments (line 33) | public static string FormatArguments(IList<string> arguments) => strin...
method QuoteForProcess (line 35) | private static string[]? QuoteForProcess(params string[] array)
method Quote (line 51) | public static string Quote(string? f)
method QuoteForProcess (line 81) | private static string QuoteForProcess(string f)
method QuoteForProcess (line 114) | private static string[]? QuoteForProcess(IList<string> arguments)
FILE: src/Microsoft.DotNet.XHarness.Common/WasmSymbolicatorBase.cs
class WasmSymbolicatorBase (line 10) | public abstract class WasmSymbolicatorBase
method Init (line 15) | public virtual bool Init(string? symbolMapFile, string? symbolsPattern...
method Create (line 23) | public static WasmSymbolicatorBase? Create(Type? symbolicatorType, str...
method Symbolicate (line 49) | public abstract string Symbolicate(string msg);
FILE: src/Microsoft.DotNet.XHarness.Common/XmlResultJargon.cs
type XmlResultJargon (line 6) | public enum XmlResultJargon
FILE: src/Microsoft.DotNet.XHarness.InstrumentationBase.Xunit/DefaultAndroidEntryPoint.cs
class DefaultAndroidEntryPoint (line 28) | public class DefaultAndroidEntryPoint : AndroidApplicationEntryPoint
method DefaultAndroidEntryPoint (line 47) | public DefaultAndroidEntryPoint(string resultsPath, Dictionary<string,...
method GetTestAssemblies (line 75) | protected override IEnumerable<TestAssemblyInfo> GetTestAssemblies()
method TerminateWithSuccess (line 82) | protected override void TerminateWithSuccess()
method ConfigureFilters (line 86) | private static void ConfigureFilters(string? filter, Action<string, bo...
method GetTestRunner (line 97) | protected override TestRunner GetTestRunner(LogWriter logWriter)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/AndroidApplicationEntryPointBase.cs
class AndroidApplicationEntryPointBase (line 16) | public abstract class AndroidApplicationEntryPointBase : ApplicationEntr...
method RunAsync (line 27) | public override async Task RunAsync()
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/ApplicationEntryPoint.cs
type TestRunnerType (line 15) | public enum TestRunnerType
class ApplicationEntryPoint (line 36) | public abstract class ApplicationEntryPoint
method GetTestAssemblies (line 74) | protected abstract IEnumerable<TestAssemblyInfo> GetTestAssemblies();
method GetTestRunner (line 79) | protected abstract TestRunner GetTestRunner(LogWriter logWriter);
method TerminateWithSuccess (line 120) | protected abstract void TerminateWithSuccess();
method RunAsync (line 125) | public abstract Task RunAsync();
method OnTestStarted (line 132) | private void OnTestStarted(object? sender, string testName) => TestSta...
method OnTestCompleted (line 134) | private void OnTestCompleted(object? sender, (string TestName, TestRes...
method GetIgnoredCategories (line 136) | private async Task<List<string>> GetIgnoredCategories()
method ConfigureRunnerFilters (line 155) | internal static void ConfigureRunnerFilters(TestRunner runner, Applica...
method WriteResults (line 176) | private static async Task WriteResults(TestRunner runner, ApplicationO...
method InternalRunAsync (line 200) | private async Task<TestRunner> InternalRunAsync(LogWriter logger)
method InternalRunAsync (line 251) | protected async Task<TestRunner> InternalRunAsync(ApplicationOptions o...
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/ApplicationOptions.cs
type XmlMode (line 13) | internal enum XmlMode
class ApplicationOptions (line 19) | public class ApplicationOptions
method ApplicationOptions (line 25) | public ApplicationOptions()
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/CoverageManager.cs
class CoverageManager (line 18) | public class CoverageManager
method CoverageManager (line 22) | public CoverageManager(string? outputPath)
method PrepareForCoverage (line 51) | public void PrepareForCoverage()
method GetCoverageResults (line 66) | public string? GetCoverageResults()
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/Extensions.cs
class Extensions (line 7) | internal static partial class Extensions
method YesNo (line 9) | public static string YesNo(this bool b) => b ? "yes" : "no";
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/IDevice.cs
type IDevice (line 12) | public interface IDevice
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/IgnoreFileParser.cs
class IgnoreFileParser (line 17) | internal static class IgnoreFileParser
method ParseLine (line 19) | private static string ParseLine(string line)
method ParseStreamAsync (line 32) | public static async Task<IEnumerable<string>> ParseStreamAsync(TextRea...
method ParseAssemblyResourcesAsync (line 49) | public static async Task<IEnumerable<string>> ParseAssemblyResourcesAs...
method ParseContentFilesAsync (line 70) | public static async Task<IEnumerable<string>> ParseContentFilesAsync(s...
method ParseTraitsFileAsync (line 89) | public static async Task<IEnumerable<string>> ParseTraitsFileAsync(str...
method ParseTraitsContentFileAsync (line 106) | public static Task<IEnumerable<string>> ParseTraitsContentFileAsync(st...
method ParseTraitsContentFile (line 112) | public static IEnumerable<string> ParseTraitsContentFile(string conten...
method ParseContentFiles (line 132) | public static IEnumerable<string> ParseContentFiles(string contentDir)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/LogWriter.cs
class LogWriter (line 12) | public class LogWriter
method LogWriter (line 19) | public LogWriter() : this(null, Console.Out) { }
method LogWriter (line 21) | public LogWriter(IDevice? device) : this(device, Console.Out) { }
method LogWriter (line 23) | public LogWriter(TextWriter w) : this(null, w) { }
method LogWriter (line 25) | public LogWriter(IDevice? device, TextWriter writer)
method objc_msgSend (line 35) | [System.Runtime.InteropServices.DllImport("/usr/lib/libobjc.dylib")]
method InitLogging (line 38) | public void InitLogging()
method OnError (line 50) | public void OnError(string message)
method OnWarning (line 61) | public void OnWarning(string message)
method OnDebug (line 72) | public void OnDebug(string message)
method OnDiagnostic (line 83) | public void OnDiagnostic(string message)
method OnInfo (line 94) | public void OnInfo(string message)
method Info (line 105) | public void Info(string message)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/MinimumLogLevel.cs
type MinimumLogLevel (line 7) | public enum MinimumLogLevel
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TcpTextWriter.cs
class TcpTextWriter (line 21) | internal class TcpTextWriter : TextWriter
method TcpTextWriter (line 27) | private TcpTextWriter(StreamWriter writer)
method InitializeWithTunnelConnection (line 32) | public static TcpTextWriter InitializeWithTunnelConnection(int port)
method InitializeWithDirectConnection (line 70) | public static TcpTextWriter InitializeWithDirectConnection(string host...
method Close (line 91) | public override void Close()
method Dispose (line 96) | protected override void Dispose(bool disposing) => _writer?.Dispose();
method Flush (line 98) | public override void Flush()
method Write (line 104) | public override void Write(char value)
method Write (line 109) | public override void Write(char[]? buffer)
method Write (line 114) | public override void Write(char[] buffer, int index, int count)
method Write (line 119) | public override void Write(string? value)
method WriteLine (line 126) | public override void WriteLine()
method SelectHostName (line 132) | private static string SelectHostName(string[] names, int port)
method ValidatePort (line 192) | private static void ValidatePort(int port)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestAssemblyInfo.cs
class TestAssemblyInfo (line 10) | public class TestAssemblyInfo
method TestAssemblyInfo (line 15) | public TestAssemblyInfo(Assembly assembly, string fullPath)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestCompletionStatus.cs
type TestCompletionStatus (line 7) | internal enum TestCompletionStatus
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestExecutionState.cs
class TestExecutionState (line 9) | internal class TestExecutionState
method TestExecutionState (line 16) | internal TestExecutionState() { }
method Start (line 18) | internal void Start() => Started = new TimeSpan(DateTime.Now.Ticks);
method Finish (line 20) | internal void Finish() => Finished = new TimeSpan(DateTime.Now.Ticks);
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestFailureInfo.cs
class TestFailureInfo (line 13) | public class TestFailureInfo
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestResult.cs
type TestResult (line 6) | public enum TestResult
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestRunResult.cs
type TestRunResult (line 3) | public struct TestRunResult
method TestRunResult (line 43) | internal TestRunResult(TestRunner runner)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestRunSelector.cs
class TestRunSelector (line 7) | internal class TestRunSelector
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestRunSelectorType.cs
type TestRunSelectorType (line 7) | internal enum TestRunSelectorType
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/TestRunner.cs
class TestRunner (line 14) | public abstract class TestRunner
method TestRunner (line 109) | protected TestRunner(LogWriter logger)
method Run (line 114) | public abstract Task Run(IEnumerable<TestAssemblyInfo> testAssemblies);
method WriteResultsToFile (line 115) | public abstract Task<string> WriteResultsToFile(XmlResultJargon xmlRes...
method WriteResultsToFile (line 116) | public abstract Task WriteResultsToFile(TextWriter writer, XmlResultJa...
method SkipTests (line 117) | public abstract void SkipTests(IEnumerable<string> tests);
method SkipCategories (line 118) | public abstract void SkipCategories(IEnumerable<string> categories);
method SkipMethod (line 119) | public abstract void SkipMethod(string method, bool isExcluded);
method SkipClass (line 120) | public abstract void SkipClass(string className, bool isExcluded);
method OnError (line 122) | protected void OnError(string message) => Logger.OnError(message);
method OnWarning (line 124) | protected void OnWarning(string message) => Logger.OnWarning(message);
method OnDebug (line 126) | protected void OnDebug(string message) => Logger.OnDebug(message);
method OnDiagnostic (line 128) | protected void OnDiagnostic(string message) => Logger.OnDiagnostic(mes...
method OnInfo (line 130) | protected void OnInfo(string message) => Logger.OnInfo(message);
method OnAssemblyStart (line 132) | protected void OnAssemblyStart(Assembly asm)
method OnAssemblyFinish (line 136) | protected void OnAssemblyFinish(Assembly asm)
method LogFailureSummary (line 140) | protected void LogFailureSummary()
method GetResultsFilePath (line 160) | protected virtual string GetResultsFilePath()
method OnTestStarted (line 176) | protected virtual void OnTestStarted(string testName) => TestStarted?....
method OnTestCompleted (line 178) | protected virtual void OnTestCompleted((string TestName, TestResult Te...
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/WasmApplicationEntryPointBase.cs
class WasmApplicationEntryPointBase (line 11) | public abstract class WasmApplicationEntryPointBase : ApplicationEntryPoint
method RunAsync (line 17) | public override async Task RunAsync()
method TerminateWithSuccess (line 42) | protected override void TerminateWithSuccess() => Environment.Exit(0);
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Common/iOSApplicationEntryPointBase.cs
class iOSApplicationEntryPointBase (line 11) | public abstract class iOSApplicationEntryPointBase : ApplicationEntryPoint
method RunAsync (line 23) | public override async Task RunAsync()
FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/FilterBuilder.cs
class FilterBuilder (line 15) | internal class FilterBuilder
method FilterBuilder (line 24) | public FilterBuilder(ITestFilterBuilder testFilterBuilder, bool runAss...
method BuildWhereClause (line 30) | internal string? BuildWhereClause() // does not need to be internal, d...
method GetFilter (line 64) | public TestFilter GetFilter()
FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/INUnitTestRunner.cs
type INUnitTestRunner (line 13) | internal interface INUnitTestRunner
method IncreasePassedTests (line 15) | void IncreasePassedTests();
method IncreaseSkippedTests (line 17) | void IncreaseSkippedTests();
method IncreaseFailedTests (line 19) | void IncreaseFailedTests();
method IncreaseInconclusiveTests (line 21) | void IncreaseInconclusiveTests();
method Add (line 23) | void Add(TestFailureInfo info);
FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/IResultSummary.cs
type IResultSummary (line 7) | public interface IResultSummary : IList<ITestRun>
FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/NUnit3XmlOutputWriter.cs
class NUnit3XmlOutputWriter (line 20) | internal class NUnit3XmlOutputWriter : OutputWriter
method NUnit3XmlOutputWriter (line 25) | public NUnit3XmlOutputWriter(DateTime runStartTime) => _runStartTime =...
method WriteResultFile (line 32) | public override void WriteResultFile(IResultSummary result, TextWriter...
method WriteXmlOutput (line 49) | private void WriteXmlOutput(IResultSummary result, XmlWriter xmlWriter)
method InitializeXmlFile (line 58) | private void InitializeXmlFile(IResultSummary result)
method WriteEnvironmentElement (line 96) | private void WriteEnvironmentElement()
method WriteResultElement (line 122) | private void WriteResultElement(IResultSummary result)
method TerminateXmlFile (line 146) | private void TerminateXmlFile()
FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/NUnitTestListener.cs
class NUnitTestListener (line 15) | internal class NUnitTestListener : ITestEventListener
method NUnitTestListener (line 20) | public NUnitTestListener(INUnitTestRunner runner, LogWriter logger)
method TestStarted (line 26) | private void TestStarted(XmlNode testEvent)
method TestFinished (line 42) | private void TestFinished(XmlNode testEvent)
method OnTestEvent (line 129) | public void OnTestEvent(string report)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/NUnitTestRunner.cs
class NUnitTestRunner (line 18) | internal class NUnitTestRunner : TestRunner, INUnitTestRunner
method NUnitTestRunner (line 25) | public NUnitTestRunner(LogWriter logger) : base(logger)
method IncreasePassedTests (line 37) | public void IncreasePassedTests()
method IncreaseSkippedTests (line 43) | public void IncreaseSkippedTests() => SkippedTests++;
method IncreaseFailedTests (line 45) | public void IncreaseFailedTests()
method IncreaseInconclusiveTests (line 51) | public void IncreaseInconclusiveTests()
method Add (line 57) | public void Add(TestFailureInfo info)
method Run (line 60) | public override async Task Run(IEnumerable<TestAssemblyInfo> testAssem...
method ShouldRunAssembly (line 115) | private bool ShouldRunAssembly(TestAssemblyInfo assemblyInfo)
method ReportFilteredAssembly (line 147) | private bool ReportFilteredAssembly(TestAssemblyInfo assemblyInfo, boo...
method WriteResultsToFile (line 161) | public override Task<string> WriteResultsToFile(XmlResultJargon jargon)
method WriteResultsToFile (line 179) | public override Task WriteResultsToFile(TextWriter writer, XmlResultJa...
method SkipTests (line 191) | public override void SkipTests(IEnumerable<string> tests)
method SkipCategories (line 194) | public override void SkipCategories(IEnumerable<string> categories)
method SkipMethod (line 197) | public override void SkipMethod(string method, bool _)
method SkipClass (line 200) | public override void SkipClass(string className, bool _)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/OutputWriter.cs
class OutputWriter (line 15) | internal abstract class OutputWriter
method WriteResultFile (line 22) | public void WriteResultFile(IResultSummary result, string outputPath)
method WriteResultFile (line 33) | public abstract void WriteResultFile(IResultSummary result, TextWriter...
FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/ResultSummary.cs
class ResultSummary (line 16) | internal class ResultSummary : List<ITestRun>, IResultSummary
method GetSummaryData (line 61) | private void GetSummaryData()
method ResultSummary (line 95) | public ResultSummary(string testSuite, TestRunner testRunner) : base()
FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/TestStatusExtensions.cs
class TestStatusExtensions (line 11) | internal static class TestStatusExtensions
method ToXmlResultValue (line 13) | public static string ToXmlResultValue(this TestStatus status, XmlResul...
FILE: src/Microsoft.DotNet.XHarness.TestRunners.NUnit/XmlResultJargonExtensions.cs
class XmlResultJargonExtensions (line 10) | internal static class XmlResultJargonExtensions
method GetWriter (line 12) | public static OutputWriter GetWriter(this XmlResultJargon jargon) => j...
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/AndroidApplicationEntryPoint.cs
class AndroidApplicationEntryPoint (line 11) | public abstract class AndroidApplicationEntryPoint : AndroidApplicationE...
method GetTestRunner (line 15) | protected override TestRunner GetTestRunner(LogWriter logWriter)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/CompletionCallbackExecutionSink.cs
class CompletionCallbackExecutionSink (line 14) | internal class CompletionCallbackExecutionSink : global::Xunit.Sdk.LongL...
method CompletionCallbackExecutionSink (line 23) | public CompletionCallbackExecutionSink(IExecutionSink innerSink, Actio...
method Dispose (line 29) | public void Dispose() => _innerSink.Dispose();
method OnMessageWithTypes (line 31) | public bool OnMessageWithTypes(IMessageSinkMessage message, HashSet<st...
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/CustomXunitTestRunner.cs
class CustomXunitTestRunner (line 22) | internal abstract class CustomXunitTestRunner : XunitTestRunnerBase
method CustomXunitTestRunner (line 24) | protected CustomXunitTestRunner(LogWriter logger) : base(logger)
method ConsumeAssembliesElement (line 33) | internal XElement ConsumeAssembliesElement()
method CreateConfiguration (line 42) | protected abstract TestAssemblyConfiguration CreateConfiguration();
method Run (line 44) | public override async Task Run(IEnumerable<TestAssemblyInfo> testAssem...
method Combine (line 114) | private ExecutionSummary Combine(ExecutionSummary aggregateSummary, Ex...
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/EnvironmentVariables.cs
class EnvironmentVariables (line 10) | internal static class EnvironmentVariables
method IsTrue (line 12) | public static bool IsTrue(string varName) => Environment.GetEnvironmen...
method IsLogTestStart (line 14) | public static bool IsLogTestStart() => IsTrue("XHARNESS_LOG_TEST_START");
method IsLogThreadId (line 16) | public static bool IsLogThreadId() => IsTrue("XHARNESS_LOG_THREAD_ID");
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/ReflectionBasedXunitTestRunner.cs
class ReflectionBasedXunitTestRunner (line 20) | internal class ReflectionBasedXunitTestRunner : CustomXunitTestRunner
method ReflectionBasedXunitTestRunner (line 24) | public ReflectionBasedXunitTestRunner(LogWriter logger) : base(logger)
method CreateConfiguration (line 33) | protected override TestAssemblyConfiguration CreateConfiguration()
method WriteResultsToFile (line 46) | public override Task<string> WriteResultsToFile(XmlResultJargon xmlRes...
method WriteResultsToFile (line 61) | public override Task WriteResultsToFile(TextWriter writer, XmlResultJa...
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/TestCaseExtensions.cs
class TestCaseExtensions (line 16) | public static class TestCaseExtensions
method HasTraits (line 23) | public static bool HasTraits(this ITestCase testCase) =>
method TryGetTrait (line 26) | public static bool TryGetTrait(this ITestCase testCase,
method GetTestClass (line 57) | public static string? GetTestClass(this ITestCase testCase) =>
method GetNamespace (line 60) | public static string? GetNamespace(this ITestCase testCase)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/ThreadlessXunitTestRunner.cs
class ThreadlessXunitTestRunner (line 18) | internal class ThreadlessXunitTestRunner : CustomXunitTestRunner
method ThreadlessXunitTestRunner (line 20) | public ThreadlessXunitTestRunner(LogWriter logger) : base(logger)
method CreateConfiguration (line 28) | protected override TestAssemblyConfiguration CreateConfiguration()
method WriteResultsToFile (line 40) | public override async Task<string> WriteResultsToFile(XmlResultJargon ...
method WriteResultsToFile (line 47) | public override async Task WriteResultsToFile(TextWriter writer, XmlRe...
class ThreadlessXunitDiscoverer (line 53) | internal class ThreadlessXunitDiscoverer : global::Xunit.Sdk.XunitTestFr...
method ThreadlessXunitDiscoverer (line 55) | public ThreadlessXunitDiscoverer(IAssemblyInfo assemblyInfo, ISourceIn...
method FindWithoutThreads (line 60) | public void FindWithoutThreads(bool includeSourceInformation, IMessage...
class ConsoleDiagnosticMessageSink (line 80) | internal class ConsoleDiagnosticMessageSink(LogWriter logger) : global::...
method OnMessage (line 82) | public bool OnMessage(IMessageSinkMessage message)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/WasmApplicationEntryPoint.cs
class WasmApplicationEntryPoint (line 14) | public abstract class WasmApplicationEntryPoint : WasmApplicationEntryPo...
method GetTestRunner (line 28) | protected override TestRunner GetTestRunner(LogWriter logWriter)
method GetTestAssemblies (line 55) | protected override IEnumerable<TestAssemblyInfo> GetTestAssemblies()
method Run (line 58) | public async Task<int> Run()
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/WasmThreadedTestRunner.cs
class WasmThreadedTestRunner (line 18) | internal class WasmThreadedTestRunner : XUnitTestRunner
method WasmThreadedTestRunner (line 20) | public WasmThreadedTestRunner(LogWriter logger) : base(logger)
method Run (line 28) | public override Task Run(IEnumerable<TestAssemblyInfo> testAssemblies)
method WriteResultsToFile (line 34) | public override Task WriteResultsToFile(TextWriter writer, XmlResultJa...
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/WasmXmlResultWriter.cs
class WasmXmlResultWriter (line 17) | internal class WasmXmlResultWriter
method WriteResultsToFile (line 19) | public async static Task WriteResultsToFile(XElement assembliesElement)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/XUnitFilter.cs
class XUnitFilter (line 15) | internal class XUnitFilter
method CreateSingleFilter (line 24) | public static XUnitFilter CreateSingleFilter(string singleTestName, bo...
method CreateAssemblyFilter (line 40) | public static XUnitFilter CreateAssemblyFilter(string assemblyName, bo...
method CreateNamespaceFilter (line 62) | public static XUnitFilter CreateNamespaceFilter(string namespaceName, ...
method CreateClassFilter (line 78) | public static XUnitFilter CreateClassFilter(string className, bool exc...
method CreateTraitFilter (line 94) | public static XUnitFilter CreateTraitFilter(string traitName, string? ...
method ApplyTraitFilter (line 111) | private bool ApplyTraitFilter(ITestCase testCase, Func<bool, bool>? re...
method ApplyTypeNameFilter (line 142) | private bool ApplyTypeNameFilter(ITestCase testCase, Func<bool, bool>?...
method ApplySingleFilter (line 157) | private bool ApplySingleFilter(ITestCase testCase, Func<bool, bool>? r...
method ApplyNamespaceFilter (line 169) | private bool ApplyNamespaceFilter(ITestCase testCase, Func<bool, bool>...
method IsExcluded (line 188) | public bool IsExcluded(TestAssemblyInfo assembly, Action<string>? repo...
method IsExcluded (line 212) | public bool IsExcluded(ITestCase testCase, Action<string>? log = null)
method ReportFilteredTest (line 230) | private bool ReportFilteredTest(ITestCase testCase, bool excluded, Act...
method ReportFilteredAssembly (line 247) | private static bool ReportFilteredAssembly(TestAssemblyInfo assemblyIn...
method AppendDesc (line 261) | private static void AppendDesc(StringBuilder sb, string name, string? ...
method ToString (line 271) | public override string ToString()
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/XUnitFilterType.cs
type XUnitFilterType (line 7) | internal enum XUnitFilterType
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/XUnitFiltersCollection.cs
class XUnitFiltersCollection (line 17) | internal class XUnitFiltersCollection : List<XUnitFilter>
method IsExcludedInternal (line 34) | private bool IsExcludedInternal(IEnumerable<XUnitFilter> filters, Func...
method IsExcluded (line 61) | public bool IsExcluded(TestAssemblyInfo assembly, Action<string>? log ...
method IsExcluded (line 64) | public bool IsExcluded(ITestCase testCase, Action<string>? log = null)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/XUnitTestRunner.cs
class XsltIdGenerator (line 24) | internal class XsltIdGenerator
method GenerateHash (line 28) | public int GenerateHash() => _seed++;
class XUnitTestRunner (line 31) | internal class XUnitTestRunner : XunitTestRunnerBase
method ConsumeAssembliesElement (line 39) | internal XElement ConsumeAssembliesElement()
method XUnitTestRunner (line 53) | public XUnitTestRunner(LogWriter logger) : base(logger)
method AddFilter (line 101) | public void AddFilter(XUnitFilter filter)
method SetFilters (line 108) | public void SetFilters(List<XUnitFilter> newFilters)
method HandleEvent (line 124) | private void HandleEvent<T>(string name, MessageHandlerArgs<T> args, A...
method GetThreadIdForLog (line 137) | protected string GetThreadIdForLog()
method HandleTestStarting (line 145) | private void HandleTestStarting(MessageHandlerArgs<ITestStarting> args)
method HandleTestSkipped (line 162) | private void HandleTestSkipped(MessageHandlerArgs<ITestSkipped> args)
method HandleTestPassed (line 172) | private void HandleTestPassed(MessageHandlerArgs<ITestPassed> args)
method HandleTestOutput (line 191) | private void HandleTestOutput(MessageHandlerArgs<ITestOutput> args)
method HandleTestMethodStarting (line 201) | private void HandleTestMethodStarting(MessageHandlerArgs<ITestMethodSt...
method HandleTestMethodFinished (line 214) | private void HandleTestMethodFinished(MessageHandlerArgs<ITestMethodFi...
method HandleTestMethodCleanupFailure (line 228) | private void HandleTestMethodCleanupFailure(MessageHandlerArgs<ITestMe...
method HandleTestFinished (line 242) | private void HandleTestFinished(MessageHandlerArgs<ITestFinished> args)
method HandleTestFailed (line 256) | private void HandleTestFailed(MessageHandlerArgs<ITestFailed> args)
method HandleTestCollectionStarting (line 310) | private void HandleTestCollectionStarting(MessageHandlerArgs<ITestColl...
method HandleTestCollectionFinished (line 323) | private void HandleTestCollectionFinished(MessageHandlerArgs<ITestColl...
method HandleTestCollectionCleanupFailure (line 336) | private void HandleTestCollectionCleanupFailure(MessageHandlerArgs<ITe...
method HandleTestCleanupFailure (line 349) | private void HandleTestCleanupFailure(MessageHandlerArgs<ITestCleanupF...
method HandleTestClassStarting (line 362) | private void HandleTestClassStarting(MessageHandlerArgs<ITestClassStar...
method HandleTestClassFinished (line 373) | private void HandleTestClassFinished(MessageHandlerArgs<ITestClassFini...
method HandleTestClassDisposeStarting (line 386) | private void HandleTestClassDisposeStarting(MessageHandlerArgs<ITestCl...
method HandleTestClassDisposeFinished (line 398) | private void HandleTestClassDisposeFinished(MessageHandlerArgs<ITestCl...
method HandleTestClassConstructionStarting (line 410) | private void HandleTestClassConstructionStarting(MessageHandlerArgs<IT...
method HandleTestClassConstructionFinished (line 422) | private void HandleTestClassConstructionFinished(MessageHandlerArgs<IT...
method HandleTestClassCleanupFailure (line 434) | private void HandleTestClassCleanupFailure(MessageHandlerArgs<ITestCla...
method HandleTestCaseStarting (line 448) | private void HandleTestCaseStarting(MessageHandlerArgs<ITestCaseStarti...
method HandleTestCaseFinished (line 460) | private void HandleTestCaseFinished(MessageHandlerArgs<ITestCaseFinish...
method HandleTestCaseCleanupFailure (line 473) | private void HandleTestCaseCleanupFailure(MessageHandlerArgs<ITestCase...
method HandleTestAssemblyStarting (line 486) | private void HandleTestAssemblyStarting(MessageHandlerArgs<ITestAssemb...
method HandleTestAssemblyFinished (line 499) | private void HandleTestAssemblyFinished(MessageHandlerArgs<ITestAssemb...
method HandleTestAssemblyCleanupFailure (line 513) | private void HandleTestAssemblyCleanupFailure(MessageHandlerArgs<ITest...
method HandleBeforeTestStarting (line 526) | private void HandleBeforeTestStarting(MessageHandlerArgs<IBeforeTestSt...
method HandleBeforeTestFinished (line 538) | private void HandleBeforeTestFinished(MessageHandlerArgs<IBeforeTestFi...
method HandleAfterTestStarting (line 548) | private void HandleAfterTestStarting(MessageHandlerArgs<IAfterTestStar...
method HandleAfterTestFinished (line 558) | private void HandleAfterTestFinished(MessageHandlerArgs<IAfterTestFini...
method HandleTestExecutionSummary (line 568) | private void HandleTestExecutionSummary(MessageHandlerArgs<ITestExecut...
method HandleTestAssemblyExecutionStarting (line 591) | private void HandleTestAssemblyExecutionStarting(MessageHandlerArgs<IT...
method HandleTestAssemblyExecutionFinished (line 601) | private void HandleTestAssemblyExecutionFinished(MessageHandlerArgs<IT...
method HandleTestAssemblyDiscoveryStarting (line 612) | private void HandleTestAssemblyDiscoveryStarting(MessageHandlerArgs<IT...
method HandleTestAssemblyDiscoveryFinished (line 623) | private void HandleTestAssemblyDiscoveryFinished(MessageHandlerArgs<IT...
method HandleDiagnosticMessage (line 635) | private void HandleDiagnosticMessage(MessageHandlerArgs<IDiagnosticMes...
method HandleDiagnosticErrorMessage (line 645) | private void HandleDiagnosticErrorMessage(MessageHandlerArgs<IErrorMes...
method HandleDiscoveryCompleteMessage (line 655) | private void HandleDiscoveryCompleteMessage(MessageHandlerArgs<IDiscov...
method HandleDiscoveryTestCaseMessage (line 665) | private void HandleDiscoveryTestCaseMessage(MessageHandlerArgs<ITestCa...
method RaiseTestSkippedCase (line 677) | private void RaiseTestSkippedCase(ITestResultMessage message, IEnumera...
method ReportTestCases (line 691) | private void ReportTestCases(string verb, IEnumerable<ITestCase> testC...
method ReportTestCases (line 693) | private void ReportTestCases(string verb, IEnumerable<ITestCase> testC...
method ReportTestCase (line 711) | private void ReportTestCase(string verb, ITestCase testCase, Action<st...
method LogAssemblyInformation (line 721) | private void LogAssemblyInformation(ITestAssemblyMessage message, Acti...
method LogFailureInformation (line 732) | private void LogFailureInformation(IFailureInformation info, Action<st...
method EnsureLogger (line 746) | private Action<string> EnsureLogger(Action<string> log) => log ?? OnInfo;
method LogTestMethodDetails (line 749) | private static void LogTestMethodDetails(IMethodInfo method, Action<st...
method LogTestOutput (line 756) | private void LogTestOutput(ITestFinished test, Action<string> log = nu...
method LogTestOutput (line 758) | private void LogTestOutput(ITestResultMessage test, Action<string> log...
method LogTestOutput (line 760) | private void LogTestOutput(decimal executionTime, string output, Actio...
method LogTestCollectionDetails (line 775) | private void LogTestCollectionDetails(ITestCollection collection, Acti...
method LogTestClassDetails (line 777) | private void LogTestClassDetails(ITestClass klass, Action<string> log ...
method LogTestDetails (line 784) | private void LogTestDetails(ITest test, Action<string> log = null, Str...
method LogSummary (line 793) | private void LogSummary(IFinishedMessage summary, Action<string> log =...
method LogSummary (line 801) | private void LogSummary(ExecutionSummary summary, Action<string> log =...
method LogSourceInformation (line 810) | private void LogSourceInformation(ISourceInformation source, Action<st...
method GetAssemblyInfo (line 827) | private static string GetAssemblyInfo(ITestAssembly assembly)
method do_log (line 838) | private void do_log(string message, Action<string> log = null, StringB...
method Run (line 850) | public override async Task Run(IEnumerable<TestAssemblyInfo> testAssem...
method WriteResultsToFile (line 912) | public override Task<string> WriteResultsToFile(XmlResultJargon jargon)
method WriteResultsToFile (line 941) | public override Task WriteResultsToFile(TextWriter writer, XmlResultJa...
method Transform_Results (line 983) | private void Transform_Results(string xsltResourceName, XElement eleme...
method GetConfigurationFileStream (line 1014) | protected virtual Stream GetConfigurationFileStream(Assembly assembly)
method GetConfiguration (line 1036) | protected virtual TestAssemblyConfiguration GetConfiguration(Assembly ...
method GetFrameworkOptionsForDiscovery (line 1055) | protected virtual ITestFrameworkDiscoveryOptions GetFrameworkOptionsFo...
method GetFrameworkOptionsForExecution (line 1065) | protected virtual ITestFrameworkExecutionOptions GetFrameworkOptionsFo...
method Run (line 1075) | private async Task<XElement> Run(Assembly assembly, string assemblyPath)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/XunitTestRunnerBase.cs
class XunitTestRunnerBase (line 12) | public abstract class XunitTestRunnerBase : TestRunner
method XunitTestRunnerBase (line 16) | protected XunitTestRunnerBase(LogWriter logger) : base(logger)
method SkipTests (line 20) | public override void SkipTests(IEnumerable<string> tests)
method SkipCategories (line 55) | public override void SkipCategories(IEnumerable<string> categories) =>...
method SkipCategories (line 57) | public virtual void SkipCategories(IEnumerable<string> categories, boo...
method SkipMethod (line 78) | public override void SkipMethod(string method, bool isExcluded)
method SkipClass (line 81) | public override void SkipClass(string className, bool isExcluded)
method SkipNamespace (line 84) | public virtual void SkipNamespace(string namespaceName, bool isExcluded)
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/YieldingXunitTestFrameworkExecutor.cs
class YieldingXunit2 (line 16) | public class YieldingXunit2 : Xunit2
method YieldingXunit2 (line 20) | public YieldingXunit2(AppDomainSupport appDomainSupport,
method RunTestsAsync (line 36) | public async Task RunTestsAsync(IEnumerable<ITestCase> testCases, IMes...
class NullSourceInformationProvider (line 42) | internal class NullSourceInformationProvider : ISourceInformationProvider
method GetSourceInformation (line 46) | public ISourceInformation GetSourceInformation(ITestCase testCase)
method Dispose (line 51) | public void Dispose() { }
class YieldingXunitTestFrameworkExecutor (line 54) | internal class YieldingXunitTestFrameworkExecutor : XunitTestFrameworkEx...
method YieldingXunitTestFrameworkExecutor (line 56) | public YieldingXunitTestFrameworkExecutor(AssemblyName assemblyName, I...
method RunTestCasesAsync (line 61) | public async Task RunTestCasesAsync(IEnumerable<IXunitTestCase> testCa...
method RunTestCases (line 67) | protected override async void RunTestCases(IEnumerable<IXunitTestCase>...
class YieldingXunitTestAssemblyRunner (line 73) | internal class YieldingXunitTestAssemblyRunner : XunitTestAssemblyRunner
method YieldingXunitTestAssemblyRunner (line 75) | public YieldingXunitTestAssemblyRunner(ITestAssembly testAssembly, IEn...
method RunTestCollectionAsync (line 81) | protected override async Task<RunSummary> RunTestCollectionAsync(IMess...
method RunTestCollectionsAsync (line 88) | protected override async Task<RunSummary> RunTestCollectionsAsync(IMes...
class YieldingXunitTestCollectionRunner (line 95) | internal class YieldingXunitTestCollectionRunner : XunitTestCollectionRu...
method YieldingXunitTestCollectionRunner (line 97) | public YieldingXunitTestCollectionRunner(ITestCollection testCollectio...
method RunTestClassAsync (line 101) | protected override async Task<RunSummary> RunTestClassAsync(ITestClass...
class YieldingXunitTestClassRunner (line 109) | internal class YieldingXunitTestClassRunner : XunitTestClassRunner
method YieldingXunitTestClassRunner (line 111) | public YieldingXunitTestClassRunner(ITestClass testClass, IReflectionT...
method RunTestMethodAsync (line 116) | protected override async Task<RunSummary> RunTestMethodAsync(ITestMeth...
FILE: src/Microsoft.DotNet.XHarness.TestRunners.Xunit/iOSApplicationEntryPoint.cs
class iOSApplicationEntryPoint (line 11) | public abstract class iOSApplicationEntryPoint : iOSApplicationEntryPoin...
method GetTestRunner (line 13) | protected override TestRunner GetTestRunner(LogWriter logWriter)
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/AppBundleInformation.cs
class AppBundleInformation (line 8) | public class AppBundleInformation
method AppBundleInformation (line 19) | public AppBundleInformation(
method FromBundleId (line 43) | public static AppBundleInformation FromBundleId(string bundleIdentifie...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/AppBundleInformationParser.cs
type IAppBundleInformationParser (line 17) | public interface IAppBundleInformationParser
method ParseFromProject (line 19) | Task<AppBundleInformation> ParseFromProject(string projectFilePath, Te...
method ParseFromAppBundle (line 21) | Task<AppBundleInformation> ParseFromAppBundle(string appPackagePath, T...
type IAppBundleLocator (line 24) | public interface IAppBundleLocator
method LocateAppBundle (line 26) | Task<string?> LocateAppBundle(XmlDocument projectFile, string projectF...
class AppBundleInformationParser (line 29) | public class AppBundleInformationParser : IAppBundleInformationParser
method AppBundleInformationParser (line 37) | public AppBundleInformationParser(IProcessManager processManager, IApp...
method ParseFromProject (line 43) | public async Task<AppBundleInformation> ParseFromProject(string projec...
method ParseFromAppBundle (line 105) | public async Task<AppBundleInformation> ParseFromAppBundle(string appP...
method GetPlistProperty (line 162) | private async Task<string> GetPlistProperty(
method Contains (line 203) | private static bool Contains(string haystack, string needle)
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Collections/BlockingEnumerableCollection.cs
class BlockingEnumerableCollection (line 17) | public class BlockingEnumerableCollection<T> : IEnumerable<T> where T : ...
method Add (line 31) | public void Add(T device)
method SetCompleted (line 36) | public void SetCompleted() => _completed.TrySetResult(true);
method WaitForCompletion (line 38) | private void WaitForCompletion() => _completed.Task.Wait();
method Reset (line 40) | public void Reset()
method GetEnumerator (line 46) | public IEnumerator<T> GetEnumerator() => new Enumerator(this);
method GetEnumerator (line 48) | IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
class Enumerator (line 50) | private class Enumerator : IEnumerator<T>
method Enumerator (line 55) | public Enumerator(BlockingEnumerableCollection<T> collection)
method Dispose (line 64) | public void Dispose() => _enumerator?.Dispose();
method MoveNext (line 66) | public bool MoveNext()
method Reset (line 77) | public void Reset() => _enumerator?.Reset();
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Collections/IAsyncEnumerable.cs
type IAsyncEnumerable (line 9) | public interface IAsyncEnumerable
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/CrashSnapshotReporter.cs
type ICrashSnapshotReporter (line 18) | public interface ICrashSnapshotReporter
method EndCaptureAsync (line 20) | Task EndCaptureAsync(TimeSpan timeout);
method StartCaptureAsync (line 21) | Task StartCaptureAsync();
class CrashSnapshotReporter (line 24) | public class CrashSnapshotReporter : ICrashSnapshotReporter
method CrashSnapshotReporter (line 35) | public CrashSnapshotReporter(IMlaunchProcessManager processManager,
method StartCaptureAsync (line 61) | public async Task StartCaptureAsync() => _initialCrashes = await Creat...
method EndCaptureAsync (line 63) | public async Task EndCaptureAsync(TimeSpan timeout)
method ProcessCrash (line 151) | private async Task<IFileBackedLog> ProcessCrash(string crashFile)
method GetSymbolicateCrashReportAsync (line 178) | private async Task<IFileBackedLog> GetSymbolicateCrashReportAsync(IFil...
method CreateCrashReportsSnapshotAsync (line 202) | private async Task<HashSet<string>> CreateCrashReportsSnapshotAsync()
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/Arguments.cs
class SdkRootArgument (line 13) | public sealed class SdkRootArgument : SingleValueArgument
method SdkRootArgument (line 15) | public SdkRootArgument(string sdkPath) : base("sdkroot", sdkPath, false)
class ListDevicesArgument (line 23) | public sealed class ListDevicesArgument : SingleValueArgument
method ListDevicesArgument (line 25) | public ListDevicesArgument(string outputFile) : base("listdev", output...
class ListWirelessDevicesArgument (line 33) | public sealed class ListWirelessDevicesArgument : SingleValueArgument
method ListWirelessDevicesArgument (line 35) | public ListWirelessDevicesArgument(bool wirelessEnabled) : base("list-...
class LogDevArgument (line 43) | public sealed class LogDevArgument : OptionArgument
method LogDevArgument (line 45) | public LogDevArgument() : base("logdev")
class ListSimulatorsArgument (line 53) | public sealed class ListSimulatorsArgument : SingleValueArgument
method ListSimulatorsArgument (line 55) | public ListSimulatorsArgument(string outputFile) : base("listsim", out...
class ListCrashReportsArgument (line 63) | public sealed class ListCrashReportsArgument : SingleValueArgument
method ListCrashReportsArgument (line 65) | public ListCrashReportsArgument(string outputFile) : base("list-crash-...
class DeviceArgument (line 73) | public sealed class DeviceArgument : SingleValueArgument
method DeviceArgument (line 75) | public DeviceArgument(string deviceType) : base("device", deviceType)
class DeviceNameArgument (line 83) | public sealed class DeviceNameArgument : SingleValueArgument
method DeviceNameArgument (line 87) | public DeviceNameArgument(string deviceName) : base(ArgName, deviceNam...
method DeviceNameArgument (line 91) | public DeviceNameArgument(IDevice device) : base(ArgName, device.UDID,...
class InstallAppOnDeviceArgument (line 99) | public sealed class InstallAppOnDeviceArgument : SingleValueArgument
method InstallAppOnDeviceArgument (line 101) | public InstallAppOnDeviceArgument(string appPath) : base("installdev",...
class InstallAppOnSimulatorArgument (line 109) | public sealed class InstallAppOnSimulatorArgument : SingleValueArgument
method InstallAppOnSimulatorArgument (line 111) | public InstallAppOnSimulatorArgument(string appPath) : base("installsi...
class UninstallAppFromDeviceArgument (line 119) | public sealed class UninstallAppFromDeviceArgument : SingleValueArgument
method UninstallAppFromDeviceArgument (line 121) | public UninstallAppFromDeviceArgument(string appBundleId) : base("unin...
class DefaultOutputFormatArgument (line 129) | public sealed class DefaultOutputFormatArgument : SingleValueArgument
method DefaultOutputFormatArgument (line 131) | public DefaultOutputFormatArgument() : base("output-format", "Default")
class XmlOutputFormatArgument (line 139) | public sealed class XmlOutputFormatArgument : SingleValueArgument
method XmlOutputFormatArgument (line 141) | public XmlOutputFormatArgument() : base("output-format", "XML")
class DownloadCrashReportArgument (line 149) | public sealed class DownloadCrashReportArgument : SingleValueArgument
method DownloadCrashReportArgument (line 151) | public DownloadCrashReportArgument(string deviceName) : base("download...
class DownloadCrashReportToArgument (line 159) | public sealed class DownloadCrashReportToArgument : SingleValueArgument
method DownloadCrashReportToArgument (line 161) | public DownloadCrashReportToArgument(string outputFile) : base("downlo...
class ListExtraDataArgument (line 170) | public sealed class ListExtraDataArgument : OptionArgument
method ListExtraDataArgument (line 172) | public ListExtraDataArgument() : base("list-extra-data")
class AttachNativeDebuggerArgument (line 180) | public sealed class AttachNativeDebuggerArgument : OptionArgument
method AttachNativeDebuggerArgument (line 182) | public AttachNativeDebuggerArgument() : base("attach-native-debugger")
class DisableMemoryLimitsArgument (line 191) | public sealed class DisableMemoryLimitsArgument : OptionArgument
method DisableMemoryLimitsArgument (line 193) | public DisableMemoryLimitsArgument() : base("disable-memory-limits")
class WaitForExitArgument (line 198) | public sealed class WaitForExitArgument : OptionArgument
method WaitForExitArgument (line 200) | public WaitForExitArgument() : base("wait-for-exit")
class SetAppArgumentArgument (line 208) | public sealed class SetAppArgumentArgument : MlaunchArgument
method SetAppArgumentArgument (line 212) | public SetAppArgumentArgument(string value, bool isAppArg = false)
method AsCommandLineArgument (line 222) | public override string AsCommandLineArgument() => "-argument=" + _value;
class SetEnvVariableArgument (line 228) | public sealed class SetEnvVariableArgument : MlaunchArgument
method SetEnvVariableArgument (line 233) | public SetEnvVariableArgument(string variableName, object variableValue)
method AsCommandLineArgument (line 247) | public override string AsCommandLineArgument() => Escape($"-setenv={_v...
class SetStdoutArgument (line 253) | public sealed class SetStdoutArgument : SingleValueArgument
method SetStdoutArgument (line 255) | public SetStdoutArgument(string targetFile) : base("stdout", targetFile)
class SetStderrArgument (line 263) | public sealed class SetStderrArgument : SingleValueArgument
method SetStderrArgument (line 265) | public SetStderrArgument(string targetFile) : base("stderr", targetFile)
class LaunchDeviceArgument (line 273) | public sealed class LaunchDeviceArgument : SingleValueArgument
method LaunchDeviceArgument (line 277) | public LaunchDeviceArgument(string launchAppPath) : base(ArgName, laun...
method LaunchDeviceArgument (line 281) | public LaunchDeviceArgument(AppBundleInformation appInfo) : base(ArgNa...
class LaunchDeviceBundleIdArgument (line 289) | public sealed class LaunchDeviceBundleIdArgument : SingleValueArgument
method LaunchDeviceBundleIdArgument (line 293) | public LaunchDeviceBundleIdArgument(string bundleId) : base(ArgName, b...
method LaunchDeviceBundleIdArgument (line 297) | public LaunchDeviceBundleIdArgument(AppBundleInformation appInfo) : ba...
class LaunchSimulatorAppArgument (line 305) | public sealed class LaunchSimulatorAppArgument : SingleValueArgument
method LaunchSimulatorAppArgument (line 309) | public LaunchSimulatorAppArgument(string launchAppPath) : base(ArgName...
method LaunchSimulatorAppArgument (line 313) | public LaunchSimulatorAppArgument(AppBundleInformation appInfo) : base...
class LaunchSimulatorArgument (line 321) | public sealed class LaunchSimulatorArgument : OptionArgument
method LaunchSimulatorArgument (line 325) | public LaunchSimulatorArgument() : base(ArgName)
class LaunchSimulatorBundleArgument (line 333) | public sealed class LaunchSimulatorBundleArgument : SingleValueArgument
method LaunchSimulatorBundleArgument (line 335) | public LaunchSimulatorBundleArgument(AppBundleInformation appInfo) : b...
class SimulatorUDIDArgument (line 343) | public sealed class SimulatorUDIDArgument : MlaunchArgument
method SimulatorUDIDArgument (line 347) | public SimulatorUDIDArgument(string udid)
method SimulatorUDIDArgument (line 352) | public SimulatorUDIDArgument(IDevice device)
method AsCommandLineArgument (line 357) | public override string AsCommandLineArgument() => $"--device=:v2:udid=...
class LaunchSimulatorExtensionArgument (line 363) | public sealed class LaunchSimulatorExtensionArgument : MlaunchArgument
method LaunchSimulatorExtensionArgument (line 368) | public LaunchSimulatorExtensionArgument(string launchAppPath, string b...
method AsCommandLineArgument (line 374) | public override string AsCommandLineArgument() => "--launchsimbundleid...
class LaunchDeviceExtensionArgument (line 382) | public sealed class LaunchDeviceExtensionArgument : MlaunchArgument
method LaunchDeviceExtensionArgument (line 387) | public LaunchDeviceExtensionArgument(string launchAppPath, string bund...
method AsCommandLineArgument (line 393) | public override string AsCommandLineArgument() => "--launchdevbundleid...
class VerbosityArgument (line 401) | public sealed class VerbosityArgument : MlaunchArgument
method VerbosityArgument (line 403) | public VerbosityArgument()
method AsCommandLineArgument (line 407) | public override string AsCommandLineArgument() => "-v";
class TcpTunnelArgument (line 413) | public sealed class TcpTunnelArgument : MlaunchArgument
method TcpTunnelArgument (line 417) | public TcpTunnelArgument(int port)
method AsCommandLineArgument (line 427) | public override string AsCommandLineArgument() => $"--tcp-tunnel={_por...
class TimeoutArgument (line 433) | public sealed class TimeoutArgument : SingleValueArgument
method TimeoutArgument (line 435) | public TimeoutArgument(double timeoutInSeconds) : base("timeout", time...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/EnviromentVariables.cs
class EnviromentVariables (line 3) | public static class EnviromentVariables
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/IMlaunchProcessManager.cs
type IMlaunchProcessManager (line 16) | public interface IMlaunchProcessManager : IMacOSProcessManager, IProcess...
method ExecuteCommandAsync (line 20) | Task<ProcessExecutionResult> ExecuteCommandAsync(
method ExecuteCommandAsync (line 28) | Task<ProcessExecutionResult> ExecuteCommandAsync(
method RunAsync (line 38) | Task<ProcessExecutionResult> RunAsync(
method RunAsync (line 48) | Task<ProcessExecutionResult> RunAsync(
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/MLaunchArguments.cs
class MlaunchArgument (line 17) | public abstract class MlaunchArgument
method AsCommandLineArgument (line 19) | public abstract string AsCommandLineArgument();
method Escape (line 21) | protected static string Escape(string value) => StringUtils.FormatArgu...
method Equals (line 23) | public override bool Equals(object obj) => obj is MlaunchArgument arg ...
method GetHashCode (line 25) | public override int GetHashCode() => AsCommandLineArgument().GetHashCo...
class SingleValueArgument (line 28) | public abstract class SingleValueArgument : MlaunchArgument
method SingleValueArgument (line 34) | protected SingleValueArgument(string argumentName, string argumentValu...
method AsCommandLineArgument (line 41) | public override string AsCommandLineArgument()
class OptionArgument (line 54) | public abstract class OptionArgument : MlaunchArgument
method OptionArgument (line 58) | protected OptionArgument(string argumentName)
method AsCommandLineArgument (line 63) | public override string AsCommandLineArgument() => $"--{_argumentName}";
class MlaunchArguments (line 66) | public class MlaunchArguments : IEnumerable<MlaunchArgument>
method MlaunchArguments (line 70) | public MlaunchArguments(params MlaunchArgument[] args)
method Add (line 75) | public void Add(MlaunchArgument arg) => _arguments.Add(arg);
method AddRange (line 77) | public void AddRange(IEnumerable<MlaunchArgument> args) => _arguments....
method AsCommandLine (line 79) | public string AsCommandLine() => string.Join(" ", _arguments.Select(a ...
method GetEnumerator (line 81) | public IEnumerator<MlaunchArgument> GetEnumerator() => _arguments.GetE...
method GetEnumerator (line 83) | IEnumerator IEnumerable.GetEnumerator() => _arguments.GetEnumerator();
method ToString (line 85) | public override string ToString() => AsCommandLine();
method Equals (line 87) | public override bool Equals(object obj) => obj is MlaunchArguments arg...
method GetHashCode (line 89) | public override int GetHashCode() => AsCommandLine().GetHashCode();
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Execution/MlaunchProcessManager.cs
class MlaunchProcessManager (line 17) | public class MlaunchProcessManager : MacOSProcessManager, IMlaunchProces...
method MlaunchProcessManager (line 22) | public MlaunchProcessManager(
method ExecuteCommandAsync (line 30) | public async Task<ProcessExecutionResult> ExecuteCommandAsync(
method ExecuteCommandAsync (line 42) | public async Task<ProcessExecutionResult> ExecuteCommandAsync(
method RunAsync (line 56) | public Task<ProcessExecutionResult> RunAsync(
method RunAsync (line 68) | public Task<ProcessExecutionResult> RunAsync(
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Extension.cs
type Extension (line 7) | public enum Extension
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/Device.cs
type DeviceClass (line 9) | public enum DeviceClass
class Device (line 20) | public class Device : IHardwareDevice
method Device (line 22) | public Device(
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/HardwareDeviceLoader.cs
type IHardwareDeviceLoader (line 21) | public interface IHardwareDeviceLoader : IDeviceLoader
method FindCompanionDevice (line 30) | Task<IHardwareDevice> FindCompanionDevice(ILog log, IHardwareDevice de...
method FindDevice (line 32) | Task<IHardwareDevice> FindDevice(
class HardwareDeviceLoader (line 40) | public class HardwareDeviceLoader : IHardwareDeviceLoader
method HardwareDeviceLoader (line 55) | public HardwareDeviceLoader(IMlaunchProcessManager processManager)
method LoadDevices (line 60) | public async Task LoadDevices(
method FindDevice (line 160) | public async Task<IHardwareDevice> FindDevice(
method FindCompanionDevice (line 209) | public async Task<IHardwareDevice> FindCompanionDevice(ILog log, IHard...
method GetDevice (line 228) | private Device GetDevice(XmlNode deviceNode)
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/IDevice.cs
type Architecture (line 9) | public enum Architecture
type DevicePlatform (line 22) | public enum DevicePlatform
type IDevice (line 32) | public interface IDevice
class DevicePlatformExtensions (line 39) | public static class DevicePlatformExtensions
method AsString (line 41) | public static string AsString(this DevicePlatform value) => value switch
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/IDeviceLoader.cs
type IDeviceLoader (line 11) | public interface IDeviceLoader
method LoadDevices (line 13) | Task LoadDevices(
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/IHardwareDevice.cs
type IHardwareDevice (line 7) | public interface IHardwareDevice : IDevice
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/ISimulatorDevice.cs
type ISimulatorDevice (line 12) | public interface ISimulatorDevice : IDevice
method Erase (line 21) | Task Erase(ILog log);
method Shutdown (line 22) | Task Shutdown(ILog log);
method PrepareSimulator (line 23) | Task<bool> PrepareSimulator(ILog log, params string[] bundleIdentifiers);
method KillEverything (line 24) | Task KillEverything(ILog log);
method Boot (line 25) | Task<bool> Boot(ILog log, CancellationToken cancellationToken);
method GetAppBundlePath (line 26) | Task<string> GetAppBundlePath(ILog log, string bundleIdentifier, Cance...
type DeviceState (line 29) | public enum DeviceState
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/ISimulatorLoader.cs
type ISimulatorLoader (line 13) | public interface ISimulatorLoader : IDeviceLoader
method FindCompanionDevice (line 20) | Task<ISimulatorDevice> FindCompanionDevice(ILog log, ISimulatorDevice ...
method SelectDevices (line 21) | IEnumerable<ISimulatorDevice?> SelectDevices(TestTarget target, ILog l...
method SelectDevices (line 22) | IEnumerable<ISimulatorDevice?> SelectDevices(TestTargetOs target, ILog...
method FindSimulators (line 24) | Task<(ISimulatorDevice Simulator, ISimulatorDevice? CompanionSimulator...
method FindSimulators (line 31) | Task<(ISimulatorDevice Simulator, ISimulatorDevice? CompanionSimulator...
method FindSimulators (line 38) | Task<(ISimulatorDevice Simulator, ISimulatorDevice? CompanionSimulator...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimDevicePair.cs
class SimDevicePair (line 9) | public class SimDevicePair
method SimDevicePair (line 15) | public SimDevicePair(string UDID, string companion, string gizmo)
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimDeviceSpecification.cs
class SimDeviceSpecification (line 9) | public class SimDeviceSpecification
method SimDeviceSpecification (line 14) | public SimDeviceSpecification(SimulatorDevice main, SimulatorDevice co...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimDeviceType.cs
class SimDeviceType (line 9) | public class SimDeviceType
method SimDeviceType (line 18) | public SimDeviceType(string name, string identifier, string productFam...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimRuntime.cs
class SimRuntime (line 9) | public class SimRuntime
method SimRuntime (line 15) | public SimRuntime(string name, string identifier, long version)
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimulatorDevice.cs
class SimulatorDevice (line 17) | public class SimulatorDevice : ISimulatorDevice
method SimulatorDevice (line 32) | public SimulatorDevice(IMlaunchProcessManager processManager, ITCCData...
method Erase (line 50) | public async Task Erase(ILog log)
method Shutdown (line 62) | public async Task Shutdown(ILog log)
method KillEverything (line 68) | public async Task KillEverything(ILog log)
method OpenSimulator (line 104) | private async Task OpenSimulator(ILog log)
method PrepareSimulator (line 124) | public async Task<bool> PrepareSimulator(ILog log, params string[] bun...
method Boot (line 181) | public async Task<bool> Boot(ILog log, CancellationToken cancellationT...
method GetAppBundlePath (line 218) | public async Task<string> GetAppBundlePath(ILog log, string bundleIden...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimulatorLoader.cs
class SimulatorLoader (line 23) | public class SimulatorLoader : ISimulatorLoader
method SimulatorLoader (line 40) | public SimulatorLoader(IMlaunchProcessManager processManager, ISimulat...
method LoadDevices (line 46) | public async Task LoadDevices(
method CreateName (line 183) | private string CreateName(string deviceType, string runtime)
method FindOrCreateDevicesAsync (line 191) | private async Task<IEnumerable<ISimulatorDevice>> FindOrCreateDevicesA...
method CreateDevicePair (line 250) | private async Task<bool> CreateDevicePair(
method FindOrCreateDevicePairAsync (line 311) | private async Task<SimDevicePair?> FindOrCreateDevicePairAsync(
method FindSimulators (line 378) | public async Task<(ISimulatorDevice Simulator, ISimulatorDevice? Compa...
method FindSimulators (line 472) | public Task<(ISimulatorDevice Simulator, ISimulatorDevice? CompanionSi...
method FindCompanionDevice (line 491) | public async Task<ISimulatorDevice> FindCompanionDevice(ILog log, ISim...
method FindSimulators (line 499) | public async Task<(ISimulatorDevice Simulator, ISimulatorDevice? Compa...
method SelectDevices (line 535) | public IEnumerable<ISimulatorDevice> SelectDevices(TestTarget target, ...
method SelectDevices (line 537) | public IEnumerable<ISimulatorDevice> SelectDevices(TestTargetOs target...
class SimulatorXmlNodeComparer (line 540) | private class SimulatorXmlNodeComparer : IEqualityComparer<XmlNode>
method Equals (line 542) | public bool Equals(XmlNode? a, XmlNode? b)
method GetHashCode (line 557) | public int GetHashCode(XmlNode? node)
class SimulatorEnumerable (line 572) | private class SimulatorEnumerable : IEnumerable<ISimulatorDevice>, IAs...
method SimulatorEnumerable (line 577) | public SimulatorEnumerable(ISimulatorLoader simulators, TestTarget t...
method SimulatorEnumerable (line 585) | public SimulatorEnumerable(ISimulatorLoader simulators, TestTargetOs...
method ToString (line 593) | public override string ToString() => _toString;
method GetEnumerator (line 595) | public IEnumerator<ISimulatorDevice> GetEnumerator() => new Enumerat...
method GetEnumerator (line 597) | IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
method Find (line 601) | public Task<(ISimulatorDevice, ISimulatorDevice?)> Find() => _findTa...
class Enumerator (line 603) | private class Enumerator : IEnumerator<ISimulatorDevice>
method Enumerator (line 607) | public Enumerator(SimulatorEnumerable enumerable)
method MoveNext (line 629) | public bool MoveNext()
method Reset (line 646) | public void Reset() => _moved = false;
method Dispose (line 648) | public void Dispose()
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/SimulatorSelector.cs
type ISimulatorSelector (line 13) | public interface ISimulatorSelector
method GetRuntimePrefix (line 15) | string GetRuntimePrefix(TestTargetOs target);
method GetDeviceType (line 16) | string GetDeviceType(TestTargetOs target, bool minVersion);
method GetCompanionRuntimeAndDeviceType (line 17) | void GetCompanionRuntimeAndDeviceType(TestTargetOs target, bool minVer...
method SelectSimulator (line 18) | ISimulatorDevice SelectSimulator(IEnumerable<ISimulatorDevice> simulat...
class DefaultSimulatorSelector (line 21) | public class DefaultSimulatorSelector : ISimulatorSelector
method GetRuntimePrefix (line 23) | public virtual string GetRuntimePrefix(TestTargetOs target)
method GetDeviceType (line 35) | public virtual string GetDeviceType(TestTargetOs target, bool minVersion)
method GetCompanionRuntimeAndDeviceType (line 47) | public virtual void GetCompanionRuntimeAndDeviceType(TestTargetOs targ...
method SelectSimulator (line 61) | public ISimulatorDevice SelectSimulator(IEnumerable<ISimulatorDevice> ...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Hardware/TCCDatabase.cs
type ITCCDatabase (line 14) | public interface ITCCDatabase
method AgreeToPromptsAsync (line 16) | Task<bool> AgreeToPromptsAsync(string simRuntime, string dataPath, str...
method GetTCCFormat (line 17) | int GetTCCFormat(string simRuntime);
class TCCDatabase (line 20) | public class TCCDatabase : ITCCDatabase
method TCCDatabase (line 28) | public TCCDatabase(IMlaunchProcessManager processManager)
method GetTCCFormat (line 33) | public int GetTCCFormat(string simRuntime)
method AgreeToPromptsAsync (line 84) | public async Task<bool> AgreeToPromptsAsync(string simRuntime, string ...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/IErrorKnowledgeBase.cs
type IErrorKnowledgeBase (line 15) | public interface IErrorKnowledgeBase
method IsKnownInstallIssue (line 23) | bool IsKnownInstallIssue(IFileBackedLog installLog, [NotNullWhen(true)...
method IsKnownBuildIssue (line 31) | bool IsKnownBuildIssue(IFileBackedLog buildLog, [NotNullWhen(true)] ou...
method IsKnownTestIssue (line 39) | bool IsKnownTestIssue(IFileBackedLog runLog, [NotNullWhen(true)] out K...
class KnownIssue (line 42) | public class KnownIssue
method KnownIssue (line 59) | public KnownIssue(string humanMessage, string? issueLink = null, int? ...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/IResultFileHandler.cs
type IResultFileHandler (line 11) | public interface IResultFileHandler
method IsVersionSupported (line 16) | bool IsVersionSupported(string osVersion, bool isSimulator);
method CopyResultsAsync (line 21) | Task<bool> CopyResultsAsync(
method CopyCoverageResultsAsync (line 34) | Task<bool> CopyCoverageResultsAsync(
method CopyCrashReportAsync (line 46) | Task CopyCrashReportAsync(
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/IResultParser.cs
type IResultParser (line 17) | public interface IResultParser
method GenerateFailure (line 23) | void GenerateFailure(ILogs logs, string source, string appName, string...
method GenerateFailure (line 29) | void GenerateFailure(ILogs logs, string source, string appName, string...
method UpdateMissingData (line 34) | void UpdateMissingData(string source, string destination, string appli...
method IsValidXml (line 39) | bool IsValidXml(string path, out XmlResultJargon type);
method IsValidXml (line 44) | bool IsValidXml(TextReader stream, out XmlResultJargon type);
method CleanXml (line 51) | void CleanXml(string source, string destination);
method GetXmlFilePath (line 59) | string GetXmlFilePath(string path, XmlResultJargon xmlType);
method ParseResults (line 69) | (string resultLine, bool failed) ParseResults(string source, XmlResult...
method ParseResults (line 79) | (string resultLine, bool failed) ParseResults(string source, XmlResult...
method GenerateTestReport (line 84) | void GenerateTestReport(TextWriter writer, string resultsPath, XmlResu...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/ITestReporter.cs
type ITestReporter (line 16) | public interface ITestReporter : IDisposable
method LaunchCallback (line 22) | void LaunchCallback(Task<bool> launchResult);
method CollectSimulatorResult (line 23) | Task CollectSimulatorResult(ProcessExecutionResult runResult);
method CollectDeviceResult (line 24) | Task CollectDeviceResult(ProcessExecutionResult runResult);
method ParseResult (line 25) | Task<(TestExecutingResult ExecutingResult, string ResultMessage)> Pars...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/SimpleFileListener.cs
class SimpleFileListener (line 12) | public class SimpleFileListener : SimpleListener
method SimpleFileListener (line 20) | public SimpleFileListener(string path, ILog log, IFileBackedLog testLo...
method Stop (line 26) | protected override void Stop()
method InitializeAndGetPort (line 34) | public override int InitializeAndGetPort()
method Start (line 40) | protected override void Start() => _processorThread.Start();
method Processing (line 42) | private void Processing()
class BlockingFileStream (line 74) | private class BlockingFileStream : FileStream
method BlockingFileStream (line 79) | public BlockingFileStream(string path, SimpleFileListener listener)
method Read (line 85) | public override int Read(byte[] array, int offset, int count)
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/SimpleHttpListener.cs
class SimpleHttpListener (line 13) | public class SimpleHttpListener : SimpleListener
method SimpleHttpListener (line 21) | public SimpleHttpListener(ILog log, IFileBackedLog testLog, bool autoE...
method InitializeAndGetPort (line 26) | public override int InitializeAndGetPort()
method Stop (line 58) | protected override void Stop() => _server.Stop();
method Start (line 60) | protected override void Start()
method Processing (line 93) | private bool Processing(HttpListenerContext context)
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/SimpleListener.cs
type ISimpleListener (line 14) | public interface ISimpleListener : IDisposable
method Cancel (line 20) | void Cancel();
method InitializeAndGetPort (line 21) | int InitializeAndGetPort();
method StartAsync (line 22) | void StartAsync();
method StopAsync (line 23) | Task StopAsync();
class SimpleListener (line 26) | public abstract class SimpleListener : ISimpleListener
method Start (line 36) | protected abstract void Start();
method Stop (line 37) | protected abstract void Stop();
method InitializeAndGetPort (line 40) | public abstract int InitializeAndGetPort();
method SimpleListener (line 42) | protected SimpleListener(ILog log, IFileBackedLog testLog)
method Connected (line 48) | protected void Connected(string remote)
method Finished (line 61) | protected void Finished(bool early_termination = false)
method StartAsync (line 76) | public void StartAsync()
method StopAsync (line 95) | public Task StopAsync()
method WaitForCompletion (line 115) | public bool WaitForCompletion(TimeSpan ts) => _stopped.Task.Wait(ts);
method Cancel (line 119) | public void Cancel()
method Dispose (line 144) | public virtual void Dispose()
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/SimpleListenerFactory.cs
type ListenerTransport (line 10) | public enum ListenerTransport
type ISimpleListenerFactory (line 17) | public interface ISimpleListenerFactory
method Create (line 19) | (ListenerTransport transport, ISimpleListener listener, string listene...
class SimpleListenerFactory (line 31) | public class SimpleListenerFactory : ISimpleListenerFactory
method SimpleListenerFactory (line 38) | public SimpleListenerFactory(ITunnelBore tunnelBore = null) =>
method Create (line 41) | public (ListenerTransport transport, ISimpleListener listener, string ...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/SimpleTcpListener.cs
class SimpleTcpListener (line 17) | public class SimpleTcpListener : SimpleListener, ITunnelListener
method SimpleTcpListener (line 35) | public SimpleTcpListener(ILog log, IFileBackedLog testLog, bool autoEx...
method Stop (line 41) | protected override void Stop()
method InitializeAndGetPort (line 54) | public override int InitializeAndGetPort()
method StartNetworkTcp (line 81) | private void StartNetworkTcp()
method StartTcpTunnel (line 122) | private void StartTcpTunnel()
method Start (line 205) | protected override void Start()
method Processing (line 217) | private bool Processing(TcpClient client)
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/TcpTunnel.cs
type ITunnelListener (line 15) | public interface ITunnelListener : ISimpleListener
type ITcpTunnel (line 23) | public interface ITcpTunnel : IAsyncDisposable
method Open (line 25) | public void Open(string device, ITunnelListener simpleListener, TimeSp...
method Close (line 26) | public Task Close();
class TcpTunnel (line 32) | public class TcpTunnel : ITcpTunnel
method TcpTunnel (line 43) | public TcpTunnel(IMlaunchProcessManager processManager)
method Open (line 48) | public void Open(string device, ITunnelListener simpleListener, TimeSp...
method Close (line 100) | public async Task Close()
method DisposeAsync (line 112) | public async ValueTask DisposeAsync()
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Listeners/TunnelBore.cs
type ITunnelBore (line 18) | public interface ITunnelBore : IAsyncDisposable
method Create (line 22) | ITcpTunnel Create(string device, ILog mainLog);
method Close (line 25) | Task Close(string device);
class TunnelBore (line 28) | public class TunnelBore : ITunnelBore
method TunnelBore (line 34) | public TunnelBore(IMlaunchProcessManager processManager)
method Create (line 40) | public ITcpTunnel Create(string device, ILog mainLog)
method Close (line 55) | public async Task Close(string device)
method DisposeAsync (line 64) | public async ValueTask DisposeAsync()
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/AppInstallMonitorLog.cs
class AppInstallMonitorLog (line 15) | public class AppInstallMonitorLog : FileBackedLog
method AppInstallMonitorLog (line 37) | public AppInstallMonitorLog(IFileBackedLog copy_to)
method Flush (line 50) | public override void Flush() => _copyTo.Flush();
method GetReader (line 52) | public override StreamReader GetReader() => _copyTo.GetReader();
method Dispose (line 54) | public override void Dispose()
method ResetTimer (line 61) | private void ResetTimer() => _cancellationSource.CancelAfter(TimeSpan....
method WriteImpl (line 63) | protected override void WriteImpl(string? value)
method Write (line 122) | public override void Write(byte[] buffer, int offset, int count) => _c...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/CaptureLog.cs
type ICaptureLogFactory (line 12) | public interface ICaptureLogFactory
method Create (line 14) | ICaptureLog Create(string path, string systemLogPath, bool entireFile,...
method Create (line 15) | ICaptureLog Create(string path, string systemLogPath, bool entireFile,...
class CaptureLogFactory (line 18) | public class CaptureLogFactory : ICaptureLogFactory
method Create (line 20) | public ICaptureLog Create(string path, string systemLogPath, bool enti...
method Create (line 26) | public ICaptureLog Create(string path, string systemLogPath, bool enti...
type ICaptureLog (line 30) | public interface ICaptureLog : IFileBackedLog
method StartCapture (line 32) | void StartCapture();
method StopCapture (line 33) | void StopCapture(TimeSpan? waitIfEmpty = null);
class CaptureLog (line 40) | public class CaptureLog : FileBackedLog, ICaptureLog
method CaptureLog (line 58) | public CaptureLog(string destinationPath, string capturedPath, bool en...
method StartCapture (line 65) | public void StartCapture()
method StopCapture (line 80) | public void StopCapture(TimeSpan? waitIfEmpty = null)
method Capture (line 130) | private void Capture()
method GetReader (line 191) | public override StreamReader GetReader()
method Flush (line 217) | public override void Flush() => Capture();
method WriteImpl (line 219) | protected override void WriteImpl(string? value) => throw new InvalidO...
method Dispose (line 221) | public override void Dispose()
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/DeviceLogCapturer.cs
type IDeviceLogCapturer (line 14) | public interface IDeviceLogCapturer : IDisposable
method StartCapture (line 16) | void StartCapture();
method StopCapture (line 17) | void StopCapture();
class DeviceLogCapturer (line 20) | public class DeviceLogCapturer : IDeviceLogCapturer
method DeviceLogCapturer (line 28) | public DeviceLogCapturer(ILog mainLog, ILog deviceLog, string deviceUdid)
method StartCapture (line 37) | public void StartCapture()
method StopCapture (line 43) | public void StopCapture()
method CleanupOutputPath (line 162) | private void CleanupOutputPath()
method Dispose (line 170) | public void Dispose() => StopCapture();
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/IEventLogger.cs
type IEventLogger (line 9) | public interface IEventLogger
method LogEvent (line 11) | public void LogEvent(ILog log, string text, params object[] args);
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/ILogs.cs
type ILogs (line 11) | public interface ILogs : IList<IFileBackedLog>, IDisposable
method Create (line 16) | IFileBackedLog Create(string filename, string description, bool? times...
method AddFile (line 21) | IFileBackedLog AddFile(string path);
method AddFile (line 26) | IFileBackedLog AddFile(string path, string name);
method CreateFile (line 29) | string CreateFile(string path, string description);
method CreateFile (line 30) | string CreateFile(string path, LogType type);
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/LogFile.cs
class LogFile (line 11) | public class LogFile : FileBackedLog
method LogFile (line 20) | public LogFile(string description, string path, bool append = true)
method Write (line 30) | public override void Write(byte[] buffer, int offset, int count)
method Flush (line 60) | public override void Flush()
method WriteImpl (line 68) | protected override void WriteImpl(string? value)
method GetReader (line 74) | public override StreamReader GetReader() => new(new FileStream(FullPat...
method Dispose (line 76) | public override void Dispose()
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/LogType.cs
type LogType (line 8) | public enum LogType
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/Logs.cs
class Logs (line 13) | public class Logs : List<IFileBackedLog>, ILogs
method Logs (line 19) | public Logs(string directory)
method Create (line 24) | public IFileBackedLog Create(string filename, string description, bool...
method AddFile (line 40) | public IFileBackedLog AddFile(string path) => AddFile(path, Path.GetFi...
method AddFile (line 45) | public IFileBackedLog AddFile(string path, string name)
method CreateFile (line 65) | public string CreateFile(string path, string description)
method CreateFile (line 79) | public string CreateFile(string path, LogType type) => CreateFile(path...
method Dispose (line 81) | public void Dispose()
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Logging/WrenchLog.cs
class WrenchLog (line 7) | public static class WrenchLog
method WriteLine (line 10) | public static void WriteLine(string message, params object[] args) => ...
method WriteLine (line 12) | public static void WriteLine(string message)
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/ResultFileHandler.cs
class ResultFileHandler (line 18) | public class ResultFileHandler : IResultFileHandler
method ResultFileHandler (line 26) | public ResultFileHandler(IMlaunchProcessManager pm, IFileBackedLog fs,...
method IsVersionSupported (line 34) | public bool IsVersionSupported(string osVersion, bool isSimulator)
method CopyResultsAsync (line 71) | public async Task<bool> CopyResultsAsync(
method CopyCoverageResultsAsync (line 94) | public async Task<bool> CopyCoverageResultsAsync(
method ShouldCopyFromAppContainer (line 118) | private bool ShouldCopyFromAppContainer(RunMode runMode, string osVers...
method GetAppContainerSourcePath (line 121) | private static string GetAppContainerSourcePath(RunMode runMode, strin...
method CopyFileFromAppContainerAsync (line 126) | private async Task<bool> CopyFileFromAppContainerAsync(
method CopyCrashReportAsync (line 196) | public async Task CopyCrashReportAsync(
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/RunMode.cs
type RunMode (line 7) | public enum RunMode
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/SdkVersions.cs
class SdkVersions (line 6) | public static class SdkVersions
method OverrideVersions (line 36) | public static void OverrideVersions(string xcode,
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/TestExecutingResult.cs
type TestExecutingResult (line 9) | [Flags]
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/TestReporter.cs
class TestReporter (line 31) | public class TestReporter : ITestReporter
method TestReporter (line 81) | public TestReporter(
method GetPidFromRunLog (line 131) | private async Task<int> GetPidFromRunLog()
method GetPidFromMainLog (line 178) | private async Task<int> GetPidFromMainLog()
method GetCrashReason (line 207) | private void GetCrashReason(int pid, IReadableLog crashLog, out string...
method TcpConnectionFailed (line 227) | private async Task<bool> TcpConnectionFailed()
method KillAppProcess (line 241) | private Task KillAppProcess(int pid, CancellationTokenSource cancellat...
method CollectResult (line 249) | private async Task CollectResult(ProcessExecutionResult runResult)
method LaunchCallback (line 279) | public void LaunchCallback(Task<bool> launchResult)
method CollectSimulatorResult (line 311) | public async Task CollectSimulatorResult(ProcessExecutionResult runRes...
method CollectDeviceResult (line 330) | public async Task CollectDeviceResult(ProcessExecutionResult runResult)
method GetResultLine (line 336) | private async Task<(string? ResultLine, bool Failed)> GetResultLine(st...
method ParseResultFile (line 359) | private async Task<(string? resultLine, bool failed, bool crashed)> Pa...
method TestsSucceeded (line 475) | private async Task<(bool Succeeded, bool Crashed, string ResultLine)> ...
method GenerateXmlFailures (line 512) | private async Task GenerateXmlFailures(string failure, bool crashed, s...
method ParseResult (line 581) | public async Task<(TestExecutingResult ExecutingResult, string? Result...
method Dispose (line 724) | public void Dispose()
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/TestReporterFactory.cs
type ITestReporterFactory (line 17) | public interface ITestReporterFactory
method Create (line 19) | ITestReporter Create(IFileBackedLog mainLog,
class TestReporterFactory (line 35) | public class TestReporterFactory : ITestReporterFactory
method TestReporterFactory (line 39) | public TestReporterFactory(IMlaunchProcessManager processManager)
method Create (line 44) | public ITestReporter Create(IFileBackedLog mainLog,
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/TestTarget.cs
type TestTarget (line 10) | public enum TestTarget
class TestTargetOs (line 27) | public class TestTargetOs
method TestTargetOs (line 41) | public TestTargetOs(TestTarget platform, string? osVersion)
class TestTargetExtensions (line 48) | public static class TestTargetExtensions
method ToRunMode (line 50) | public static RunMode ToRunMode(this TestTarget target) => target switch
method IsSimulator (line 67) | public static bool IsSimulator(this TestTarget target) => target switch
method IsWatchOSTarget (line 84) | public static bool IsWatchOSTarget(this TestTarget target) => target s...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/DirectoryUtilities.cs
class DirectoryUtilities (line 16) | public static class DirectoryUtilities
method DirectoryUtilities (line 21) | static DirectoryUtilities()
method mkdir (line 32) | [DllImport("libc", SetLastError = true)]
method CreateTemporaryDirectory (line 35) | public static string CreateTemporaryDirectory(string name = null)
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/Extensions.cs
class Extensions (line 15) | public static class Extensions
method AsString (line 17) | public static string AsString(this TestTarget target) => target switch
method AsString (line 31) | public static string AsString(this TestTargetOs targetOs) =>
method ParseAsAppRunnerTarget (line 34) | public static TestTarget ParseAsAppRunnerTarget(this string target) =>...
method ParseAsAppRunnerTargetOs (line 51) | public static TestTargetOs ParseAsAppRunnerTargetOs(this string target...
method ParseFromNSExtensionPointIdentifier (line 69) | public static Extension ParseFromNSExtensionPointIdentifier(this strin...
method AsNSExtensionPointIdentifier (line 76) | public static string AsNSExtensionPointIdentifier(this Extension exten...
method DoNotAwait (line 83) | public static void DoNotAwait(this Task task)
method Shuffle (line 108) | public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> collection)
method AsHtml (line 114) | public static string AsHtml(this string inString)
method WriteCDataSafe (line 121) | public static void WriteCDataSafe(this XmlWriter writer, string text)
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/Helpers.cs
type IHelpers (line 17) | public interface IHelpers
method GetTerminalName (line 19) | string GetTerminalName(int filedescriptor);
method GenerateStableGuid (line 21) | Guid GenerateStableGuid(string seed = null);
method GenerateGuid (line 23) | Guid GenerateGuid();
method GetLocalIpAddresses (line 27) | IEnumerable<IPAddress> GetLocalIpAddresses();
class Helpers (line 30) | public class Helpers : IHelpers
method GenerateStableGuid (line 38) | public Guid GenerateStableGuid(string seed = null)
method GenerateGuid (line 57) | public Guid GenerateGuid() => Guid.NewGuid();
method ttyname (line 61) | [DllImport("/usr/lib/libc.dylib")]
method GetTerminalName (line 64) | public string GetTerminalName(int filedescriptor) => Marshal.PtrToStri...
method GetLocalIpAddresses (line 66) | public IEnumerable<IPAddress> GetLocalIpAddresses()
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/PlistExtensions.cs
class PListExtensions (line 12) | public static class PListExtensions
method GetFilename (line 21) | public static string GetFilename(this XmlDocument doc)
method LoadWithoutNetworkAccess (line 27) | public static void LoadWithoutNetworkAccess(this XmlDocument doc, stri...
method LoadXmlWithoutNetworkAccess (line 44) | public static void LoadXmlWithoutNetworkAccess(this XmlDocument doc, s...
method SetMinimumOSVersion (line 60) | public static void SetMinimumOSVersion(this XmlDocument plist, string ...
method SetMinimummacOSVersion (line 63) | public static void SetMinimummacOSVersion(this XmlDocument plist, stri...
method SetCFBundleDisplayName (line 66) | public static void SetCFBundleDisplayName(this XmlDocument plist, stri...
method GetCFBundleDisplayName (line 69) | public static string GetCFBundleDisplayName(this XmlDocument plist) =>
method GetCFBundleExecutable (line 72) | public static string GetCFBundleExecutable(this XmlDocument plist)
method GetMinimumOSVersion (line 78) | public static string GetMinimumOSVersion(this XmlDocument plist) =>
method GetMinimummacOSVersion (line 81) | public static string GetMinimummacOSVersion(this XmlDocument plist) =>
method SetCFBundleIdentifier (line 84) | public static void SetCFBundleIdentifier(this XmlDocument plist, strin...
method SetCFBundleName (line 87) | public static void SetCFBundleName(this XmlDocument plist, string valu...
method SetUIDeviceFamily (line 90) | public static void SetUIDeviceFamily(this XmlDocument plist, params in...
method GetCFBundleIdentifier (line 93) | public static string GetCFBundleIdentifier(this XmlDocument plist) =>
method GetCFBundleName (line 96) | public static string GetCFBundleName(this XmlDocument plist) =>
method GetNSExtensionPointIdentifier (line 99) | public static string GetNSExtensionPointIdentifier(this XmlDocument pl...
method SetPListStringValue (line 105) | public static void SetPListStringValue(this XmlDocument plist, string ...
method AddPListStringValue (line 128) | public static void AddPListStringValue(this XmlDocument plist, string ...
method AddPListKeyValuePair (line 139) | public static void AddPListKeyValuePair(this XmlDocument plist, string...
method ContainsKey (line 150) | public static bool ContainsKey(this XmlDocument plist, string key) =>
method SetPListArrayOfIntegerValues (line 153) | private static void SetPListArrayOfIntegerValues(this XmlDocument plis...
method GetPListStringValue (line 167) | private static string GetPListStringValue(this XmlDocument plist, stri...
method TryGetPListStringValue (line 170) | private static bool TryGetPListStringValue(this XmlDocument plist, str...
FILE: src/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/ProjectFileExtensions.cs
class ProjectFileExtensions (line 16) | public static class ProjectFileExtensions
method SetProjectTypeGuids (line 25) | public static void SetProjectTypeGuids(this XmlDocument csproj, string...
method GetProjectGuid (line 27) | public static string GetProjectGuid(this XmlDocument csproj) => csproj...
method SetProjectGuid (line 29) | public static void SetProjectGuid(this XmlDocument csproj, string valu...
method GetOutputType (line 31) | public static string GetOutputType(this XmlDocument csproj) => csproj
Condensed preview — 651 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,255K chars).
[
{
"path": ".azuredevops/dependabot.yml",
"chars": 182,
"preview": "version: 2\r\n\r\n# Disabling dependabot on Azure DevOps as this is a mirrored repo. Updates should go through github.\r\nenab"
},
{
"path": ".config/tsaoptions.json",
"chars": 425,
"preview": "{ \n \"instanceUrl\": \"https://devdiv.visualstudio.com/\",\n \"template\": \"TFSDEVDIV\",\n \"projectName\": \"DEVDIV\",\n "
},
{
"path": ".editorconfig",
"chars": 7637,
"preview": "# editorconfig.org\n\n# top-most EditorConfig file\nroot = true\n\n# Default settings:\n# A newline ending every file\n# Use 4 "
},
{
"path": ".git-blame-ignore-revs",
"chars": 76,
"preview": "# Change to file-scoped namespaces\n2863beb74c1abad7ddfe9ef7afea6fc2605e8a03\n"
},
{
"path": ".gitattributes",
"chars": 59,
"preview": "# Apply LF to shell scripts automatically\n*.sh text eol=lf\n"
},
{
"path": ".github/copilot-instructions.md",
"chars": 8899,
"preview": "# XHarness Repository Copilot Instructions\n\n## Project Overview\n\nXHarness is a .NET command-line tool that enables runni"
},
{
"path": ".github/workflows/backport.yml",
"chars": 329,
"preview": "name: Backport PR to branch\non:\n issue_comment:\n types: [created]\n schedule:\n # once a day at 13:00 UTC to clean"
},
{
"path": ".github/workflows/copilot-setup-steps.yml",
"chars": 840,
"preview": "# Automatically run the setup steps when they are changed to allow for easy validation, and\n# allow manual testing throu"
},
{
"path": ".gitignore",
"chars": 6196,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
},
{
"path": "Build.cmd",
"chars": 141,
"preview": "@echo off\npowershell -ExecutionPolicy ByPass -NoProfile -command \"& \"\"\"%~dp0eng\\common\\Build.ps1\"\"\" -restore -build %*\"\n"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 265,
"preview": "# Code of Conduct\r\n\r\nThis project has adopted the code of conduct defined by the Contributor Covenant\r\nto clarify expect"
},
{
"path": "Directory.Build.props",
"chars": 791,
"preview": "<Project>\n\n <Import Project=\"Sdk.props\" Sdk=\"Microsoft.DotNet.Arcade.Sdk\" />\n\n <PropertyGroup>\n <LangVersion>latest"
},
{
"path": "Directory.Build.targets",
"chars": 92,
"preview": "<Project>\n\n <Import Project=\"Sdk.targets\" Sdk=\"Microsoft.DotNet.Arcade.Sdk\" />\n\n</Project>\n"
},
{
"path": "Directory.Packages.props",
"chars": 1160,
"preview": "<Project>\n\n <PropertyGroup>\n <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>\n <CentralPacka"
},
{
"path": "LICENSE.TXT",
"chars": 1115,
"preview": "The MIT License (MIT)\n\nCopyright (c) .NET Foundation and Contributors\n\nAll rights reserved.\n\nPermission is hereby grante"
},
{
"path": "NuGet.config",
"chars": 524,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n <packageSources>\n <clear />\n <add key=\"dotnet-eng\" value="
},
{
"path": "README.md",
"chars": 11257,
"preview": "# XHarness\n\nThis repo contains the code to build the **XHarness dotnet tool** and a **TestRunner library** that makes ru"
},
{
"path": "SECURITY.md",
"chars": 2865,
"preview": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.3 BLOCK -->\r\n\r\n## Security\r\n\r\nMicrosoft takes the security of our software product"
},
{
"path": "THIRD-PARTY-NOTICES.TXT",
"chars": 392,
"preview": ".NET Core uses third-party libraries or other resources that may be\ndistributed under licenses different than the .NET C"
},
{
"path": "XHarness.slnx",
"chars": 1919,
"preview": "<Solution>\n <Folder Name=\"/Solution Items/\">\n <File Path=\".editorconfig\" />\n <File Path=\"global.json\" />\n </Fold"
},
{
"path": "azure-pipelines-public.yml",
"chars": 5507,
"preview": "variables:\n- template: /eng/common-variables.yml\n- template: /eng/common/templates/variables/pool-providers.yml\n\n# CI an"
},
{
"path": "azure-pipelines.yml",
"chars": 2608,
"preview": "variables:\n- template: /eng/common-variables.yml@self\n- template: /eng/common/templates-official/variables/pool-provider"
},
{
"path": "build.sh",
"chars": 516,
"preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\n\n# resolve $SOURCE until the file is no longer a symlink\nwhile [[ -h $so"
},
{
"path": "decoded_output.xml",
"chars": 0,
"preview": ""
},
{
"path": "docs/high-level-architecture.md",
"chars": 2563,
"preview": "# Overview\n\nThis document provides a high-level overview of the XHarness architecture, which is organized into two main "
},
{
"path": "docs/integrity-check.md",
"chars": 2775,
"preview": "# Integrity check of 3rd party dependencies\n\n## NuGet dependencies\n\nAll NuGet dependencies are checked and verified by C"
},
{
"path": "eng/Publishing.props",
"chars": 265,
"preview": "<Project>\n\n <!-- We include mlaunch and adb binaries we didn't build and which do not need sympkgs -->\n <PropertyGroup"
},
{
"path": "eng/Signing.props",
"chars": 554,
"preview": "<Project>\n\n <ItemGroup>\n <FileSignInfo Include=\"mlaunch.dll\" CertificateName=\"3PartySHA2\" />\n <FileSignInfo Inclu"
},
{
"path": "eng/Version.Details.xml",
"chars": 583,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Dependencies>\n <ProductDependencies>\n </ProductDependencies>\n <ToolsetDepende"
},
{
"path": "eng/Versions.props",
"chars": 498,
"preview": "<Project>\n <PropertyGroup>\n <!-- change the following places when changing the VersionPrefix:\n - README.md"
},
{
"path": "eng/common/AGENTS.md",
"chars": 326,
"preview": "# `eng/common`\n\nFiles under `eng/common` come from [Arcade](https://github.com/dotnet/arcade).\nEdits in `eng/common` wil"
},
{
"path": "eng/common/BuildConfiguration/build-configuration.json",
"chars": 55,
"preview": "{\n \"RetryCountLimit\": 1,\n \"RetryByAnyError\": false\n}\n"
},
{
"path": "eng/common/CIBuild.cmd",
"chars": 140,
"preview": "@echo off\npowershell -ExecutionPolicy ByPass -NoProfile -command \"& \"\"\"%~dp0Build.ps1\"\"\" -restore -build -test -sign -pa"
},
{
"path": "eng/common/PSScriptAnalyzerSettings.psd1",
"chars": 474,
"preview": "@{\n IncludeRules=@('PSAvoidUsingCmdletAliases',\n 'PSAvoidUsingWMICmdlet',\n 'PSAvo"
},
{
"path": "eng/common/README.md",
"chars": 1321,
"preview": "# Don't touch this folder\n\n uuuuuuuuuuuuuuuuuuuu\n u\" uuuuuuuuuuuuuuuuuu \"u\n u\" u$"
},
{
"path": "eng/common/SetupNugetSources.ps1",
"chars": 7849,
"preview": "# This script adds internal feeds required to build commits that depend on internal package sources. For instance,\n# dot"
},
{
"path": "eng/common/SetupNugetSources.sh",
"chars": 7456,
"preview": "#!/usr/bin/env bash\n\n# This script adds internal feeds required to build commits that depend on internal package sources"
},
{
"path": "eng/common/build.cmd",
"chars": 114,
"preview": "@echo off\npowershell -ExecutionPolicy ByPass -NoProfile -command \"& \"\"\"%~dp0build.ps1\"\"\" %*\"\nexit /b %ErrorLevel%\n"
},
{
"path": "eng/common/build.ps1",
"chars": 6724,
"preview": "[CmdletBinding(PositionalBinding=$false)]\nParam(\n [string][Alias('c')]$configuration = \"Debug\",\n [string]$platform = $"
},
{
"path": "eng/common/build.sh",
"chars": 7342,
"preview": "#!/usr/bin/env bash\n\n# Stop script if unbound variable found (use ${var:-} if intentional)\nset -u\n\n# Stop script if comm"
},
{
"path": "eng/common/cibuild.sh",
"chars": 537,
"preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\n\n# resolve $SOURCE until the file is no longer a symlink\nwhile [[ -h $so"
},
{
"path": "eng/common/core-templates/job/job.yml",
"chars": 9410,
"preview": "parameters:\n# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs"
},
{
"path": "eng/common/core-templates/job/onelocbuild.yml",
"chars": 4813,
"preview": "parameters:\n # Optional: dependencies of the job\n dependsOn: ''\n\n # Optional: A defined YAML pool - https://docs.micr"
},
{
"path": "eng/common/core-templates/job/publish-build-assets.yml",
"chars": 9299,
"preview": "parameters:\n configuration: 'Debug'\n\n # Optional: condition for the job to run\n condition: ''\n\n # Optional: 'true' i"
},
{
"path": "eng/common/core-templates/job/renovate.yml",
"chars": 7948,
"preview": "# --------------------------------------------------------------------------------------\n# Renovate Bot Job Template\n# -"
},
{
"path": "eng/common/core-templates/job/source-build.yml",
"chars": 5214,
"preview": "parameters:\n # This template adds arcade-powered source-build to CI. The template produces a server job with a\n # defa"
},
{
"path": "eng/common/core-templates/job/source-index-stage1.yml",
"chars": 1650,
"preview": "parameters:\n runAsPublic: false\n sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Comma"
},
{
"path": "eng/common/core-templates/jobs/jobs.yml",
"chars": 5295,
"preview": "parameters:\n # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md\n continueOnError: false\n\n # O"
},
{
"path": "eng/common/core-templates/jobs/source-build.yml",
"chars": 1818,
"preview": "parameters:\n # This template adds arcade-powered source-build to CI. A job is created for each platform, as\n # well as"
},
{
"path": "eng/common/core-templates/post-build/common-variables.yml",
"chars": 556,
"preview": "variables:\n - group: Publish-Build-Assets\n\n # Whether the build is internal or not\n - name: IsInternalBuild\n value"
},
{
"path": "eng/common/core-templates/post-build/post-build.yml",
"chars": 12505,
"preview": "parameters:\n# Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST.\n# Publishing V"
},
{
"path": "eng/common/core-templates/post-build/setup-maestro-vars.yml",
"chars": 2879,
"preview": "parameters:\n BARBuildId: ''\n PromoteToChannelIds: ''\n is1ESPipeline: ''\n\nsteps:\n - ${{ if eq(parameters.is1ESPipelin"
},
{
"path": "eng/common/core-templates/stages/renovate.yml",
"chars": 3639,
"preview": "# --------------------------------------------------------------------------------------\n# Renovate Pipeline Template\n# "
},
{
"path": "eng/common/core-templates/steps/cleanup-microbuild.yml",
"chars": 925,
"preview": "parameters:\n # Enable cleanup tasks for MicroBuild\n enableMicrobuild: false\n # Enable cleanup tasks for MicroBuild on"
},
{
"path": "eng/common/core-templates/steps/enable-internal-runtimes.yml",
"chars": 1075,
"preview": "# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64'\n# "
},
{
"path": "eng/common/core-templates/steps/enable-internal-sources.yml",
"chars": 2301,
"preview": "parameters:\n# This is the Azure federated service connection that we log into to get an access token.\n- name: nugetFeder"
},
{
"path": "eng/common/core-templates/steps/generate-sbom.yml",
"chars": 444,
"preview": "parameters:\n PackageVersion: unused\n BuildDropPath: unused\n PackageName: unused\n ManifestDirPath: unused\n IgnoreDir"
},
{
"path": "eng/common/core-templates/steps/get-delegation-sas.yml",
"chars": 1561,
"preview": "parameters:\n- name: federatedServiceConnection\n type: string\n- name: outputVariableName\n type: string\n- name: expiryIn"
},
{
"path": "eng/common/core-templates/steps/get-federated-access-token.yml",
"chars": 1474,
"preview": "parameters:\n- name: federatedServiceConnection\n type: string\n- name: outputVariableName\n type: string\n- name: is1ESPip"
},
{
"path": "eng/common/core-templates/steps/install-microbuild-impl.yml",
"chars": 935,
"preview": "parameters:\n - name: microbuildTaskInputs\n type: object\n default: {}\n\n - name: microbuildEnv\n type: object\n "
},
{
"path": "eng/common/core-templates/steps/install-microbuild.yml",
"chars": 6336,
"preview": "parameters:\n # Enable install tasks for MicroBuild\n enableMicrobuild: false\n # Enable install tasks for MicroBuild on"
},
{
"path": "eng/common/core-templates/steps/publish-build-artifacts.yml",
"chars": 667,
"preview": "parameters:\n- name: is1ESPipeline\n type: boolean\n default: false\n- name: args\n type: object\n default: {}\nsteps:\n- ${"
},
{
"path": "eng/common/core-templates/steps/publish-logs.yml",
"chars": 2826,
"preview": "parameters:\n StageLabel: ''\n JobLabel: ''\n CustomSensitiveDataList: ''\n # A default - in case value from eng/common/"
},
{
"path": "eng/common/core-templates/steps/publish-pipeline-artifacts.yml",
"chars": 562,
"preview": "parameters:\n- name: is1ESPipeline\n type: boolean\n default: false\n\n- name: args\n type: object\n default: {} \n\nsteps:\n"
},
{
"path": "eng/common/core-templates/steps/retain-build.yml",
"chars": 1222,
"preview": "parameters:\n # Optional azure devops PAT with build execute permissions for the build's organization,\n # only needed i"
},
{
"path": "eng/common/core-templates/steps/send-to-helix.yml",
"chars": 8338,
"preview": "# Please remember to update the documentation if you make changes to these parameters!\nparameters:\n HelixSource: 'pr/de"
},
{
"path": "eng/common/core-templates/steps/source-build.yml",
"chars": 3133,
"preview": "parameters:\n # This template adds arcade-powered source-build to CI.\n\n # This is a 'steps' template, and is intended f"
},
{
"path": "eng/common/core-templates/steps/source-index-stage1-publish.yml",
"chars": 2051,
"preview": "parameters:\n sourceIndexUploadPackageVersion: 2.0.0-20250906.1\n sourceIndexProcessBinlogPackageVersion: 1.0.1-20250906"
},
{
"path": "eng/common/core-templates/variables/pool-providers.yml",
"chars": 258,
"preview": "parameters:\n is1ESPipeline: false\n\nvariables:\n - ${{ if eq(parameters.is1ESPipeline, 'true') }}:\n - template: /eng/"
},
{
"path": "eng/common/cross/armel/tizen/tizen.patch",
"chars": 476,
"preview": "diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so\n--- a/usr/lib/libc.so\t2016-12-30 23:00:08.284951863 +0900\n+++ b/usr/lib/l"
},
{
"path": "eng/common/cross/build-android-rootfs.sh",
"chars": 5426,
"preview": "#!/usr/bin/env bash\nset -e\n__NDK_Version=r21\n\nusage()\n{\n echo \"Creates a toolchain and sysroot used for cross-compili"
},
{
"path": "eng/common/cross/build-rootfs.sh",
"chars": 44269,
"preview": "#!/usr/bin/env bash\n\nset -e\n\nusage()\n{\n echo \"Usage: $0 [BuildArch] [CodeName] [lldbx.y] [llvmx[.y]] [--skipunmount] "
},
{
"path": "eng/common/cross/install-debs.py",
"chars": 13176,
"preview": "#!/usr/bin/env python3\n\nimport argparse\nimport asyncio\nimport aiohttp\nimport gzip\nimport os\nimport re\nimport shutil\nimpo"
},
{
"path": "eng/common/cross/riscv64/tizen/tizen.patch",
"chars": 516,
"preview": "diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so\n--- a/usr/lib64/libc.so\t2016-12-30 23:00:08.284951863 +0900\n+++ b/usr/lib"
},
{
"path": "eng/common/cross/tizen-build-rootfs.sh",
"chars": 2100,
"preview": "#!/usr/bin/env bash\nset -e\n\nARCH=$1\nLINK_ARCH=$ARCH\n\ncase \"$ARCH\" in\n arm)\n TIZEN_ARCH=\"armv7hl\"\n ;;\n "
},
{
"path": "eng/common/cross/tizen-fetch.sh",
"chars": 4829,
"preview": "#!/usr/bin/env bash\nset -e\n\nif [[ -z \"${VERBOSE// }\" ]] || [ \"$VERBOSE\" -ne \"$VERBOSE\" ] 2>/dev/null; then\n VERBOSE=0"
},
{
"path": "eng/common/cross/toolchain.cmake",
"chars": 15494,
"preview": "set(CROSS_ROOTFS $ENV{ROOTFS_DIR})\n\n# reset platform variables (e.g. cmake 3.25 sets LINUX=1)\nunset(LINUX)\nunset(FREEBSD"
},
{
"path": "eng/common/darc-init.ps1",
"chars": 1844,
"preview": "param (\n $darcVersion = $null,\n $versionEndpoint = 'https://maestro.dot.net/api/assets/darc-version?api-version=20"
},
{
"path": "eng/common/darc-init.sh",
"chars": 2412,
"preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\ndarcVersion=''\nversionEndpoint='https://maestro.dot.net/api/assets/darc-"
},
{
"path": "eng/common/dotnet-install.cmd",
"chars": 101,
"preview": "@echo off\npowershell -ExecutionPolicy ByPass -NoProfile -command \"& \"\"\"%~dp0dotnet-install.ps1\"\"\" %*\""
},
{
"path": "eng/common/dotnet-install.ps1",
"chars": 914,
"preview": "[CmdletBinding(PositionalBinding=$false)]\nParam(\n [string] $verbosity = 'minimal',\n [string] $architecture = '',\n [st"
},
{
"path": "eng/common/dotnet-install.sh",
"chars": 2335,
"preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\n# resolve $source until the file is no longer a symlink\nwhile [[ -h \"$so"
},
{
"path": "eng/common/dotnet.cmd",
"chars": 225,
"preview": "@echo off\n\n:: This script is used to install the .NET SDK.\n:: It will also invoke the SDK with any provided arguments.\n\n"
},
{
"path": "eng/common/dotnet.ps1",
"chars": 321,
"preview": "# This script is used to install the .NET SDK.\n# It will also invoke the SDK with any provided arguments.\n\n. $PSScriptRo"
},
{
"path": "eng/common/dotnet.sh",
"chars": 805,
"preview": "#!/usr/bin/env bash\n\n# This script is used to install the .NET SDK.\n# It will also invoke the SDK with any provided argu"
},
{
"path": "eng/common/enable-cross-org-publishing.ps1",
"chars": 584,
"preview": "param(\n [string] $token\n)\n\n\n. $PSScriptRoot\\pipeline-logging-functions.ps1\n\n# Write-PipelineSetVariable will no-op if a"
},
{
"path": "eng/common/generate-locproject.ps1",
"chars": 10088,
"preview": "Param(\n [Parameter(Mandatory=$true)][string] $SourcesDirectory, # Directory where source files live; if using a L"
},
{
"path": "eng/common/helixpublish.proj",
"chars": 923,
"preview": "<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under t"
},
{
"path": "eng/common/init-tools-native.cmd",
"chars": 133,
"preview": "@echo off\npowershell -NoProfile -NoLogo -ExecutionPolicy ByPass -command \"& \"\"\"%~dp0init-tools-native.ps1\"\"\" %*\"\nexit /b"
},
{
"path": "eng/common/init-tools-native.ps1",
"chars": 7953,
"preview": "<#\n.SYNOPSIS\nEntry point script for installing native tools\n\n.DESCRIPTION\nReads $RepoRoot\\global.json file to determine "
},
{
"path": "eng/common/init-tools-native.sh",
"chars": 7326,
"preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\nscriptroot=\"$( cd -P \"$( dirname \"$source\" )\" && pwd )\"\n\nbase_uri='https"
},
{
"path": "eng/common/internal/Directory.Build.props",
"chars": 408,
"preview": "<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under t"
},
{
"path": "eng/common/internal/NuGet.config",
"chars": 339,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n <packageSources>\n <clear />\n <add key=\"dotnet-core-intern"
},
{
"path": "eng/common/internal/Tools.csproj",
"chars": 1579,
"preview": "<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under t"
},
{
"path": "eng/common/internal-feed-operations.ps1",
"chars": 4665,
"preview": "param(\n [Parameter(Mandatory=$true)][string] $Operation,\n [string] $AuthToken,\n [string] $CommitSha,\n [string] $Repo"
},
{
"path": "eng/common/internal-feed-operations.sh",
"chars": 4395,
"preview": "#!/usr/bin/env bash\n\nset -e\n\n# Sets VSS_NUGET_EXTERNAL_FEED_ENDPOINTS based on the \"darc-int-*\" feeds defined in NuGet.c"
},
{
"path": "eng/common/loc/P22DotNetHtmlLocalization.lss",
"chars": 1876,
"preview": "<?xml version=\"1.0\"?>\n<LS_SETTINGS_FILE>\n <LS_SETTINGS_DESCRIPTION>\n <![CDATA[]]>\n </LS_SETTINGS_DESCRIPTION>\n <op"
},
{
"path": "eng/common/msbuild.ps1",
"chars": 571,
"preview": "[CmdletBinding(PositionalBinding=$false)]\nParam(\n [string] $verbosity = 'minimal',\n [bool] $warnAsError = $true,\n [bo"
},
{
"path": "eng/common/msbuild.sh",
"chars": 1143,
"preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\n\n# resolve $source until the file is no longer a symlink\nwhile [[ -h \"$s"
},
{
"path": "eng/common/native/CommonLibrary.psm1",
"chars": 12103,
"preview": "<#\n.SYNOPSIS\nHelper module to install an archive to a directory\n\n.DESCRIPTION\nHelper module to download and extract an a"
},
{
"path": "eng/common/native/common-library.sh",
"chars": 4171,
"preview": "#!/usr/bin/env bash\n\nfunction GetNativeInstallDirectory {\n local install_dir\n\n if [[ -z $NETCOREENG_INSTALL_DIRECTORY "
},
{
"path": "eng/common/native/init-compiler.sh",
"chars": 4665,
"preview": "#!/bin/sh\n#\n# This file detects the C/C++ compiler and exports it to the CC/CXX environment variables\n#\n# NOTE: some scr"
},
{
"path": "eng/common/native/init-distro-rid.sh",
"chars": 3808,
"preview": "#!/bin/sh\n\n# getNonPortableDistroRid\n#\n# Input:\n# targetOs: (str)\n# targetArch: (str)\n# rootfsDir: (str)\n#\n# Retur"
},
{
"path": "eng/common/native/init-os-and-arch.sh",
"chars": 1876,
"preview": "#!/bin/sh\n\n# Use uname to determine what the OS is.\nOSName=$(uname -s | tr '[:upper:]' '[:lower:]')\n\nif command -v getpr"
},
{
"path": "eng/common/native/install-cmake-test.sh",
"chars": 3010,
"preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\nscriptroot=\"$( cd -P \"$( dirname \"$source\" )\" && pwd )\"\n\n. $scriptroot/c"
},
{
"path": "eng/common/native/install-cmake.sh",
"chars": 3005,
"preview": "#!/usr/bin/env bash\n\nsource=\"${BASH_SOURCE[0]}\"\nscriptroot=\"$( cd -P \"$( dirname \"$source\" )\" && pwd )\"\n\n. $scriptroot/c"
},
{
"path": "eng/common/native/install-dependencies.sh",
"chars": 2136,
"preview": "#!/bin/sh\n\nset -e\n\n# This is a simple script primarily used for CI to install necessary dependencies\n#\n# Usage:\n#\n# ./in"
},
{
"path": "eng/common/native/install-tool.ps1",
"chars": 4286,
"preview": "<#\n.SYNOPSIS\nInstall native tool\n\n.DESCRIPTION\nInstall cmake native tool from Azure blob storage\n\n.PARAMETER InstallPath"
},
{
"path": "eng/common/pipeline-logging-functions.ps1",
"chars": 8460,
"preview": "# Source for this file was taken from https://github.com/microsoft/azure-pipelines-task-lib/blob/11c9439d4af17e6475d9fe0"
},
{
"path": "eng/common/pipeline-logging-functions.sh",
"chars": 3864,
"preview": "#!/usr/bin/env bash\n\nfunction Write-PipelineTelemetryError {\n local telemetry_category=''\n local force=false\n local f"
},
{
"path": "eng/common/post-build/check-channel-consistency.ps1",
"chars": 2176,
"preview": "param(\n [Parameter(Mandatory=$true)][string] $PromoteToChannels, # List of channels that the build should be"
},
{
"path": "eng/common/post-build/nuget-validation.ps1",
"chars": 763,
"preview": "# This script validates NuGet package metadata information using this \n# tool: https://github.com/NuGet/NuGetGallery/tre"
},
{
"path": "eng/common/post-build/nuget-verification.ps1",
"chars": 4301,
"preview": "<#\n.SYNOPSIS\n Verifies that Microsoft NuGet packages have proper metadata.\n.DESCRIPTION\n Downloads a verification "
},
{
"path": "eng/common/post-build/publish-using-darc.ps1",
"chars": 2489,
"preview": "param(\n [Parameter(Mandatory=$true)][int] $BuildId,\n [Parameter(Mandatory=$true)][int] $PublishingInfraVersion,\n [Par"
},
{
"path": "eng/common/post-build/redact-logs.ps1",
"chars": 3098,
"preview": "[CmdletBinding(PositionalBinding=$False)]\nparam(\n [Parameter(Mandatory=$true, Position=0)][string] $InputPath,\n [Param"
},
{
"path": "eng/common/post-build/symbols-validation.ps1",
"chars": 11648,
"preview": "param(\n [Parameter(Mandatory = $true)][string] $InputPath, # Full path to directory where NuGet packages to be checked "
},
{
"path": "eng/common/renovate.env",
"chars": 2299,
"preview": "# Renovate Global Configuration\n# https://docs.renovatebot.com/self-hosted-configuration/\n#\n# NOTE: This file uses bash/"
},
{
"path": "eng/common/retain-build.ps1",
"chars": 1373,
"preview": "\nParam(\n[Parameter(Mandatory=$true)][int] $buildId,\n[Parameter(Mandatory=$true)][string] $azdoOrgUri, \n[Parameter(Mandat"
},
{
"path": "eng/common/sdk-task.ps1",
"chars": 2826,
"preview": "[CmdletBinding(PositionalBinding=$false)]\nParam(\n [string] $configuration = 'Debug',\n [string] $task,\n [string] $verb"
},
{
"path": "eng/common/sdk-task.sh",
"chars": 2944,
"preview": "#!/usr/bin/env bash\n\nshow_usage() {\n echo \"Common settings:\"\n echo \" --task <value> Name of Arcade task"
},
{
"path": "eng/common/template-guidance.md",
"chars": 7302,
"preview": "# Overview\n\nArcade provides templates for public (`/templates`) and 1ES pipeline templates (`/templates-official`) scena"
},
{
"path": "eng/common/templates/job/job.yml",
"chars": 4069,
"preview": "parameters: \n enablePublishBuildArtifacts: false\n runAsPublic: false\n# CG related params, unused now and can eventuall"
},
{
"path": "eng/common/templates/job/onelocbuild.yml",
"chars": 197,
"preview": "jobs:\n- template: /eng/common/core-templates/job/onelocbuild.yml\n parameters:\n is1ESPipeline: false\n\n ${{ each pa"
},
{
"path": "eng/common/templates/job/publish-build-assets.yml",
"chars": 206,
"preview": "jobs:\n- template: /eng/common/core-templates/job/publish-build-assets.yml\n parameters:\n is1ESPipeline: false\n\n ${"
},
{
"path": "eng/common/templates/job/source-build.yml",
"chars": 198,
"preview": "jobs:\n- template: /eng/common/core-templates/job/source-build.yml\n parameters:\n is1ESPipeline: false\n\n ${{ each p"
},
{
"path": "eng/common/templates/job/source-index-stage1.yml",
"chars": 205,
"preview": "jobs:\n- template: /eng/common/core-templates/job/source-index-stage1.yml\n parameters:\n is1ESPipeline: false\n\n ${{"
},
{
"path": "eng/common/templates/jobs/jobs.yml",
"chars": 191,
"preview": "jobs:\n- template: /eng/common/core-templates/jobs/jobs.yml\n parameters:\n is1ESPipeline: false\n\n ${{ each paramete"
},
{
"path": "eng/common/templates/jobs/source-build.yml",
"chars": 198,
"preview": "jobs:\n- template: /eng/common/core-templates/jobs/source-build.yml\n parameters:\n is1ESPipeline: false\n\n ${{ each "
},
{
"path": "eng/common/templates/post-build/common-variables.yml",
"chars": 248,
"preview": "variables:\n- template: /eng/common/core-templates/post-build/common-variables.yml\n parameters:\n # Specifies whether "
},
{
"path": "eng/common/templates/post-build/post-build.yml",
"chars": 239,
"preview": "stages:\n- template: /eng/common/core-templates/post-build/post-build.yml\n parameters:\n # Specifies whether to use 1E"
},
{
"path": "eng/common/templates/post-build/setup-maestro-vars.yml",
"chars": 246,
"preview": "steps:\n- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml\n parameters:\n # Specifies whether to"
},
{
"path": "eng/common/templates/steps/enable-internal-runtimes.yml",
"chars": 389,
"preview": "# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64'\n# "
},
{
"path": "eng/common/templates/steps/enable-internal-sources.yml",
"chars": 211,
"preview": "steps:\n- template: /eng/common/core-templates/steps/enable-internal-sources.yml\n parameters:\n is1ESPipeline: false\n\n"
},
{
"path": "eng/common/templates/steps/generate-sbom.yml",
"chars": 202,
"preview": "steps:\n- template: /eng/common/core-templates/steps/generate-sbom.yml\n parameters:\n is1ESPipeline: false\n\n ${{ ea"
},
{
"path": "eng/common/templates/steps/get-delegation-sas.yml",
"chars": 207,
"preview": "steps:\n- template: /eng/common/core-templates/steps/get-delegation-sas.yml\n parameters:\n is1ESPipeline: false\n\n $"
},
{
"path": "eng/common/templates/steps/get-federated-access-token.yml",
"chars": 214,
"preview": "steps:\n- template: /eng/common/core-templates/steps/get-federated-access-token.yml\n parameters:\n is1ESPipeline: fals"
},
{
"path": "eng/common/templates/steps/publish-build-artifacts.yml",
"chars": 1140,
"preview": "parameters:\n- name: is1ESPipeline\n type: boolean\n default: false\n\n- name: displayName\n type: string\n default: 'Publi"
},
{
"path": "eng/common/templates/steps/publish-logs.yml",
"chars": 201,
"preview": "steps:\n- template: /eng/common/core-templates/steps/publish-logs.yml\n parameters:\n is1ESPipeline: false\n\n ${{ eac"
},
{
"path": "eng/common/templates/steps/publish-pipeline-artifacts.yml",
"chars": 1262,
"preview": "parameters:\n- name: is1ESPipeline\n type: boolean\n default: false\n\n- name: args\n type: object\n default: {}\n\nsteps:\n- "
},
{
"path": "eng/common/templates/steps/retain-build.yml",
"chars": 201,
"preview": "steps:\n- template: /eng/common/core-templates/steps/retain-build.yml\n parameters:\n is1ESPipeline: false\n\n ${{ eac"
},
{
"path": "eng/common/templates/steps/send-to-helix.yml",
"chars": 202,
"preview": "steps:\n- template: /eng/common/core-templates/steps/send-to-helix.yml\n parameters:\n is1ESPipeline: false\n\n ${{ ea"
},
{
"path": "eng/common/templates/steps/source-build.yml",
"chars": 201,
"preview": "steps:\n- template: /eng/common/core-templates/steps/source-build.yml\n parameters:\n is1ESPipeline: false\n\n ${{ eac"
},
{
"path": "eng/common/templates/steps/source-index-stage1-publish.yml",
"chars": 216,
"preview": "steps:\n- template: /eng/common/core-templates/steps/source-index-stage1-publish.yml\n parameters:\n is1ESPipeline: fal"
},
{
"path": "eng/common/templates/steps/vmr-sync.yml",
"chars": 6532,
"preview": "### These steps synchronize new code from product repositories into the VMR (https://github.com/dotnet/dotnet).\n### They"
},
{
"path": "eng/common/templates/variables/pool-providers.yml",
"chars": 2855,
"preview": "# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool"
},
{
"path": "eng/common/templates/vmr-build-pr.yml",
"chars": 1391,
"preview": "# This pipeline is used for running the VMR verification of the PR changes in repo-level PRs.\n#\n# It will run a full set"
},
{
"path": "eng/common/templates-official/job/job.yml",
"chars": 4618,
"preview": "parameters:\n runAsPublic: false\n# Sbom related params, unused now and can eventually be removed\n enableSbom: unused\n "
},
{
"path": "eng/common/templates-official/job/onelocbuild.yml",
"chars": 196,
"preview": "jobs:\n- template: /eng/common/core-templates/job/onelocbuild.yml\n parameters:\n is1ESPipeline: true\n\n ${{ each par"
},
{
"path": "eng/common/templates-official/job/publish-build-assets.yml",
"chars": 205,
"preview": "jobs:\n- template: /eng/common/core-templates/job/publish-build-assets.yml\n parameters:\n is1ESPipeline: true\n\n ${{"
},
{
"path": "eng/common/templates-official/job/source-build.yml",
"chars": 197,
"preview": "jobs:\n- template: /eng/common/core-templates/job/source-build.yml\n parameters:\n is1ESPipeline: true\n\n ${{ each pa"
},
{
"path": "eng/common/templates-official/job/source-index-stage1.yml",
"chars": 204,
"preview": "jobs:\n- template: /eng/common/core-templates/job/source-index-stage1.yml\n parameters:\n is1ESPipeline: true\n\n ${{ "
},
{
"path": "eng/common/templates-official/jobs/jobs.yml",
"chars": 190,
"preview": "jobs:\n- template: /eng/common/core-templates/jobs/jobs.yml\n parameters:\n is1ESPipeline: true\n\n ${{ each parameter"
},
{
"path": "eng/common/templates-official/jobs/source-build.yml",
"chars": 197,
"preview": "jobs:\n- template: /eng/common/core-templates/jobs/source-build.yml\n parameters:\n is1ESPipeline: true\n\n ${{ each p"
},
{
"path": "eng/common/templates-official/post-build/common-variables.yml",
"chars": 247,
"preview": "variables:\n- template: /eng/common/core-templates/post-build/common-variables.yml\n parameters:\n # Specifies whether "
},
{
"path": "eng/common/templates-official/post-build/post-build.yml",
"chars": 239,
"preview": "stages:\n- template: /eng/common/core-templates/post-build/post-build.yml\n parameters:\n # Specifies whether to use 1E"
},
{
"path": "eng/common/templates-official/post-build/setup-maestro-vars.yml",
"chars": 245,
"preview": "steps:\n- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml\n parameters:\n # Specifies whether to"
},
{
"path": "eng/common/templates-official/steps/enable-internal-runtimes.yml",
"chars": 387,
"preview": "# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64'\n# "
},
{
"path": "eng/common/templates-official/steps/enable-internal-sources.yml",
"chars": 210,
"preview": "steps:\n- template: /eng/common/core-templates/steps/enable-internal-sources.yml\n parameters:\n is1ESPipeline: true\n\n "
},
{
"path": "eng/common/templates-official/steps/generate-sbom.yml",
"chars": 201,
"preview": "steps:\n- template: /eng/common/core-templates/steps/generate-sbom.yml\n parameters:\n is1ESPipeline: true\n\n ${{ eac"
},
{
"path": "eng/common/templates-official/steps/get-delegation-sas.yml",
"chars": 206,
"preview": "steps:\n- template: /eng/common/core-templates/steps/get-delegation-sas.yml\n parameters:\n is1ESPipeline: true\n\n ${"
},
{
"path": "eng/common/templates-official/steps/get-federated-access-token.yml",
"chars": 213,
"preview": "steps:\n- template: /eng/common/core-templates/steps/get-federated-access-token.yml\n parameters:\n is1ESPipeline: true"
},
{
"path": "eng/common/templates-official/steps/publish-build-artifacts.yml",
"chars": 1156,
"preview": "parameters:\n- name: displayName\n type: string\n default: 'Publish to Build Artifact'\n\n- name: condition\n type: string\n"
},
{
"path": "eng/common/templates-official/steps/publish-logs.yml",
"chars": 200,
"preview": "steps:\n- template: /eng/common/core-templates/steps/publish-logs.yml\n parameters:\n is1ESPipeline: true\n\n ${{ each"
},
{
"path": "eng/common/templates-official/steps/publish-pipeline-artifacts.yml",
"chars": 1089,
"preview": "parameters:\n- name: is1ESPipeline\n type: boolean\n default: true\n\n- name: args\n type: object\n default: {}\n\nsteps:\n- $"
},
{
"path": "eng/common/templates-official/steps/retain-build.yml",
"chars": 200,
"preview": "steps:\n- template: /eng/common/core-templates/steps/retain-build.yml\n parameters:\n is1ESPipeline: true\n\n ${{ each"
},
{
"path": "eng/common/templates-official/steps/send-to-helix.yml",
"chars": 201,
"preview": "steps:\n- template: /eng/common/core-templates/steps/send-to-helix.yml\n parameters:\n is1ESPipeline: true\n\n ${{ eac"
},
{
"path": "eng/common/templates-official/steps/source-build.yml",
"chars": 200,
"preview": "steps:\n- template: /eng/common/core-templates/steps/source-build.yml\n parameters:\n is1ESPipeline: true\n\n ${{ each"
},
{
"path": "eng/common/templates-official/steps/source-index-stage1-publish.yml",
"chars": 215,
"preview": "steps:\n- template: /eng/common/core-templates/steps/source-index-stage1-publish.yml\n parameters:\n is1ESPipeline: tru"
},
{
"path": "eng/common/templates-official/variables/pool-providers.yml",
"chars": 2236,
"preview": "# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool"
},
{
"path": "eng/common/tools.ps1",
"chars": 38831,
"preview": "# Initialize variables if they aren't already defined.\n# These may be defined as parameters of the importing script, or "
},
{
"path": "eng/common/tools.sh",
"chars": 23651,
"preview": "#!/usr/bin/env bash\n\n# Initialize variables if they aren't already defined.\n\n# CI mode - set to true on CI server for PR"
},
{
"path": "eng/common/vmr-sync.ps1",
"chars": 4394,
"preview": "<#\n.SYNOPSIS\n\nThis script is used for synchronizing the current repository into a local VMR.\nIt pulls the current reposi"
},
{
"path": "eng/common/vmr-sync.sh",
"chars": 6112,
"preview": "#!/bin/bash\n\n### This script is used for synchronizing the current repository into a local VMR.\n### It pulls the current"
},
{
"path": "eng/common-variables.yml",
"chars": 825,
"preview": "variables:\r\n # Cannot use key:value syntax in root defined variables\r\n - name: _TeamName\r\n value: DotNetCore\r\n - n"
},
{
"path": "eng/e2e-test.yml",
"chars": 1606,
"preview": "parameters:\n # This template tests a given .proj file using the Helix SDK\n name: ''\n displayName: ''\n testProject: '"
},
{
"path": "eng/pipelines/apiscan-steps.yml",
"chars": 1120,
"preview": "steps:\n - script: dir $(Build.SourcesDirectory)\\artifacts\\bin\\Microsoft.DotNet.XHarness.CLI /s\n displayName: List CL"
},
{
"path": "es-metadata.yml",
"chars": 208,
"preview": "schemaVersion: 0.0.1\nisProduction: true\naccountableOwners:\n service: 97d8e3f4-a4c4-4c48-8ce1-d6b3342c16f1\nrouting:\n de"
},
{
"path": "global.json",
"chars": 205,
"preview": "{\n \"tools\": {\n \"dotnet\": \"11.0.100-preview.4.26210.111\"\n },\n \"msbuild-sdks\": {\n \"Microsoft.DotNet.Arcade.Sdk\": "
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/AdbExitCodes.cs",
"chars": 581,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/AdbFailureException.cs",
"chars": 390,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/AdbRunner.cs",
"chars": 58109,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you unde"
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/AndroidDevice.cs",
"chars": 719,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/ApkHelper.cs",
"chars": 1225,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.IO.Compression;\nusing System.Linq;\n\nnames"
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/Execution/AdbProcessManager.cs",
"chars": 3641,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing Sys"
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/Execution/AdbReportFactory.cs",
"chars": 711,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/Execution/Api23AndOlderReportManager.cs",
"chars": 1363,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/Execution/IAdbProcessManager.cs",
"chars": 1697,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/Execution/IReportManager.cs",
"chars": 379,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/Execution/NewReportManager.cs",
"chars": 1058,
"preview": "using System;\nusing System.Threading;\nusing Microsoft.Extensions.Logging;\n\nnamespace Microsoft.DotNet.XHarness.Android."
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/InstrumentationRunner.cs",
"chars": 12408,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Android/Microsoft.DotNet.XHarness.Android.csproj",
"chars": 285,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFrameworks>$(XHarnessNetTFMs)</TargetFrameworks>\n </Pro"
},
{
"path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppInstaller.cs",
"chars": 2681,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppRunner.cs",
"chars": 11424,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
},
{
"path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppRunnerBase.cs",
"chars": 14715,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppRunnerFactory.cs",
"chars": 2037,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppTester.cs",
"chars": 33723,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under "
},
{
"path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppTesterFactory.cs",
"chars": 3255,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Apple/AppOperations/AppUninstaller.cs",
"chars": 2159,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Apple/CommunicationChannel.cs",
"chars": 589,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
},
{
"path": "src/Microsoft.DotNet.XHarness.Apple/CrashSnapshotReporterFactory.cs",
"chars": 1125,
"preview": "// Licensed to the .NET Foundation under one or more agreements.\n// The .NET Foundation licenses this file to you under"
}
]
// ... and 451 more files (download for full content)
About this extraction
This page contains the full source code of the dotnet/xharness GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 651 files (6.5 MB), approximately 1.7M tokens, and a symbol index with 2389 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.