packages feed

arion 0.1.0.6 → 0.1.0.7

raw patch · 2 files changed

+22/−12 lines, 2 files

Files

arion.cabal view
@@ -1,5 +1,5 @@ name:                arion-version:             0.1.0.6+version:             0.1.0.7 synopsis:            Watcher and runner for Hspec description:         Watcher and runner for Hspec license:             MIT
src/Arion/Utilities.hs view
@@ -1,5 +1,6 @@ module Arion.Utilities (-    associate+    associate,+    dependencies ) where  import Arion.Types@@ -7,15 +8,24 @@ import Data.List (union)  associate :: [SourceFile] -> [TestFile] -> Map FilePath [TestFile]-associate sourceFiles testFiles = let preTransitive = map (createAssociations testFiles) sourceFiles-                                      transitive = map (\(sourceFile, testsAssociatedWithSource) -> let imports = importedModules sourceFile-                                                                                                        testsAssociatedWithImports =-                                                                                                            concatMap snd $ concatMap (\imp -> filter (\(source, tests) -> moduleName source == imp) preTransitive) imports-                                                                                                    in (sourceFilePath sourceFile, testsAssociatedWithSource `union` testsAssociatedWithImports)-                                                       ) preTransitive-                                  in fromList transitive+associate sourceFiles testFiles = let sourcesAndDependencies = dependencies sourceFiles+                                  in fromList $ map (\(source, dependencies) ->+                                                                    let testFilesFor source = filter (\testFile -> moduleName source `elem` imports testFile) testFiles +                                                                        testFilesForSource = testFilesFor source+                                                                        testFilesForDependencies = concatMap testFilesFor dependencies+                                                                    in (sourceFilePath source, testFilesForSource ++ testFilesForDependencies)+                                                    ) sourcesAndDependencies -createAssociations :: [TestFile] -> SourceFile -> (SourceFile, [TestFile])-createAssociations testFiles sourceFile = let associatedTestFiles = filter (\testFile -> moduleName sourceFile `elem` imports testFile) testFiles-                                          in (sourceFile, associatedTestFiles)+dependencies :: [SourceFile] -> [(SourceFile, [SourceFile])]+dependencies [] = []+dependencies sourceFiles = map (\file -> let dependencies = transitiveDependencies sourceFiles (importedModules file)+                                         in (file, dependencies)+                           ) sourceFiles +transitiveDependencies :: [SourceFile] -> [String] -> [SourceFile]+transitiveDependencies sourceFiles [] = []+transitiveDependencies sourceFiles imports = let sourcesForImports = concatMap (findSourcesByModule sourceFiles) imports+                                             in sourcesForImports ++ concatMap (transitiveDependencies sourceFiles) (map importedModules sourcesForImports)++findSourcesByModule :: [SourceFile] -> String -> [SourceFile]+findSourcesByModule sourceFiles theModuleName = filter (\file -> moduleName file == theModuleName) sourceFiles