Skip to content

Commit

Permalink
fix: better error message when missing packages
Browse files Browse the repository at this point in the history
  • Loading branch information
Konstantin Yegupov authored and kyegupov committed Jun 11, 2019
1 parent 2140039 commit 58df05b
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 11 deletions.
4 changes: 2 additions & 2 deletions lib/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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`';
}
Expand Down
15 changes: 9 additions & 6 deletions plug/pip_resolve.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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(
Expand Down
9 changes: 6 additions & 3 deletions test/inspect.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down Expand Up @@ -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();
});
});
Expand Down Expand Up @@ -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();
});
});
Expand Down

0 comments on commit 58df05b

Please sign in to comment.