Work around apparent bug in CMD's FOR /L
authorRuss Keldorph <Russ.Keldorph@microsoft.com>
Wed, 5 Dec 2018 23:58:32 +0000 (15:58 -0800)
committerRuss Keldorph <russ.keldorph@microsoft.com>
Thu, 6 Dec 2018 19:08:16 +0000 (11:08 -0800)
Hopefully this will mean that official build failures during the actual build
phase will correctly be reported as failures.  There could be other places that
need to change, but this is all we know of right now.

Fixes #18788 (at least part of it)

build-test.cmd

index 17ce589..a12fa09 100644 (file)
@@ -343,7 +343,10 @@ for /l %%G in (1, 1, %__BuildLoopCount%) do (
         echo     %__BuildLog%
         echo     %__BuildWrn%
         echo     %__BuildErr%
-        exit /b 1
+        REM This is necessary because of a(n apparent) bug in the FOR /L command.  Under certain circumstances,
+        REM such as when this script is invoke with CMD /C "build-test.cmd", a non-zero exit directly from
+        REM within the loop body will not propagate to the caller.  For some reason, goto works around it.
+        goto     :Exit_Failure
     )
 
     set __SkipPackageRestore=true
@@ -633,3 +636,6 @@ ren "%CORE_ROOT%\temp.ni.dll" %2
     
 echo Successfully precompiled %2
 exit /b 0
+
+:Exit_Failure
+exit /b 1