DiffEngine manages launching and cleanup of diff tools. It is designed to be used by any Snapshot/Approval testing library.
See Milestones for release notes.
Currently used by:
- NuGet package
- Supported Tools
- Launching a tool
- Closing a tool
- File type detection
- BuildServerDetector
- Disable for a machine/process
- Disable in code
- Icons
- Tools
- Tool Order
- Custom Tool
- DiffEngineTray
- Code versus machine level settings
- BeyondCompare Win/OSX/Linux (Cost: Paid)
- P4Merge Win/OSX/Linux (Cost: Free)
- Kaleidoscope OSX (Cost: Paid)
- DeltaWalker Win/OSX (Cost: Paid)
- WinMerge Win (Cost: Free with option to donate)
- TortoiseGitMerge Win (Cost: Free)
- TortoiseGitIDiff Win (Cost: Free)
- TortoiseMerge Win (Cost: Free)
- TortoiseIDiff Win (Cost: Free)
- KDiff3 Win/OSX (Cost: Free)
- TkDiff OSX (Cost: Free)
- Guiffy Win/OSX (Cost: Paid)
- ExamDiff Win (Cost: Paid)
- Diffinity Win (Cost: Free with option to donate)
- Rider Win/OSX/Linux (Cost: Paid with free option for OSS)
- Vim Win/OSX (Cost: Free with option to donate)
- Neovim Win/OSX/Linux (Cost: Free with option to sponsor)
- AraxisMerge Win/OSX (Cost: Paid)
- Meld Win/OSX/Linux (Cost: Free)
- SublimeMerge Win/OSX/Linux (Cost: Paid)
- VisualStudioCode Win/OSX/Linux (Cost: Free)
- VisualStudio Win (Cost: Paid and free options)
A tool can be launched using the following:
await DiffRunner.LaunchAsync(tempFile, targetFile);
Note that this method will respect the above difference behavior in terms of Auto refresh and MDI behaviors.
A tool can be closed using the following:
DiffRunner.Kill(file1, file2);
Note that this method will respect the above difference behavior in terms of MDI behavior.
DiffEngine use EmptyFiles to determine if a given file or extension is a binary or text. Custom extensions can be added, or existing ones changed.
BuildServerDetector.Detected
returns true if the current code is running on a build/CI server.
Supports:
Set an environment variable DiffEngine_Disabled
with the value true
.
DiffRunner.Disabled = true;
Game designed by Andrejs Kirma from The Noun Project.
Tray icons from LineIcons.