This commit is contained in:
Don Syme 2016-10-18 00:50:27 +01:00
Родитель ea2f73756f
Коммит f649cfc3fb
6 изменённых файлов: 279 добавлений и 367 удалений

Просмотреть файл

@ -7,6 +7,8 @@ To learn what F# is and why it's interesting, go to [fsharp.org](http://fsharp.o
The primary technical documents for the F# compiler code are
* [The F# Language and Core Library RFC Process](http://fsharp.github.io/2016/09/26/fsharp-rfc-process.html)
* [The F# Language Specification](http://fsharp.org/specs/language-spec/)
* [The F# Compiler Technical Guide](http://fsharp.github.io/2015/09/29/fsharp-compiler-guide.html)
@ -34,7 +36,7 @@ There are various qualifiers:
build.cmd release -- build release (the default)
build.cmd debug -- build debug instead of release
build.cmd net40 -- build .NET Framework compiler
build.cmd net40 -- build .NET Framework compiler (the default)
build.cmd coreclr -- build .NET Core compiler
build.cmd vs -- build the Visual F# IDE Tools
build.cmd pcls -- build the PCL FSharp.Core libraries
@ -49,11 +51,8 @@ There are various qualifiers:
build.cmd all test -- build all, run all tests
build.cmd test-smoke -- build, run smoke tests
build.cmd test-coreunit -- build, run FSharp.Core tests
build.cmd test-coreclr -- build, run .NET Core tests
build.cmd test-pcls -- build, run PCL tests
build.cmd test-fsharp -- build, run tests\fsharp suite
build.cmd test-fsharpqa -- build, run tests\fsharpqa suite
build.cmd test-net40-fsharp-suite -- build, run tests\fsharp suite for .NET Framework
build.cmd test-net40-fsharpqa-suite -- build, run tests\fsharpqa suite for .NET Framework
**Notes**
To build and test Visual F# IDE Tools, you must use [Visual Studio "vNext" (aka "Dev15")](https://www.visualstudio.com/en-us/downloads/visual-studio-next-downloads-vs.aspx). This is the one after Visual Studio 2015 (aka "Dev 14"). You must also install Visual Studio SDK (also called _Visual Studio Extensibility SDK_ on the Visual Studio installer) before building Visual F# IDE Tools.

Просмотреть файл

@ -63,9 +63,9 @@ For the FSharp and FSharpQA suites, the list of test areas and their associated
tests\test.lst // FSharp suite
tests\fsharpqa\source\test.lst // FSharpQA suite
Tags are in the left column, paths to to corresponding test folders are in the right column. If no tags are specified to `RunTests.cmd`, all tests will be run.
Tags are in the left column, paths to to corresponding test folders are in the right column. If no tags are specifie, all tests will be run.
If you want to re-run a particular test area, the easiest way to do so is to set a temporary tag for that area in test.lst (e.g. "RERUN"), then call `RunTests.cmd <debug|release> <fsharp|fsharpqa> RERUN`.
If you want to re-run a particular test area, the easiest way to do so is to set a temporary tag for that area in test.lst (e.g. "RERUN").
### Logs and output
@ -83,5 +83,5 @@ All test execution logs and result files will be dropped into the `tests\TestRes
* Making the tests run faster
* NGen-ing the F# bits (fsc, fsi, FSharp.Core, etc) will result in tests executing much faster. Make sure you run `src\update.cmd` with the `-ngen` flag before running tests.
* The FSharp and FSharpQA suites will run test cases in parallel by default. You can comment out the relevant line in `RunTests.cmd` (look for `PARALLEL_ARG`) to disable this.
* By default, tests from the FSharpQA suite are run using a persistent, hosted version of the compiler. This speeds up test execution, as there is no need for the `fsc.exe` process to spin up repeatedly. To disable this, uncomment the relevant line in `RunTests.cmd` (look for `HOSTED_COMPILER`).
* The FSharp and FSharpQA suites will run test cases in parallel by default. You can comment out the relevant line (look for `PARALLEL_ARG`) to disable this.
* By default, tests from the FSharpQA suite are run using a persistent, hosted version of the compiler. This speeds up test execution, as there is no need for the `fsc.exe` process to spin up repeatedly. To disable this, uncomment the relevant line (look for `HOSTED_COMPILER`).

330
build.cmd
Просмотреть файл

@ -1,5 +1,7 @@
@if "%_echo%"=="" echo off
setlocal enableDelayedExpansion
:ARGUMENTS_VALIDATION
if /I "%1" == "--help" (goto :USAGE)
@ -40,7 +42,7 @@ echo.
echo The example below run pcls, vs and qa:
echo.
echo build.cmd pcls vs debug
exit /b 1
goto :success
:ARGUMENTS_OK
@ -69,16 +71,14 @@ set SKIP_EXPENSIVE_TESTS=1
REM ------------------ Parse all arguments -----------------------
setlocal enableDelayedExpansion
set _autoselect=1
set _autoselect_tests=0
set /a counter=0
for /l %%x in (1 1 9) do (
set /a counter=!counter!+1
call :SET_CONFIG %%!counter! "!counter!"
call :PROCESS_ARG %%!counter! "!counter!"
)
for %%i in (%BUILD_FSC_DEFAULT%) do ( call :SET_CONFIG %%i )
for %%i in (%BUILD_FSC_DEFAULT%) do ( call :PROCESS_ARG %%i )
REM apply defaults
@ -107,23 +107,17 @@ if /i '%_autoselect_tests%' == '1' (
)
)
setlocal disableDelayedExpansion
echo.
rem disable setup build by setting FSC_BUILD_SETUP=0
if /i '%FSC_BUILD_SETUP%' == '' (set FSC_BUILD_SETUP=1)
goto :MAIN
REM ------------------ Procedure to parse one argument -----------------------
:SET_CONFIG
:PROCESS_ARG
set ARG=%~1
if "%ARG%" == "1" if "%2" == "" (set ARG=default)
if "%2" == "" if not "%ARG%" == "default" goto :EOF
echo Parse argument %ARG%
if /i '%ARG%' == 'net40' (
set _autoselect=0
set BUILD_NET40=1
@ -138,7 +132,6 @@ if /i '%ARG%' == 'coreclr' (
if /i '%ARG%' == 'pcls' (
set _autoselect=0
set BUILD_PORTABLE=1
set TEST_PORTABLE_COREUNIT_SUITE=1
)
if /i '%ARG%' == 'vs' (
@ -308,6 +301,10 @@ if /i '%ARG%' == 'publicsign' (
)
goto :EOF
:: Note: "goto :EOF" returns from an in-batchfile "call" command
:: in preference to returning from the entire batch file.
REM ------------------ Report config -----------------------
:MAIN
@ -398,7 +395,8 @@ if defined APPVEYOR (
set _msbuildexe=%_msbuildexe% /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
)
)
set msbuildflags=/maxcpucount %_nrswitch% /nologo
REM set msbuildflags=/maxcpucount %_nrswitch% /nologo
set msbuildflags=%_nrswitch% /nologo
set _ngenexe="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\ngen.exe"
if not exist %_ngenexe% echo Error: Could not find ngen.exe. && goto :failure
@ -538,107 +536,311 @@ if '%BUILD_CORECLR%' == '1' (
)
if 'TEST_NET40_COMPILERUNIT_SUITE' == '0' and 'TEST_PORTABLE_COREUNIT_SUITE' == '0' and 'TEST_CORECLR_COREUNIT_SUITE' == '0' and 'TEST_VS_IDEUNIT_SUITE' == '0' and 'TEST_NET40_FSHARP_SUITE' == '0' and 'TEST_NET40_FSHARPQA_SUITE' == '0' goto :finished
if 'TEST_NET40_COMPILERUNIT_SUITE' == '0' and 'TEST_PORTABLE_COREUNIT_SUITE' == '0' and 'TEST_CORECLR_COREUNIT_SUITE' == '0' and 'TEST_VS_IDEUNIT_SUITE' == '0' and 'TEST_NET40_FSHARP_SUITE' == '0' and 'TEST_NET40_FSHARPQA_SUITE' == '0' goto :success
echo ---------------- Done with update, starting tests -----------------------
pushd tests
set NUNITPATH=%~dp0tests\fsharpqa\testenv\bin\nunit\
set NUNIT3_CONSOLE=%~dp0packages\NUnit.Console.3.0.0\tools\nunit3-console.exe
set link_exe=%~dp0packages\VisualCppTools.14.0.24519-Pre\lib\native\bin\link.exe
if not exist "%link_exe%" (
set saved_errorlevel=1
echo Error: failed to find '%link_exe%' use nuget to restore the VisualCppTools package
goto :failed_tests
)
if /I not '%single_threaded%' == 'true' (set PARALLEL_ARG=-procs:%NUMBER_OF_PROCESSORS%) else set PARALLEL_ARG=-procs:0
if "%SKIP_EXPENSIVE_TESTS%" == "1" (
set EXCLUDE_ARG_NUNIT=--where "cat != Expensive"
set EXCLUDE_ARG_RUNALL=-nottags:Expensive
)
set FSCBINPATH=%~dp0%BUILD_CONFIG%\net40\bin
set FSI_TOOL=%_fsiexe%
set RESULTSDIR=%~dp0tests\TestResults
if not exist "%RESULTSDIR%" (mkdir "%RESULTSDIR%")
ECHO FSCBINPATH=%FSCBINPATH%
ECHO RESULTSDIR=%RESULTSDIR%
ECHO FSI_TOOL=%FSI_TOOL%
ECHO link_exe=%link_exe%
ECHO NUNIT3_CONSOLE=%NUNIT3_CONSOLE%
ECHO NUNITPATH=%NUNITPATH%
REM ---------------- net40-fsharp-suite -----------------------
if '%TEST_NET40_FSHARP_SUITE%' == '1' (
echo call RunTests.cmd %BUILD_CONFIG% net40-fsharp-suite %TEST_TAGS%
call RunTests.cmd %BUILD_CONFIG% net40-fsharp-suite %TEST_TAGS%
@if ERRORLEVEL 1 (
set XMLFILE=%RESULTSDIR%\net40-fsharp-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\net40-fsharp-suite-output.log
set ERRORFILE=%RESULTSDIR%\net40-fsharp-suite-errors.log
echo "%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\FSharp.Tests.FSharp.dll" --framework:V4.0 %EXCLUDE_ARG_NUNIT% --work:"%FSCBINPATH%" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --result:"!XMLFILE!;format=nunit2"
"%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\FSharp.Tests.FSharp.dll" --framework:V4.0 %EXCLUDE_ARG_NUNIT% --work:"%FSCBINPATH%" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --result:"!XMLFILE!;format=nunit2"
call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!"
if NOT '!saved_errorlevel!' == '0' (
type testresults\net40-fsharp-suite-errors.log
echo Error: 'Running tests net40-fsharp-suite %TEST_TAGS%' failed
echo Error: 'Running tests net40-fsharp-suite' failed
goto :failed_tests
)
)
REM ---------------- net40-fsharpqa-suite -----------------------
set OSARCH=%PROCESSOR_ARCHITECTURE%
rem Set this to 1 in order to use an external compiler host process
rem This only has an effect when running the FSHARPQA tests, but can
rem greatly speed up execution since fsc.exe does not need to be spawned thousands of times
set HOSTED_COMPILER=1
set X86_PROGRAMFILES=%ProgramFiles%
if "%OSARCH%"=="AMD64" set X86_PROGRAMFILES=%ProgramFiles(x86)%
set SYSWOW64=.
if "%OSARCH%"=="AMD64" set SYSWOW64=SysWoW64
if not "%OSARCH%"=="x86" set REGEXE32BIT=%WINDIR%\syswow64\reg.exe
FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B
if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B
if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B
if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B
if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B
set PATH=%PATH%;%WINSDKNETFXTOOLS%
for /d %%i in (%WINDIR%\Microsoft.NET\Framework\v4.0.?????) do set CORDIR=%%i
set PATH=%PATH%;%CORDIR%
set REGEXE32BIT=reg.exe
IF NOT DEFINED SNEXE32 IF EXIST "%WINSDKNETFXTOOLS%sn.exe" set SNEXE32=%WINSDKNETFXTOOLS%sn.exe
IF NOT DEFINED SNEXE64 IF EXIST "%WINSDKNETFXTOOLS%x64\sn.exe" set SNEXE64=%WINSDKNETFXTOOLS%x64\sn.exe
IF NOT DEFINED ildasm IF EXIST "%WINSDKNETFXTOOLS%ildasm.exe" set ildasm=%WINSDKNETFXTOOLS%ildasm.exe
if '%TEST_NET40_FSHARPQA_SUITE%' == '1' (
echo call RunTests.cmd %BUILD_CONFIG% net40-fsharpqa-suite %TEST_TAGS%
call RunTests.cmd %BUILD_CONFIG% net40-fsharpqa-suite %TEST_TAGS%
@if ERRORLEVEL 1 (
echo type testresults\net40-fsharpqa-suite-results.log
type testresults\net40-fsharpqa-suite-results.log
echo type testresults\net40-fsharpqa-suite-errors.log
type testresults\net40-fsharpqa-suite-errors.log
echo Error: 'Running tests net40-fsharpqa-suite %TEST_TAGS%' failed
set FSC=!FSCBINPATH!\fsc.exe
set PATH=!FSCBINPATH!;!PATH!
set FSCVPREVBINPATH=!X86_PROGRAMFILES!\Microsoft SDKs\F#\4.0\Framework\v4.0
set FSCVPREV=!FSCVPREVBINPATH!\fsc.exe
REM == VS-installed paths to FSharp.Core.dll
set FSCOREDLLPATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.1.0
set FSCOREDLL20PATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETFramework\v2.0\2.3.0.0
set FSCOREDLLPORTABLEPATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETPortable\3.47.41.0
set FSCOREDLLNETCOREPATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETCore\3.7.41.0
set FSCOREDLLNETCORE78PATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETCore\3.78.41.0
set FSCOREDLLNETCORE259PATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETCore\3.259.41.0
set FSDATATPPATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.3.0.0\Type Providers
set FSCOREDLLVPREVPATH=!X86_PROGRAMFILES!\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.0.0
REM == open source logic
if exist "!FSCBinPath!\FSharp.Core.dll" set FSCOREDLLPATH=!FSCBinPath!
if exist "!FSCBinPath!\..\..\net20\bin\FSharp.Core.dll" set FSCOREDLL20PATH=!FSCBinPath!\..\..\net20\bin
if exist "!FSCBinPath!\..\..\portable47\bin\FSharp.Core.dll" set FSCOREDLLPORTABLEPATH=!FSCBinPath!\..\..\portable47\bin
if exist "!FSCBinPath!\..\..\portable7\bin\FSharp.Core.dll" set FSCOREDLLNETCOREPATH=!FSCBinPath!\..\..\portable7\bin
IF exist "!FSCBinPath!\..\..\portable78\bin\FSharp.Core.dll" set FSCOREDLLNETCORE78PATH=!FSCBinPath!\..\..\portable78\bin
IF exist "!FSCBinPath!\..\..\portable259\bin\FSharp.Core.dll" set FSCOREDLLNETCORE259PATH=!FSCBinPath!\..\..\portable259\bin
set FSCOREDLLPATH=!FSCOREDLLPATH!\FSharp.Core.dll
set FSCOREDLL20PATH=!FSCOREDLL20PATH!\FSharp.Core.dll
set FSCOREDLLPORTABLEPATH=!FSCOREDLLPORTABLEPATH!\FSharp.Core.dll
set FSCOREDLLNETCOREPATH=!FSCOREDLLNETCOREPATH!\FSharp.Core.dll
set FSCOREDLLNETCORE78PATH=!FSCOREDLLNETCORE78PATH!\FSharp.Core.dll
set FSCOREDLLNETCORE259PATH=!FSCOREDLLNETCORE259PATH!\FSharp.Core.dll
set FSCOREDLLVPREVPATH=!FSCOREDLLVPREVPATH!\FSharp.Core.dll
where.exe perl > NUL 2> NUL
if errorlevel 1 (
echo Error: perl is not in the PATH
goto :failed_tests
)
set OUTPUTFILE=net40-fsharpqa-suite-results.log
set ERRORFILE=net40-fsharpqa-suite-errors.log
set FAILENV=net40-fsharpqa-suite-errors
pushd %~dp0tests\fsharpqa\source
echo perl %~dp0tests\fsharpqa\testenv\bin\runall.pl -resultsroot %RESULTSDIR% -results !OUTPUTFILE! -log !ERRORFILE! -fail !FAILENV! -cleanup:no %INCLUDE_ARG_RUNALL% %EXCLUDE_ARG_RUNALL% %PARALLEL_ARG%
perl %~dp0tests\fsharpqa\testenv\bin\runall.pl -resultsroot %RESULTSDIR% -results !OUTPUTFILE! -log !ERRORFILE! -fail !FAILENV! -cleanup:no %INCLUDE_ARG_RUNALL% %EXCLUDE_ARG_RUNALL% %PARALLEL_ARG%
popd
if ERRORLEVEL 1 (
type "!OUTPUTFILE!"
type "!ERRORFILE!"
echo Error: 'Running tests net40-fsharpqa-suite' failed
goto :failed_tests
)
)
REM ---------------- net40-compilerunit-suite -----------------------
if '%TEST_NET40_COMPILERUNIT_SUITE%' == '1' (
echo call RunTests.cmd %BUILD_CONFIG% net40-compilerunit-suite %TEST_TAGS%
call RunTests.cmd %BUILD_CONFIG% net40-compilerunit-suite %TEST_TAGS%
@if ERRORLEVEL 1 (
type testresults\net40-compilerunit-suite-output.log
type testresults\net40-compilerunit-suite-errors.log
set XMLFILE=%RESULTSDIR%\net40-compilerunit-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\net40-compilerunit-suite-output.log
set ERRORFILE=%RESULTSDIR%\net40-compilerunit-suite-errors.log
echo "%NUNIT3_CONSOLE%" --verbose --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"!XMLFILE!;format=nunit2" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --work:"%FSCBINPATH%" "%FSCBINPATH%\..\..\net40\bin\FSharp.Compiler.Unittests.dll"
"%NUNIT3_CONSOLE%" --verbose --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"!XMLFILE!;format=nunit2" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --work:"%FSCBINPATH%" "%FSCBINPATH%\..\..\net40\bin\FSharp.Compiler.Unittests.dll"
call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!"
if NOT '!saved_errorlevel!' == '0' (
type "!OUTPUTFILE!"
type "!ERRORFILE!"
echo Error: 'Running tests net40-compilerunit-suite' failed
goto :failed_tests
)
)
REM ---------------- net40-coreunit-suite -----------------------
if '%TEST_NET40_COREUNIT_SUITE%' == '1' (
echo call RunTests.cmd %BUILD_CONFIG% net40-coreunit-suite %TEST_TAGS%
call RunTests.cmd %BUILD_CONFIG% net40-coreunit-suite %TEST_TAGS%
@if ERRORLEVEL 1 (
type testresults\net40-coreunit-suite-output.log
type testresults\net40-coreunit-suite-errors.log
set XMLFILE=%RESULTSDIR%\net40-coreunit-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\net40-coreunit-suite-output.log
set ERRORFILE=%RESULTSDIR%\net40-coreunit-suite-errors.log
echo "%NUNIT3_CONSOLE%" --verbose --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"!XMLFILE!;format=nunit2" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --work:"%FSCBINPATH%" "%FSCBINPATH%\FSharp.Core.Unittests.dll"
"%NUNIT3_CONSOLE%" --verbose --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"!XMLFILE!;format=nunit2" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --work:"%FSCBINPATH%" "%FSCBINPATH%\..\..\net40\bin\FSharp.Core.Unittests.dll"
call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!"
if NOT '!saved_errorlevel!' == '0' (
type "!OUTPUTFILE!"
type "!ERRORFILE!"
echo Error: 'Running tests net40-coreunit-suite' failed
goto :failed_tests
)
)
REM ---------------- portable-coreunit-suite -----------------------
if '%TEST_PORTABLE_COREUNIT_SUITE%' == '1' (
echo call RunTests.cmd %BUILD_CONFIG% portable-coreunit-suite %TEST_TAGS%
call RunTests.cmd %BUILD_CONFIG% portable-coreunit-suite %TEST_TAGS%
@if ERRORLEVEL 1 (
@echo "type testresults\portable-coreunit-suite-output.log "
@echo "type testresults\portable-coreunit-suite-errors.log "
type testresults\portable-coreunit-suite-errors.log
set XMLFILE=%RESULTSDIR%\portable-coreunit-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\portable-coreunit-suite-output.log
set ERRORFILE=%RESULTSDIR%\portable-coreunit-suite-errors.log
echo "%NUNIT3_CONSOLE%" /framework:V4.0 /result="!XMLFILE!;format=nunit2" /output="!OUTPUTFILE!" /err="!ERRORFILE!" /work="%FSCBINPATH%" "%FSCBINPATH%\..\..\portable7\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable47\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable78\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable259\bin\FSharp.Core.Unittests.dll"
"%NUNIT3_CONSOLE%" /framework:V4.0 /result="!XMLFILE!;format=nunit2" /output="!OUTPUTFILE!" /err="!ERRORFILE!" /work="%FSCBINPATH%" "%FSCBINPATH%\..\..\portable7\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable47\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable78\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable259\bin\FSharp.Core.Unittests.dll"
call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!"
if NOT '!saved_errorlevel!' == '0' (
type "!OUTPUTFILE!"
type "!ERRORFILE!"
echo Error: 'Running tests portable-coreunit-suite' failed
goto :failed_tests
)
)
REM ---------------- coreclr-coreunit-suite -----------------------
if '%TEST_CORECLR_COREUNIT_SUITE%' == '1' (
echo call RunTests.cmd %BUILD_CONFIG% coreclr-coreunit-suite %TEST_TAGS%
call RunTests.cmd %BUILD_CONFIG% coreclr-coreunit-suite %TEST_TAGS%
@if ERRORLEVEL 1 (
type testresults\coreclr-coreunit-suite-output.log
type testresults\coreclr-coreunit-suite-errors.log
echo Error: 'Running tests coreclr-coreunit-suite %TEST_TAGS%' failed
set XMLFILE=%RESULTSDIR%\coreclr-coreunit-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\coreclr-coreunit-suite-output.log
set ERRORFILE=%RESULTSDIR%\coreclr-coreunit-suite-errors.log
set architecture=win7-x64
set CORERUNPATH=%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\!architecture!
echo "!CORERUNPATH!\corerun.exe" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\fsharp.core.unittests\FSharp.Core.Unittests.exe"
"!CORERUNPATH!\corerun.exe" "%~dp0tests\testbin\!BUILD_CONFIG!\coreclr\fsharp.core.unittests\FSharp.Core.Unittests.exe"
rem call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!"
if ERRORLEVEL 1 (
rem type "!OUTPUTFILE!"
rem type "!ERRORFILE!"
echo Error: 'Running tests coreclr-coreunit-suite' failed
goto :failed_tests
)
)
REM ---------------- coreclr-fsharp-suite -----------------------
if '%TEST_CORECLR_FSHARP_SUITE%' == '1' (
echo call RunTests.cmd %BUILD_CONFIG% coreclr-fsharp-suite %TEST_TAGS%
call RunTests.cmd %BUILD_CONFIG% coreclr-fsharp-suite %TEST_TAGS%
@if ERRORLEVEL 1 (
type testresults\coreclr-fsharp-suite-output.log
type testresults\coreclr-fsharp-suite-errors.log
echo Error: 'Running tests coreclr-fsharp-suite %TEST_TAGS%' failed
set single_threaded=true
set permutations=FSC_CORECLR
set XMLFILE=%RESULTSDIR%\coreclr-fsharp-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\coreclr-fsharp-suite-output.log
set ERRORFILE=%RESULTSDIR%\coreclr-fsharp-suite-errors.log
echo "%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\..\..\coreclr\bin\FSharp.Tests.FSharp.dll" --framework:V4.0 %EXCLUDE_ARG_NUNIT% --work:"%FSCBINPATH%" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --result:"!XMLFILE!;format=nunit2"
"%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\..\..\coreclr\bin\FSharp.Tests.FSharp.dll" --framework:V4.0 %EXCLUDE_ARG_NUNIT% --work:"%FSCBINPATH%" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --result:"!XMLFILE!;format=nunit2"
call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!"
if NOT '!saved_errorlevel!' == '0' (
type "!OUTPUTFILE!"
type "!ERRORFILE!"
echo Error: 'Running tests coreclr-fsharp-suite' failed
goto :failed_tests
)
)
REM ---------------- vs-ideunit-suite -----------------------
if '%TEST_VS_IDEUNIT_SUITE%' == '1' (
echo call RunTests.cmd %BUILD_CONFIG% vs-ideunit-suite %TEST_TAGS%
call RunTests.cmd %BUILD_CONFIG% vs-ideunit-suite %TEST_TAGS%
@if ERRORLEVEL 1 (
type testresults\vs-ideunit-suite-output.log
type testresults\vs-ideunit-suite-errors.log
echo Error: 'Running tests vs-ideunit-suite %TEST_TAGS%' failed
set XMLFILE=%RESULTSDIR%\vs-ideunit-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\vs-ideunit-suite-output.log
set ERRORFILE=%RESULTSDIR%\vs-ideunit-suite-errors.log
pushd %FSCBINPATH%
echo "%NUNIT3_CONSOLE%" --verbose --x86 --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"!XMLFILE!;format=nunit2" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --work:"%FSCBINPATH%" --workers=1 --agents=1 --full "%FSCBINPATH%\VisualFSharp.Unittests.dll"
"%NUNIT3_CONSOLE%" --verbose --x86 --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"!XMLFILE!;format=nunit2" --output:"!OUTPUTFILE!" --err:"!ERRORFILE!" --work:"%FSCBINPATH%" --workers=1 --agents=1 --full "%FSCBINPATH%\VisualFSharp.Unittests.dll"
popd
call :UPLOAD_TEST_RESULTS "!XMLFILE!" "!OUTPUTFILE!" "!ERRORFILE!"
if NOT '!saved_errorlevel!' == '0' (
type "!OUTPUTFILE!"
type "!ERRORFILE!"
echo Error: 'Running tests vs-ideunit-suite' failed
goto :failed_tests
)
)
:finished
@echo "Finished"
popd
goto :eof
goto :success
REM ------ upload test results procedure -------------------------------------
:UPLOAD_TEST_RESULTS
set saved_errorlevel=%errorlevel%
echo Saved errorlevel %saved_errorlevel%
rem See <http://www.appveyor.com/docs/environment-variables>
if not defined APPVEYOR goto :SKIP_APPVEYOR_UPLOAD
echo powershell -File Upload-Results.ps1 "%~1"
powershell -File Upload-Results.ps1 "%~1"
:SKIP_APPVEYOR_UPLOAD
goto :EOF
:: Note: "goto :EOF" returns from an in-batchfile "call" command
:: in preference to returning from the entire batch file.
REM ------ exit -------------------------------------
:failed_tests
popd
endlocal
exit /b 1
:failure
endlocal
exit /b 1
:success
endlocal
exit /b 0

Просмотреть файл

@ -157,7 +157,7 @@
}
var fileContents = stringBuilder.ToString();
AssemblyFileVersionPath = Path.Combine(Path.GetTempPath(), string.Join(".", AssemblyName, "AssemblyFileVersion", Language));
AssemblyFileVersionPath = Path.Combine(Path.GetTempPath(), string.Join(".", AssemblyName, ProductVersion, "AssemblyFileVersion", Language));
if (File.Exists(AssemblyFileVersionPath) && File.ReadAllText(AssemblyFileVersionPath) == fileContents)
{

Просмотреть файл

@ -1,289 +0,0 @@
@if "%_echo%"=="" echo off
setlocal
set FLAVOR=%1
if /I "%FLAVOR%" == "debug" (goto :FLAVOR_OK)
if /I "%FLAVOR%" == "release" (goto :FLAVOR_OK)
goto :USAGE
:FLAVOR_OK
set NUNITPATH=%~dp0fsharpqa\testenv\bin\nunit\
SET NUNIT3_CONSOLE=%~dp0..\packages\NUnit.Console.3.0.0\tools\nunit3-console.exe
SET FSI_TOOL=%~dp0..\%FLAVOR%\net40\bin\Fsi.exe
set link_exe=%~dp0..\packages\VisualCppTools.14.0.24519-Pre\lib\native\bin\link.exe
if not exist "%link_exe%" (
set saved_errorlevel=1
echo Error: failed to find '%link_exe%' use nuget to restore the VisualCppTools package
goto :FINISHED
)
if /I not '%single_threaded%' == 'true' (set PARALLEL_ARG=-procs:%NUMBER_OF_PROCESSORS%) else set PARALLEL_ARG=-procs:0
rem This can be set to 1 to reduce the number of permutations used and avoid some of the extra-time-consuming tests
if "%SKIP_EXPENSIVE_TESTS%" == "1" (
set EXCLUDE_ARG_NUNIT=--where "cat != Expensive"
set EXCLUDE_ARG_RUNALL=-nottags:Expensive
)
rem Set this to 1 in order to use an external compiler host process
rem This only has an effect when running the FSHARPQA tests, but can
rem greatly speed up execution since fsc.exe does not need to be spawned thousands of times
set HOSTED_COMPILER=1
rem path to fsc.exe which will be used by tests
set FSCBINPATH=%~dp0..\%FLAVOR%\net40\bin
ECHO %FSCBINPATH%
rem folder where test logs/results will be dropped
set RESULTSDIR=%~dp0TestResults
if not exist "%RESULTSDIR%" (mkdir "%RESULTSDIR%")
if /I "%2" == "net40-fsharp-suite" (goto :NET40_FSHARP_SUITE)
if /I "%2" == "coreclr-fsharp-suite" (goto :CORECLR_FSHARP_SUITE)
if /I "%2" == "net40-fsharpqa-suite" (goto :NET40_FSHARPQA_SUITE)
if /I "%2" == "net40-fsharpqa-suite-downtarget" (goto :NET40_FSHARPQA_SUITE)
if /I "%2" == "net40-compilerunit-suite" (
set compilerunitsuffix=net40
goto :COMPILERUNIT_SUITE
)
if /I "%2" == "portable-coreunit-suite" (
goto :PORTABLE_COREUNIT_SUITE
)
if /I "%2" == "net40-coreunit-suite" (
goto :NET40_COREUNIT_SUITE
)
if /I "%2" == "coreclr-coreunit-suite" (
goto :CORECLR_COREUNIT_SUITE
)
if /I "%2" == "vs-ideunit-suite" (goto :VS_IDEUNIT_SUITE)
REM ----------------------------------------------------------------------------
:USAGE
echo Usage:
echo.
echo RunTests.cmd ^<debug^|release^> ^<...suite....^> [TagToRun^|"Tags,To,Run"] [TagNotToRun^|"Tags,Not,To,Run"]
echo.
exit /b 1
REM ----------------------------------------------------------------------------
:NET40_FSHARP_SUITE
set XMLFILE=%RESULTSDIR%\net40-fsharp-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\net40-fsharp-suite-output.log
set ERRORFILE=%RESULTSDIR%\net40-fsharp-suite-errors.log
echo "%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\..\..\net40\bin\FSharp.Tests.FSharp.dll" --framework:V4.0 %EXCLUDE_ARG_NUNIT% --work:"%FSCBINPATH%" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --result:"%XMLFILE%;format=nunit2"
"%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\..\..\net40\bin\FSharp.Tests.FSharp.dll" --framework:V4.0 %EXCLUDE_ARG_NUNIT% --work:"%FSCBINPATH%" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --result:"%XMLFILE%;format=nunit2"
call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%"
goto :EOF
REM ----------------------------------------------------------------------------
:CORECLR_FSHARP_SUITE
set single_threaded=true
set permutations=FSC_CORECLR
set XMLFILE=%RESULTSDIR%\coreclr-fsharp-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\coreclr-fsharp-suite-output.log
set ERRORFILE=%RESULTSDIR%\coreclr-fsharp-suite-errors.log
echo "%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\..\..\coreclr\bin\FSharp.Tests.FSharp.dll" --framework:V4.0 %EXCLUDE_ARG_NUNIT% --work:"%FSCBINPATH%" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --result:"%XMLFILE%;format=nunit2"
"%NUNIT3_CONSOLE%" --verbose "%FSCBINPATH%\..\..\coreclr\bin\FSharp.Tests.FSharp.dll" --framework:V4.0 %EXCLUDE_ARG_NUNIT% --work:"%FSCBINPATH%" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --result:"%XMLFILE%;format=nunit2"
call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%"
goto :EOF
REM ----------------------------------------------------------------------------
:NET40_FSHARPQA_SUITE
set OSARCH=%PROCESSOR_ARCHITECTURE%
set X86_PROGRAMFILES=%ProgramFiles%
if "%OSARCH%"=="AMD64" set X86_PROGRAMFILES=%ProgramFiles(x86)%
set SYSWOW64=.
if "%OSARCH%"=="AMD64" set SYSWOW64=SysWoW64
set REGEXE32BIT=reg.exe
if not "%OSARCH%"=="x86" set REGEXE32BIT=%WINDIR%\syswow64\reg.exe
FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B
if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B
if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B
if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B
if "%WINSDKNETFXTOOLS%"=="" FOR /F "tokens=2* delims= " %%A IN ('%REGEXE32BIT% QUERY "HKLM\Software\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools" /v InstallationFolder') DO SET WINSDKNETFXTOOLS=%%B
set PATH=%PATH%;%WINSDKNETFXTOOLS%
IF NOT DEFINED SNEXE32 IF EXIST "%WINSDKNETFXTOOLS%sn.exe" set SNEXE32=%WINSDKNETFXTOOLS%sn.exe
IF NOT DEFINED SNEXE64 IF EXIST "%WINSDKNETFXTOOLS%x64\sn.exe" set SNEXE64=%WINSDKNETFXTOOLS%x64\sn.exe
IF NOT DEFINED ildasm IF EXIST "%WINSDKNETFXTOOLS%ildasm.exe" set ildasm=%WINSDKNETFXTOOLS%ildasm.exe
set FSC=%FSCBINPATH%\fsc.exe
set PATH=%FSCBINPATH%;%PATH%
set FSCVPREVBINPATH=%X86_PROGRAMFILES%\Microsoft SDKs\F#\4.0\Framework\v4.0
set FSCVPREV=%FSCVPREVBINPATH%\fsc.exe
REM == VS-installed paths to FSharp.Core.dll
set FSCOREDLLPATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.1.0
set FSCOREDLL20PATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETFramework\v2.0\2.3.0.0
set FSCOREDLLPORTABLEPATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETPortable\3.47.41.0
set FSCOREDLLNETCOREPATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETCore\3.7.41.0
set FSCOREDLLNETCORE78PATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETCore\3.78.41.0
set FSCOREDLLNETCORE259PATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETCore\3.259.41.0
set FSDATATPPATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.3.0.0\Type Providers
set FSCOREDLLVPREVPATH=%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.0.0
REM == open source logic
if exist "%FSCBinPath%\FSharp.Core.dll" set FSCOREDLLPATH=%FSCBinPath%
if exist "%FSCBinPath%\..\..\net20\bin\FSharp.Core.dll" set FSCOREDLL20PATH=%FSCBinPath%\..\..\net20\bin
if exist "%FSCBinPath%\..\..\portable47\bin\FSharp.Core.dll" set FSCOREDLLPORTABLEPATH=%FSCBinPath%\..\..\portable47\bin
if exist "%FSCBinPath%\..\..\portable7\bin\FSharp.Core.dll" set FSCOREDLLNETCOREPATH=%FSCBinPath%\..\..\portable7\bin
IF exist "%FSCBinPath%\..\..\portable78\bin\FSharp.Core.dll" set FSCOREDLLNETCORE78PATH=%FSCBinPath%\..\..\portable78\bin
IF exist "%FSCBinPath%\..\..\portable259\bin\FSharp.Core.dll" set FSCOREDLLNETCORE259PATH=%FSCBinPath%\..\..\portable259\bin
set FSCOREDLLPATH=%FSCOREDLLPATH%\FSharp.Core.dll
set FSCOREDLL20PATH=%FSCOREDLL20PATH%\FSharp.Core.dll
set FSCOREDLLPORTABLEPATH=%FSCOREDLLPORTABLEPATH%\FSharp.Core.dll
set FSCOREDLLNETCOREPATH=%FSCOREDLLNETCOREPATH%\FSharp.Core.dll
set FSCOREDLLNETCORE78PATH=%FSCOREDLLNETCORE78PATH%\FSharp.Core.dll
set FSCOREDLLNETCORE259PATH=%FSCOREDLLNETCORE259PATH%\FSharp.Core.dll
set FSCOREDLLVPREVPATH=%FSCOREDLLVPREVPATH%\FSharp.Core.dll
for /d %%i in (%WINDIR%\Microsoft.NET\Framework\v4.0.?????) do set CORDIR=%%i
set PATH=%PATH%;%CORDIR%
set RESULTFILE=net40-fsharpqa-suite-results.log
set FAILFILE=net40-fsharpqa-suite-errors.log
set FAILENV=net40-fsharpqa-suite-errors
if /I "%2" == "net40-fsharpqa-suite-downtarget" (
set ISCFLAGS=--noframework -r "%FSCOREDLLVPREVPATH%" -r "%X86_PROGRAMFILES%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll" -r System.dll -r System.Runtime.dll -r System.Xml.dll -r System.Data.dll -r System.Web.dll -r System.Core.dll -r System.Numerics.dll
set EXCLUDE_ARG_RUNALL=%EXCLUDE_ARG_RUNALL%,NoCrossVer,FSI
set RESULTFILE=net40-fsharpqa-downtarget-suite-results.log
set FAILFILE=net40-fsharpqa-downtarget-suite-errors.log
set FAILENV=net40-fsharpqa-downtarget-suite-errors
)
where.exe perl > NUL 2> NUL
if errorlevel 1 (
echo Error: perl is not in the PATH
exit /b 1
)
pushd %~dp0fsharpqa\source
echo perl %~dp0fsharpqa\testenv\bin\runall.pl -resultsroot %RESULTSDIR% -results %RESULTFILE% -log %FAILFILE% -fail %FAILENV% -cleanup:no %INCLUDE_ARG_RUNALL% %EXCLUDE_ARG_RUNALL% %PARALLEL_ARG%
perl %~dp0fsharpqa\testenv\bin\runall.pl -resultsroot %RESULTSDIR% -results %RESULTFILE% -log %FAILFILE% -fail %FAILENV% -cleanup:no %INCLUDE_ARG_RUNALL% %EXCLUDE_ARG_RUNALL% %PARALLEL_ARG%
popd
goto :EOF
REM ----------------------------------------------------------------------------
:NET40_COREUNIT_SUITE
set XMLFILE=%RESULTSDIR%\net40-coreunit-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\net40-coreunit-suite-output.log
set ERRORFILE=%RESULTSDIR%\net40-coreunit-suite-errors.log
echo "%NUNIT3_CONSOLE%" --verbose --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"%XMLFILE%;format=nunit2" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --work:"%FSCBINPATH%" "%FSCBINPATH%\..\..\net40\bin\FSharp.Core.Unittests.dll"
"%NUNIT3_CONSOLE%" --verbose --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"%XMLFILE%;format=nunit2" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --work:"%FSCBINPATH%" "%FSCBINPATH%\..\..\net40\bin\FSharp.Core.Unittests.dll"
call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%"
goto :EOF
REM ----------------------------------------------------------------------------
:PORTABLE_COREUNIT_SUITE
set XMLFILE=%RESULTSDIR%\portable-coreunit-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\portable-coreunit-suite-output.log
set ERRORFILE=%RESULTSDIR%\portable-coreunit-suite-errors.log
echo "%NUNIT3_CONSOLE%" /framework:V4.0 /result="%XMLFILE%;format=nunit2" /output="%OUTPUTFILE%" /err="%ERRORFILE%" /work="%FSCBINPATH%" "%FSCBINPATH%\..\..\portable7\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable47\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable78\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable259\bin\FSharp.Core.Unittests.dll"
"%NUNIT3_CONSOLE%" /framework:V4.0 /result="%XMLFILE%;format=nunit2" /output="%OUTPUTFILE%" /err="%ERRORFILE%" /work="%FSCBINPATH%" "%FSCBINPATH%\..\..\portable7\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable47\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable78\bin\FSharp.Core.Unittests.dll" "%FSCBINPATH%\..\..\portable259\bin\FSharp.Core.Unittests.dll"
call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%"
goto :EOF
REM ----------------------------------------------------------------------------
:CORECLR_COREUNIT_SUITE
set XMLFILE=coreclr-coreunit-suite-results.xml
set OUTPUTFILE=coreclr-coreunit-suite-output.log
set ERRORFILE=coreclr-coreunit-suite-errors.log
set testbinpath=%~dp0testbin\
set architecturepath=coreclr\win7-x64
set CORERUNPATH="%testbinpath%%flavor%\%architecturepath%"
echo "%CORERUNPATH%\corerun.exe" "%testbinpath%%flavor%\coreclr\fsharp.core.unittests\FSharp.Core.Unittests.exe"
"%CORERUNPATH%\corerun.exe" "%testbinpath%%flavor%\coreclr\fsharp.core.unittests\FSharp.Core.Unittests.exe"
call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%"
goto :EOF
REM ----------------------------------------------------------------------------
:COMPILERUNIT_SUITE
set XMLFILE=%RESULTSDIR%\%compilerunitsuffix%-compilerunit-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\%compilerunitsuffix%-compilerunit-suite-output.log
set ERRORFILE=%RESULTSDIR%\%compilerunitsuffix%-compilerunit-suite-errors.log
echo "%NUNIT3_CONSOLE%" --verbose --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"%XMLFILE%;format=nunit2" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --work:"%FSCBINPATH%" "%FSCBINPATH%\..\..\%compilerunitsuffix%\bin\FSharp.Compiler.Unittests.dll"
"%NUNIT3_CONSOLE%" --verbose --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"%XMLFILE%;format=nunit2" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --work:"%FSCBINPATH%" "%FSCBINPATH%\..\..\%compilerunitsuffix%\bin\FSharp.Compiler.Unittests.dll"
call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%"
goto :EOF
REM ----------------------------------------------------------------------------
:VS_IDEUNIT_SUITE
set XMLFILE=%RESULTSDIR%\vs-ideunit-suite-results.xml
set OUTPUTFILE=%RESULTSDIR%\vs-ideunit-suite-output.log
set ERRORFILE=%RESULTSDIR%\vs-ideunit-suite-errors.log
pushd %FSCBINPATH%
echo "%NUNIT3_CONSOLE%" --verbose --x86 --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"%XMLFILE%;format=nunit2" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --work:"%FSCBINPATH%" --workers=1 --agents=1 --full "%FSCBINPATH%\VisualFSharp.Unittests.dll"
"%NUNIT3_CONSOLE%" --verbose --x86 --framework:V4.0 %EXCLUDE_ARG_NUNIT% --result:"%XMLFILE%;format=nunit2" --output:"%OUTPUTFILE%" --err:"%ERRORFILE%" --work:"%FSCBINPATH%" --workers=1 --agents=1 --full "%FSCBINPATH%\VisualFSharp.Unittests.dll"
popd
call :UPLOAD_TEST_RESULTS "%XMLFILE%" "%OUTPUTFILE%" "%ERRORFILE%"
goto :EOF
REM ----------------------------------------------------------------------------
:UPLOAD_TEST_RESULTS
set saved_errorlevel=%errorlevel%
echo Saved errorlevel %saved_errorlevel%
rem See <http://www.appveyor.com/docs/environment-variables>
if not defined APPVEYOR goto :SKIP_APPVEYOR_UPLOAD
echo powershell -File Upload-Results.ps1 "%~1"
powershell -File Upload-Results.ps1 "%~1"
:SKIP_APPVEYOR_UPLOAD
:FINISHED
if NOT %saved_errorlevel% == 0 exit /b 1
goto :EOF
:: Note: "goto :EOF" returns from an in-batchfile "call" command
:: in preference to returning from the entire batch file.

Просмотреть файл

@ -70,6 +70,6 @@
<FSharpCoreOptSigFiles Include="$(OpenDrop)\FSharp.Core.xml" />
</ItemGroup>
<Copy SourceFiles="@(FSharpCoreOptSigFiles)" DestinationFolder="$(OutputPath)" />
<Copy SourceFiles="@(FSharpCoreOptSigFiles)" DestinationFolder="$(OutputPath)" SkipUnchangedFiles="true" />
</Target>
</Project>