1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
#!/usr/bin/env bash
# stop on errors (nonzero exit codes), uninitialized vars
set -eu
toplevel=$(git rev-parse --show-toplevel)
function setup_firefox {
# Install the latest version of geckodriver
version=$(curl -sI https://github.com/mozilla/geckodriver/releases/latest | grep -i "^Location: " | sed 's/.*\///' | tr -d '\r')
# check that we got something
if [ -z "$version" ]; then
echo "Failed to determine the latest geckodriver version!"
exit 1
fi
# Geckodriver distribution is MacOS or Linux specific
os="$(uname -s)"
if [[ $os == "Darwin" ]]; then
os_dist="macos.tar.gz"
else
os_dist="linux64.tar.gz"
fi
echo "Setting up geckodriver version $version ..."
url="https://github.com/mozilla/geckodriver/releases/download/${version}/geckodriver-${version}-${os_dist}"
wget -q -O /tmp/geckodriver.tar.gz "$url"
sudo tar -xvf /tmp/geckodriver.tar.gz -C /usr/local/bin/
sudo chmod a+x /usr/local/bin/geckodriver
# check that geckodriver is now present
type geckodriver >/dev/null 2>&1 || {
echo "Failed to install geckodriver!"
exit 1
}
}
function browser_setup {
# install python stuff
pip install -r "$toplevel"/tests/requirements.txt
}
function setup_lint {
# "--production" to skip installing devDependencies modules
npm install --production || exit 1
}
# check that the desired browser is present as it might fail to install
# for example: https://travis-ci.org/EFForg/privacybadger/jobs/362381214
function check_browser {
type "$BROWSER" >/dev/null 2>&1 || {
echo "$BROWSER seems to be missing!"
exit 1
}
# print the version
echo "Found $("$BROWSER" --version)"
}
case $INFO in
*chrome*)
check_browser
"$toplevel"/scripts/chromedriver.sh "$BROWSER"
browser_setup
;;
*firefox*) # Install the latest version of geckodriver
check_browser
setup_firefox
browser_setup
;;
*lint*)
setup_lint
;;
*)
echo "bad INFO variable, got $INFO"
exit 1
;;
esac
|