diff options
author | Joey Hess <joey@kitenet.net> | 2011-01-11 16:00:40 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-01-11 16:00:40 -0400 |
commit | a8ce30401dd69d1d203cfc33b791c1b4d175666e (patch) | |
tree | 4d8107d878934d8b8a8606365b3d4367dbe4d239 | |
parent | 3a844b1f3c5eb85d4571857ac10aa8183996513a (diff) |
add checks that location log files are committed
currently failing for move --to
-rw-r--r-- | GitRepo.hs | 6 | ||||
-rw-r--r-- | LocationLog.hs | 1 | ||||
-rw-r--r-- | test.hs | 12 |
3 files changed, 19 insertions, 0 deletions
diff --git a/GitRepo.hs b/GitRepo.hs index 533038fc8..ec363fe73 100644 --- a/GitRepo.hs +++ b/GitRepo.hs @@ -38,6 +38,7 @@ module GitRepo ( inRepo, notInRepo, stagedFiles, + changedUnstagedFiles, checkAttr, decodeGitFile, encodeGitFile, @@ -249,6 +250,11 @@ stagedFiles repo l = pipeNullSplit repo $ ["diff", "--cached", "--name-only", "--diff-filter=ACMRT", "-z", "--"] ++ l +{- Returns a list of files that have unstaged changes. -} +changedUnstagedFiles :: Repo -> [FilePath] -> IO [FilePath] +changedUnstagedFiles repo l = pipeNullSplit repo $ + ["diff", "--name-only", "-z", "--"] ++ l + {- Returns a list of the files in the specified locations that are staged - for commit, and whose type has changed. -} typeChangedStagedFiles :: Repo -> [FilePath] -> IO [FilePath] diff --git a/LocationLog.hs b/LocationLog.hs index e4dad03f5..926939051 100644 --- a/LocationLog.hs +++ b/LocationLog.hs @@ -23,6 +23,7 @@ module LocationLog ( LogStatus(..), logChange, + logFile, keyLocations ) where @@ -375,6 +375,18 @@ checklocationlog f expected = do uuids <- LocationLog.keyLocations g' k assertEqual ("location log for " ++ f ++ " " ++ (show k) ++ " " ++ thisuuid) expected (elem thisuuid uuids) + + -- Location log files should always be checked + -- into git, and any modifications staged for + -- commit. This is a regression test, as some + -- commands forgot to. + let lf = LocationLog.logFile g' k + fs <- Git.inRepo g' [lf] + when (null fs) $ + assertFailure $ f ++ " logfile not added to git repo" + ufs <- Git.changedUnstagedFiles g' [lf] + when (not $ null ufs) $ + assertFailure $ f ++ " logfile changes not staged" _ -> assertFailure $ f ++ " failed to look up key" inlocationlog :: FilePath -> Assertion |