<?xml version="1.0" encoding="utf-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- Properties and targets related to xUnit testing -->
  <PropertyGroup>
    <xUnitVersion>2.1.0</xUnitVersion>
    <xUnitAbstractionsVersion>2.0.0</xUnitAbstractionsVersion>
  </PropertyGroup>
  <Import Project="$(PackagesDir)\xunit.runner.visualstudio.$(xUnitVersion)\build\net20\xunit.runner.visualstudio.props" Condition="Exists('$(PackagesDir)\xunit.runner.visualstudio.$(xUnitVersion)\build\net20\xunit.runner.visualstudio.props')" />
  <Import Project="$(PackagesDir)\xunit.core.$(xUnitVersion)\build\portable-net45+win8+wp8+wpa81\xunit.core.props" Condition="Exists('$(PackagesDir)\xunit.core.$(xUnitVersion)\build\portable-net45+win8+wp8+wpa81\xunit.core.props')" />
  <ItemGroup>
    <Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
      <HintPath>$(PackagesDir)\xunit.abstractions.$(xUnitAbstractionsVersion)\lib\net35\xunit.abstractions.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="xunit.assert, Version=2.1.0.3179, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
      <HintPath>$(PackagesDir)\xunit.assert.$(xUnitVersion)\lib\portable-net45+win8+wp8+wpa81\xunit.assert.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="xunit.core, Version=2.1.0.3179, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
      <HintPath>$(PackagesDir)\xunit.extensibility.core.$(xUnitVersion)\lib\portable-net45+win8+wp8+wpa81\xunit.core.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="xunit.execution.desktop, Version=2.1.0.3179, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
      <HintPath>$(PackagesDir)\xunit.extensibility.execution.$(xUnitVersion)\lib\net45\xunit.execution.desktop.dll</HintPath>
      <Private>True</Private>
    </Reference>
  </ItemGroup>
  <Target Name="EnsureNuGetPackageBuildImports_xUnit" BeforeTargets="PrepareForBuild">
    <Error Condition="!Exists('$(PackagesDir)\xunit.core.$(xUnitVersion)\build\portable-net45+win8+wp8+wpa81\xunit.core.props')" Text="$([System.String]::Format('$(NuGetError)', '$(PackagesDir)\xunit.core.$(xUnitVersion)\build\portable-net45+win8+wp8+wpa81\xunit.core.props'))" />
    <Error Condition="!Exists('$(PackagesDir)\xunit.runner.visualstudio.$(xUnitVersion)\build\net20\xunit.runner.visualstudio.props')" Text="$([System.String]::Format('$(NuGetError)', '$(PackagesDir)\xunit.runner.visualstudio.$(xUnitVersion)\build\net20\xunit.runner.visualstudio.props'))" />
  </Target>
  <Target Name="InstallXunitConsoleRunner" BeforeTargets="Test">
    <Exec Command="$(SolutionDir)\.nuget\nuget.exe restore $(SolutionDir)\.nuget\packages.config -o $(PackagesDir)" />
  </Target>
  <Target Name="Test">
    <Exec Command="$(PackagesDir)\xunit.runner.console.$(xUnitVersion)\tools\xunit.console.exe $(OutputPath)\$(AssemblyName).dll -html $(OutputPath)\xunit_report.html"
          IgnoreStandardErrorWarningFormat="true"
      />
  </Target>
</Project>