| @rem @generated by @aspect_bazel_lib//lib/private:diff_test.bzl |
| @echo off |
| :: TODO: Add support for XML_OUTPUT_FILE like in diff_test_tmpl.sh |
| SETLOCAL ENABLEEXTENSIONS |
| SETLOCAL ENABLEDELAYEDEXPANSION |
| set MF=%RUNFILES_MANIFEST_FILE:/=\\% |
| set PATH=%SYSTEMROOT%\\system32 |
| set F1={file1} |
| set F2={file2} |
| if "!F1:~0,9!" equ "external/" (set F1=!F1:~9!) else (set F1=!TEST_WORKSPACE!/!F1!) |
| if "!F2:~0,9!" equ "external/" (set F2=!F2:~9!) else (set F2=!TEST_WORKSPACE!/!F2!) |
| for /F "tokens=2* usebackq" %%i in (`findstr.exe /l /c:"!F1! " "%MF%"`) do ( |
| set RF1=%%i |
| set RF1=!RF1:/=\\! |
| ) |
| if "!RF1!" equ "" ( |
| if "%RUNFILES_MANIFEST_ONLY%" neq "1" if exist "%RUNFILES_DIR%\\%F1%" ( |
| set RF1="%RUNFILES_DIR%\\%F1%" |
| ) else ( |
| if exist "{file1}" ( |
| set RF1="{file1}" |
| ) |
| ) |
| if "!RF1!" neq "" ( set RF1=!RF1:/=\\! |
| ) else ( |
| echo>&2 ERROR: !F1! not found |
| exit /b 1 |
| ) |
| ) |
| for /F "tokens=2* usebackq" %%i in (`findstr.exe /l /c:"!F2! " "%MF%"`) do ( |
| set RF2=%%i |
| set RF2=!RF2:/=\\! |
| ) |
| if "!RF2!" equ "" ( |
| if "%RUNFILES_MANIFEST_ONLY%" neq "1" if exist "%RUNFILES_DIR%\\%F2%" ( |
| set RF2="%RUNFILES_DIR%\\%F2%" |
| ) else ( |
| if exist "{file2}" ( |
| set RF2="{file2}" |
| ) |
| ) |
| if "!RF2!" neq "" ( set RF2=!RF2:/=\\! |
| ) else ( |
| echo>&2 ERROR: !F2! not found |
| exit /b 1 |
| ) |
| ) |
| set DF1=0 |
| set DF2=0 |
| if exist "!RF1!\\*" ( |
| set DF1=1 |
| ) |
| if exist "!RF2!\\*" ( |
| set DF2=1 |
| ) |
| if %DF1% equ 1 ( |
| if %DF2% equ 0 ( |
| echo>&2 ERROR: Cannot compare directory "{file1}" and a file "{file2}" |
| exit /b 1 |
| ) |
| ) |
| if %DF1% equ 0 ( |
| if %DF2% equ 1 ( |
| echo>&2 ERROR: Cannot compare file "{file1}" and a directory "{file2}" |
| exit /b 1 |
| ) |
| ) |
| set DFX=0 |
| if %DF1% equ 1 ( |
| if %DF2% equ 1 ( |
| set DFX=1 |
| ) |
| ) |
| if %DFX% equ 1 ( |
| for /f "delims=" %%F in ( |
| 'echo "."^&forfiles /s /p "!RF1!" /m "*" /c "cmd /c echo @relpath"' |
| ) do ( |
| if not exist "!RF2!\\%%~F" ( |
| echo>&2 FAIL: file "%%~F" exists in "{file1}" and not in "{file2}". {fail_msg} |
| GOTO fail |
| ) |
| if not exist "!RF1!\\%%~F\\*" ( |
| fc.exe /B "!RF1!\\%%~F" "!RF2!\\%%~F" 2>NUL 1>NUL |
| if !ERRORLEVEL! neq 0 ( |
| if !ERRORLEVEL! equ 1 ( |
| echo>&2 FAIL: files "{file1}\\%%~F" and "{file2}\\%%~F" differ. {fail_msg} |
| GOTO fail |
| ) else ( |
| fc.exe /B "!RF1!\\%%~F" "!RF2!\\%%~F" |
| GOTO fail |
| ) |
| ) |
| ) |
| ) |
| for /f "delims=" %%F in ( |
| 'echo "."^&forfiles /s /p "!RF2!" /m "*" /c "cmd /c echo @relpath"' |
| ) do ( |
| if not exist "!RF1!\\%%~F" ( |
| echo>&2 FAIL: file "%%~F" exists in "{file2}" and not in "{file1}". {fail_msg} |
| GOTO fail |
| ) |
| ) |
| ) else ( |
| fc.exe /B "!RF1!" "!RF2!" 2>NUL 1>NUL |
| if %ERRORLEVEL% neq 0 ( |
| if %ERRORLEVEL% equ 1 ( |
| echo>&2 FAIL: files "{file1}" and "{file2}" differ. {fail_msg} |
| exit /b 1 |
| ) else ( |
| fc.exe /B "!RF1!" "!RF2!" |
| exit /b %errorlevel% |
| ) |
| ) |
| ) |
| exit /b 0 |
| |
| :fail |
| exit /b 1 |