forked from EFForg/https-everywhere
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Separate out travis tests, one per different component to test. (EFFo…
- Loading branch information
Showing
4 changed files
with
106 additions
and
76 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
#!/bin/bash | ||
# Run https-everywhere-checker for each changed ruleset | ||
# This is run from test/travis.sh, but should work just as well without travis | ||
# as long as $RULESETS_CHANGED is supplied. | ||
|
||
RULETESTFOLDER="test/rules" | ||
|
||
# Exclude those rulesets that do not exist. | ||
for RULESET in $RULESETS_CHANGED; do | ||
# First check if the given ruleset actually exists | ||
if [ ! -f $RULESET ]; then | ||
echo >&2 "Skipped $RULESET; file not found." | ||
continue | ||
fi | ||
TO_BE_TESTED="$TO_BE_TESTED $RULESET" | ||
done | ||
|
||
if [ "$TO_BE_TESTED" ]; then | ||
# Do the actual test, using https-everywhere-checker. | ||
OUTPUT_FILE=`mktemp` | ||
trap 'rm "$OUTPUT_FILE"' EXIT | ||
python $RULETESTFOLDER/src/https_everywhere_checker/check_rules.py $RULETESTFOLDER/http.checker.config $TO_BE_TESTED 2>&1 | tee $OUTPUT_FILE | ||
# Unfortunately, no specific exit codes are available for connection | ||
# failures, so we catch those with grep. | ||
if [[ `cat $OUTPUT_FILE | grep ERROR | wc -l` -ge 1 ]]; then | ||
echo >&2 "Test URL test failed." | ||
exit 1 | ||
fi | ||
fi | ||
echo >&2 "Test URL test succeeded." |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
#!/bin/bash | ||
# Wrapper for travis tests | ||
|
||
function docker_build { | ||
docker build -t httpse . | ||
} | ||
|
||
# Folder paths, relative to parent | ||
RULESETFOLDER="src/chrome/content/rules" | ||
|
||
# Go to git repo root; taken from ../test.sh. Note that | ||
# $GIT_DIR is .git in this case. | ||
if [ -n "$GIT_DIR" ] | ||
then | ||
# $GIT_DIR is set, so we're running as a hook. | ||
cd $GIT_DIR | ||
cd .. | ||
else | ||
# Git command exists? Cool, let's CD to the right place. | ||
git rev-parse && cd "$(git rev-parse --show-toplevel)" | ||
fi | ||
|
||
# Fetch the current GitHub version of HTTPS-E to compare to its master | ||
git remote add upstream-for-travis https://github.com/EFForg/https-everywhere.git | ||
trap 'git remote remove upstream-for-travis' EXIT | ||
git fetch upstream-for-travis master | ||
COMMON_BASE_COMMIT=$(git merge-base upstream-for-travis/master HEAD) | ||
RULESETS_CHANGED=$(git diff --name-only $COMMON_BASE_COMMIT | grep $RULESETFOLDER | grep '.xml') | ||
if [ "$(git diff --name-only $COMMON_BASE_COMMIT)" != "$RULESETS_CHANGED" ]; then | ||
ONLY_RULESETS_CHANGED=false | ||
fi | ||
|
||
# At this point, if anything fails, the test should fail | ||
set -e | ||
|
||
if ! $ONLY_RULESETS_CHANGED; then | ||
echo >&2 "Core code changes have been made." | ||
if [ "$TEST" == "firefox" ]; then | ||
echo >&2 "Running firefox test suite." | ||
docker_build | ||
docker run --rm -ti -v $(pwd):/opt -e FIREFOX=/$FIREFOX/firefox/firefox httpse bash -c "test/firefox.sh" | ||
fi | ||
if [ "$TEST" == "chromium" ]; then | ||
echo >&2 "Running chromium test suite." | ||
docker_build | ||
# --privileged is required here because chromium requires kernel lxc access | ||
docker run --rm -ti -v $(pwd):/opt --privileged httpse bash -c "test/chromium.sh" | ||
fi | ||
fi | ||
# Only run test if something has changed. | ||
if [ "$RULESETS_CHANGED" ]; then | ||
echo >&2 "Ruleset database has changed." | ||
|
||
if [ "$TEST" == "rules" ]; then | ||
echo >&2 "Performing comprehensive coverage test." | ||
docker_build | ||
docker run --rm -ti -v $(pwd):/opt httpse bash -c "test/rules.sh" | ||
fi | ||
|
||
|
||
if [ "$TEST" == "fetch" ]; then | ||
echo >&2 "Testing test URLs in all changed rulesets." | ||
docker_build | ||
# --privileged is required here for miredo to create a network tunnel | ||
docker run --rm -ti -v $(pwd):/opt -e RULESETS_CHANGED="$RULESETS_CHANGED" --privileged httpse bash -c "service miredo start && test/fetch.sh" | ||
fi | ||
fi | ||
|
||
exit 0 |