Improve error message when credentials file is not provided
diff --git a/pre_commit_hooks/detect_aws_credentials.py b/pre_commit_hooks/detect_aws_credentials.py index e63e72a..f727078 100644 --- a/pre_commit_hooks/detect_aws_credentials.py +++ b/pre_commit_hooks/detect_aws_credentials.py
@@ -8,8 +8,8 @@ def get_your_keys(credentials_file): - """ reads the secret keys in your credentials file in order to be able to look - for them in the submitted code. + """reads the secret keys in your credentials file in order to be able to + look for them in the submitted code. """ aws_credentials_file_path = os.path.expanduser(credentials_file) if not os.path.exists(aws_credentials_file_path): @@ -41,14 +41,22 @@ parser = argparse.ArgumentParser() parser.add_argument('filenames', nargs='*', help='Filenames to run') parser.add_argument( - "--credentials-file", + '--credentials-file', default='~/.aws/credentials', - help="location of aws credentials file from which to get the secret " - "keys we're looking for", + help=( + 'location of aws credentials file from which to get the secret ' + "keys we're looking for" + ), ) args = parser.parse_args(argv) keys = get_your_keys(args.credentials_file) if not keys: + print( + 'No aws keys were configured at {0}\n' + 'Configure them with --credentials-file'.format( + args.credentials_file, + ), + ) return 2 bad_filenames = check_file_for_aws_keys(args.filenames, keys)
diff --git a/tests/detect_aws_credentials_test.py b/tests/detect_aws_credentials_test.py index 495c574..2fbb2da 100644 --- a/tests/detect_aws_credentials_test.py +++ b/tests/detect_aws_credentials_test.py
@@ -12,10 +12,6 @@ ('ok_json.json', 0), ) -NO_CREDENTIALS_TEST = ( - ('with_secrets.txt', 2), -) - @pytest.mark.parametrize(('filename', 'expected_retval'), TESTS) def test_detect_aws_credentials(filename, expected_retval): @@ -26,10 +22,16 @@ assert ret == expected_retval -@pytest.mark.parametrize(('filename', 'expected_retval'), NO_CREDENTIALS_TEST) -def test_non_existent_credentials(filename, expected_retval): +def test_non_existent_credentials(capsys): # with a non-existent credentials file - ret = main( - [get_resource_path(filename), "--credentials-file=testing/resources/credentailsfilethatdoesntexist"] + ret = main(( + get_resource_path('with_secrets.txt'), + "--credentials-file=testing/resources/credentailsfilethatdoesntexist" + )) + assert ret == 2 + out, _ = capsys.readouterr() + assert out == ( + 'No aws keys were configured at ' + 'testing/resources/credentailsfilethatdoesntexist\n' + 'Configure them with --credentials-file\n' ) - assert ret == expected_retval