Files
swift-mirror/test/ScanDependencies/module_deps_different_paths_no_reuse.swift
Artem Chikin 06e7b6f3a7 [Dependency Scanner] Refactor the global scanning service to no longer maintain scanner cache state
Instead, each scan's 'ModuleDependenciesCache' will hold all of the data corresponding to discovered module dependencies.

The initial design presumed the possibility of sharing a global scanning cache amongs different scanner invocations, possibly even different concurrent scanner invocations.

This change also deprecates two libSwiftScan entry-points: 'swiftscan_scanner_cache_load' and 'swiftscan_scanner_cache_serialize'. They never ended up getting used, and since this code has been largely stale, we are confident they have not otherwise had users, and they do not fit with this design.

A follow-up change will re-introduce moduele dependency cache serialization on a per-query basis and bring the binary format up-to-date.
2025-01-06 09:07:15 -08:00

49 lines
2.9 KiB
Swift

// RUN: %empty-directory(%t)
// RUN: mkdir -p %t/clang-module-cache
// This test ensures that subsequent invocations of the dependency scanner that re-use previous cache state do not re-use cache entries that contain modules found outside of the current scanner invocation's search paths.
// Run the scanner once, emitting the serialized scanner cache, with one set of search paths
// RUN: %target-swift-frontend -scan-dependencies -module-load-mode prefer-interface -serialize-dependency-scan-cache -dependency-scan-cache-path %t/cache.moddepcache -module-cache-path %t/clang-module-cache %s -o %t/deps_initial.json -I %S/Inputs/CHeaders -I %S/Inputs/Swift -import-objc-header %S/Inputs/CHeaders/Bridging.h -swift-version 4
// RUN: %validate-json %t/deps_initial.json &>/dev/null
// RUN: %FileCheck -input-file %t/deps_initial.json %s -check-prefix CHECK-INITIAL-SCAN
// Run the scanner again, but now re-using previously-serialized cache and using a different search path for Swift modules
// RUN: %target-swift-frontend -scan-dependencies -module-load-mode prefer-interface -load-dependency-scan-cache -dependency-scan-cache-path %t/cache.moddepcache -module-cache-path %t/clang-module-cache %s -o %t/deps.json -I %S/Inputs/CHeaders -I %S/Inputs/SwiftDifferent -import-objc-header %S/Inputs/CHeaders/Bridging.h -swift-version 4
// RUN: %validate-json %t/deps.json &>/dev/null
// RUN: %FileCheck -input-file %t/deps.json %s -check-prefix CHECK-DIFFERENT
// REQUIRES: executable_test
// REQUIRES: objc_interop
import A
// CHECK-INITIAL-SCAN: "modulePath": "{{.*}}{{/|\\}}A-{{.*}}.swiftmodule",
// CHECK-INITIAL-SCAN-NEXT: "sourceFiles": [
// CHECK-INITIAL-SCAN-NEXT: ],
// CHECK-INITIAL-SCAN-NEXT: "directDependencies": [
// CHECK-INITIAL-SCAN-NEXT: {
// CHECK-INITIAL-SCAN-DAG: "clang": "A"
// CHECK-INITIAL-SCAN-DAG: "swift": "Swift"
// CHECK-INITIAL-SCAN-DAG: "swift": "SwiftOnoneSupport"
// CHECK-INITIAL-SCAN: ],
// CHECK-INITIAL-SCAN-NEXT: "linkLibraries": [
// CHECK-INITIAL-SCAN-NEXT: ],
// CHECK-INITIAL-SCAN-NEXT: "details": {
// CHECK-INITIAL-SCAN-NEXT: "swift": {
// CHECK-INITIAL-SCAN-NEXT: "moduleInterfacePath": "{{.*}}/Swift/A.swiftinterface",
// CHECK-DIFFERENT: "modulePath": "{{.*}}{{/|\\}}A-{{.*}}.swiftmodule",
// CHECK-DIFFERENT-NEXT: "sourceFiles": [
// CHECK-DIFFERENT-NEXT: ],
// CHECK-DIFFERENT-NEXT: "directDependencies": [
// CHECK-DIFFERENT-NEXT: {
// CHECK-DIFFERENT-DAG: "swift": "Swift"
// CHECK-DIFFERENT-DAG: "swift": "SwiftOnoneSupport"
// CHECK-DIFFERENT: ],
// CHECK-DIFFERENT-NEXT: "linkLibraries": [
// CHECK-DIFFERENT-NEXT: ],
// CHECK-DIFFERENT-NEXT: "details": {
// CHECK-DIFFERENT-NEXT: "swift": {
// CHECK-DIFFERENT-NEXT: "moduleInterfacePath": "{{.*}}/SwiftDifferent/A.swiftinterface",