mirror of
https://github.com/apache/sqoop.git
synced 2025-05-06 18:10:17 +08:00
113 lines
3.2 KiB
Batchfile
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
|