1082815dcSEvan Baconimport { vol } from 'memfs'; 2082815dcSEvan Baconimport path from 'path'; 3082815dcSEvan Bacon 4082815dcSEvan Baconimport { findApplicationTargetWithDependenciesAsync, TargetType } from '../Target'; 5082815dcSEvan Bacon 6082815dcSEvan Baconjest.mock('fs'); 7082815dcSEvan Bacon 8082815dcSEvan Baconconst originalFs = jest.requireActual('fs'); 9082815dcSEvan Bacon 10082815dcSEvan Bacondescribe(findApplicationTargetWithDependenciesAsync, () => { 11082815dcSEvan Bacon const projectRoot = '/app'; 12082815dcSEvan Bacon 13082815dcSEvan Bacon afterEach(() => vol.reset()); 14082815dcSEvan Bacon 15082815dcSEvan Bacon it('reads the application target and its dependencies', async () => { 16082815dcSEvan Bacon vol.fromJSON( 17082815dcSEvan Bacon { 18082815dcSEvan Bacon 'ios/testproject.xcodeproj/project.pbxproj': originalFs.readFileSync( 19082815dcSEvan Bacon path.join(__dirname, 'fixtures/project-multitarget.pbxproj'), 20082815dcSEvan Bacon 'utf-8' 21082815dcSEvan Bacon ), 22082815dcSEvan Bacon 'ios/testproject.xcodeproj/xcshareddata/xcschemes/multitarget.xcscheme': 23082815dcSEvan Bacon originalFs.readFileSync(path.join(__dirname, 'fixtures/multitarget.xcscheme'), 'utf-8'), 24082815dcSEvan Bacon }, 25082815dcSEvan Bacon projectRoot 26082815dcSEvan Bacon ); 27082815dcSEvan Bacon 28082815dcSEvan Bacon const applicationTarget = await findApplicationTargetWithDependenciesAsync( 29082815dcSEvan Bacon projectRoot, 30082815dcSEvan Bacon 'multitarget' 31082815dcSEvan Bacon ); 32082815dcSEvan Bacon expect(applicationTarget.name).toBe('multitarget'); 33082815dcSEvan Bacon expect(applicationTarget.type).toBe(TargetType.APPLICATION); 34*f421f4ecSDominik Sokal expect(applicationTarget.signable).toBe(true); 35*f421f4ecSDominik Sokal expect(applicationTarget.dependencies?.length).toBe(1); 36*f421f4ecSDominik Sokal expect(applicationTarget.dependencies?.[0].name).toBe('shareextension'); 37*f421f4ecSDominik Sokal expect(applicationTarget.dependencies?.[0].type).toBe(TargetType.EXTENSION); 38*f421f4ecSDominik Sokal expect(applicationTarget.dependencies?.[0].signable).toBe(true); 39082815dcSEvan Bacon }); 40082815dcSEvan Bacon 41082815dcSEvan Bacon it('also reads dependency dependencies', async () => { 42082815dcSEvan Bacon vol.fromJSON( 43082815dcSEvan Bacon { 44082815dcSEvan Bacon 'ios/easwatchtest.xcodeproj/project.pbxproj': originalFs.readFileSync( 45082815dcSEvan Bacon path.join(__dirname, 'fixtures/watch.pbxproj'), 46082815dcSEvan Bacon 'utf-8' 47082815dcSEvan Bacon ), 48082815dcSEvan Bacon 'ios/easwatchtest.xcodeproj/xcshareddata/xcschemes/easwatchtest.xcscheme': 49082815dcSEvan Bacon originalFs.readFileSync(path.join(__dirname, 'fixtures/watch.xcscheme'), 'utf-8'), 50082815dcSEvan Bacon }, 51082815dcSEvan Bacon projectRoot 52082815dcSEvan Bacon ); 53082815dcSEvan Bacon 54082815dcSEvan Bacon const applicationTarget = await findApplicationTargetWithDependenciesAsync( 55082815dcSEvan Bacon projectRoot, 56082815dcSEvan Bacon 'easwatchtest' 57082815dcSEvan Bacon ); 58082815dcSEvan Bacon expect(applicationTarget.name).toBe('easwatchtest'); 59082815dcSEvan Bacon expect(applicationTarget.type).toBe(TargetType.APPLICATION); 60*f421f4ecSDominik Sokal expect(applicationTarget.dependencies?.length).toBe(1); 61*f421f4ecSDominik Sokal expect(applicationTarget.dependencies?.[0].name).toBe('eas-watch-test'); 62*f421f4ecSDominik Sokal expect(applicationTarget.dependencies?.[0].type).toBe(TargetType.OTHER); 63*f421f4ecSDominik Sokal expect(applicationTarget.dependencies?.[0].dependencies?.[0].name).toBe( 64082815dcSEvan Bacon 'eas-watch-test WatchKit Extension' 65082815dcSEvan Bacon ); 66*f421f4ecSDominik Sokal expect(applicationTarget.dependencies?.[0].dependencies?.[0].type).toBe(TargetType.OTHER); 67*f421f4ecSDominik Sokal }); 68*f421f4ecSDominik Sokal 69*f421f4ecSDominik Sokal it('marks framework targets as non-signable', async () => { 70*f421f4ecSDominik Sokal vol.fromJSON( 71*f421f4ecSDominik Sokal { 72*f421f4ecSDominik Sokal 'ios/myapp.xcodeproj/project.pbxproj': originalFs.readFileSync( 73*f421f4ecSDominik Sokal path.join(__dirname, 'fixtures/project-with-framework.pbxproj'), 74*f421f4ecSDominik Sokal 'utf-8' 75*f421f4ecSDominik Sokal ), 76*f421f4ecSDominik Sokal 'ios/myapp.xcodeproj/xcshareddata/xcschemes/myapp.xcscheme': originalFs.readFileSync( 77*f421f4ecSDominik Sokal path.join(__dirname, 'fixtures/framework.xcscheme'), 78*f421f4ecSDominik Sokal 'utf-8' 79*f421f4ecSDominik Sokal ), 80*f421f4ecSDominik Sokal }, 81*f421f4ecSDominik Sokal projectRoot 82*f421f4ecSDominik Sokal ); 83*f421f4ecSDominik Sokal 84*f421f4ecSDominik Sokal const applicationTarget = await findApplicationTargetWithDependenciesAsync( 85*f421f4ecSDominik Sokal projectRoot, 86*f421f4ecSDominik Sokal 'myapp' 87*f421f4ecSDominik Sokal ); 88*f421f4ecSDominik Sokal expect(applicationTarget.signable).toBe(true); 89*f421f4ecSDominik Sokal expect(applicationTarget.dependencies?.[0].signable).toBe(false); 90082815dcSEvan Bacon }); 91082815dcSEvan Bacon}); 92