Allow use of our test environment, with a mocked remote and convenient
methods to write more concise expectations.
#env, builds and returns a memoized test environment (with mocked
remote)
#output, returns env output as a string
#remote_fs, returns env remote fs
#expect_execution, setup a remote command execution expectation
In Condition:
* Modify constructor to accepts tests and a default return value;
* Implement #met?;
* Modify #! so that it return the negated value returned by #met?.
In Condition::DSL:
* Modify .evaluate to build the condition with tests and the value
returned by a the evaluated condition block.
Add a basic Test base class, with env and arguments as attributes.
Add some spec helpers to build some easily testable kind of Test
instances (as test doubles).
* Throw symbols instead of raising exceptions to test code evaluation,
this will reduce "bad" usages of exceptions, symbols seems a little
better for now;
* Add a specific exception to be used in specs for testing behaviour
when an exception is raised from a recipe.