howl.VC
after_each -> VC.unregister name for name in pairs VC.available
.available is a table of all available vcs
handler = find: -> nil
VC.register 'foo', handler
assert.same VC.available, foo: handler
.register(name, handler)
raises an error if name is missing
assert.raises 'name', -> VC.register nil
raises an error if handler is missing or incomplete
assert.raises 'handler', -> VC.register 'foo', nil
assert.raises '.find', -> VC.register 'foo', {}
.unregister(name)
raises an error if name is missing
assert.raises 'name', -> VC.unregister nil
removes the specified vc from .available
VC.register 'foo', find: -> nil
VC.unregister 'foo'
assert.is_nil VC.available.foo
for_file(file)
returns the first non-nil find()-result from handlers
vc = root: '', files: -> {}
VC.register 'foo', find: -> nil
VC.register 'no', find: -> nil
VC.register 'yes', find: -> vc
assert.equal VC.for_file('file'), vc
returns nil if no handler returns non-nil
assert.is_nil VC.for_file('file')
VC.register 'foo', find: -> nil
assert.is_nil VC.for_file('file')
(validating the loaded vc)
vc = nil
before_each ->
vc = {}
VC.register 'vc', find: -> vc
raises an error if vc.files() is missing
assert.raises 'files', -> VC.for_file 'file'
raises an error if vc.root is missing
vc.files = -> {}
assert.raises 'root', -> VC.for_file 'file'