diff --git a/plug/pip_resolve.py b/plug/pip_resolve.py index 20a7555c..15101664 100644 --- a/plug/pip_resolve.py +++ b/plug/pip_resolve.py @@ -79,9 +79,13 @@ def matches_environment(requirement): return match[0].lower() == sys_platform return True +def is_testable(requirement): + return requirement.editable == False and requirement.vcs == None + def get_requirements_list(requirements_file): req_list = list(requirements.parse(requirements_file)) req_list = filter(matches_environment, req_list) + req_list = filter(is_testable, req_list) required = [req.name.replace('_', '-') for req in req_list] return required diff --git a/test/inspect.test.js b/test/inspect.test.js index b4958ee8..cb47389f 100644 --- a/test/inspect.test.js +++ b/test/inspect.test.js @@ -107,9 +107,7 @@ test('uses provided exec command', function (t) { test('package name differs from requirement', function (t) { chdirWorkspaces('pip-app-deps-with-dashes'); - return subProcess.execute('pip', - ['install', '-r', 'requirements.txt', '--disable-pip-version-check'] - ) + return pipInstall() .then(function () { return plugin.inspect('.', 'requirements.txt') .then(function (result) { @@ -140,9 +138,7 @@ test('package name differs from requirement', function (t) { test('package depends on platform', function (t) { chdirWorkspaces('pip-app-deps-conditional'); - return subProcess.execute('pip', - ['install', '-r', 'requirements.txt', '--disable-pip-version-check'] - ) + return pipInstall() .then(function () { return plugin.inspect('.', 'requirements.txt') .then(function (result) { @@ -164,6 +160,35 @@ test('package depends on platform', function (t) { }); }); +test('editables ignored', function (t) { + chdirWorkspaces('pip-app-deps-editable'); + return pipInstall() + .then(function () { + return plugin.inspect('.', 'requirements.txt') + .then(function (result) { + var pkg = result.package; + t.notOk(pkg.dependencies['django-munigeo'], 'editable dep ignored'); + t.same(pkg.dependencies['posix-ipc'], { + from: [ + 'pip-app-deps-editable@0.0.0', + 'posix-ipc@1.0.0', + ], + name: 'posix-ipc', + version: '1.0.0', + }, 'posix-ipc looks ok'); + t.end(); + }); + }) + .catch(function (error) { + t.fail(error); + }); +}); + +function pipInstall() { + return subProcess.execute('pip', + ['install', '-r', 'requirements.txt', '--disable-pip-version-check']); +} + function chdirWorkspaces(dir) { process.chdir(path.resolve(__dirname, 'workspaces', dir)); } diff --git a/test/workspaces/pip-app-deps-editable/.gitignore b/test/workspaces/pip-app-deps-editable/.gitignore new file mode 100644 index 00000000..85de9cf9 --- /dev/null +++ b/test/workspaces/pip-app-deps-editable/.gitignore @@ -0,0 +1 @@ +src diff --git a/test/workspaces/pip-app-deps-editable/requirements.txt b/test/workspaces/pip-app-deps-editable/requirements.txt new file mode 100644 index 00000000..595c47f8 --- /dev/null +++ b/test/workspaces/pip-app-deps-editable/requirements.txt @@ -0,0 +1,2 @@ +-e git+https://github.com/City-of-Helsinki/munigeo#egg=django-munigeo +posix_ipc==1.0.0