parameters:
  additionalBuildArguments: ''

steps:
- checkout: self
  fetchDepth: 1
  submodules: true
  clean: true

- task: NuGetToolInstaller@0
  displayName: Ensure NuGet 5.8.0
  inputs:
    versionSpec: 5.8.0

#- template: .\..\..\..\restore-dependencies.yml

- task: VisualStudioTestPlatformInstaller@1
  displayName: Ensure VSTest Platform

- task: NuGetCommand@2
  displayName: Restore NuGet packages for PowerToys.sln
  inputs:
    command: restore
    feedsToUse: config
    configPath: NuGet.config
    restoreSolution: PowerToys.sln
    restoreDirectory: '$(Build.SourcesDirectory)\packages'

- task: VSBuild@1
  displayName: 'Build PowerToys.sln'
  inputs:
    solution: '**\PowerToys.sln'
    vsVersion: 16.0
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    msbuildArgs: ${{ parameters.additionalBuildArguments }}
    maximumCpuCount: true

- task: NuGetCommand@2
  displayName: Restore NuGet packages for BugReportTool.sln
  inputs:
    command: restore
    feedsToUse: config
    configPath: NuGet.config
    restoreSolution: tools\BugReportTool\BugReportTool.sln
    restoreDirectory: '$(Build.SourcesDirectory)\tools\BugReportTool\packages'

- task: VSBuild@1
  displayName: 'Build BugReportTool.sln'
  inputs:
    solution: '**\BugReportTool.sln'
    vsVersion: 16.0
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    msbuildArgs: ${{ parameters.additionalBuildArguments }}
    maximumCpuCount: true

- task: NuGetCommand@2
  displayName: Restore NuGet packages for WebcamReportTool.sln
  inputs:
    command: restore
    feedsToUse: config
    configPath: NuGet.config
    restoreSolution: tools\WebcamReportTool\WebcamReportTool.sln
    restoreDirectory: '$(Build.SourcesDirectory)\tools\WebcamReportTool\packages'

- task: VSBuild@1
  displayName: 'Build WebcamReportTool.sln'
  inputs:
    solution: '**\WebcamReportTool.sln'
    vsVersion: 16.0
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    msbuildArgs: ${{ parameters.additionalBuildArguments }}
    maximumCpuCount: true

- task: NuGetCommand@2
  displayName: Restore NuGet packages for PowerToysSetup.sln
  inputs:
    command: restore
    feedsToUse: config
    configPath: NuGet.config
    restoreSolution: installer\PowerToysSetup.sln
    restoreDirectory: '$(Build.SourcesDirectory)\installer\packages'

- task: VSBuild@1
  displayName: 'Build PowerToysSetup.sln'
  inputs:
    solution: '**\installer\PowerToysSetup.sln'
    vsVersion: 16.0
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    msbuildArgs: ${{ parameters.additionalBuildArguments }}
    maximumCpuCount: true

- task: NuGetCommand@2
  displayName: Restore NuGet packages for PowerToysBootstrapper.sln
  inputs:
    command: restore
    feedsToUse: config
    configPath: NuGet.config
    restoreSolution: installer\PowerToysBootstrapper\PowerToysBootstrapper.sln
    restoreDirectory: '$(Build.SourcesDirectory)\installer\PowerToysBootstrapper\packages'

- task: VSBuild@1
  displayName: 'Build PowerToysBootstrapper.sln'
  inputs:
    solution: '**\installer\PowerToysBootstrapper\PowerToysBootstrapper.sln'
    vsVersion: 16.0
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    msbuildArgs: ${{ parameters.additionalBuildArguments }}
    maximumCpuCount: true

# directly not doing WinAppDriver testing
- task: VSTest@2
  displayName: 'MS Tests'
  inputs:
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    testSelector: 'testAssemblies'
    testAssemblyVer2: |
      **\UnitTests-SvgThumbnailProvider.dll
      **\UnitTests-PdfThumbnailProvider.dll
      **\Microsoft.PowerToys.Settings.UI.UnitTests.dll
      **\UnitTests-MarkdownPreviewHandler.dll
      **\UnitTests-PdfPreviewHandler.dll
      **\UnitTests-SvgPreviewHandler.dll
      **\UnitTests-PreviewHandlerCommon.dll
      **\PreviewPaneUnitTests.dll
      **\Microsoft.PowerToys.Run.Plugin.Registry.UnitTests.dll
      **\UnitTest-ColorPickerUI.dll
      **\Microsoft.Interop.Tests.dll
      **\ImageResizer.Test.dll
      **\Community.PowerToys.Run.Plugin.UnitConverter.UnitTest.dll
      **\Microsoft.Plugin.Folder.UnitTests.dll
      **\Microsoft.Plugin.Program.UnitTests.dll
      **\Microsoft.PowerToys.Run.Plugin.Calculator.UnitTest.dll
      **\Microsoft.Plugin.Uri.UnitTests.dll
      **\Wox.Test.dll
      **\Microsoft.PowerToys.Run.Plugin.System.UnitTests.dll
      !**\obj\**

# Native dlls
- task: VSTest@2
  displayName: 'Native Tests'
  inputs:
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    testSelector: 'testAssemblies'
    testAssemblyVer2: |
      **\KeyboardManagerEngineTest.dll
      **\KeyboardManagerEditorTest.dll
      **\UnitTests-CommonLib.dll
      **\PowerRenameUnitTests.dll
      **\powerpreviewTest.dll
      !**\obj\**
