# Where Are the Unit Tests Located in the Apple/Container Repository?

> Find unit tests in the apple/container repository within the top-level Tests directory. Discover component-specific subdirectories mirroring the Sources folder.

- Repository: [Apple/container](https://github.com/apple/container)
- Tags: how-to-guide
- Published: 2026-06-27

---

**The unit tests for apple/container are located in the top-level `Tests` directory, containing seven component-specific subdirectories that mirror the structure of the `Sources` folder.**

The **apple/container** repository organizes its comprehensive test suite under a single top-level `Tests` directory. This location houses all **XCTest**-based unit tests, with each subdirectory corresponding to a specific module within the container system. The parallel structure between `Tests` and `Sources` makes it easy to locate validation code for any given production file.

## Directory Structure and Organization

All unit tests reside in the repository root under `Tests/`. The directory contains seven primary subfolders, each responsible for testing a distinct architectural component:

```

Tests/
├─ TerminalProgressTests/
├─ ContainerPersistenceTests/
├─ ContainerOSTests/
├─ ContainerBuildTests/
├─ ContainerAPIServiceTests/
├─ ContainerAPIClientTests/
└─ CLITests/

```

This layout follows Swift Package Manager conventions, where the test target names match these directory names. Each folder contains Swift files ending in [`Tests.swift`](https://github.com/apple/container/blob/main/Tests.swift) that import the corresponding production module using `@testable import`.

## Component-Specific Test Coverage

### TerminalProgressTests

The `TerminalProgressTests` directory validates the progress-bar UI used by command-line tools. Tests here ensure that terminal output formatting and progress indicators render correctly across different states.

### ContainerPersistenceTests

Located in `Tests/ContainerPersistenceTests/`, this suite covers the persistence layer including configuration loading, snapshot decoding, and file-system entity handling. Key files include [`ConfigurationLoaderTests.swift`](https://github.com/apple/container/blob/main/ConfigurationLoaderTests.swift) and [`ConfigSnapshotDecoderTests.swift`](https://github.com/apple/container/blob/main/ConfigSnapshotDecoderTests.swift), which verify that container configurations parse correctly from disk.

### ContainerOSTests

The `ContainerOSTests` directory contains validations for OS-level helpers such as directory watching. The [`DirectoryWatcherTest.swift`](https://github.com/apple/container/blob/main/DirectoryWatcherTest.swift) file exercises file-system monitoring capabilities essential for the container runtime.

### ContainerBuildTests

This subdirectory exercises build system utilities including glob matching and builder extensions. The [`GlobberTests.swift`](https://github.com/apple/container/blob/main/GlobberTests.swift) file tests path pattern matching logic used during the container image construction process.

### ContainerAPIServiceTests

Tests in `ContainerAPIServiceTests/` focus on runtime configuration handling performed by the API service layer. These ensure that service-level configurations load and validate correctly.

### ContainerAPIClientTests

The `ContainerAPIClientTests` directory focuses on client-side API functionality, covering request schemes, packet parsing, and DNS resolution. Representative files include [`RequestSchemeTests.swift`](https://github.com/apple/container/blob/main/RequestSchemeTests.swift), which validates the communication protocols between client and server.

### CLITests

The `CLITests` folder holds tests for command-line interface utilities, including [`SerialSuiteTraitTests.swift`](https://github.com/apple/container/blob/main/SerialSuiteTraitTests.swift) in the `Utilities` subdirectory. These verify that CLI argument parsing and command routing function correctly.

## Running the Test Suite

You can execute the entire test suite or filter for specific components using Swift Package Manager commands.

To run all tests from the repository root:

```bash
swift test

```

To run a specific test target, use the `--filter` flag with the directory name:

```bash
swift test --filter ContainerPersistenceTests

```

## Implementation Example: Path Resolution Tests

The following example from [`Tests/ContainerPersistenceTests/PathUtilsTests.swift`](https://github.com/apple/container/blob/main/Tests/ContainerPersistenceTests/PathUtilsTests.swift) demonstrates the testing patterns used throughout the repository. This test verifies absolute path resolution logic:

```swift
import XCTest
@testable import ContainerPersistence

final class PathUtilsTests: XCTestCase {
    func testAbsolutePathResolution() throws {
        let base = try AbsolutePath("/usr/local")
        let relative = try RelativePath("bin/tool")
        let resolved = base.appending(relative)
        XCTAssertEqual(resolved.rawValue, "/usr/local/bin/tool")
    }
}

```

## Key Test Files by Component

The repository contains representative test files for each major system component:

- **Progress-Bar UI**: [`Tests/TerminalProgressTests/ProgressBarTests.swift`](https://github.com/apple/container/blob/main/Tests/TerminalProgressTests/ProgressBarTests.swift)
- **Configuration Loading**: [`Tests/ContainerPersistenceTests/ConfigurationLoaderTests.swift`](https://github.com/apple/container/blob/main/Tests/ContainerPersistenceTests/ConfigurationLoaderTests.swift)
- **Snapshot Decoding**: [`Tests/ContainerPersistenceTests/ConfigSnapshotDecoderTests.swift`](https://github.com/apple/container/blob/main/Tests/ContainerPersistenceTests/ConfigSnapshotDecoderTests.swift)
- **Directory Watching**: [`Tests/ContainerOSTests/DirectoryWatcherTest.swift`](https://github.com/apple/container/blob/main/Tests/ContainerOSTests/DirectoryWatcherTest.swift)
- **Build Glob Matching**: [`Tests/ContainerBuildTests/GlobberTests.swift`](https://github.com/apple/container/blob/main/Tests/ContainerBuildTests/GlobberTests.swift)
- **API Request Schemes**: [`Tests/ContainerAPIClientTests/RequestSchemeTests.swift`](https://github.com/apple/container/blob/main/Tests/ContainerAPIClientTests/RequestSchemeTests.swift)
- **CLI Utilities**: [`Tests/CLITests/Utilities/SerialSuiteTraitTests.swift`](https://github.com/apple/container/blob/main/Tests/CLITests/Utilities/SerialSuiteTraitTests.swift)

## Summary

- The **apple/container** unit tests are located in the top-level `Tests/` directory with seven component-specific subdirectories.
- Each test folder mirrors its corresponding source folder in `Sources/`, making navigation intuitive.
- Tests use **XCTest** and can be executed via `swift test` or filtered by target name.
- Key test files cover persistence ([`ConfigurationLoaderTests.swift`](https://github.com/apple/container/blob/main/ConfigurationLoaderTests.swift)), OS utilities ([`DirectoryWatcherTest.swift`](https://github.com/apple/container/blob/main/DirectoryWatcherTest.swift)), build systems ([`GlobberTests.swift`](https://github.com/apple/container/blob/main/GlobberTests.swift)), and API clients ([`RequestSchemeTests.swift`](https://github.com/apple/container/blob/main/RequestSchemeTests.swift)).

## Frequently Asked Questions

### How do I run only a specific test target in apple/container?

Use the `--filter` flag with `swift test` followed by the target name. For example, `swift test --filter ContainerPersistenceTests` executes only the persistence layer tests. This approach saves time when working on isolated components.

### What testing framework does apple/container use?

The repository uses **XCTest**, Apple's standard testing framework for Swift. All test files import `XCTest` and often use `@testable import` to access internal APIs of the production modules they validate.

### How does the test structure correlate with the source code?

The `Tests/` directory structure directly mirrors the `Sources/` directory. For instance, `Sources/ContainerPersistence/` corresponds to `Tests/ContainerPersistenceTests/`. This one-to-one mapping ensures that every production module has a dedicated test suite in a predictable location.

### Where are the CI/CD test configurations located?

While the unit tests themselves reside in `Tests/`, continuous integration workflows that invoke `swift test` on every pull request are typically defined in the repository's `.github/workflows/` directory or equivalent CI configuration files, ensuring automated validation of the entire test suite.