| #!/usr/bin/env bash |
| |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| # This is a mock "Hive" shell that validates whether various test imports |
| # succeeded. It accepts commands of the form 'hive -f scriptname' |
| # and validates that the script contents match those of an expected script. |
| # The filename to that expected script is set via the environment variable |
| # EXPECTED_SCRIPT. |
| |
| # The script will contain a pathname as part of the LOAD DATA INPATH statement; |
| # depending on where you run the tests from, this can change. So the expected |
| # script file actually contains the marker string "BASEPATH" which is replaced |
| # by this script with the contents of $TMPDIR, which is set to 'test.build.data'. |
| |
| if [ -z "$EXPECTED_SCRIPT" ]; then |
| echo "No expected script set" |
| exit 1 |
| elif [ -z "$TMPDIR" ]; then |
| TMPDIR=/tmp |
| elif [ "$1" != "-f" ]; then |
| echo "Misunderstood argument: $1" |
| echo "Expected '-f'." |
| exit 1 |
| elif [ -z "$2" ]; then |
| echo "Expected: hive -f filename" |
| exit 1 |
| else |
| GENERATED_SCRIPT=$2 |
| fi |
| |
| # Normalize this to an absolute path |
| TMPDIR=`cd $TMPDIR && pwd` |
| |
| # Copy the expected script into the tmpdir and replace the marker. |
| cp "$EXPECTED_SCRIPT" "$TMPDIR" |
| SCRIPT_BASE=`basename $EXPECTED_SCRIPT` |
| COPIED_SCRIPT="$TMPDIR/$SCRIPT_BASE" |
| sed -i -e "s|BASEPATH|$TMPDIR|" $COPIED_SCRIPT |
| |
| # Actually check to see that the input we got matches up. |
| diff --ignore-matching-lines=--.* --ignore-all-space --ignore-blank-lines "$COPIED_SCRIPT" "$GENERATED_SCRIPT" |
| ret=$? |
| |
| exit $ret |
| |