5
0
mirror of https://github.com/apache/sqoop.git synced 2025-05-06 18:10:17 +08:00
sqoop/testdata/hive/bin/hive.cmd
Jarek Jarcec Cecho f5006b6005 SQOOP-955: Fix Sqoop unit test failures on Windows
(Ahmed El Baz via Jarek Jarcec Cecho)
2013-04-15 09:57:25 -07:00

113 lines
3.2 KiB
Batchfile

@echo off
@rem Licensed to the Apache Software Foundation (ASF) under one or more
@rem contributor license agreements. See the NOTICE file distributed with
@rem this work for additional information regarding copyright ownership.
@rem The ASF licenses this file to You under the Apache License, Version 2.0
@rem (the "License"); you may not use this file except in compliance with
@rem the License. You may obtain a copy of the License at
@rem
@rem http://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem This is a mock "Hive" shell that validates whether various test imports
@rem succeeded. It accepts commands of the form 'hive -f scriptname'
@rem and validates that the script contents match those of an expected script.
@rem The filename to that expected script is set via the environment variable
@rem EXPECTED_SCRIPT.
@rem The script will contain a pathname as part of the LOAD DATA INPATH statement;
@rem depending on where you run the tests from, this can change. So the expected
@rem script file actually contains the marker string "BASEPATH" which is replaced
@rem by this script with the contents of $TMPDIR, which is set to 'test.build.data'.
setlocal enabledelayedexpansion
@rem Reset ERRORLEVEL if previously set
set ERRORLEVEL=
if "%EXPECTED_SCRIPT%" =="" (
echo No expected script set
set ERRORLEVEL=1
goto :end
)
if "%TMPDIR%" == "" (
echo setting TMPDIR to %TEMP%
set TMPDIR=%TEMP%
)
if not exist %TMPDIR% (
md %TMPDIR%
)
if "%1" NEQ "-f" (
echo "Misunderstood argument: %1"
echo "Expected '-f'."
set ERRORLEVEL=2
goto :end
)
if "%2" =="" (
echo "Expected: hive -f filename"
set ERRORLEVEL=3
goto :end
)
set GENERATED_SCRIPT=%2
rem Generate the directory temporarily hosting copied base scripts before processing
set TMP_COPY_DIR=%TMPDIR%\tmp
if not exist %TMP_COPY_DIR% (
md "%TMP_COPY_DIR%"
)
pushd
rem Adjust path format for TMP_COPY_DIR and TMPDIR
cd /d %TMP_COPY_DIR%
set TMP_COPY_DIR=%cd%
cd /d %TMPDIR%
set TMPDIR=%cd%
popd
@rem Copy the expected script into the tmpdir and replace the marker.
copy "%EXPECTED_SCRIPT%" "%TMP_COPY_DIR%"
for %%i in ("%EXPECTED_SCRIPT%") do set SCRIPT_BASE=%%~nxi
set COPIED_SCRIPT=%TMP_COPY_DIR%\%SCRIPT_BASE%
@rem Replace the BASEPATH marker with actual base-path
set RESOLVED_BASE=/%TMPDIR:\=/%
@rem Trim all comments from copied base scripts
set BASE_SCRIPT=%TMPDIR%\%SCRIPT_BASE%
if exist %BASE_SCRIPT% (
del %BASE_SCRIPT%
)
@rem Filter all comments from the copied script
FOR /F "usebackq delims=" %%i in (%COPIED_SCRIPT%) do (
set "line=%%i"
set "start=!line:~0,2!"
if not "!start!" == "--" (
set "resolvedLine=!line:BASEPATH=%RESOLVED_BASE%!"
echo(!resolvedLine!>>!BASE_SCRIPT!
)
)
@rem Delete the temporary folder for copied scripts
rd /S /Q %TMP_COPY_DIR%
rem Actually check to see that the input we got matches up.
fc %BASE_SCRIPT% %GENERATED_SCRIPT% /W
:end
echo Exiting with return code %ERRORLEVEL%
exit %ERRORLEVEL%
endlocal