diff --git a/lib/index.ts b/lib/index.ts index 21322b62..6d6f6e60 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -161,8 +161,8 @@ function getDependencies( .catch((error) => { tempDirObj.removeCallback(); if (typeof error === 'string') { - if (error.indexOf('Required package missing') !== -1) { - let errMsg = 'Please run `pip install -r ' + targetFile + '`'; + if (error.indexOf('Required packages missing') !== -1) { + let errMsg = error + '\nPlease run `pip install -r ' + targetFile + '`'; if (path.basename(targetFile) === 'Pipfile') { errMsg = 'Please run `pipenv update`'; } diff --git a/plug/pip_resolve.py b/plug/pip_resolve.py index 00cd8dc9..419bb6a2 100644 --- a/plug/pip_resolve.py +++ b/plug/pip_resolve.py @@ -51,7 +51,7 @@ def get_children(n): return key_tree.get(n.key, []) def create_children_recursive(root_package, key_tree, ancestors): root_name = root_package[NAME].lower() if root_name not in key_tree: - msg = 'Required package missing: ' + root_name + msg = 'Required packages missing: ' + root_name if allow_missing: sys.stderr.write(msg + "\n") return @@ -201,15 +201,18 @@ def create_dependencies_tree_by_req_file_path(requirements_file_path, required = get_requirements_list(requirements_file_path, dev_deps=dev_deps) installed = [p for p in dist_index] packages = [] + missing_packages = [] for r in required: if r.lower() not in installed: - msg = 'Required package missing: ' + r.lower() - if allow_missing: - sys.stderr.write(msg + "\n") - else: - sys.exit(msg) + missing_packages.append(r) else: packages.append(r) + if missing_packages: + msg = 'Required packages missing: ' + (', '.join(missing_packages)) + if allow_missing: + sys.stderr.write(msg + "\n") + else: + sys.exit(msg) # build a tree of dependencies package_tree = create_tree_of_packages_dependencies( diff --git a/test/inspect.test.js b/test/inspect.test.js index b59360da..0c198dce 100644 --- a/test/inspect.test.js +++ b/test/inspect.test.js @@ -9,6 +9,9 @@ var subProcess = require('../lib/sub-process'); var testUtils = require('./test-utils'); var os = require('os'); +function normalize(s) { + return s.replace(/\r/g, ''); +} test('install requirements in "pip-app" venv (may take a while)', function (t) { chdirWorkspaces('pip-app'); @@ -170,8 +173,8 @@ test('transitive dep not installed', function (t) { t.fail('should have failed'); }) .catch(function (error) { - t.equal(error.message, - 'Please run `pip install -r requirements.txt`'); + t.equal(normalize(error.message), + 'Required packages missing: markupsafe\n\nPlease run `pip install -r requirements.txt`'); t.end(); }); }); @@ -266,7 +269,7 @@ test('deps not installed', function (t) { t.fail('should have failed'); }) .catch(function (error) { - t.equal(error.message, 'Please run `pip install -r requirements.txt`'); + t.equal(normalize(error.message), 'Required packages missing: awss\n\nPlease run `pip install -r requirements.txt`'); t.end(); }); });