@@ -273,7 +273,13 @@ class ReactSettingsExtensionTest {
273273
274274 val monitoredUpdateConfig = createMonitoredUpdateConfig()
275275
276- checkAndUpdateCache(monitoredUpdateConfig, outputFile, buildFolder, lockfileCollection)
276+ checkAndUpdateCache(
277+ monitoredUpdateConfig,
278+ outputFile,
279+ buildFolder,
280+ lockfileCollection,
281+ File (" /" ),
282+ )
277283
278284 // The autolinking.json file is valid, SHA's are untouched therefore config should NOT be
279285 // refreshed
@@ -294,7 +300,13 @@ class ReactSettingsExtensionTest {
294300
295301 val monitoredUpdateConfig = createMonitoredUpdateConfig()
296302
297- checkAndUpdateCache(monitoredUpdateConfig, outputFile, buildFolder, lockfileCollection)
303+ checkAndUpdateCache(
304+ monitoredUpdateConfig,
305+ outputFile,
306+ buildFolder,
307+ lockfileCollection,
308+ tempFolder.root,
309+ )
298310
299311 // The autolinking.json file is invalid and should be refreshed
300312 assertThat(monitoredUpdateConfig.run).isTrue()
@@ -327,12 +339,75 @@ class ReactSettingsExtensionTest {
327339
328340 val monitoredUpdateConfig = createMonitoredUpdateConfig()
329341
330- checkAndUpdateCache(monitoredUpdateConfig, outputFile, buildFolder, lockfileCollection)
342+ checkAndUpdateCache(
343+ monitoredUpdateConfig,
344+ outputFile,
345+ buildFolder,
346+ lockfileCollection,
347+ tempFolder.root,
348+ )
331349
332350 // The autolinking.json file is invalid and should be refreshed
333351 assertThat(monitoredUpdateConfig.run).isTrue()
334352 }
335353
354+ @Test
355+ fun checkAndUpdateConfigIfCachedConfigIsFromAnotherProjectDir () {
356+ val project = ProjectBuilder .builder().withProjectDir(tempFolder.root).build()
357+ val buildFolder = tempFolder.newFolder(" build" )
358+ val generatedFolder = tempFolder.newFolder(" build" , " generated" )
359+ val outputFile =
360+ File (generatedFolder, " autolinking.json" ).apply {
361+ writeText(
362+ """
363+ {
364+ "root": "/old",
365+ "reactNativePath": "/old/node_modules/react-native",
366+ "reactNativeVersion": "0.75",
367+ "dependencies": {},
368+ "healthChecks": [],
369+ "platforms": {
370+ "ios": {},
371+ "android": {}
372+ },
373+ "assets": [],
374+ "project": {
375+ "ios": {},
376+ "android": {
377+ "sourceDir": "/old/android",
378+ "appName": "app",
379+ "packageName": "com.TestApp",
380+ "applicationId": "com.TestApp",
381+ "mainActivity": ".MainActivity",
382+ "assets": []
383+ }
384+ }
385+ }
386+ """
387+ .trimIndent(),
388+ )
389+ }
390+ tempFolder.newFile(" yarn.lock" ).apply { writeText(" I'm a lockfile" ) }
391+ val lockfileCollection = project.files(" yarn.lock" )
392+
393+ // Prebuild the shas so that only the project location differs
394+ checkAndUpdateLockfiles(lockfileCollection, buildFolder)
395+
396+ val monitoredUpdateConfig = createMonitoredUpdateConfig()
397+
398+ checkAndUpdateCache(
399+ monitoredUpdateConfig,
400+ outputFile,
401+ buildFolder,
402+ lockfileCollection,
403+ tempFolder.root,
404+ )
405+
406+ // The autolinking.json file was generated for a project in another folder and should be
407+ // refreshed
408+ assertThat(monitoredUpdateConfig.run).isTrue()
409+ }
410+
336411 @Test
337412 fun isCacheDirty_withMissingAutolinkingFile_returnsTrue () {
338413 val project = ProjectBuilder .builder().withProjectDir(tempFolder.root).build()
@@ -345,7 +420,14 @@ class ReactSettingsExtensionTest {
345420 val lockfiles = project.files(" yarn.lock" )
346421 val emptyConfigFile = File (tempFolder.newFolder(" build" , " autolinking" ), " autolinking.json" )
347422
348- assertThat(ReactSettingsExtension .isCacheDirty(emptyConfigFile, buildFolder, lockfiles))
423+ assertThat(
424+ ReactSettingsExtension .isCacheDirty(
425+ emptyConfigFile,
426+ buildFolder,
427+ lockfiles,
428+ tempFolder.root,
429+ ),
430+ )
349431 .isTrue()
350432 }
351433
@@ -367,7 +449,14 @@ class ReactSettingsExtensionTest {
367449 .trimIndent(),
368450 )
369451
370- assertThat(ReactSettingsExtension .isCacheDirty(invalidConfigFile, buildFolder, lockfiles))
452+ assertThat(
453+ ReactSettingsExtension .isCacheDirty(
454+ invalidConfigFile,
455+ buildFolder,
456+ lockfiles,
457+ tempFolder.root,
458+ ),
459+ )
371460 .isTrue()
372461 }
373462
@@ -391,7 +480,14 @@ class ReactSettingsExtensionTest {
391480 .trimIndent(),
392481 )
393482
394- assertThat(ReactSettingsExtension .isCacheDirty(invalidConfigFile, buildFolder, lockfiles))
483+ assertThat(
484+ ReactSettingsExtension .isCacheDirty(
485+ invalidConfigFile,
486+ buildFolder,
487+ lockfiles,
488+ tempFolder.root,
489+ ),
490+ )
395491 .isTrue()
396492 }
397493
@@ -416,7 +512,14 @@ class ReactSettingsExtensionTest {
416512 .trimIndent(),
417513 )
418514
419- assertThat(ReactSettingsExtension .isCacheDirty(invalidConfigFile, buildFolder, lockfiles))
515+ assertThat(
516+ ReactSettingsExtension .isCacheDirty(
517+ invalidConfigFile,
518+ buildFolder,
519+ lockfiles,
520+ tempFolder.root,
521+ ),
522+ )
420523 .isTrue()
421524 }
422525
@@ -454,7 +557,14 @@ class ReactSettingsExtensionTest {
454557 .trimIndent(),
455558 )
456559
457- assertThat(ReactSettingsExtension .isCacheDirty(invalidConfigFile, buildFolder, lockfiles))
560+ assertThat(
561+ ReactSettingsExtension .isCacheDirty(
562+ invalidConfigFile,
563+ buildFolder,
564+ lockfiles,
565+ tempFolder.root,
566+ ),
567+ )
458568 .isTrue()
459569 }
460570
0 commit comments