@@ -13,35 +13,36 @@ echo Build and run a subset of test suites
1313echo .
1414echo Usage:
1515echo .
16- echo appveyor- build.cmd ^ < all^ |compiler^ |pcls^ |vs^ |ci^ |ci_part1^ |ci_part2^ |ci_part3^ |build ^ |debug ^ >
16+ echo build.cmd ^ < all^ |build ^ |debug ^ |release ^ | compiler^ |pcls^ |vs^ |ci^ |ci_part1^ |ci_part2^ |ci_part3^ >
1717echo .
18- echo No arguments default to 'ci' ( build all profiles, run all unit tests, cambridge Smoke, fsharpqa Smoke)
18+ echo No arguments default to 'build'
1919echo .
2020echo To specify multiple values, separate strings by comma
2121echo .
2222echo The example below run pcls, vs and qa:
2323echo .
24- echo appveyor- build.cmd pcls,vs,debug
24+ echo build.cmd pcls,vs,debug
2525exit /b 1
2626
2727:ARGUMENTS_OK
2828
29+ set BUILD_PROTO = 0
2930set BUILD_NET40 = 1
3031set BUILD_PORTABLE47 = 0
3132set BUILD_PORTABLE7 = 0
3233set BUILD_PORTABLE78 = 0
3334set BUILD_PORTABLE259 = 0
3435set BUILD_VS = 0
35- set TEST_NET40 = 0
36- set TEST_PORTABLE47 = 0
37- set TEST_PORTABLE7 = 0
38- set TEST_PORTABLE78 = 0
39- set TEST_PORTABLE259 = 0
36+ set TEST_COMPILERUNIT = 0
37+ set TEST_NET40_COREUNIT = 0
38+ set TEST_PORTABLE47_COREUNIT = 0
39+ set TEST_PORTABLE7_COREUNIT = 0
40+ set TEST_PORTABLE78_COREUNIT = 0
41+ set TEST_PORTABLE259_COREUNIT = 0
4042set TEST_VS = 0
41- set TEST_CAMBRIDGE_SUITE = 0
42- set CONF_CAMBRIDGE_SUITE =
43- set TEST_QA_SUITE = 0
44- set CONF_QA_SUITE =
43+ set TEST_FSHARP_SUITE = 0
44+ set TEST_TAGS =
45+ set TEST_FSHARPQA_SUITE = 0
4546set BUILD_CONFIG = Release
4647set BUILD_CONFIG_LOWER = release
4748
@@ -61,26 +62,26 @@ goto :MAIN
6162set ARG = %~1
6263
6364if " %ARG% " == " 1" if " %2 " == " " (
64- set ARG = ci
65+ set ARG = vuild
6566)
6667
67- if " %2 " == " " if not " %ARG% " == " ci " goto :EOF
68+ if " %2 " == " " if not " %ARG% " == " build " goto :EOF
6869
6970echo Parse argument %ARG%
7071
7172if /i '%ARG% ' == 'compiler' (
72- set TEST_NET40 = 1
73+ set TEST_COMPILERUNIT = 1
7374)
7475
7576if /i '%ARG% ' == 'pcls' (
7677 set BUILD_PORTABLE47 = 1
77- set TEST_PORTABLE47 = 1
7878 set BUILD_PORTABLE7 = 1
79- set TEST_PORTABLE7 = 1
8079 set BUILD_PORTABLE78 = 1
81- set TEST_PORTABLE78 = 1
8280 set BUILD_PORTABLE259 = 1
83- set TEST_PORTABLE259 = 1
81+ set TEST_PORTABLE47_COREUNIT = 1
82+ set TEST_PORTABLE7_COREUNIT = 1
83+ set TEST_PORTABLE78_COREUNIT = 1
84+ set TEST_PORTABLE259_COREUNIT = 1
8485)
8586
8687if /i '%ARG% ' == 'vs' (
@@ -89,19 +90,20 @@ if /i '%ARG%' == 'vs' (
8990)
9091
9192if /i '%ARG% ' == 'all' (
93+ set BUILD_PROTO = 1
9294 set BUILD_PORTABLE47 = 1
9395 set BUILD_PORTABLE7 = 1
9496 set BUILD_PORTABLE78 = 1
9597 set BUILD_PORTABLE259 = 1
9698 set BUILD_VS = 1
97- set TEST_NET40 = 1
98- set TEST_PORTABLE47 = 1
99- set TEST_PORTABLE7 = 1
100- set TEST_PORTABLE78 = 1
101- set TEST_PORTABLE259 = 1
99+ set TEST_COMPILERUNIT = 1
100+ set TEST_PORTABLE47_COREUNIT = 1
101+ set TEST_PORTABLE7_COREUNIT = 1
102+ set TEST_PORTABLE78_COREUNIT = 1
103+ set TEST_PORTABLE259_COREUNIT = 1
102104 set TEST_VS = 1
103- set TEST_CAMBRIDGE_SUITE = 1
104- set TEST_QA_SUITE = 1
105+ set TEST_FSHARP_SUITE = 1
106+ set TEST_FSHARPQA_SUITE = 1
105107)
106108
107109REM Same as 'all' but smoke testing only
@@ -111,16 +113,17 @@ if /i '%ARG%' == 'ci' (
111113 set BUILD_PORTABLE78 = 1
112114 set BUILD_PORTABLE259 = 1
113115 set BUILD_VS = 1
114- set TEST_NET40 = 1
115- set TEST_PORTABLE47 = 1
116- set TEST_PORTABLE7 = 1
117- set TEST_PORTABLE78 = 1
118- set TEST_PORTABLE259 = 1
119- set TEST_VS = 1
120- set TEST_CAMBRIDGE_SUITE = 1
121- set CONF_CAMBRIDGE_SUITE = Smoke
122- set TEST_QA_SUITE = 1
123- set CONF_QA_SUITE = Smoke
116+ set TEST_COMPILERUNIT = 1
117+ set TEST_NET40_COREUNIT = 1
118+ set TEST_PORTABLE47_COREUNIT = 1
119+ set TEST_PORTABLE7_COREUNIT = 1
120+ set TEST_PORTABLE78_COREUNIT = 1
121+ set TEST_PORTABLE259_COREUNIT = 1
122+ set TEST_FSHARP_SUITE = 1
123+ set TEST_FSHARPQA_SUITE = 1
124+ set TEST_VS = 0
125+ set TEST_TAGS =
126+ set TEST_TAGS2 = CI
124127)
125128
126129REM These divide 'ci' into three chunks which can be done in parallel
@@ -131,30 +134,40 @@ if /i '%ARG%' == 'ci_part1' (
131134 set BUILD_PORTABLE78 = 1
132135 set BUILD_PORTABLE259 = 1
133136 set BUILD_VS = 1
134- set TEST_NET40 = 1
135- set TEST_PORTABLE47 = 1
136- set TEST_PORTABLE7 = 1
137- set TEST_PORTABLE78 = 1
138- set TEST_PORTABLE259 = 1
139- set TEST_VS = 1
137+ set TEST_COMPILERUNIT = 1
138+ set TEST_NET40_COREUNIT = 1
139+ set TEST_PORTABLE47_COREUNIT = 1
140+ set TEST_PORTABLE7_COREUNIT = 1
141+ set TEST_PORTABLE78_COREUNIT = 1
142+ set TEST_PORTABLE259_COREUNIT = 1
143+ set TEST_VS = 0
144+ set TEST_TAGS =
145+ set TEST_TAGS2 = CI
140146)
141147
142148if /i '%ARG% ' == 'ci_part2' (
143- set TEST_CAMBRIDGE_SUITE = 1
144- set CONF_CAMBRIDGE_SUITE = Smoke
149+ set TEST_FSHARP_SUITE = 1
150+ set TEST_TAGS =
151+ set TEST_TAGS2 = CI
145152)
146153
147154
148155if /i '%ARG% ' == 'ci_part3' (
149- set TEST_QA_SUITE = 1
150- set CONF_QA_SUITE = Smoke
156+ set TEST_FSHARPQA_SUITE = 1
157+ set TEST_TAGS =
158+ set TEST_TAGS2 = CI
151159)
152160
153161if /i '%ARG% ' == 'smoke' (
154- set TEST_CAMBRIDGE_SUITE = 1
155- set CONF_CAMBRIDGE_SUITE = Smoke
156- set TEST_QA_SUITE = 1
157- set CONF_QA_SUITE = Smoke
162+ REM Smoke tests are a very small quick subset of tests
163+
164+ set TEST_COMPILERUNIT = 0
165+ set TEST_NET40_COREUNIT = 0
166+ set TEST_TAGS = Smoke
167+
168+ set TEST_FSHARP_SUITE = 1
169+ set TEST_FSHARPQA_SUITE = 0
170+ set TEST_TAGS2 = Smoke
158171)
159172
160173if /i '%ARG% ' == 'debug' (
@@ -163,14 +176,12 @@ if /i '%ARG%' == 'debug' (
163176)
164177
165178if /i '%ARG% ' == 'build' (
166- set TEST_NET40 = 0
167- set TEST_PORTABLE47 = 0
168- set TEST_PORTABLE7 = 0
169- set TEST_PORTABLE78 = 0
170- set TEST_PORTABLE259 = 0
171- set TEST_VS = 0
172- set TEST_CAMBRIDGE_SUITE = 0
173- set TEST_QA_SUITE = 0
179+ set BUILD_PORTABLE47 = 1
180+ set BUILD_PORTABLE7 = 1
181+ set BUILD_PORTABLE78 = 1
182+ set BUILD_PORTABLE259 = 1
183+ set BUILD_VS = 1
184+
174185)
175186
176187goto :EOF
@@ -188,16 +199,15 @@ echo BUILD_PORTABLE78=%BUILD_PORTABLE78%
188199echo BUILD_PORTABLE259=%BUILD_PORTABLE259%
189200echo BUILD_VS=%BUILD_VS%
190201echo .
191- echo TEST_NET40= %TEST_NET40 %
192- echo TEST_PORTABLE47= %TEST_PORTABLE47 %
193- echo TEST_PORTABLE7= %TEST_PORTABLE7 %
194- echo TEST_PORTABLE78= %TEST_PORTABLE78 %
195- echo TEST_PORTABLE259= %TEST_PORTABLE259 %
202+ echo TEST_COMPILERUNIT= %TEST_COMPILERUNIT %
203+ echo TEST_PORTABLE47_COREUNIT= %TEST_PORTABLE47_COREUNIT %
204+ echo TEST_PORTABLE7_COREUNIT= %TEST_PORTABLE7_COREUNIT %
205+ echo TEST_PORTABLE78_COREUNIT= %TEST_PORTABLE78_COREUNIT %
206+ echo TEST_PORTABLE259_COREUNIT= %TEST_PORTABLE259_COREUNIT %
196207echo TEST_VS=%TEST_VS%
197- echo TEST_CAMBRIDGE_SUITE=%TEST_CAMBRIDGE_SUITE%
198- echo CONF_CAMBRIDGE_SUITE=%CONF_CAMBRIDGE_SUITE%
199- echo TEST_QA_SUITE=%TEST_QA_SUITE%
200- echo CONF_QA_SUITE=%CONF_QA_SUITE%
208+ echo TEST_FSHARP_SUITE=%TEST_FSHARP_SUITE%
209+ echo TEST_FSHARPQA_SUITE=%TEST_FSHARPQA_SUITE%
210+ echo TEST_TAGS=%TEST_TAGS%
201211echo BUILD_CONFIG=%BUILD_CONFIG%
202212echo BUILD_CONFIG_LOWER=%BUILD_CONFIG_LOWER%
203213echo .
@@ -240,9 +250,15 @@ if not exist %_ngenexe% echo Error: Could not find ngen.exe. && goto :failure
240250.\.nuget\NuGet.exe restore packages.config -PackagesDirectory packages -ConfigFile .nuget\nuget.config
241251@ if ERRORLEVEL 1 echo Error: Nuget restore failed && goto :failure
242252
243- :: Build
253+ :: Build Proto
254+ if NOT EXIST Proto\net40\bin\fsc-proto.exe (
244255%_msbuildexe% src\fsharp-proto-build.proj
245256@ if ERRORLEVEL 1 echo Error: compiler proto build failed && goto :failure
257+ )
258+ if '%BUILD_PROTO% ' == '1' (
259+ %_msbuildexe% src\fsharp-proto-build.proj
260+ @ if ERRORLEVEL 1 echo Error: compiler proto build failed && goto :failure
261+ )
246262
247263%_ngenexe% install Proto\net40\bin\fsc-proto.exe
248264@ if ERRORLEVEL 1 echo Error: NGen of proto failed && goto :failure
@@ -273,30 +289,31 @@ if '%BUILD_PORTABLE259%' == '' (
273289@ if ERRORLEVEL 1 echo Error: library portable259 build failed && goto :failure
274290)
275291
276- if '%TEST_NET40 % ' == '1' (
292+ if '%TEST_COMPILERUNIT % ' == '1' (
277293%_msbuildexe% src/fsharp-compiler-unittests-build.proj /p:Configuration=%BUILD_CONFIG%
278294@ if ERRORLEVEL 1 echo Error: compiler unittests build failed && goto :failure
279-
295+ )
296+ if '%TEST_COREUNIT% ' == '1' (
280297%_msbuildexe% src/fsharp-library-unittests-build.proj /p:Configuration=%BUILD_CONFIG%
281298@ if ERRORLEVEL 1 echo Error: library unittests build failed && goto :failure
282299)
283300
284- if '%TEST_PORTABLE47 % ' == '1' (
301+ if '%TEST_PORTABLE47_COREUNIT % ' == '1' (
285302%_msbuildexe% src/fsharp-library-unittests-build.proj /p:TargetFramework=portable47 /p:Configuration=%BUILD_CONFIG%
286303@ if ERRORLEVEL 1 echo Error: library unittests build failed portable47 && goto :failure
287304)
288305
289- if '%TEST_PORTABLE7 % ' == '1' (
306+ if '%TEST_PORTABLE7_COREUNIT % ' == '1' (
290307%_msbuildexe% src/fsharp-library-unittests-build.proj /p:TargetFramework=portable7 /p:Configuration=%BUILD_CONFIG%
291308@ if ERRORLEVEL 1 echo Error: library unittests build failed portable7 && goto :failure
292309)
293310
294- if '%TEST_PORTABLE78 % ' == '1' (
311+ if '%TEST_PORTABLE78_COREUNIT % ' == '1' (
295312%_msbuildexe% src/fsharp-library-unittests-build.proj /p:TargetFramework=portable78 /p:Configuration=%BUILD_CONFIG%
296313@ if ERRORLEVEL 1 echo Error: library unittests build failed portable78 && goto :failure
297314)
298315
299- if '%TEST_PORTABLE259 % ' == '1' (
316+ if '%TEST_PORTABLE259_COREUNIT % ' == '1' (
300317%_msbuildexe% src/fsharp-library-unittests-build.proj /p:TargetFramework=portable259 /p:Configuration=%BUILD_CONFIG%
301318@ if ERRORLEVEL 1 echo Error: library unittests build failed portable259 && goto :failure
302319)
@@ -306,11 +323,6 @@ if '%BUILD_VS%' == '1' (
306323@ if ERRORLEVEL 1 echo Error: VS integration build failed && goto :failure
307324)
308325
309- if '%TEST_VS% ' == '1' (
310- %_msbuildexe% vsintegration\fsharp-vsintegration-unittests-build.proj /p:Configuration=%BUILD_CONFIG%
311- @ if ERRORLEVEL 1 echo Error: VS integration unit tests build failed && goto :failure
312- )
313-
314326@ echo on
315327call src\update.cmd %BUILD_CONFIG_LOWER% -ngen
316328
@@ -326,51 +338,61 @@ call BuildTestTools.cmd %BUILD_CONFIG_LOWER%
326338@ if ERRORLEVEL 1 echo Error: 'BuildTestTools.cmd %BUILD_CONFIG_LOWER% ' failed && goto :failure
327339
328340@ echo on
329- if '%TEST_CAMBRIDGE_SUITE % ' == '1' (
341+ if '%TEST_FSHARP_SUITE % ' == '1' (
330342set FSHARP_TEST_SUITE_USE_NUNIT_RUNNER = true
331343
332344%_msbuildexe% fsharp\fsharp.tests.fsproj /p:Configuration=%BUILD_CONFIG%
333345@ if ERRORLEVEL 1 echo Error: fsharp cambridge tests for nunit failed && goto :failure
334346
335- call RunTests.cmd %BUILD_CONFIG_LOWER% fsharp %CONF_CAMBRIDGE_SUITE%
347+ call RunTests.cmd %BUILD_CONFIG_LOWER% fsharp %TEST_TAGS2%
336348@ if ERRORLEVEL 1 type testresults\fsharp_failures.log && echo Error: 'RunTests.cmd %BUILD_CONFIG_LOWER% fsharp %CONF_CAMBRIDGE_SUITE% ' failed && goto :failure
337349set FSHARP_TEST_SUITE_USE_NUNIT_RUNNER =
338350)
339351
340- if '%TEST_QA_SUITE % ' == '1' (
341- call RunTests.cmd %BUILD_CONFIG_LOWER% fsharpqa %CONF_QA_SUITE%
352+ if '%TEST_FSHARPQA_SUITE % ' == '1' (
353+ call RunTests.cmd %BUILD_CONFIG_LOWER% fsharpqa %TEST_TAGS2%
342354@ if ERRORLEVEL 1 type testresults\fsharpqa_failures.log && echo Error: 'RunTests.cmd %BUILD_CONFIG_LOWER% fsharpqa %CONF_QA_SUITE% ' failed && goto :failure
343355)
344356
345- if '%TEST_NET40 % ' == '1' (
346- call RunTests.cmd %BUILD_CONFIG_LOWER% compilerunit
357+ if '%TEST_COMPILERUNIT % ' == '1' (
358+ call RunTests.cmd %BUILD_CONFIG_LOWER% compilerunit %TEST_TAGS%
347359@ if ERRORLEVEL 1 echo Error: 'RunTests.cmd %BUILD_CONFIG_LOWER% compilerunit' failed && goto :failure
360+ )
348361
349- call RunTests.cmd %BUILD_CONFIG_LOWER% coreunit
362+ if '%TEST_NET40_COREUNIT% ' == '1' (
363+ call RunTests.cmd %BUILD_CONFIG_LOWER% coreunit %TEST_TAGS%
350364@ if ERRORLEVEL 1 echo Error: 'RunTests.cmd %BUILD_CONFIG_LOWER% coreunit' failed && goto :failure
351365)
352366
353- if '%TEST_PORTABLE47 % ' == '1' (
354- call RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable47
367+ if '%TEST_PORTABLE47_COREUNIT % ' == '1' (
368+ call RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable47 %TEST_TAGS%
355369@ if ERRORLEVEL 1 echo Error: 'RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable47' failed && goto :failure
356370)
357371
358- if '%TEST_PORTABLE7 % ' == '1' (
359- call RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable7
372+ if '%TEST_PORTABLE7_COREUNIT % ' == '1' (
373+ call RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable7 %TEST_TAGS%
360374@ if ERRORLEVEL 1 echo Error: 'RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable7' failed && goto :failure
361375)
362376
363- if '%TEST_PORTABLE78 % ' == '1' (
364- call RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable78
377+ if '%TEST_PORTABLE78_COREUNIT % ' == '1' (
378+ call RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable78 %TEST_TAGS%
365379@ if ERRORLEVEL 1 echo Error: 'RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable78' failed && goto :failure
366380)
367381
368- if '%TEST_PORTABLE259% ' == '1' (
369- call RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable259
382+ if '%TEST_PORTABLE259_COREUNIT% ' == '1' (
383+ call RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable259 %TEST_TAGS%
384+ @ if ERRORLEVEL 1 echo Error: 'RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable259' failed && goto :failure
385+ )
386+
387+ if '%TEST_PORTABLE259_COREUNIT% ' == '1' (
388+ call RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable259 %TEST_TAGS%
370389@ if ERRORLEVEL 1 echo Error: 'RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable259' failed && goto :failure
371390)
372391
373- rem tests for TEST_VS are not executed
392+ if '%TEST_VS% ' == '1' (
393+ call RunTests.cmd %BUILD_CONFIG_LOWER% ideunit %TEST_TAGS%
394+ @ if ERRORLEVEL 1 echo Error: 'RunTests.cmd %BUILD_CONFIG_LOWER% coreunitportable259' failed && goto :failure
395+ )
374396
375397popd
376398
0 commit comments