avoid head
While in some sense this is better, the use of NE.fromList is still partial.
This commit is contained in:
parent
c8fcd97626
commit
936f22273e
2 changed files with 16 additions and 12 deletions
|
@ -42,6 +42,7 @@ import qualified Data.ByteString.Lazy as L
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
import Data.Either
|
import Data.Either
|
||||||
import Control.Concurrent.STM hiding (check)
|
import Control.Concurrent.STM hiding (check)
|
||||||
|
import qualified Data.List.NonEmpty as NE
|
||||||
|
|
||||||
cmd :: Command
|
cmd :: Command
|
||||||
cmd = command "testremote" SectionTesting
|
cmd = command "testremote" SectionTesting
|
||||||
|
@ -83,8 +84,10 @@ start o = starting "testremote" (ActionItemOther (Just (UnquotedString (testRemo
|
||||||
then giveup "This remote is readonly, so you need to use the --test-readonly option."
|
then giveup "This remote is readonly, so you need to use the --test-readonly option."
|
||||||
else do
|
else do
|
||||||
showAction "generating test keys"
|
showAction "generating test keys"
|
||||||
mapM randKey (keySizes basesz fast)
|
NE.fromList
|
||||||
fs -> mapM (getReadonlyKey r . toRawFilePath) fs
|
<$> mapM randKey (keySizes basesz fast)
|
||||||
|
fs -> NE.fromList
|
||||||
|
<$> mapM (getReadonlyKey r . toRawFilePath) fs
|
||||||
let r' = if null (testReadonlyFile o)
|
let r' = if null (testReadonlyFile o)
|
||||||
then r
|
then r
|
||||||
else r { Remote.readonly = True }
|
else r { Remote.readonly = True }
|
||||||
|
@ -100,7 +103,7 @@ start o = starting "testremote" (ActionItemOther (Just (UnquotedString (testRemo
|
||||||
basesz = fromInteger $ sizeOption o
|
basesz = fromInteger $ sizeOption o
|
||||||
si = SeekInput [testRemote o]
|
si = SeekInput [testRemote o]
|
||||||
|
|
||||||
perform :: [Described (Annex (Maybe Remote))] -> Maybe Remote -> Annex (Maybe Remote) -> [Key] -> CommandPerform
|
perform :: [Described (Annex (Maybe Remote))] -> Maybe Remote -> Annex (Maybe Remote) -> NE.NonEmpty Key -> CommandPerform
|
||||||
perform drs unavailr exportr ks = do
|
perform drs unavailr exportr ks = do
|
||||||
st <- liftIO . newTVarIO =<< (,)
|
st <- liftIO . newTVarIO =<< (,)
|
||||||
<$> Annex.getState id
|
<$> Annex.getState id
|
||||||
|
@ -110,12 +113,12 @@ perform drs unavailr exportr ks = do
|
||||||
drs
|
drs
|
||||||
(pure unavailr)
|
(pure unavailr)
|
||||||
exportr
|
exportr
|
||||||
(map (\k -> Described (desck k) (pure k)) ks)
|
(NE.map (\k -> Described (desck k) (pure k)) ks)
|
||||||
ok <- case tryIngredients [consoleTestReporter] mempty tests of
|
ok <- case tryIngredients [consoleTestReporter] mempty tests of
|
||||||
Nothing -> error "No tests found!?"
|
Nothing -> error "No tests found!?"
|
||||||
Just act -> liftIO act
|
Just act -> liftIO act
|
||||||
rs <- catMaybes <$> mapM getVal drs
|
rs <- catMaybes <$> mapM getVal drs
|
||||||
next $ cleanup rs ks ok
|
next $ cleanup rs (NE.toList ks) ok
|
||||||
where
|
where
|
||||||
desck k = unwords [ "key size", show (fromKey keySize k) ]
|
desck k = unwords [ "key size", show (fromKey keySize k) ]
|
||||||
|
|
||||||
|
@ -216,12 +219,12 @@ mkTestTrees
|
||||||
-> [Described (Annex (Maybe Remote))]
|
-> [Described (Annex (Maybe Remote))]
|
||||||
-> Annex (Maybe Remote)
|
-> Annex (Maybe Remote)
|
||||||
-> Annex (Maybe Remote)
|
-> Annex (Maybe Remote)
|
||||||
-> [Described (Annex Key)]
|
-> (NE.NonEmpty (Described (Annex Key)))
|
||||||
-> [TestTree]
|
-> [TestTree]
|
||||||
mkTestTrees runannex mkrs mkunavailr mkexportr mkks = concat $
|
mkTestTrees runannex mkrs mkunavailr mkexportr mkks = concat $
|
||||||
[ [ testGroup "unavailable remote" (testUnavailable runannex mkunavailr (getVal (Prelude.head mkks))) ]
|
[ [ testGroup "unavailable remote" (testUnavailable runannex mkunavailr (getVal (NE.head mkks))) ]
|
||||||
, [ testGroup (desc mkr mkk) (test runannex (getVal mkr) (getVal mkk)) | mkk <- mkks, mkr <- mkrs ]
|
, [ testGroup (desc mkr mkk) (test runannex (getVal mkr) (getVal mkk)) | mkk <- NE.toList mkks, mkr <- mkrs ]
|
||||||
, [ testGroup (descexport mkk1 mkk2) (testExportTree runannex mkexportr (getVal mkk1) (getVal mkk2)) | mkk1 <- take 2 mkks, mkk2 <- take 2 (reverse mkks) ]
|
, [ testGroup (descexport mkk1 mkk2) (testExportTree runannex mkexportr (getVal mkk1) (getVal mkk2)) | mkk1 <- take 2 (NE.toList mkks), mkk2 <- take 2 (reverse (NE.toList mkks)) ]
|
||||||
]
|
]
|
||||||
where
|
where
|
||||||
desc r k = intercalate "; " $ map unwords
|
desc r k = intercalate "; " $ map unwords
|
||||||
|
|
7
Test.hs
7
Test.hs
|
@ -23,11 +23,12 @@ import Options.Applicative (switch, long, short, help, internal, maybeReader, op
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
import qualified Data.ByteString.Lazy.UTF8 as BU8
|
import qualified Data.ByteString.Lazy.UTF8 as BU8
|
||||||
import Control.Concurrent.STM hiding (check)
|
import Control.Concurrent.STM hiding (check)
|
||||||
|
import qualified Utility.RawFilePath as R
|
||||||
|
import qualified Data.List.NonEmpty as NE
|
||||||
|
import Data.String
|
||||||
|
|
||||||
import Common
|
import Common
|
||||||
import CmdLine.GitAnnex.Options
|
import CmdLine.GitAnnex.Options
|
||||||
import qualified Utility.RawFilePath as R
|
|
||||||
import Data.String
|
|
||||||
|
|
||||||
import qualified Utility.ShellEscape
|
import qualified Utility.ShellEscape
|
||||||
import qualified Annex
|
import qualified Annex
|
||||||
|
@ -251,7 +252,7 @@ testRemote testvariants remotetype setupremote =
|
||||||
cv <- annexeval cache
|
cv <- annexeval cache
|
||||||
liftIO $ atomically $ putTMVar v
|
liftIO $ atomically $ putTMVar v
|
||||||
(r, (unavailr, (exportr, (ks, cv))))
|
(r, (unavailr, (exportr, (ks, cv))))
|
||||||
go getv = Command.TestRemote.mkTestTrees runannex mkrs mkunavailr mkexportr mkks
|
go getv = Command.TestRemote.mkTestTrees runannex mkrs mkunavailr mkexportr (NE.fromList mkks)
|
||||||
where
|
where
|
||||||
runannex = inmainrepo . annexeval
|
runannex = inmainrepo . annexeval
|
||||||
mkrs = if testvariants
|
mkrs = if testvariants
|
||||||
|
|
Loading…
Reference in a new issue