Repository: beeware/briefcase
Pull request #851 (2022-09-05 23:51:03)

Propagate `KeyboardInterrupt` out of output streamer
When the output streamer is interrupted, it should (relatively quickly) stop streaming and `briefcase` should exit with the `Aborted by user` message. Currently, the streamer swallows the `KeyboardInterrupt` signal; consequently, upstream code usually detects this as a failure, raises `BriefcaseCommandError`, and creates a log file.

This change propagates the `KeyboardInterrupt` into upstream code to ensure "user abort" codeflows are followed.

## PR Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
- [x] All new features have been tested
- [x] All new features have been documented
- [x] I have read the **CONTRIBUTING.md** file
- [x] I will abide by the code of conduct


codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (965e72b) into [main](https://codecov.io/gh/beeware/briefcase/commit/25c71e23f519057c122169e422a8f4304a320d32?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (25c71e2) will **decrease** coverage by `0.42%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.60% <ø> (-0.04%)` | :arrow_down: |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.00% <0.00%> (-2.00%)` | :arrow_down: |
| [src/briefcase/commands/package.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9wYWNrYWdlLnB5) | `85.00% <0.00%> (-0.72%)` | :arrow_down: |
| ... and [19 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (965e72b) into [main](https://codecov.io/gh/beeware/briefcase/commit/25c71e23f519057c122169e422a8f4304a320d32?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (25c71e2) will **decrease** coverage by `0.36%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.00% <0.00%> (-2.00%)` | :arrow_down: |
| [src/briefcase/commands/base.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9iYXNlLnB5) | `98.22% <0.00%> (-0.36%)` | :arrow_down: |
| ... and [1 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (965e72b) into [main](https://codecov.io/gh/beeware/briefcase/commit/25c71e23f519057c122169e422a8f4304a320d32?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (25c71e2) will **decrease** coverage by `0.36%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.00% <0.00%> (-2.00%)` | :arrow_down: |
| [src/briefcase/commands/base.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9iYXNlLnB5) | `98.22% <0.00%> (-0.36%)` | :arrow_down: |
| ... and [1 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (965e72b) into [main](https://codecov.io/gh/beeware/briefcase/commit/25c71e23f519057c122169e422a8f4304a320d32?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (25c71e2) will **decrease** coverage by `0.11%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `96.29% <0.00%> (-3.71%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/commands/create.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9jcmVhdGUucHk=) | `99.33% <0.00%> (-0.34%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (965e72b) into [main](https://codecov.io/gh/beeware/briefcase/commit/25c71e23f519057c122169e422a8f4304a320d32?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (25c71e2) will **increase** coverage by `0.00%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (965e72b) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.02%`.
> The diff coverage is `100.00%`.

> :exclamation: Current head 965e72b differs from pull request most recent head 10587ef. Consider uploading reports for the commit 10587ef to get more accurate results

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.76% <0.00%> (-0.07%)` | :arrow_down: |
| [src/briefcase/commands/base.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9iYXNlLnB5) | `98.58% <0.00%> (-0.03%)` | :arrow_down: |
| [src/briefcase/commands/create.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9jcmVhdGUucHk=) | `99.66% <0.00%> (-0.03%)` | :arrow_down: |
| [src/briefcase/commands/update.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy91cGRhdGUucHk=) | `100.00% <0.00%> (ø)` | |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `100.00% <0.00%> (ø)` | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (10587ef) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.41%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.60% <ø> (-0.04%)` | :arrow_down: |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.79% <100.00%> (-0.03%)` | :arrow_down: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.03% <0.00%> (-1.97%)` | :arrow_down: |
| ... and [20 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (10587ef) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.36%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.03% <0.00%> (-1.97%)` | :arrow_down: |
| ... and [2 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (10587ef) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.36%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.03% <0.00%> (-1.97%)` | :arrow_down: |
| ... and [2 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (10587ef) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.24%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `96.29% <0.00%> (-3.71%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.03% <0.00%> (-1.97%)` | :arrow_down: |
| [src/briefcase/commands/base.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9iYXNlLnB5) | `98.26% <0.00%> (-0.35%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (10587ef) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.24%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `96.29% <0.00%> (-3.71%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.03% <0.00%> (-1.97%)` | :arrow_down: |
| [src/briefcase/commands/base.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9iYXNlLnB5) | `98.26% <0.00%> (-0.35%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (10587ef) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **increase** coverage by `0.00%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (10587ef) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **increase** coverage by `0.00%`.
> The diff coverage is `100.00%`.

> :exclamation: Current head 10587ef differs from pull request most recent head 806ff5a. Consider uploading reports for the commit 806ff5a to get more accurate results

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (806ff5a) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.41%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.60% <ø> (-0.04%)` | :arrow_down: |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.79% <100.00%> (-0.03%)` | :arrow_down: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.03% <0.00%> (-1.97%)` | :arrow_down: |
| ... and [20 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (806ff5a) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.35%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.03% <0.00%> (-1.97%)` | :arrow_down: |
| ... and [2 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (806ff5a) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.35%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.03% <0.00%> (-1.97%)` | :arrow_down: |
| ... and [2 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (806ff5a) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.24%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `96.29% <0.00%> (-3.71%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.03% <0.00%> (-1.97%)` | :arrow_down: |
| [src/briefcase/commands/base.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9iYXNlLnB5) | `98.26% <0.00%> (-0.35%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (806ff5a) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.24%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `96.29% <0.00%> (-3.71%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MvYXBwLnB5) | `98.03% <0.00%> (-1.97%)` | :arrow_down: |
| [src/briefcase/commands/base.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9iYXNlLnB5) | `98.26% <0.00%> (-0.35%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (806ff5a) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **increase** coverage by `0.00%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (806ff5a) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **increase** coverage by `0.00%`.
> The diff coverage is `100.00%`.

> :exclamation: Current head 806ff5a differs from pull request most recent head 308bdec. Consider uploading reports for the commit 308bdec to get more accurate results

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (308bdec) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.41%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.60% <ø> (-0.04%)` | :arrow_down: |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.79% <100.00%> (-0.03%)` | :arrow_down: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| ... and [21 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (308bdec) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.41%`.
> The diff coverage is `100.00%`.

> :exclamation: Current head 308bdec differs from pull request most recent head 207819f. Consider uploading reports for the commit 207819f to get more accurate results

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.60% <ø> (-0.04%)` | :arrow_down: |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.79% <100.00%> (-0.03%)` | :arrow_down: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| ... and [21 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (308bdec) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.36%`.
> The diff coverage is `100.00%`.

> :exclamation: Current head 308bdec differs from pull request most recent head 207819f. Consider uploading reports for the commit 207819f to get more accurate results

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| ... and [3 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (308bdec) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.10%`.
> The diff coverage is `100.00%`.

> :exclamation: Current head 308bdec differs from pull request most recent head 207819f. Consider uploading reports for the commit 207819f to get more accurate results

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `96.29% <0.00%> (-3.71%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/commands/create.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9jcmVhdGUucHk=) | `99.39% <0.00%> (-0.31%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (308bdec) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.10%`.
> The diff coverage is `100.00%`.

> :exclamation: Current head 308bdec differs from pull request most recent head 207819f. Consider uploading reports for the commit 207819f to get more accurate results

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `96.29% <0.00%> (-3.71%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/commands/create.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9jcmVhdGUucHk=) | `99.39% <0.00%> (-0.31%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (308bdec) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **increase** coverage by `0.00%`.
> The diff coverage is `100.00%`.

> :exclamation: Current head 308bdec differs from pull request most recent head 207819f. Consider uploading reports for the commit 207819f to get more accurate results

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (207819f) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.41%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.60% <ø> (-0.04%)` | :arrow_down: |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.79% <100.00%> (-0.03%)` | :arrow_down: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| ... and [21 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (207819f) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.36%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| ... and [3 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (207819f) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.10%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `96.29% <0.00%> (-3.71%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/commands/create.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9jcmVhdGUucHk=) | `99.39% <0.00%> (-0.31%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (207819f) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **increase** coverage by `0.00%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (207819f) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **increase** coverage by `0.00%`.
> The diff coverage is `100.00%`.

> :exclamation: Current head 207819f differs from pull request most recent head 9ebfc07. Consider uploading reports for the commit 9ebfc07 to get more accurate results

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (9ebfc07) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.41%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/android/gradle.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvYW5kcm9pZC9ncmFkbGUucHk=) | `97.27% <ø> (-0.05%)` | :arrow_down: |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.60% <ø> (-0.04%)` | :arrow_down: |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.79% <100.00%> (-0.03%)` | :arrow_down: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `92.59% <0.00%> (-7.41%)` | :arrow_down: |
| [src/briefcase/platforms/macOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbWFjT1MveGNvZGUucHk=) | `92.30% <0.00%> (-5.77%)` | :arrow_down: |
| [src/briefcase/integrations/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMveGNvZGUucHk=) | `94.05% <0.00%> (-2.98%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| ... and [22 more](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (9ebfc07) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.10%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/android/gradle.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvYW5kcm9pZC9ncmFkbGUucHk=) | `97.32% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `96.29% <0.00%> (-3.71%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/commands/create.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9jcmVhdGUucHk=) | `99.39% <0.00%> (-0.31%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (9ebfc07) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **decrease** coverage by `0.10%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/android/gradle.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvYW5kcm9pZC9ncmFkbGUucHk=) | `97.32% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |
| [src/briefcase/commands/open.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9vcGVuLnB5) | `96.29% <0.00%> (-3.71%)` | :arrow_down: |
| [src/briefcase/platforms/windows/app.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy9hcHAucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/platforms/windows/visualstudio.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvd2luZG93cy92aXN1YWxzdHVkaW8ucHk=) | `93.02% <0.00%> (-2.33%)` | :arrow_down: |
| [src/briefcase/commands/create.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb21tYW5kcy9jcmVhdGUucHk=) | `99.39% <0.00%> (-0.31%)` | :arrow_down: |

codecov[bot]: # [Codecov](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) Report
> Merging [#851](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (9ebfc07) into [main](https://codecov.io/gh/beeware/briefcase/commit/3e0e0c03b0c94b9b5be515f1f4d566289521367c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) (3e0e0c0) will **increase** coverage by `0.00%`.
> The diff coverage is `100.00%`.

| [Impacted Files](https://codecov.io/gh/beeware/briefcase/pull/851?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware) | Coverage Δ | |
|---|---|---|
| [src/briefcase/console.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9jb25zb2xlLnB5) | `100.00% <ø> (ø)` | |
| [src/briefcase/integrations/flatpak.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvZmxhdHBhay5weQ==) | `100.00% <ø> (ø)` | |
| [src/briefcase/platforms/android/gradle.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvYW5kcm9pZC9ncmFkbGUucHk=) | `97.32% <ø> (ø)` | |
| [src/briefcase/platforms/linux/appimage.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvbGludXgvYXBwaW1hZ2UucHk=) | `97.63% <ø> (ø)` | |
| [src/briefcase/integrations/subprocess.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9pbnRlZ3JhdGlvbnMvc3VicHJvY2Vzcy5weQ==) | `100.00% <100.00%> (ø)` | |
| [src/briefcase/platforms/iOS/xcode.py](https://codecov.io/gh/beeware/briefcase/pull/851/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=beeware#diff-c3JjL2JyaWVmY2FzZS9wbGF0Zm9ybXMvaU9TL3hjb2RlLnB5) | `94.85% <100.00%> (+0.02%)` | :arrow_up: |


Patch:
diff --git a/changes/851.bugfix.rst b/changes/851.bugfix.rst
new file mode 100644
index 00000000..db2d345c
--- /dev/null
+++ b/changes/851.bugfix.rst
@@ -0,0 +1,1 @@
+When CTRL+C is entered while an external program is running, ``briefcase`` will properly abort and exit.
diff --git a/src/briefcase/__main__.py b/src/briefcase/__main__.py
index 98625f4d..39288bf5 100644
--- a/src/briefcase/__main__.py
+++ b/src/briefcase/__main__.py
@@ -1,4 +1,5 @@
 import sys
+from contextlib import suppress
 
 from .cmdline import parse_cmdline
 from .console import Log
@@ -37,7 +38,8 @@ def main():
         if getattr(command, "save_log", False):
             log.capture_stacktrace()
     finally:
-        log.save_log_to_file(command)
+        with suppress(KeyboardInterrupt):
+            log.save_log_to_file(command)
 
     sys.exit(result)
 
diff --git a/src/briefcase/console.py b/src/briefcase/console.py
index 1148a9ba..e57d46bd 100644
--- a/src/briefcase/console.py
+++ b/src/briefcase/console.py
@@ -1,10 +1,10 @@
-import contextlib
 import operator
 import os
 import platform
 import re
 import sys
 import traceback
+from contextlib import contextmanager
 from datetime import datetime
 from pathlib import Path
 
@@ -255,8 +255,6 @@ class Log:
                 for func in self.log_file_extras:
                     try:
                         func()
-                    except KeyboardInterrupt:
-                        raise
                     except Exception:
                         self.error(traceback.format_exc())
 
@@ -329,7 +327,7 @@ class Console:
             console=self.print.console,
         )
 
-    @contextlib.contextmanager
+    @contextmanager
     def wait_bar(
         self,
         message="",
diff --git a/src/briefcase/integrations/subprocess.py b/src/briefcase/integrations/subprocess.py
index 547939e1..d4395b27 100644
--- a/src/briefcase/integrations/subprocess.py
+++ b/src/briefcase/integrations/subprocess.py
@@ -6,6 +6,7 @@ import subprocess
 import sys
 import threading
 import time
+from contextlib import suppress
 from pathlib import Path
 
 import psutil
@@ -276,7 +277,7 @@ class Subprocess:
             self.stream_output(args[0], process)
             if process.stderr and kwargs["stderr"] != subprocess.STDOUT:
                 stderr = process.stderr.read()
-            return_code = process.poll()
+        return_code = process.poll()
         self._log_return_code(return_code)
 
         if check and return_code:
@@ -398,6 +399,8 @@ class Subprocess:
             self.command.logger.info("Stopping...")
             # allow time for CTRL+C to propagate to the child process
             time.sleep(0.25)
+            # re-raise to exit as "Aborted by user"
+            raise
         finally:
             self.cleanup(label, popen_process)
             streamer_deadline = time.time() + 3
@@ -413,14 +416,18 @@ class Subprocess:
 
         :param popen_process: popen process to stream stdout
         """
-        while True:
-            # readline should always return at least a newline (ie \n)
-            # UNLESS the underlying process is exiting/gone; then "" is returned
-            output_line = ensure_str(popen_process.stdout.readline())
-            if output_line:
-                self.command.logger.info(output_line)
-            elif output_line == "":
-                return
+        # ValueError is raised if stdout is unexpectedly closed.
+        # This can happen if the user starts spamming CTRL+C, for instance.
+        # Silently exit to avoid Python printing the exception to the console.
+        with suppress(ValueError):
+            while True:
+                # readline should always return at least a newline (ie \n)
+                # UNLESS the underlying process is exiting/gone; then "" is returned
+                output_line = ensure_str(popen_process.stdout.readline())
+                if output_line:
+                    self.command.logger.info(output_line)
+                elif output_line == "":
+                    return
 
     def cleanup(self, label, popen_process):
         """Clean up after a Popen process, gracefully terminating if possible;
diff --git a/src/briefcase/platforms/iOS/xcode.py b/src/briefcase/platforms/iOS/xcode.py
index 2552dbdc..cb970654 100644
--- a/src/briefcase/platforms/iOS/xcode.py
+++ b/src/briefcase/platforms/iOS/xcode.py
@@ -376,7 +376,7 @@ class iOSXcodeRunCommand(iOSXcodeMixin, RunCommand):
         #  1. a log sender that matches that app binary; or,
         #  2. a log sender of that is a Python extension module,
         #     and a process that matches the app binary.
-        # Case (1) works when the standard libary is statically linked,
+        # Case (1) works when the standard library is statically linked,
         #   and for native NSLog() calls in the bootstrap binary
         # Case (2) works when the standard library is dynamically linked,
         #   and ctypes (which handles the NSLog integration) is an
@@ -410,21 +410,25 @@ class iOSXcodeRunCommand(iOSXcodeMixin, RunCommand):
 
         try:
             self.logger.info("Starting app...", prefix=app.app_name)
-            with self.input.wait_bar("Launching app..."):
-                self.subprocess.run(
-                    ["xcrun", "simctl", "launch", udid, app_identifier], check=True
-                )
-        except subprocess.CalledProcessError as e:
-            self.subprocess.cleanup("log stream", simulator_log_popen)
-            raise BriefcaseCommandError(f"Unable to launch app {app.app_name}.") from e
+            try:
+                with self.input.wait_bar("Launching app..."):
+                    self.subprocess.run(
+                        ["xcrun", "simctl", "launch", udid, app_identifier], check=True
+                    )
+            except subprocess.CalledProcessError as e:
+                raise BriefcaseCommandError(
+                    f"Unable to launch app {app.app_name}."
+                ) from e
 
-        # Start streaming logs for the app.
-        self.logger.info(
-            "Following simulator log output (type CTRL-C to stop log)...",
-            prefix=app.app_name,
-        )
-        self.logger.info("=" * 75)
-        self.subprocess.stream_output("log stream", simulator_log_popen)
+            # Start streaming logs for the app.
+            self.logger.info(
+                "Following simulator log output (type CTRL-C to stop log)...",
+                prefix=app.app_name,
+            )
+            self.logger.info("=" * 75)
+            self.subprocess.stream_output("log stream", simulator_log_popen)
+        finally:
+            self.subprocess.cleanup("log stream", simulator_log_popen)
 
         # Preserve the device selection as state.
         return {"udid": udid}


Test patch:
diff --git a/tests/integrations/subprocess/conftest.py b/tests/integrations/subprocess/conftest.py
index 268e0030..ef5a9e17 100644
--- a/tests/integrations/subprocess/conftest.py
+++ b/tests/integrations/subprocess/conftest.py
@@ -46,7 +46,7 @@ def popen_process():
     # Mock the readline values of an actual process. The final return value is "",
     # indicating that the process has exited; however, we insert a short sleep
     # to ensure that any other threads will have a chance to run before this
-    # thread acutally terminates.
+    # thread actually terminates.
     def mock_readline():
         yield from [
             "output line 1\n",
diff --git a/tests/integrations/subprocess/test_Subprocess__stream_output.py b/tests/integrations/subprocess/test_Subprocess__stream_output.py
index 202103fd..0a069d13 100644
--- a/tests/integrations/subprocess/test_Subprocess__stream_output.py
+++ b/tests/integrations/subprocess/test_Subprocess__stream_output.py
@@ -1,10 +1,12 @@
 import time
+from io import StringIO
 from threading import Event
 from unittest import mock
 
 import pytest
 
 from briefcase.console import Log
+from briefcase.integrations import subprocess
 
 
 @pytest.fixture()
@@ -53,7 +55,8 @@ def test_keyboard_interrupt(mock_sub, popen_process, capsys):
     send_ctrl_c = mock.MagicMock()
     send_ctrl_c.side_effect = [False, KeyboardInterrupt]
 
-    mock_sub.stream_output("testing", popen_process, stop_func=send_ctrl_c)
+    with pytest.raises(KeyboardInterrupt):
+        mock_sub.stream_output("testing", popen_process, stop_func=send_ctrl_c)
 
     assert (
         capsys.readouterr().out == "output line 1\n"
@@ -124,7 +127,8 @@ def test_stuck_streamer(mock_sub, popen_process, monkeypatch, capsys):
 
     send_ctrl_c = mock.MagicMock()
     send_ctrl_c.side_effect = [False, KeyboardInterrupt]
-    mock_sub.stream_output("testing", popen_process, stop_func=send_ctrl_c)
+    with pytest.raises(KeyboardInterrupt):
+        mock_sub.stream_output("testing", popen_process, stop_func=send_ctrl_c)
 
     # fmt: off
     assert capsys.readouterr().out == (
@@ -134,3 +138,19 @@ def test_stuck_streamer(mock_sub, popen_process, monkeypatch, capsys):
     # fmt: on
 
     monkeypatched_streamer_should_exit.set()
+
+
+def test_stdout_closes_unexpectedly(mock_sub, popen_process, monkeypatch, capsys):
+    """Streamer silently exits from ValueError because stdout was closed."""
+
+    def monkeypatch_ensure_str(value):
+        """Close stdout when ensure_str() runs on output from readline()."""
+        popen_process.stdout.close()
+        return value
+
+    popen_process.stdout = StringIO(initial_value="output line 1\noutput line 2")
+    monkeypatch.setattr(subprocess, "ensure_str", monkeypatch_ensure_str)
+
+    mock_sub.stream_output("testing", popen_process)
+
+    assert capsys.readouterr().out == "output line 1\n"
diff --git a/tests/platforms/iOS/xcode/test_run.py b/tests/platforms/iOS/xcode/test_run.py
index ad7e1e31..e46ad312 100644
--- a/tests/platforms/iOS/xcode/test_run.py
+++ b/tests/platforms/iOS/xcode/test_run.py
@@ -106,7 +106,7 @@ def test_run_app_simulator_booted(first_app_config, tmp_path):
     command.subprocess.stream_output.assert_called_with(
         "log stream", log_stream_process
     )
-    command.subprocess.cleanup.assert_not_called()
+    command.subprocess.cleanup.assert_called_with("log stream", log_stream_process)
 
 
 def test_run_app_simulator_shut_down(first_app_config, tmp_path):
@@ -212,7 +212,7 @@ def test_run_app_simulator_shut_down(first_app_config, tmp_path):
     command.subprocess.stream_output.assert_called_with(
         "log stream", log_stream_process
     )
-    command.subprocess.cleanup.assert_not_called()
+    command.subprocess.cleanup.assert_called_with("log stream", log_stream_process)
 
 
 def test_run_app_simulator_shutting_down(first_app_config, tmp_path):
@@ -331,7 +331,7 @@ def test_run_app_simulator_shutting_down(first_app_config, tmp_path):
     command.subprocess.stream_output.assert_called_with(
         "log stream", log_stream_process
     )
-    command.subprocess.cleanup.assert_not_called()
+    command.subprocess.cleanup.assert_called_with("log stream", log_stream_process)
 
 
 def test_run_app_simulator_boot_failure(first_app_config, tmp_path):