     definingTopLevel topLevelName: String
   ) throws {
     let newInputsPath = inputPath(basename: newInput)
-    let graph = try doABuild(
+    let driver = try doABuild(
       "after addition of \(newInput)",
       checkDiagnostics: true,
       extraArguments: [newInputsPath.pathString],
-      expecting: [
-        .readGraph,
-        .enablingCrossModule,
-        .maySkip("main", "other"),
-        .schedulingNew(newInput),
-        .remarks(
-          "Incremental compilation: Has malformed dependency source; will queue  {compile: \(newInput).o <= \(newInput).swift}"),
-        .missing(newInput),
-        .queuingInitial(newInput),
-        .notSchedulingDependentsNoEntry(newInput),
-        .skipping("main", "other"),
-        .findingBatchingCompiling(newInput),
-        .newDefinitionOfSourceFile(.interface,      newInput),
-        .newDefinitionOfSourceFile(.implementation, newInput),
-        .newDefinitionOfTopLevelName(.interface,      name: topLevelName, input: newInput),
-        .newDefinitionOfTopLevelName(.implementation, name: topLevelName, input: newInput),
-        .schedLinking,
-        .skipped("main", "other"),
-      ],
-      whenAutolinking: autolinkLifecycleExpectations)
-      .moduleDependencyGraph()
-
+      whenAutolinking: autolinkLifecycleExpectedDiags
+    ) {
+      readGraph
+      enablingCrossModule
+      maySkip("main", "other")
+      schedulingNew(newInput)
+      "Incremental compilation: Has malformed dependency source; will queue  {compile: \(newInput).o <= \(newInput).swift}"
+      missing(newInput)
+      queuingInitial(newInput)
+      notSchedulingDependentsNoEntry(newInput)
+      skipping("main", "other")
+      findingBatchingCompiling(newInput)
+      newDefinitionOfSourceFile(.interface,      newInput)
+      newDefinitionOfSourceFile(.implementation, newInput)
+      newDefinitionOfTopLevelName(.interface,      name: topLevelName, input: newInput)
+      newDefinitionOfTopLevelName(.implementation, name: topLevelName, input: newInput)
+      schedLinking
+      skipped("main", "other")
+    }
+
+    let graph = try driver.moduleDependencyGraph()
     XCTAssert(graph.contains(sourceBasenameWithoutExt: newInput))
     XCTAssert(graph.contains(name: topLevelName))
   }

      "as is",
      checkDiagnostics: checkDiagnostics,
      extraArguments: extraArguments,
      expecting: [
        .enablingCrossModule,
        .readGraph,
        .maySkip("main", "other"),
        .skipping("main", "other"),
        .skipped("main", "other"),
        .skippingLinking,
      ],
      whenAutolinking: [])
  }

  /// Check reaction to touching a non-propagating input.

      "touch other; non-propagating",
      checkDiagnostics: checkDiagnostics,
      extraArguments: extraArguments,
      whenAutolinking: autolinkLifecycleExpectedDiags
    ) {
      enablingCrossModule
      maySkip("main")
      schedulingChanged("other")
      queuingInitial("other")
      notSchedulingDependentsUnknownChanges("other")
      skipping("main")
      readGraph
      findingBatchingCompiling("other")
      schedLinking
      skipped("main")
    }
  }

  /// Check reaction to touching both inputs.
