in test suite display error from git push that fails to exit nonzero
This commit is contained in:
parent
31a38f8468
commit
6f49f17f22
3 changed files with 44 additions and 4 deletions
8
Test.hs
8
Test.hs
|
@ -446,10 +446,12 @@ test_git_remote_annex exporttree
|
|||
git_annex "get" [] "get failed"
|
||||
() <- populate
|
||||
git "config" ["remote.foo.url", "annex::"] "git config"
|
||||
git "push" ["foo", "master"] "git push"
|
||||
git "push" ["foo", "git-annex"] "git push"
|
||||
-- git push does not always propagate nonzero exit
|
||||
-- status from git-remote-annex, so remember the
|
||||
-- transcript and display it if clone fails
|
||||
pushtranscript <- testProcess' "git" ["push", "foo", "master", "git-annex"] Nothing (== True) (const True) "git push"
|
||||
git "clone" ["annex::"++diruuid++"?"++intercalate "&" cfg', "clonedir"]
|
||||
"git clone from special remote"
|
||||
("git clone from special remote (after git push with output: " ++ pushtranscript ++ ")")
|
||||
inpath "clonedir" $
|
||||
git_annex "get" [annexedfile] "get from origin special remote"
|
||||
diruuid="89ddefa4-a04c-11ef-87b5-e880882a4f98"
|
||||
|
|
|
@ -73,7 +73,11 @@ import qualified Command.Uninit
|
|||
-- In debug mode, the output is allowed to pass through.
|
||||
-- So the output does not get checked in debug mode.
|
||||
testProcess :: String -> [String] -> Maybe [(String, String)] -> (Bool -> Bool) -> (String -> Bool) -> String -> Assertion
|
||||
testProcess command params environ expectedret expectedtranscript faildesc = do
|
||||
testProcess command params environ expectedret expectedtranscript faildesc =
|
||||
void $ testProcess' command params environ expectedret expectedtranscript faildesc
|
||||
|
||||
testProcess' :: String -> [String] -> Maybe [(String, String)] -> (Bool -> Bool) -> (String -> Bool) -> String -> IO String
|
||||
testProcess' command params environ expectedret expectedtranscript faildesc = do
|
||||
let p = (proc command params) { env = environ }
|
||||
debug <- testDebug . testOptions <$> getTestMode
|
||||
if debug
|
||||
|
@ -81,10 +85,12 @@ testProcess command params environ expectedret expectedtranscript faildesc = do
|
|||
ret <- withCreateProcess p $ \_ _ _ pid ->
|
||||
waitForProcess pid
|
||||
(expectedret (ret == ExitSuccess)) @? (faildesc ++ " failed with unexpected exit code")
|
||||
return ""
|
||||
else do
|
||||
(transcript, ret) <- Utility.Process.Transcript.processTranscript' p Nothing
|
||||
(expectedret ret) @? (faildesc ++ " failed with unexpected exit code (transcript follows)\n" ++ transcript)
|
||||
(expectedtranscript transcript) @? (faildesc ++ " failed with unexpected output (transcript follows)\n" ++ transcript)
|
||||
return transcript
|
||||
|
||||
-- Run git. (Do not use to run git-annex as the one being tested
|
||||
-- may not be in path.)
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
[[!comment format=mdwn
|
||||
username="joey"
|
||||
subject="""comment 5"""
|
||||
date="2024-11-20T17:42:57Z"
|
||||
content="""
|
||||
My arm64-ancient build failed today in the same way as the OSX build is failing,
|
||||
so I should be able to debug it there.
|
||||
|
||||
builder@sparrow:~/x/a$ git push d git-annex
|
||||
Full remote url: annex::f88d4965-fc4f-4dd0-aac2-eaf19c9bcfa5?encryption=none&type=directory
|
||||
fatal: Refusing to create empty bundle.
|
||||
Push failed (user error (git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","bundle","create","--quiet","/tmp/GITBUNDLE1049637-0","--stdin"] exited 128))
|
||||
warning: helper reported unexpected status of push
|
||||
Everything up-to-date
|
||||
builder@sparrow:~/x/a$ echo $?
|
||||
0
|
||||
|
||||
Huh ok, so git-remote-annex is failing to push, which is why clone
|
||||
later fails. And for whatever reason git doesn't propigate the error, which
|
||||
is why this is not visible in the transcript.
|
||||
|
||||
That build uses git 2.30.2. That git bundle --stdin was broken and
|
||||
didn't read refs from stdin at all. Also it had other bugs. I think it's
|
||||
best not to try to support git-remote-annex with that version of git at
|
||||
all, given those bugs.
|
||||
|
||||
That probably won't help with the OSX failure, which is with a very new git
|
||||
version. So I also made the test
|
||||
suite capture the git push output even when it exits successfully, so it
|
||||
can display it when the git pull fails. That should show what the problem
|
||||
is there.
|
||||
"""]]
|
Loading…
Reference in a new issue