diff options
author | Joey Hess <joey@kitenet.net> | 2014-08-10 14:52:58 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2014-08-10 15:02:59 -0400 |
commit | c88874a89db54402dbf6bdd56f6d0306f4303e53 (patch) | |
tree | 35b27c254a39b0674142b7cf313492a705e4874b /Remote/GCrypt.hs | |
parent | 425730f03a68cfa6a0e43a88c83f3470d8724627 (diff) |
testremote: Add testing of behavior when remote is not available
Added a mkUnavailable method, which a Remote can use to generate a version
of itself that is not available. Implemented for several, but not yet all
remotes.
This allows testing that checkPresent properly throws an exceptions when
it cannot check if a key is present or not. It also allows testing that the
other methods don't throw exceptions in these circumstances.
This immediately found several bugs, which this commit also fixes!
* git remotes using ssh accidentially had checkPresent return
an exception, rather than throwing it
* The chunking code accidentially returned False rather than
propigating an exception when there were no chunks and
checkPresent threw an exception for the non-chunked key.
This commit was sponsored by Carlo Matteo Capocasa.
Diffstat (limited to 'Remote/GCrypt.hs')
-rw-r--r-- | Remote/GCrypt.hs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Remote/GCrypt.hs b/Remote/GCrypt.hs index 5edb3d022..a95f21669 100644 --- a/Remote/GCrypt.hs +++ b/Remote/GCrypt.hs @@ -120,6 +120,7 @@ gen' r u c gc = do , readonly = Git.repoIsHttp r , availability = availabilityCalc r , remotetype = remote + , mkUnavailable = return Nothing } return $ Just $ specialRemote' specialcfg c (simplyPrepare $ store this rsyncopts) @@ -255,7 +256,7 @@ setupRepo gcryptid r {- Ask git-annex-shell to configure the repository as a gcrypt - repository. May fail if it is too old. -} - gitannexshellsetup = Ssh.onRemote r (boolSystem, False) + gitannexshellsetup = Ssh.onRemote r (boolSystem, return False) "gcryptsetup" [ Param gcryptid ] [] denyNonFastForwards = "receive.denyNonFastForwards" @@ -389,7 +390,7 @@ getGCryptId fast r | Git.repoIsLocal r || Git.repoIsLocalUnknown r = extract <$> liftIO (catchMaybeIO $ Git.Config.read r) | not fast = extract . liftM fst <$> getM (eitherToMaybe <$>) - [ Ssh.onRemote r (Git.Config.fromPipe r, Left undefined) "configlist" [] [] + [ Ssh.onRemote r (Git.Config.fromPipe r, return (Left undefined)) "configlist" [] [] , getConfigViaRsync r ] | otherwise = return (Nothing, r) |