Repository: dbt-labs/dbt-core

Issue:
Show a pass/fail count for all steps tested during dbt debug, to avoid issues being pushed below the fold
### Describe the feature
When running `dbt debug` in a short terminal window (e.g. in VS Code on a laptop), issues can be pushed out of the viewport. In this example, `dbt_project.yml` is missing:
![image](https://user-images.githubusercontent.com/7335046/131306922-ae25ad9a-f567-4c8d-9b58-159e9ba57ba5.png)

In fairness, there is an error message there but at a glance it just looks like the cwd prompt. The green `OK connection ok` message above absolutely smokes it in a competition for attention. 

```
$dbt debug
Running with dbt=0.21.0-b1
...
Using dbt_project.yml file at C:\WF\LP\data-insights\dbt-core\dbt_project.yml

Configuration:
  profiles.yml file [OK found and valid]
  dbt_project.yml file [ERROR not found]

Required dependencies:
 - git [OK found]

Connection:
...
  Connection test: OK connection ok

3/4 checks passed #in red 
Could not load dbt_project.yml
```

### Describe alternatives you've considered
Reading the error message that's already on screen. 

### Additional context
This bit me hard the first time I ran debug. It just caught me again but I was wiser this time. 

I'm not sure if it's 4 checks, or whether it's also checking things like Python version and path. Let me know if it's more complex than just the 4 that get an OK/ERROR outcome.

### Who will this benefit?
Most of all, new users on their first run through. 

### Are you interested in contributing this feature?
Yep! I've already had a look around the region and it looks pretty straightforward. 



Discussion:

Resolving patch:
diff --git a/core/dbt/task/debug.py b/core/dbt/task/debug.py
--- a/core/dbt/task/debug.py
+++ b/core/dbt/task/debug.py
@@ -16,6 +16,7 @@
 from dbt.clients.yaml_helper import load_yaml_text
 from dbt.links import ProfileConfigDocs
 from dbt.ui import green, red
+from dbt.utils import pluralize
 from dbt.version import get_installed_version
 
 from dbt.task.base import BaseTask, get_nearest_project_dir
@@ -125,6 +126,11 @@ def run(self):
         self.test_dependencies()
         self.test_connection()
 
+        if self.any_failure:
+            print(red(f"{(pluralize(len(self.messages), 'check'))} failed:"))
+        else:
+            print(green('All checks passed!'))
+
         for message in self.messages:
             print(message)
             print('')
@@ -321,9 +327,12 @@ def _log_project_fail(self):
         self.any_failure = True
         if self.project_fail_details == FILE_NOT_FOUND:
             return
-        print('Project loading failed for the following reason:')
-        print(self.project_fail_details)
-        print('')
+        msg = (
+            f'Project loading failed for the following reason:'
+            f'\n{self.project_fail_details}'
+            f'\n'
+        )
+        self.messages.append(msg)
 
     def _log_profile_fail(self):
         if not self.profile_fail_details:
@@ -332,9 +341,12 @@ def _log_profile_fail(self):
         self.any_failure = True
         if self.profile_fail_details == FILE_NOT_FOUND:
             return
-        print('Profile loading failed for the following reason:')
-        print(self.profile_fail_details)
-        print('')
+        msg = (
+            f'Profile loading failed for the following reason:'
+            f'\n{self.profile_fail_details}'
+            f'\n'
+        )
+        self.messages.append(msg)
 
     @staticmethod
     def attempt_connection(profile):
@@ -368,7 +380,7 @@ def test_connection(self):
         print('Connection:')
         for k, v in self.profile.credentials.connection_info():
             print('  {}: {}'.format(k, v))
-        print('  Connection test: {}'.format(self._connection_result()))
+        print('  Connection test: [{}]'.format(self._connection_result()))
         print('')
 
     @classmethod


Test patch: