8000 End the CLI quietly when the reader closes its standard output by dominion525 · Pull Request #191 · dominion525/jetdb · GitHub
[go: up one dir, main page]

Skip to content

End the CLI quietly when the reader closes its standard output - #191

Merged
dominion525 merged 1 commit into
mainfrom
fix/cli-broken-pipe
Oct 26, 2026
Merged

dominion525 merged 1 commit into
mainfrom
fix/cli-broken-pipe

Conversation

@dominion525
Copy link
Copy Markdown
Owner

Summary

  • When the reader closed stdout, as in jetdb schema ... | head -1, most subcommands panicked and exited with 101, and export and form dump printed jetdb: ... Broken pipe and exited with 1.
  • Output is now written through functions that return io::Result, and BrokenPipe is treated once, in exit_code: every subcommand, and --help-skill, ends with exit code 0 and no message when its output is closed. Subcommands that gave string errors give CliError, which tells a closed output from other errors.
  • Other errors keep their messages and exit codes, and the output is the same while the pipe stays open: 23,215 runs over the test data match before and after.
  • New tests run every subcommand with a standard output whose reader has closed. They use std::io::pipe, stable since Rust 1.87, so this needs the pull request that raises the minimum supported Rust version to 1.87 to be merged first.

🤖 Generated with Claude Code

- When the reader closed stdout, most subcommands panicked and exited with 101, and export and form dump printed a Broken pipe error and exited with 1
- Write all output through functions that return io::Result, and treat BrokenPipe once in exit_code, which ends with exit code 0 and no message
- Give CliError, which tells a closed output from other errors, from the subcommands that gave string errors
- Test every subcommand and --help-skill with a standard output whose reader has closed

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

Coverage

For 91fd26c.

Filename                       Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
jetdb-cli/src/export.rs            144                10    93.06%           9                 1    88.89%          72                 5    93.06%           0                 0         -
jetdb-cli/src/form.rs              276                23    91.67%          24                 4    83.33%         158                 7    95.57%           0                 0         -
jetdb-cli/src/macro_cmd.rs         140                13    90.71%           7                 2    71.43%          64                 6    90.62%           0                 0         -
jetdb-cli/src/main.rs             1038                48    95.38%          86                 3    96.51%         623                25    95.99%           0                 0         -
jetdb-cli/src/prop.rs              430                25    94.19%          46                 2    95.65%         253                11    95.65%           0                 0         -
jetdb-cli/src/query.rs              68                 3    95.59%           5                 0   100.00%          32                 0   100.00%           0                 0         -
jetdb-cli/src/vba.rs                62                 3    95.16%           5                 0   100.00%          28                 0   100.00%           0                 0         -
jetdb-wasm/src/lib.rs             3919               103    97.37%         257                 4    98.44%        2066                29    98.60%           0                 0         -
jetdb/src/catalog.rs               509                14    97.25%          46                 0   100.00%         299                 3    99.00%           0                 0         -
jetdb/src/complex.rs               924                32    96.54%          73                 0   100.00%         605                15    97.52%           0                 0         -
jetdb/src/crypto.rs               2300               112    95.13%         127                10    92.13%        1315                60    95.44%           0                 0         -
jetdb/src/csv.rs                   974                13    98.67%          77                 0   100.00%         557                 3    99.46%           0                 0         -
jetdb/src/data.rs                 4798                89    98.15%         299                 3    99.00%        2701                50    98.15%           0                 0         -
jetdb/src/ddl/access.rs             70                 0   100.00%           7                 0   100.00%          46                 0   100.00%           0                 0         -
jetdb/src/ddl/mod.rs              2771                 8    99.71%         208                 2    99.04%        1501                 6    99.60%           0                 0         -
jetdb/src/ddl/mysql.rs              70                 0   100.00%           7                 0   100.00%          46                 0   100.00%           0                 0         -
jetdb/src/ddl/postgres.rs           71                 0   100.00%           7                 0   100.00%          46                 0   100.00%           0                 0         -
jetdb/src/ddl/sqlite.rs             69                 0   100.00%           7                 0   100.00%          48                 0   100.00%           0                 0         -
jetdb/src/encoding.rs              285                 0   100.00%          30                 0   100.00%         153                 0   100.00%           0                 0         -
jetdb/src/file.rs                 1932                64    96.69%         118                 0   100.00%         989                18    98.18%           0                 0         -
jetdb/src/form.rs                 3332               133    96.01%         248                11    95.56%        1780                50    97.19%           0                 0         -
jetdb/src/form2000.rs              934                20    97.86%          73                 1    98.63%         497                 4    99.20%           0                 0         -
jetdb/src/format.rs                616           
A6FC
      2    99.68%          45                 0   100.00%         388                 2    99.48%           0                 0         -
jetdb/src/lib.rs                    10                 3    70.00%           1                 0   100.00%           7                 2    71.43%           0                 0         -
jetdb/src/macro_action.rs          299                19    93.65%          27                 3    88.89%         165                24    85.45%           0                 0         -
jetdb/src/macro_def.rs            2440                88    96.39%         196                 9    95.41%        1596                36    97.74%           0                 0         -
jetdb/src/macro_text.rs            804                24    97.01%          54                 2    96.30%         451                20    95.57%           0                 0         -
jetdb/src/map.rs                   417                13    96.88%          27                 0   100.00%         221                 5    97.74%           0                 0         -
jetdb/src/money.rs                 296                 0   100.00%          28                 0   100.00%         190                 0   100.00%           0                 0         -
jetdb/src/prop.rs                 1375                18    98.69%          90                 0   100.00%         695                10    98.56%           0                 0         -
jetdb/src/query.rs                2514                62    97.53%         200                 1    99.50%        1550                18    98.84%           0                 0         -
jetdb/src/relationship.rs          249                26    89.56%          22                 0   100.00%         177                10    94.35%           0                 0         -
jetdb/src/save_as_text.rs          574                27    95.30%          52                 3    94.23%         341                27    92.08%           0                 0         -
jetdb/src/storage.rs               766                32    95.82%          57                 0   100.00%         435                 6    98.62%           0                 0         -
jetdb/src/table.rs                1679                65    96.13%         109                 2    98.17%        1017                17    98.33%           0                 0         -
jetdb/src/timestamp.rs             491                 0   100.00%          51                 0   100.00%         285                 0   100.00%           0                 0         -
jetdb/src/vba.rs                   949                57    93.99%          82                11    86.59%         540                21    96.11%           0                 0         -
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                            38595              1149    97.02%        2807                74    97.36%       21937               490    97.77%           0                 0         -

@dominion525
dominion525 merged commit d0d02b2 into main Oct 26, 2026
11 checks passed
@dominion525
dominion525 deleted the fix/cli-broken-pipe branch October 26, 2026 18:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0