xctool Changelog

What's new in xctool 0.3.1

Nov 21, 2016
  • Support Xcode 8 and Xcode 8.1 (only running tests).
  • Also it will be installed with a patched homebrew formula to workaround some installation issues.
  • NOTE: We removed build support from xctool for Xcode 8 and later. Build features are still supported for Xcode 7 but will be removed in one of the next releases. We suggest migrating to xcbuild or xcodebuild for building purposes.

New in xctool 0.3 (Oct 31, 2016)

  • Support Xcode 8 (only running tests).
  • Add support for multiple .xctool-args.
  • Add -waitForDebugger option for running tests.
  • Add a suite-level timeout.

New in xctool 0.2.9 (Apr 12, 2016)

  • Support Xcode 7.3.
  • Support Apple TV.
  • Pass derivedDataPath to xcodebuild when building tests to fix incremental builds.
  • Other fixes and improvements.

New in xctool 0.2.8 (Feb 9, 2016)

  • Process environment variables could now be passes to tests.
  • junit reporter now always outputs valid UTF-8 strings.
  • Analyze action properly emits analyze warnings from previous analyzer runs.
  • Destination values are now properly handled.
  • New option newSimulatorInstance provides a way to create new simulator app instance on every application test run.
  • Improved test output processing.
  • Other fixes and improvements.

New in xctool 0.2.7 (Oct 28, 2015)

  • Pretty reporting is now allowed without overwrite when TTY is not detected.
  • Simulator used to run iOS application tests can now be selected by its id passed to -destination option.
  • xctest symbolication in disabled in Xcode 7 for performance improvements.
  • user-notifications reporter is disabled on TeamCity, Jenkins and CircleCI.
  • Test method names with parameters are now supported.
  • -dry-run and -skipUnavailableActions xcodebuild options are now supported.
  • Other fixes.

New in xctool 0.2.6 (Oct 12, 2015)

  • Added support of Xcode 7.
  • Added an omit option for tests.
  • Added an option for not reseting the simulator on failure.
  • Switched to CoreSimulator framework to run application tests.

New in xctool 0.2.5 (Aug 22, 2015)

  • Dropped Xcode 5 support.
  • Switched to simctl to query test cases and run logic tests.
  • Added support for Xcode 7 beta.
  • Improved support for networking, keychain and other specific service dependent tests.
  • Pre and post action scripts defined in the active scheme are now run as expected.
  • Fixed stripping of ANSI escape codes in the test output.
  • -only option now supports wildcard prefixes for test class names and test cases.
  • Environment for app and logic tests is now the same as if you run them in Xcode.
  • Added support for workspaces and projects that are located in a subdirectory of a project root directory.
  • Improved support for projects with nested projects.
  • Improved searching of available schemes.
  • -sdk option now supports an absolute path to the sdk as a value.
  • Improved macro expansion in schemes.
  • Many other small fixes and improvements.

New in xctool 0.2.4 (Jun 2, 2015)

  • Added -testTimeout option. When an individual test hits this timeout, it is considered a failure rather than waiting indefinitely
  • Tests now launch the simulator without stealing focus
  • Improved error output when xcodebuild crashes
  • Improved support for OS X test bundles
  • Fixed an issue where NSTemporaryDirectory() was broken in iOS logic tests
  • Fixed an issue where many tests with long names would break due to command line length
  • xctool builds without warnings under Xcode 6.3
  • Switched to arc

New in xctool 0.2.3 (Mar 3, 2015)

  • Fix compilation warnings when using Xcode 6.3 betas
  • Added -derivedDataPath option for specifying where DerivedData should be stored
  • Improvements to the TeamCity reporter
  • Added -launch-timeout option for configuring the simulator launch timeout
  • Setting XCTOOL_FORCE_TTY will make the pretty-reporter output special characters even if a TTY isn't detected
  • Fixed logic when running analyze on Xcode 6.1+: there is still more to do here as Apple changed some things around
  • Various memory and correctness fixes

New in xctool 0.2.2 (Dec 8, 2014)

  • Fixes for Xcode 6.1 / workarounds for Apple bugs
  • Fixed problem with moving Xcode location after compiling xctool
  • Add a new reporter to output a database of copied files
  • Updated clang-as-ios-dylib for cpp support
  • Various documentation fixes

New in xctool 0.2.1 (Sep 26, 2014)

  • In the last release, xctool only worked with the Xcode version it was compiled with. This was needed due to the massive changes between Xcode 5 and Xcode 6, but caused problems for people using the same xctool binary and switching between multiple Xcode versions when building and running their project (happens on CI a bunch).
  • @ExtremeMan updated xctool to make Xcode version-specific functionality happen at runtime. This means an xctool compiled with Xcode 6 can build and run tests using Xcode 5, etc.
  • There is an edge case where compiling xctool on Xcode 6 and running it on an app pointed at Xcode 5 will fail if Xcode 6 is located in /Applications/Xcode.app. The wrong private framework gets loaded (the framework from Xcode 6 rather than from Xcode 5). If Xcode 6 is saved somewhere like Xcode_6.app then it works.

