10
10
//
11
11
//===----------------------------------------------------------------------===//
12
12
13
- import Basics
13
+ @ testable import Basics
14
14
@testable import PackageLoading
15
15
import PackageModel
16
16
import SPMTestSupport
17
17
import XCTest
18
18
19
19
import class TSCBasic. InMemoryFileSystem
20
+ import enum TSCBasic. ProcessEnv
20
21
import func TSCTestSupport. withCustomEnv
21
22
22
23
class ManifestLoaderCacheTests : XCTestCase {
@@ -297,6 +298,21 @@ class ManifestLoaderCacheTests: XCTestCase {
297
298
delegate: delegate
298
299
)
299
300
301
+ try check ( loader: manifestLoader, expectCached: false )
302
+ try check ( loader: manifestLoader, expectCached: true )
303
+
304
+ try withCustomEnv ( [ " SWIFTPM_MANIFEST_CACHE_TEST " : " 1 " ] ) {
305
+ try check ( loader: manifestLoader, expectCached: false )
306
+ try check ( loader: manifestLoader, expectCached: true )
307
+ }
308
+
309
+ try withCustomEnv ( [ " SWIFTPM_MANIFEST_CACHE_TEST " : " 2 " ] ) {
310
+ try check ( loader: manifestLoader, expectCached: false )
311
+ try check ( loader: manifestLoader, expectCached: true )
312
+ }
313
+
314
+ try check ( loader: manifestLoader, expectCached: true )
315
+
300
316
func check( loader: ManifestLoader , expectCached: Bool ) throws {
301
317
delegate. clear ( )
302
318
delegate. prepare ( expectParsing: !expectCached)
@@ -315,18 +331,65 @@ class ManifestLoaderCacheTests: XCTestCase {
315
331
XCTAssertEqual ( manifest. displayName, " Trivial " )
316
332
XCTAssertEqual ( manifest. targets [ 0 ] . name, " foo " )
317
333
}
334
+ }
335
+ }
318
336
319
- try check ( loader: manifestLoader, expectCached: false )
320
- try check ( loader: manifestLoader, expectCached: true )
337
+ func testCacheDoNotInvalidationExpectedEnv( ) throws {
338
+ try testWithTemporaryDirectory { path in
339
+ let fileSystem = InMemoryFileSystem ( )
340
+ let observability = ObservabilitySystem . makeForTesting ( )
321
341
322
- try withCustomEnv ( [ " SWIFTPM_MANIFEST_CACHE_TEST " : " 1 " ] ) {
323
- try check ( loader: manifestLoader, expectCached: false )
324
- try check ( loader: manifestLoader, expectCached: true )
342
+ let manifestPath = path. appending ( components: " pkg " , " Package.swift " )
343
+ try fileSystem. createDirectory ( manifestPath. parentDirectory, recursive: true )
344
+ try fileSystem. writeFileContents (
345
+ manifestPath,
346
+ string: """
347
+ import PackageDescription
348
+ let package = Package(
349
+ name: " Trivial " ,
350
+ targets: [
351
+ .target(
352
+ name: " foo " ,
353
+ dependencies: []),
354
+ ]
355
+ )
356
+ """
357
+ )
358
+
359
+ let delegate = ManifestTestDelegate ( )
360
+
361
+ let manifestLoader = ManifestLoader (
362
+ toolchain: try UserToolchain . default,
363
+ cacheDir: path,
364
+ delegate: delegate
365
+ )
366
+
367
+ func check( loader: ManifestLoader , expectCached: Bool ) throws {
368
+ delegate. clear ( )
369
+ delegate. prepare ( expectParsing: !expectCached)
370
+
371
+ let manifest = try XCTUnwrap ( loader. load (
372
+ manifestPath: manifestPath,
373
+ packageKind: . root( manifestPath. parentDirectory) ,
374
+ toolsVersion: . current,
375
+ fileSystem: fileSystem,
376
+ observabilityScope: observability. topScope
377
+ ) )
378
+
379
+ XCTAssertNoDiagnostics ( observability. diagnostics)
380
+ XCTAssertEqual ( try delegate. loaded ( timeout: . now( ) + 1 ) , [ manifestPath] )
381
+ XCTAssertEqual ( try delegate. parsed ( timeout: . now( ) + 1 ) . count, expectCached ? 0 : 1 )
382
+ XCTAssertEqual ( manifest. displayName, " Trivial " )
383
+ XCTAssertEqual ( manifest. targets [ 0 ] . name, " foo " )
325
384
}
326
385
327
- try withCustomEnv ( [ " SWIFTPM_MANIFEST_CACHE_TEST " : " 2 " ] ) {
328
- try check ( loader: manifestLoader, expectCached: false )
329
- try check ( loader: manifestLoader, expectCached: true )
386
+ try check ( loader: manifestLoader, expectCached: false )
387
+ try check ( loader: manifestLoader, expectCached: true )
388
+
389
+ for key in EnvironmentVariables . nonCachableKeys {
390
+ try withCustomEnv ( [ key: UUID ( ) . uuidString] ) {
391
+ try check ( loader: manifestLoader, expectCached: true )
392
+ }
330
393
}
331
394
332
395
try check ( loader: manifestLoader, expectCached: true )
0 commit comments