From cbb718bb8b7da2b3fcee38ce01914eb0be60797a Mon Sep 17 00:00:00 2001
From: Ed Morley <edmorley@users.noreply.github.com>
Date: Wed, 14 Jun 2017 22:15:52 +0100
Subject: [PATCH] Fix pip uninstall by moving it prior to pip install (#413)

The pip-uninstall step stopped working when it was moved to after
the pip-install step in f27a84e.

This regression was temporarily fixed by part of #397, however that
PR was reverted in #404.

Adds a test to hopefully catch any future regressions :-)

Fixes #393.
---
 CHANGELOG.md |  4 ++++
 bin/compile  | 10 +++++-----
 test/run     | 10 ++++++++++
 3 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 99454ba7..9dee4a8f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Python Buildpack Changelog
 
+# Unreleased
+
+Fixed automatic pip uninstall of dependencies removed from requirements.txt.
+
 # 109
 
 Fix output for collectstatic step.
diff --git a/bin/compile b/bin/compile
index 6e16a855..6351c244 100755
--- a/bin/compile
+++ b/bin/compile
@@ -170,16 +170,16 @@ sub-env $BIN_DIR/steps/geo-libs
 # GDAL support.
 source $BIN_DIR/steps/gdal
 
-# Install dependencies with Pip (where the magic happens).
-let start=$(nowms)
-source $BIN_DIR/steps/pip-install
-mtime "pip.install.time" "${start}"
-
 # Uninstall removed dependencies with Pip.
 let start=$(nowms)
 source $BIN_DIR/steps/pip-uninstall
 mtime "pip.uninstall.time" "${start}"
 
+# Install dependencies with Pip (where the magic happens).
+let start=$(nowms)
+source $BIN_DIR/steps/pip-install
+mtime "pip.install.time" "${start}"
+
 # Support for NLTK corpora.
 let start=$(nowms)
 sub-env $BIN_DIR/steps/nltk
diff --git a/test/run b/test/run
index 4185388d..1e66072a 100755
--- a/test/run
+++ b/test/run
@@ -62,6 +62,16 @@ testPython3() {
   assertCapturedSuccess
 }
 
+testSmartRequirements() {
+  local cache_dir="$(mktmpdir)"
+  compile "requirements-standard" "$cache_dir"
+  assertFile "requests" ".heroku/python/requirements-declared.txt"
+  assertCapturedSuccess
+  compile "psycopg2" "$cache_dir"
+  assertCaptured "Uninstalling requests"
+  assertFile "psycopg2" ".heroku/python/requirements-declared.txt"
+  assertCapturedSuccess
+}
 
 
 
-- 
GitLab