Repository: beeware/briefcase

Issue:
Add console app builds/testing to CI
### What is the problem or limitation you are having?

We aren't building and testing Console apps in CI like we do Toga, PySide, and Pygame. Should we be?

### Describe the solution you'd like

Console apps are exercised in CI like other formats/toolkits.

### Describe alternatives you've considered

status quo

### Additional context

_No response_

Discussion:
rmartin16: well well well....while `pytest-xdist` may have been exacerbating the manifestation of this bizaare leaked file handle....removing it does not seem to have resolved the issue: https://github.com/beeware/briefcase/actions/runs/9433098348/job/25983672343

Patch:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f97540b1..8af65229 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -187,7 +187,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        framework: [ "toga", "pyside6", "pygame" ]
+        framework: [ "toga", "pyside6", "pygame", "console" ]
         runner-os: [ "macos-12", "macos-14", "ubuntu-22.04", "windows-latest" ]
 
   verify-apps:
@@ -206,5 +206,5 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        framework: [ "toga", "pyside6", "pygame" ]
+        framework: [ "toga", "pyside6", "pygame", "console" ]
         runner-os: [ "macos-12", "macos-14", "ubuntu-22.04", "windows-latest" ]
diff --git a/automation/src/automation/bootstraps/console.py b/automation/src/automation/bootstraps/console.py
index 3436c4cd..4faa15ab 100644
--- a/automation/src/automation/bootstraps/console.py
+++ b/automation/src/automation/bootstraps/console.py
@@ -12,5 +12,4 @@ def main():
     time.sleep(2)
     print("{EXIT_SUCCESS_NOTIFY}")
     print("{BRIEFCASE_EXIT_SUCCESS_SIGNAL}")
-
 """
diff --git a/changes/1867.misc.rst b/changes/1867.misc.rst
new file mode 100644
index 00000000..6d7e52a1
--- /dev/null
+++ b/changes/1867.misc.rst
@@ -0,0 +1,1 @@
+Console app testing was added to CI.
diff --git a/src/briefcase/bootstraps/console.py b/src/briefcase/bootstraps/console.py
index b9f7568d..58de0ad4 100644
--- a/src/briefcase/bootstraps/console.py
+++ b/src/briefcase/bootstraps/console.py
@@ -10,7 +10,6 @@ class ConsoleBootstrap(BaseGuiBootstrap):
 def main():
     # Your app logic goes here
     print("Hello, World.")
-
 """
 
     def app_start_source(self):


Test patch:
diff --git a/tests/commands/new/test_build_context.py b/tests/commands/new/test_build_context.py
index ec86799a..05cae9bd 100644
--- a/tests/commands/new/test_build_context.py
+++ b/tests/commands/new/test_build_context.py
@@ -291,7 +291,6 @@ def test_question_sequence_console(new_command):
 def main():
     # Your app logic goes here
     print("Hello, World.")
-
 """,
         app_start_source="""\
 from {{ cookiecutter.module_name }}.app import main