# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
### Fixed
### Changed
## [0.27.0] - 2024-10-07
### Added
* debug status emitter for when you have problems with ui_test
* cargo features to disable gha or CLI refreshing
### Fixed
* CLI refreshing is now reliable and not leaving around fragments
* Can run multiple `Config`s that test the same files in parallel.
### Changed
* `only`/`ignore` filters now only accept integers, alphabetic characters, `-` and `_`
* `only`/ `ignore` filters allow comments by ignoring everything from an `#` onwards
* `OutputConflictHandling` has been replaced by `error_on_output_conflict`, `bless_output_files`,
and `ignore_output_conflict` functions. Custom functions can now be used to implement special
handling of output conflicts.
* `Run` now forwards env vars passed to the compiler to the executable, too
### Removed
## [0.26.4] - 2024-09-09
### Added
### Fixed
* custom flags were not overriding the default, but the other way around.
### Changed
* Made more code public for miri to use
* Replaced `lazy_static` with std's `OnceLock`
### Removed
## [0.26.3] - 2024-09-08
### Added
### Fixed
### Changed
### Removed
## [0.26.2] - 2024-09-08
### Added
### Fixed
* The order of normalizations and other settings is now that individual tests' normalizations get applied after the global normalizations.
### Changed
### Removed
## [0.26.0] - 2024-09-07
### Added
* examples and usage instructions
* `Config::comment_start` field for changing the default comment symbols from `//`
### Fixed
### Changed
* default comment symbols for `Config::cargo` changed to `#`
* Ctrl+C now prints the summary of the tests that were run before Ctrl+C is pressed
* `//@only-target` and `//@only-host` are now separated from the triple substring by a `:` instead of a `-` and accepts multiple (space separated) filters where just one of them needs to match
* `//@only-64bit` is now `//@only-bitwidth: 64`. You can use `//@only-bitwidth: 64 16` to enable the test for 64 and 16 bit but not for 32 bit.
### Removed
* `TestStatus::update_status`, instead use a revision if you want to run subcommands
## [0.25.0] - 2024-07-24
### Added
### Fixed
* panics when ui_test tried to show diagnostics on multi-byte chars
### Changed
### Removed
## [0.24.0] - 2024-07-11
### Added
* `Text::diff()` creates a text status emitter that does not do full dumps of test stderr/stdout, but only emits the diff of the changes
* Support `-Zbuild-std` by add
* use `DependencyBuilder::build_std` to enable it
### Fixed
* Missing result dump if printing thread is too slow and the entire test exits before it is done.
### Changed
* Split up `Revisioned::mode` into `Revisioned::exit_status` and `Revisioned::require_annotations`
* `Config::output_conflict_handling` is now `Error` instead of `Bless`
* Rustfix tests now create multiple `.fixed` files if diagnostics contain multiple suggestions
* updated `prettydiff` from 0.6.4 to 0.7.0, which drops `ansi_term` and `winapi*` deps.
### Removed
## [0.23.0] - 2024-05-02
### Added
* `Config::custom_comments`
* `Revisioned::custom`
* `Flag` trait for custom `//@` flags
* `Build` trait for custom aux/dep build
* `BuildManager` for deduplicating these builds on a per-`Config` basis
### Fixed
* folders and libraries linked by build scripts were ignored, causing linker failures
### Changed
* removed `Revisioned::no_rustfix` in favor of turning that into a rustc-specific custom flag
* use `config.comment_defaults.base().set_custom("rustfix", RustFixMode::Everything);` to overwrite the `MachineApplicable` default
* removed `Revisioned::edition` in favor of turning that into a rustc-specific custom flag
* removed `Revisioned::needs_asm_support` in favor of turning that into a rustc-specific custom flag
* replaced `Mode::Run` with a rustc-specific run flag
* replaced rustfix with a rustc-specific rustfix flag
* replaced `rustfix` fields of `Mode::Fail` and `Mode::Yolo` by instead overwriting the rustc-specific custom flag
* aux builds and dependencies are now built *per* `Config` instead of being built just for the first `Config` and the result shared by the others
* the configs could be different enough that aux builds built with a different config are incompatible (e.g. different targets).
* replaced `Revisioned::aux_builds` with a rustc-specific custom flag
* replaced `dependency_builder` and `dependency_manifest_path` with `DependencyBuilder` `Flag` that you an add to the default comments.
* use `config.comment_defaults.base().set_custom("dependencies", DependencyBuilder::default());` to get the same behaviour as setting `Config.toml` as the `dependency_manifest_path`.
* updated `rustfix` from 0.6.1 to 0.8.1. This may cause additional suggestions to be applied that previously weren't.
### Removed
## [0.22.3] - 2024-04-05
### Added
* Reexporting `eyre::Result` at the root level
### Fixed
* Passing `--target` to build command when cross-compiling.
### Changed
### Removed
## [0.22.2] - 2024-02-27
### Added
### Fixed
### Changed
* `spanned` dependency bump to lower `bstr` to `1.6.0` to resolve windows linker issues with `1.7`
### Removed
## [0.22.1] - 2024-02-16
### Added
* Add `//~v` comments to put an error matcher above the error site.
### Fixed
* Give aux builds the default comment config, too
### Changed
### Removed
## [0.22.0] - 2024-01-24
### Added
* Started maintaining a changelog
* `Config::comment_defaults` allows setting `//@` comments for all tests
* `//~` comments can now specify just an error code or lint name, without any message. ERROR level is implied
* `Revisioned::diagnostic_code_prefix` allows stripping a prefix of diagnostic codes to avoid having to repeat `clippy::` in all messages
### Fixed
* report an error instead of panicking when encountering a suggestion that does not belong to the main file.
* number of filtered tests is now > 0 when things actually got filtered.
### Changed
* crate-private span handling was passed off to the `spanned` crate, improving some diagnostics along the way.
* `Config::output_conflict_handling` does not contain the bless command message anymore, it is instead available separately as `Config::bless_command`
* Updating `cargo_metadata` to `0.18`
* Updated `spanned` to `0.1.5`, giving more precise spans for more iterator operations
* `Config::cfgs` is now `Config::program::cfg_flag`
* Bumped `annotate-snippets` to `0.10`
### Removed
* `$DIR` and `RUSTLIB` replacements
* `Config::edition` (replaced by `config.comment_defaults.base().edition`)
* `Config::filter_stdout` (replaced by `config.comment_defaults.base().normalize_stdout`)
* `Config::filter_stderr` (replaced by `config.comment_defaults.base().normalize_stderr`)
* `Config::mode` (replaced by `config.comment_defaults.base().mode`)
## [0.21.2] - 2023-09-27