Todos: - [x] learn about macros - [x] basic diff algorithm - [x] assert_value storing rhs in a file - [x] basic rhs heredoc support - [x] workaround asynchronous ExUnit I/O - [x] better errors where lhs is not what we can work with - [x] store file offsets when accepting with multiple heredocs - [x] assert_value with no rhs at all - [x] test for accepting/modifying heredocs - [x] full integration tests - [x] README/help - [x] better general handling of strings that don't end with \n - [x] when displaying diff, show File we are diffing, and the context of where assert_value was invoked from Bugs: - [x] diff doesn't seem to report newline issues, e.g. with first test in integration test (may not be happening anymore) Later: - [x] Investigate Standard Licence for Elixir - [x] TravisCI integration - [x] timeout business - [x] Async tests support - [x] Add help to prompt (accept "?" as answer) - [x] Improved interactive invocation with Y, N - [x] support for non-interactive invocation - [x] Add credo - [x] Hex package Fancy work: - [x] Add CHANGELOG.md - [x] support other types for rhs, like numbers - [x] special case store strings with no newlines as plain string not heredoc - [x] better context for diff - [ ] @doc and @moduledoc code documentation - [ ] support hunks in diff - [ ] refine and colorize diff - [ ] automatically wrap assert_value arguments in parens as needed to conserve horizontal space - [ ] support capturing and comparing exceptions (e.g. assert_value foo = raise RuntimeError, "aaa" ) - [ ] do not escape quotes in heredocs Marketing: - [x] better README - [x] animated gif showing an example - [ ] improve README.md Bugs: - [ ] diff is very slow on large diffs because List.myers_difference implementation is suboptimal - [ ] precedence corner cases like assert_value foo = 1 Maybe: - [ ] dynamically disable timeouts inside assert_value - [ ] do not indent empty lines in expected values (otherwise there are a lot of trailing spaces) - [ ] better name rather assert_value (e.g. insist, magic_assert, assert_interactive ?) - [ ] pry integration - [ ] canonicalization - [ ] espec support ??? Will Not Do: - [x] Protocol based serialization (WND) Refactoring: - [x] in macro "pass in"/unquote everything in the beginning - [x] touching file should only happen on y - [x] delete tmpdir after running - [x] in integration test output diffing sometimes flaps - [x] standardize lhs/rhs vs actual/expected - [x] FileChangeTracker - [ ] add comment about --seed 0 - [x] move integration test stuff into integration_test.exs - [x] break with unsupported rhs type at compile time - [x] more descriptive error on on unsupported rhs side - [x] possibly construct the ExUnit.AssertionError in the caller to make a sensible exception depending on whether or not we have rhs - [ ] better replace function for the trailing \n, it can eat too much surprisingly
Todos:
Bugs:
Later:
Fancy work:
Marketing:
Bugs:
Maybe:
Will Not Do:
Refactoring: