fix(firehose): keep dart_apitool crash details in logs and sanitize breaking table row (#461) When `dart_apitool` fails to produce `report.json` (for example, when analyzing packages that use Dart 3.13 shorthand factory constructors under `analyzer 10.2.0`), `Health.breakingChangeCheck` previously interpolated the entire raw `stderr` output (including multi-line `ExecutableDeclaration.toString()` dumps and stack traces) directly into `BreakingChange.explanation` alongside `neededVersion: Version(0, 0, 0)`. Because `BreakingChange.toMarkdownRow()` did not sanitize newlines or pipe characters, the multi-line stack trace shattered the PR Health comment's Markdown table. - Keep full `stderr` diagnostics in the GitHub Actions workflow logs (via `runDashProcess` and `log(...)`). - Set `neededVersion: null`, preserve `package.version` for `newVersion`, and emit a concise single-line message (`Unable to calculate breaking changes (see workflow logs for details).`) in the PR comment table when `report.json` is not created. - Sanitize newlines (`\r?\n`) and pipe characters (`|`) in `BreakingChange.toMarkdownRow()` so multi-line explanations can never break the Markdown table structure. - Add unit test coverage for `BreakingChange.toMarkdownRow()`. Fixes https://github.com/dart-lang/ecosystem/issues/460 Related: https://github.com/bmw-tech/dart_apitool/issues/266
This repository is home to general Dart Ecosystem tools and packages.
| Package | Description | Version |
|---|---|---|
| blast_repo | A tool to bulk validate and fix GitHub repos. | |
| canary | Test package upgrades against the ecosystem. | |
| corpus | A tool to calculate the API usage for a package. | |
| dart_flutter_team_lints | An analysis rule set used by the Dart and Flutter teams. | |
| firehose | A tool to automate publishing of Pub packages from GitHub actions. | |
| repo_manage | Miscellaneous issue, repo, and PR query tools. | |
| sdk_triage_bot | A triage automation tool for dart-lang/sdk issues. | |
| trebuchet | A tool for moving existing packages into monorepos. |
Here's an overview of the main Dart team repositories:
| Main repo | Description |
|---|---|
| sdk | The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more. |
| SLO mono-repos | Description |
|---|---|
| core | This repository is home to core Dart packages. |
| tools | This repository is home to tooling related Dart packages. |
| labs | This repository is home to Dart ‘labs’ packages. |
| Topic mono-repos | Description |
|---|---|
| build | A build system for Dart written in Dart |
| ecosystem | This repository is home to general Dart Ecosystem tools and packages. |
| http | A composable API for making HTTP requests in Dart. |
| i18n | A general mono-repo for Dart i18n and l10n packages. |
| leak_tracker | A framework for memory leak tracking for Dart and Flutter applications. |
| macros | A Dart mono-repo for macro development. |
| native | Dart packages related to FFI and native assets bundling. |
| shelf | Web server middleware for Dart |
| test | A library for writing unit tests in Dart. |
| webdev | A CLI for Dart web development. |
For information about our publishing automation and release process, see https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.
For additional information about contributing, see our contributing page.