         switch self {
         case .usage:
             return "--help"
+        case .listTests:
+            return "--list-tests"
         case .run(let specifier):
             return specifier ?? ""
         }

        switch self {
        case .testsExecutableNotFound:
            return "no tests found to execute, create a module in your `Tests' directory"
        }
    }
}

private enum Mode: Argument, Equatable, CustomStringConvertible {
    case usage
    case run(String?)

    init?(argument: String, pop: () -> String?) throws {
        switch argument {
        case "--help", "-h":
            self = .usage
        case "-s", "--specifier":
            guard let specifier = pop() else { throw OptionParserError.expectedAssociatedValue(argument) }
            self = .run(specifier)


private enum TestError: ErrorProtocol {
    case testsExecutableNotFound
    case invalidListTestJSONData
}

extension TestError: CustomStringConvertible {