New in xctool 0.2 (Sep 23, 2014)

  • Added support for Xcode 6
  • Added a new TeamCity reporter
  • Fixed an issue where xctool would not compile if the path contained spaces
  • Fixed a deterministic crash when running test cases on the iOS 5.0 simulator
  • Fixed a random crash when running application tests
  • Fixed a potential deadlock when running logic tests by working around the dispatch thread soft limit
  • Fixed a bunch of memory leaks

New in xctool 0.1.16 (May 29, 2014)

  • Added support for xcodebuild's -install option
  • Added support for xcodebuild's -resultBundlePath option
  • Added support for sending notifications via Notification Center when actions finish:
  • This can be controlled by turning the user-notifications reporter on and off
  • This is turned off by default on Travis CI
  • Added -listTestsOnly option to list tests without running them:
  • This is useful for integrating with wrapper scripts and test harnesses
  • xctool now uses lazy binding when running tests:
  • This fixes an issue where a framework referenced by tests references a symbol that does not exist, thus causing the test to fail to link

New in xctool 0.1.15 (Apr 24, 2014)

  • Added Xcode 5.1 support. You do not have to update. Xcode 5.0.x is still supported.
  • Dropped support for Xcode < 5.0.
  • If no project or workspace is specified, xctool searches in the current directory. This matches xcodebuild semantics.
  • Faster OCUnit tests by swizzling the slow implementation of senIsSuperclassOfClass.
  • Tests that crash will not halt the overall test run. This gives you more signal by showing all failing tests in a run rather than stopping at the crash.
  • Added -resetSimulator option to clear simulator content and settings between test runs.
  • Fix for the frequently-reported Failed to query the list of test cases in the test bundle bug.
  • When selecting an sdk, xctool will now fall back to the major release sdk. For example, if you specify 7.0.3 and it is unavailable xctool falls back to 7.0.
  • OCUnit errors are now reported as test failures. This should fix confusing results like TEST FAILED: 25 passed, 0 failed, 0 errored, 25 total
  • Testcases in the JUnit reporter now have an error attribute.
  • The clang analyzer now publishes the type and category of detected bugs to reporters.
  • Many smaller fixes and code cleanup.

New in xctool 0.1.14 (Nov 26, 2013)

  • Kiwi and Specta tests are working again!
  • Support for xcodebuild's -destination option, including targeting the 64-bit iPhone Simulator.
  • Better support for passing arguments to tests on launch.
  • Better reporting when tests fail to start or crash while running.
  • Fixed issue preventing OS X application tests from running.
  • Patch for race-condition / crash bug in SenTestingKit's use of objc_getClassList to enumerate test classes.
  • ... as well as many smaller fixes and code cleanup.

New in xctool 0.1.13 (Oct 1, 2013)

  • xctool now supports targets that use the XCTest framework! #169
  • Fixed bug in the JUnit reporter didn't aggregate the output of test cases in the same suite. #141
  • Fixed bug in otest-query that would assume all methods starting with 'test' were test methods. Now it looks at the return type and number of args as well. #174
  • xctool gives a more coherent error message when the test bundle is empty. #177

New in xctool 0.1.12 (Sep 17, 2013)

  • Improved error reporting for tests: xctool now differentiates between test failures (assertions failing) and test errors (tests getting unexpected exceptions, or not running at all).
  • Fixed problem where tests wouldn't run when using Xcode 5 GM.
  • Fixed bug where Ctrl-C'ing / interrupting xctool didn't kill its child processes.
  • If tests emit any ANSI-colored output, the ANSI escape codes are stripped.
  • When running tests in parallel, show which test bundles are in progress.
  • Fix EXC_BAD_ACCESS crash when running tests on 10.7.

New in xctool 0.1.11 (Sep 5, 2013)

  • Fixed crash when using the analyze action with the -only option.
  • In xctool's build.sh script, we'll now retry the build if it appears that xcodebuild crashed while building xctool.

New in xctool 0.1.10 (Sep 4, 2013)

  • Fixed problem preventing some iOS application tests from running (issue #135). The process to fetch the test cases from the bundle would break if the test bundle depended on symbols provided by the test host / bundle loader.
  • Better error reporting when we fail to query the list of test cases in a bundle.

New in xctool 0.1.9 (Sep 4, 2013)

  • New reporter system - reporters are now just plain executables that read JSON events from stdin and write formatted results to stdout. (more info)
  • Added retry logic around application/simulator test running. (@unixed)
  • We now show clang-like code context for failing test assertions and analyzer warnings. (@kcoons)
  • You can set the simulator type (iphone, or ipad) to use for running application tests. (@neonichu)
  • Helpful error messages when we can't find the specified scheme and it's likely because you're relying on Xcode's Autocreate Schemes feature (@ndfred)

New in xctool 0.1.7 (Aug 8, 2013)

  • Fixed issue where xctool wouldn't be able to find its internal libs and binaries when run from a symlink.