ocrunner
ocrunner is a little Ruby wrapper for running OCUnit tests in Xcode from the command line. Its main purpose is to parse the huge output from xcodebuild and display a pretty summary to the user.
To use this, you’ll need to be set up with a test target. See developer.apple.com/mac/articles/tools/unittestingwithxcode3.html
Usage
cd path/to/xcode/project/directory
ocrunner
To run tests as files are changed (autotest-style), use:
ocrunner --auto
Signals
Control-c: kill ocrunner Control-: toggle verbosity and rerun tests. This is nice for when the pretty filtered output doesn’t show quite enough information to you.
Pretty debug logging with PRPLog()
This is a little crazy, but ocrunner has support for displaying debug log messaged from your Objective-C code through the use of a custom logging macro. The messages are colored purple in order to make them easier to see in the verbose output. To use this feature, add the following macro to a header or prefix file in your Xcode project:
#define PRPLog(format, ...) NSLog([NSString stringWithFormat: @"%s:%d:%s:\033[35m%@\033[0m", __PRETTY_FUNCTION__, __LINE__, __FILE__, format] ## __VA_ARGS__)
ocrunner will display the latest version of this macro when run with –prplog-help.
I don’t like your defaults
Don’t worry, you can specify the target/configuration/sdk options passed to xcodebuild. You can see all the available options by running ocrunner -h:
--sdk, -s <s>: SDK to build against (default: iphonesimulator3.1.3)
--target, -t <s>: Target to build (default: Test)
--config, -c <s>: Configuration to use (default: Debug)
--parallel, -p: Use multiple processors to build multiple targets (parallelizeTargets) (default: true)
--auto, -a: Watch filesystem for changes and run tests when they occur
--growl, -g: Report results using Growl
--debug-command, -d: Print xcodebuild command and exit
--verbose, -v: Display all xcodebuild output after summary
--loud-compilation, -l: Always show verbose output when a compilation or linking error occurs (default: true)
--prplog, -r: Display PRPLog log messages (default: true)
--prplog-help, -o: Print PRPLog code example and exit
--version, -e: Print version and exit
--help, -h: Show this message
Note on Patches/Pull Requests
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Copyright
Copyright © 2010 Jim Benton. See LICENSE for details.