microsoft / microsoft/typespec

testing: expectDiagnostics() should provide an option to ignore ordering

Open
#5,818 3 comments 0 reactions 0 assignees View on GitHub
compiler:core feature good first issue triaged:core
Dominant language
Java
Stars
5.9k
Forks
394
Avg merge
1d 23h
Merged PRs (30d)
104

Description

### Clear and concise description of the problem

# Overview

Code churn can easily cause diagnostics to appear in changing orders over time, and this should, in general, not be considered a breaking change.

However, library tests that use this helper function will fail when diagnostic order changes.
It's onerous for every library test author to have to add a wrapper to pre-sort the collections; rather the core library should have a mode that enables this with a simple binary switch, as an addition to the `options` object.

The existing strict option could be used, but that would technically be a behavioral breaking change to the test condition.

# Current

``` typescript
compiler/expect.ts/expectDiagnostics(
diagnostics: readonly Diagnostic[],
match: DiagnosticMatch | DiagnosticMatch[],
options = {
strict: true,
});
```

# Expected

``` typescript
compiler/expect.ts/expectDiagnostics(
diagnostics: readonly Diagnostic[],
match: DiagnosticMatch | DiagnosticMatch[],
options = {
strict: true,
fixedOrder: true
});
```

### Checklist

- [x] Follow our [Code of Conduct](https://github.com/microsoft/typespec/blob/main/CODE_OF_CONDUCT.md)
- [x] Read the [docs](https://typespec.io/docs/).
- [x] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.