Isolates all swap-related functionality into a separate struct #105
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The idea is to remove cross-dependencies (and do not depend on a config singleton), make the code more modular and testable. It would lead to more predictable behaviour in the future and simplify further maintenance.
For this, all dependencies are injected to struct on instantiating.
I had to add
spf13/afero
to mockos.*
calls, e.g.os.Open
->fs.Open
.Also added
logger
interface to unit-test all logged messages by each method.The last update is introducing
execCommander
interface. By default (in a real app) it is falling back toexec.Command
, for tests we replace it with a mock to make sure the commands running by each method.The majority of added lines are actually unit tests for handler_swap.