gitwtfhub

wtf is xctool?

facebookarchive/xctool — explained in plain English

Analysis updated 2026-06-24

6,873Objective-CAudience · developerComplexity · 2/5Setup · moderate

TL;DR

An archived command-line wrapper around Apple's xcodebuild that produced cleaner output, structured JSON test results, and parallel test runs for iOS and macOS projects.

Mindmap

mindmap
  root((xctool))
    What it does
      Wraps xcodebuild
      Clean test output
      JSON test results
      Parallel test runs
    Filtering tests
      By target
      By class
      By method
      Exclude by prefix
    Status
      Build support deprecated
      Xcode 8 not supported
      Archived by Facebook
    Alternatives
      xcpretty for formatting
      xcbuild for complex builds

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Run iOS or macOS test suites in a CI pipeline and get structured JSON output to feed into a results dashboard.

REASON 2

Speed up test runs by distributing test suites across multiple CPU cores in parallel.

REASON 3

Replace verbose xcodebuild output with a clean summary that only shows failures.

REASON 4

Filter a large test suite to run only a specific class or a single test method from the command line.

What's in the stack?

Objective-CXcodexcodebuildJSONiOSmacOS

How it stacks up

facebookarchive/xctoolmacpass/macpassblockskit/blockskit
Stars6,8736,8486,838
LanguageObjective-CObjective-CObjective-C
Setup difficultymoderateeasyeasy
Complexity2/52/52/5
Audiencedevelopergeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Requires macOS with Xcode installed, build functionality does not work with Xcode 8 or later and the project is archived.

No license information was mentioned in the explanation.

Wtf does this do

Xctool is a command-line tool created by Facebook that wraps Apple's built-in xcodebuild to make running iOS and macOS tests easier, particularly in automated build pipelines. It was designed to solve specific frustrations with xcodebuild: the default tool produces enormous walls of text even when nothing goes wrong, outputs results in an unstructured format that is hard to parse automatically, and runs all test suites one at a time. The three main improvements xctool brought were cleaner output, structured results, and parallelism. By default, xctool only prints detailed output when a build or test fails, so you can spot the problem without scrolling through thousands of lines. Test results are captured as structured JSON objects, which makes it straightforward to feed results into dashboards or notification systems without writing fragile text parsers. The parallel test runner can split test suites across CPU cores, and Facebook reported two to three times faster test runs by enabling it. The tool accepts nearly all the same arguments as xcodebuild, so switching to it is typically a matter of replacing the command name. You can run all tests, limit to a specific test target, narrow further to a specific class, or drill down to a single test method. You can also exclude tests by name prefix. An important note: xctool's support for building projects (compiling code) is deprecated and does not work with Xcode 8 or later. The testing functionality continued to be supported, but the project itself is archived. Facebook recommends xcpretty (a formatting wrapper around xcodebuild) for simple needs, or their separate xcbuild project for more complex build requirements. The repository is now in the facebookarchive organization, which means it is no longer actively maintained.

Yoink these prompts

Prompt 1
Show me the xctool command to run only the LoginTests class in my iOS project and output results as JSON to a file.
Prompt 2
How do I set up xctool in a GitHub Actions CI workflow to run my iOS tests and fail the build if any test fails?
Prompt 3
I want to run my iOS test suites in parallel with xctool. What flag do I use and what are the trade-offs I should know about?
Prompt 4
xctool is archived. Give me the equivalent xcpretty command that replaces my xctool test run with formatted output and JSON reporting.

Frequently asked questions

wtf is xctool?

An archived command-line wrapper around Apple's xcodebuild that produced cleaner output, structured JSON test results, and parallel test runs for iOS and macOS projects.

What language is xctool written in?

Mainly Objective-C. The stack also includes Objective-C, Xcode, xcodebuild.

What license does xctool use?

No license information was mentioned in the explanation.

How hard is xctool to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is xctool for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.