Repository navigation
MAINT flake8 is now run on diff + travis cleanup. #7403
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or 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 hidden or 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 hidden or 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,128 @@ | ||
| #!/bin/bash | ||
|
|
||
| # This script is used in Travis to check that PRs do not add obvious | ||
| # flake8 violations. It relies on two things: | ||
| # - find common ancestor between branch and | ||
| # matplotlib/matplotlib remote | ||
| # - run flake8 --diff on the diff between the branch and the common | ||
| # ancestor | ||
| # | ||
| # Additional features: | ||
| # - the line numbers in Travis match the local branch on the PR | ||
| # author machine. | ||
| # - ./build_tools/travis/flake8_diff.sh can be run locally for quick | ||
| # turn-around | ||
|
|
||
| set -e | ||
| # pipefail is necessary to propagate exit codes | ||
| set -o pipefail | ||
|
|
||
| PROJECT=matplotlib/matplotlib | ||
| PROJECT_URL=https://github.com/$PROJECT.git | ||
|
|
||
| # Find the remote with the project name (upstream in most cases) | ||
| REMOTE=$(git remote -v | grep $PROJECT | cut -f1 | head -1 || echo '') | ||
|
|
||
| # Add a temporary remote if needed. For example this is necessary when | ||
| # Travis is configured to run in a fork. In this case 'origin' is the | ||
| # fork and not the reference repo we want to diff against. | ||
| if [[ -z "$REMOTE" ]]; then | ||
| TMP_REMOTE=tmp_reference_upstream | ||
| REMOTE=$TMP_REMOTE | ||
| git remote add $REMOTE $PROJECT_URL | ||
| fi | ||
|
|
||
| echo "Remotes:" | ||
| echo '--------------------------------------------------------------------------------' | ||
| git remote --verbose | ||
|
|
||
| # Travis does the git clone with a limited depth (50 at the time of | ||
| # writing). This may not be enough to find the common ancestor with | ||
| # $REMOTE/master so we unshallow the git checkout | ||
| if [[ -a .git/shallow ]]; then | ||
| echo -e '\nTrying to unshallow the repo:' | ||
| echo '--------------------------------------------------------------------------------' | ||
| git fetch --unshallow | ||
| fi | ||
|
|
||
| if [[ "$TRAVIS" == "true" ]]; then | ||
| if [[ "$TRAVIS_PULL_REQUEST" == "false" ]] | ||
| then | ||
| # In main repo, using TRAVIS_COMMIT_RANGE to test the commits | ||
| # that were pushed into a branch | ||
| if [[ "$PROJECT" == "$TRAVIS_REPO_SLUG" ]]; then | ||
| if [[ -z "$TRAVIS_COMMIT_RANGE" ]]; then | ||
| echo "New branch, no commit range from Travis so passing this test by convention" | ||
| exit 0 | ||
| fi | ||
| COMMIT_RANGE=$TRAVIS_COMMIT_RANGE | ||
| fi | ||
| else | ||
| # We want to fetch the code as it is in the PR branch and not | ||
| # the result of the merge into master. This way line numbers | ||
| # reported by Travis will match with the local code. | ||
| LOCAL_BRANCH_REF=travis_pr_$TRAVIS_PULL_REQUEST | ||
| # In Travis the PR target is always origin | ||
| git fetch origin pull/$TRAVIS_PULL_REQUEST/head:refs/$LOCAL_BRANCH_REF | ||
| fi | ||
| fi | ||
|
|
||
| # If not using the commit range from Travis we need to find the common | ||
| # ancestor between $LOCAL_BRANCH_REF and $REMOTE/master | ||
| if [[ -z "$COMMIT_RANGE" ]]; then | ||
| if [[ -z "$LOCAL_BRANCH_REF" ]]; then | ||
| LOCAL_BRANCH_REF=$(git rev-parse --abbrev-ref HEAD) | ||
| fi | ||
| echo -e "\nLast 2 commits in $LOCAL_BRANCH_REF:" | ||
| echo '--------------------------------------------------------------------------------' | ||
| git log -2 $LOCAL_BRANCH_REF | ||
|
|
||
| REMOTE_MASTER_REF="$REMOTE/master" | ||
| # Make sure that $REMOTE_MASTER_REF is a valid reference | ||
| echo -e "\nFetching $REMOTE_MASTER_REF" | ||
| echo '--------------------------------------------------------------------------------' | ||
| git fetch $REMOTE master:refs/remotes/$REMOTE_MASTER_REF | ||
| LOCAL_BRANCH_SHORT_HASH=$(git rev-parse --short $LOCAL_BRANCH_REF) | ||
| REMOTE_MASTER_SHORT_HASH=$(git rev-parse --short $REMOTE_MASTER_REF) | ||
|
|
||
| COMMIT=$(git merge-base $LOCAL_BRANCH_REF $REMOTE_MASTER_REF) || \ | ||
| echo "No common ancestor found for $(git show $LOCAL_BRANCH_REF -q) and $(git show $REMOTE_MASTER_REF -q)" | ||
|
|
||
| if [ -z "$COMMIT" ]; then | ||
| exit 1 | ||
| fi | ||
|
|
||
| COMMIT_SHORT_HASH=$(git rev-parse --short $COMMIT) | ||
|
|
||
| echo -e "\nCommon ancestor between $LOCAL_BRANCH_REF ($LOCAL_BRANCH_SHORT_HASH)"\ | ||
| "and $REMOTE_MASTER_REF ($REMOTE_MASTER_SHORT_HASH) is $COMMIT_SHORT_HASH:" | ||
| echo '--------------------------------------------------------------------------------' | ||
| git show --no-patch $COMMIT_SHORT_HASH | ||
|
|
||
| COMMIT_RANGE="$COMMIT_SHORT_HASH..$LOCAL_BRANCH_SHORT_HASH" | ||
|
|
||
| if [[ -n "$TMP_REMOTE" ]]; then | ||
| git remote remove $TMP_REMOTE | ||
| fi | ||
|
|
||
| else | ||
| echo "Got the commit range from Travis: $COMMIT_RANGE" | ||
| fi | ||
|
|
||
| echo -e '\nRunning flake8 on the diff in the range' "$COMMIT_RANGE" \ | ||
| "($(git rev-list $COMMIT_RANGE | wc -l) commit(s)):" | ||
| echo '--------------------------------------------------------------------------------' | ||
|
|
||
| # We need the following command to exit with 0 hence the echo in case | ||
| # there is no match | ||
| MODIFIED_FILES=$(git diff --name-only $COMMIT_RANGE | \ | ||
| grep -v 'doc/sphinxext/sphinx_gallery' || echo "no_match") | ||
|
|
||
| if [[ "$MODIFIED_FILES" == "no_match" ]]; then | ||
| echo "No file outside doc/sphinxext/sphinx_gallery has been modified" | ||
| else | ||
| # Conservative approach: diff without context so that code that | ||
| # was not changed does not create failures | ||
| git diff --unified=0 $COMMIT -- $MODIFIED_FILES | flake8 --diff --show-source | ||
| fi | ||
| echo -e "No problem detected by flake8\n" |
This file contains hidden or 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,70 @@ | ||
| #!/bin/bash | ||
| # This script is meant to be called by the "install" step defined in | ||
| # .travis.yml. See http://docs.travis-ci.com/ for more details. | ||
| # The behavior of the script is controlled by environment variabled defined | ||
| # in the .travis.yml in the top level folder of the project. | ||
|
|
||
| # License: 3-clause BSD | ||
|
|
||
| # Install into our own pristine virtualenv | ||
| if [[ $TRAVIS_OS_NAME != 'osx' ]]; then | ||
| pip install --upgrade virtualenv | ||
| python -m virtualenv venv | ||
| source venv/bin/activate | ||
| export PATH=/usr/lib/ccache:$PATH | ||
| else | ||
| rvm get head | ||
| brew update | ||
| brew tap homebrew/gui | ||
| brew install python libpng ffmpeg imagemagick mplayer ccache | ||
| # We could install ghostscript and inkscape here to test svg and pdf | ||
| # but this makes the test time really long. | ||
| # brew install ghostscript inkscape | ||
| export PATH=/usr/local/opt/ccache/libexec:$PATH | ||
| fi | ||
|
|
||
| # Setup environment | ||
| ccache -s | ||
|
|
||
| # Upgrade pip and setuptools and wheel to get as clean an install as possible | ||
| pip install --upgrade pip | ||
| pip install --upgrade wheel | ||
| pip install --upgrade setuptools | ||
|
|
||
| # Install dependencies from pypi | ||
| pip install $PRE python-dateutil $NUMPY pyparsing!=2.1.6 $PANDAS cycler coveralls coverage $MOCK | ||
|
|
||
| # Install nose from a build which has partial | ||
| # support for python36 and suport for coverage output suppressing | ||
| pip install git+https://github.com/jenshnielsen/nose.git@matplotlibnose | ||
|
|
||
| # pytest-cov>=2.3.1 due to https://github.com/pytest-dev/pytest-cov/issues/124 | ||
| pip install $PRE pytest 'pytest-cov>=2.3.1' pytest-timeout pytest-xdist pytest-faulthandler | ||
|
|
||
| # We manually install humor sans using the package from Ubuntu 14.10. | ||
| # Unfortunately humor sans is not available in the Ubuntu version used by | ||
| # Travis but we can manually install the deb from a later version since is it | ||
| # basically just a .ttf file The current Travis Ubuntu image is to old to | ||
| # search .local/share/fonts so we store fonts in .fonts | ||
|
|
||
| if [[ $BUILD_DOCS == true ]]; then | ||
| pip install $PRE -r doc-requirements.txt | ||
| wget https://github.com/google/fonts/blob/master/ofl/felipa/Felipa-Regular.ttf?raw=true -O Felipa-Regular.ttf | ||
| wget http://mirrors.kernel.org/ubuntu/pool/universe/f/fonts-humor-sans/fonts-humor-sans_1.0-1_all.deb | ||
| mkdir -p tmp | ||
| mkdir -p ~/.fonts | ||
| dpkg -x fonts-humor-sans_1.0-1_all.deb tmp | ||
| cp tmp/usr/share/fonts/truetype/humor-sans/Humor-Sans.ttf ~/.fonts | ||
| cp Felipa-Regular.ttf ~/.fonts | ||
| fc-cache -f -v | ||
| else | ||
| # Use the special local version of freetype for testing | ||
| cp ci/travis/setup.cfg . | ||
| fi; | ||
|
|
||
| if [[ $RUN_FLAKE8 == true ]]; then | ||
| pip install flake8 | ||
| else | ||
| # Install matplotlib | ||
| pip install -e . | ||
| fi; |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should this be
${PYTHON}as well?