How to get the return value of xcodebuild?
xcodebuild
always returns 0, regardless of the actual test result. You should check for either ** BUILD FAILED **
or ** BUILD SUCCEEDED **
in the output to know whether tests pass or not.
Xcodebuild can return any of the error codes listed below and not restricted to EX_OK (or int 0).
However, I learnt from solution provided by Dmitry and modified as following. It works for me and I hope it could be helpful.
xcodebuild -project ......
if test $? -eq 0
then
echo "Success"
else
echo "Failed"
fi
Error codes
The following are the error codes that can be returned by sysexits archive:
EX_OK
(0): Successful exit.EX_USAGE
(64): The command was used incorrectly, e.g., with the wrong number of arguments, a bad flag, a bad syntax in a parameter, or whatever.EX_DATAERR
(65): The input data was incorrect in some way. This should only be used for user's data and not system files.EX_NOINPUT
(66): An input file (not a system file) did not exist or was not readable. This could also include errors like ``No message'' to a mailer (if it cared to catch it).EX_NOUSER
(67): The user specified did not exist. This might be used for mail addresses or remote logins.EX_NOHOST
(68): The host specified did not exist. This is used in mail addresses or network requests.EX_UNAVAILABLE
(69): A service is unavailable. This can occur if a support program or file does not exist. This can also be used as a catchall message when something you wanted to do doesn't work, but you don't know why.EX_SOFTWARE
(70): An internal software error has been detected. This should be limited to non-operating nonoperating operating system related errors as possible.EX_OSERR
(71): An operating system error has been detected. This is intended to be used for such things ascannot fork'',
cannot create pipe'', or the like. It includes things like getuid returning a user that does not exist in the passwd file.EX_OSFILE
(72): Some system file (e.g., /etc/passwd, /var/run/utmp, etc.) does not exist, cannot be opened, or has some sort of error (e.g., syntax error).EX_CANTCREAT
(73): A (user specified) output file cannot be created.EX_IOERR
(74): An error occurred while doing I/O on some file.EX_TEMPFAIL
(75): Temporary failure, indicating something that is not really an error. In send-mail, sendmail, mail, this means that a mailer (e.g.) could not create a connection, and the request should be reattempted later.EX_PROTOCOL
(76): The remote system returned something that was ``not possible'' during a protocol exchange.EX_NOPERM
(77): You did not have sufficient permission to perform the operation. This is not intended for file system problems, which should useEX_NOINPUT
orEX_CANTCREAT
, but rather for higher level permissions.EX_CONFIG
(78): Something was found in an unconfigured or misconfigured state.
For more info click here.
I solved my problem using this command: xcodebuild -... || exit 1
You can use the "$?" variable to get the return code of the previous command.
xcodebuild -...
if [[ $? == 0 ]]; then
echo "Success"
else
echo "Failed"
fi