def testAddCodeSignAllTargetAllConfigurations(self): project = XcodeProject(self.obj) project.add_code_sign('iPhone Distribution', 'MYTEAM', '0x0x0x0x0', 'Provisioning name') self.assertEqual(project.objects['0'].attributes.TargetAttributes[u'1'].ProvisioningStyle, PBXProvioningTypes.MANUAL) self.assertEqual(project.objects['0'].attributes.TargetAttributes[u'2'].ProvisioningStyle, PBXProvioningTypes.MANUAL) self.assertEqual(project.objects['5'].buildSettings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'], 'iPhone Distribution') self.assertEqual(project.objects['6'].buildSettings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'], 'iPhone Distribution') self.assertEqual(project.objects['7'].buildSettings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'], 'iPhone Distribution') self.assertEqual(project.objects['8'].buildSettings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'], 'iPhone Distribution') self.assertEqual(project.objects['5'].buildSettings['DEVELOPMENT_TEAM'], 'MYTEAM') self.assertEqual(project.objects['6'].buildSettings['DEVELOPMENT_TEAM'], 'MYTEAM') self.assertEqual(project.objects['7'].buildSettings['DEVELOPMENT_TEAM'], 'MYTEAM') self.assertEqual(project.objects['8'].buildSettings['DEVELOPMENT_TEAM'], 'MYTEAM') self.assertEqual(project.objects['5'].buildSettings['PROVISIONING_PROFILE'], '0x0x0x0x0') self.assertEqual(project.objects['6'].buildSettings['PROVISIONING_PROFILE'], '0x0x0x0x0') self.assertEqual(project.objects['7'].buildSettings['PROVISIONING_PROFILE'], '0x0x0x0x0') self.assertEqual(project.objects['8'].buildSettings['PROVISIONING_PROFILE'], '0x0x0x0x0') self.assertEqual(project.objects['5'].buildSettings['PROVISIONING_PROFILE_SPECIFIER'], 'Provisioning name') self.assertEqual(project.objects['6'].buildSettings['PROVISIONING_PROFILE_SPECIFIER'], 'Provisioning name') self.assertEqual(project.objects['7'].buildSettings['PROVISIONING_PROFILE_SPECIFIER'], 'Provisioning name') self.assertEqual(project.objects['8'].buildSettings['PROVISIONING_PROFILE_SPECIFIER'], 'Provisioning name')
def testRemoveFrameworkSearchPaths(self): project = XcodeProject(self.obj) project.add_framework_search_paths('path/to/search') self.assertEqual( project.objects['5'].buildSettings.FRAMEWORK_SEARCH_PATHS, 'path/to/search/**') self.assertEqual( project.objects['6'].buildSettings.FRAMEWORK_SEARCH_PATHS, 'path/to/search/**') self.assertEqual( project.objects['7'].buildSettings.FRAMEWORK_SEARCH_PATHS, 'path/to/search/**') self.assertEqual( project.objects['8'].buildSettings.FRAMEWORK_SEARCH_PATHS, 'path/to/search/**') project.remove_framework_search_paths('path/to/search/**') self.assertIsNone( project.objects['5'].buildSettings['FRAMEWORK_SEARCH_PATHS']) self.assertIsNone( project.objects['6'].buildSettings['FRAMEWORK_SEARCH_PATHS']) self.assertIsNone( project.objects['7'].buildSettings['FRAMEWORK_SEARCH_PATHS']) self.assertIsNone( project.objects['8'].buildSettings['FRAMEWORK_SEARCH_PATHS'])
def testAddFileFrameworkEmbedded(self): project = XcodeProject(self.obj) options = FileOptions(create_build_files=True, weak=True, embed_framework=True, code_sign_on_copy=True) build_file = project.add_file("file.framework", file_options=options) # 2 source files are created 1 x target self.assertEqual( project.objects.get_objects_in_section( u'PBXFrameworksBuildPhase').__len__(), 2) self.assertEqual( project.objects.get_objects_in_section( u'PBXCopyFilesBuildPhase').__len__(), 2) self.assertEqual(build_file.__len__(), 4) self.assertListEqual( build_file[0].settings.ATTRIBUTES, [u'Weak', u'CodeSignOnCopy', u'RemoveHeadersOnCopy']) self.assertListEqual( build_file[1].settings.ATTRIBUTES, [u'Weak', u'CodeSignOnCopy', u'RemoveHeadersOnCopy']) self.assertListEqual( build_file[2].settings.ATTRIBUTES, [u'Weak', u'CodeSignOnCopy', u'RemoveHeadersOnCopy']) self.assertListEqual( build_file[3].settings.ATTRIBUTES, [u'Weak', u'CodeSignOnCopy', u'RemoveHeadersOnCopy'])
def testAddProjectDoesntExists(self): project = XcodeProject(self.obj) reference_proxies = project.add_project( os.path.abspath("samples/unexistingFile.m")) # nothing to do if the file is absolute but doesn't exist self.assertIsNone(reference_proxies)
def testAddFileSource(self): project = XcodeProject(self.obj) build_file = project.add_file("file.m") # 2 source files are created 1 x target self.assertEqual(project.objects.get_objects_in_section(u'PBXSourcesBuildPhase').__len__(), 2) self.assertEqual(build_file.__len__(), 2)
def testAddProjectWithoutBuildPhases(self): project = XcodeProject(self.obj) frameworks = project.objects.get_objects_in_section( 'PBXFrameworksBuildPhase').__len__() resources = project.objects.get_objects_in_section( 'PBXResourcesBuildPhase').__len__() build_files = project.objects.get_objects_in_section( 'PBXBuildFile').__len__() reference_proxies = project.add_project( 'samplescli/dependency.xcodeproj', file_options=FileOptions(create_build_files=False)) self.assertEqual(reference_proxies.__len__(), 2) self.assertEqual( project.objects.get_objects_in_section( u'PBXContainerItemProxy').__len__(), 2) self.assertEqual( project.objects.get_objects_in_section( u'PBXReferenceProxy').__len__(), 2) self.assertEqual( project.objects.get_objects_in_section(u'PBXProject') [0].projectReferences.__len__(), 1) # check that the buildFiles where added self.assertEqual( project.objects.get_objects_in_section('PBXBuildFile').__len__(), build_files) self.assertEqual( project.objects.get_objects_in_section( 'PBXFrameworksBuildPhase').__len__(), frameworks) self.assertEqual( project.objects.get_objects_in_section( 'PBXResourcesBuildPhase').__len__(), resources)
def testAddFileWithAbsolutePathDoesNotExist(self): project = XcodeProject(self.obj) build_file = project.add_file( os.path.abspath("samples/unexistingFile.m")) # nothing to do if the file is absolute but doesn't exist self.assertIsNone(build_file)
def testAddRunScriptWithInputFiles(self): project = XcodeProject(self.obj) script = u'ls -la ${SCRIPT_INPUT_FILE_0} ${SCRIPT_INPUT_FILE_1} > ${SCRIPT_OUTPUT_FILE_0}' project.add_run_script(script, input_files=['a.txt', '/tmp/b.txt'], output_files=['../output.log']) self.assertEqual( project.objects[project.objects['1'].buildPhases[1]].shellScript, script) self.assertEqual( project.objects[project.objects['1'].buildPhases[1]].inputPaths, ['a.txt', '/tmp/b.txt']) self.assertEqual( project.objects[project.objects['1'].buildPhases[1]].outputPaths, ['../output.log']) self.assertEqual( project.objects[project.objects['2'].buildPhases[1]].shellScript, script) self.assertEqual( project.objects[project.objects['2'].buildPhases[1]].inputPaths, ['a.txt', '/tmp/b.txt']) self.assertEqual( project.objects[project.objects['2'].buildPhases[1]].outputPaths, ['../output.log'])
def testAddRunScriptWithInstallBuild(self): project = XcodeProject(self.obj) project.add_run_script(u'ls -la', run_install_build=1) self.assertEqual( project.objects[project.objects['1'].buildPhases[1]]. runOnlyForDeploymentPostprocessing, 1)
def testRemoveLibrarySearchPaths(self): project = XcodeProject(self.obj) project.add_library_search_paths('path/to/search') self.assertEqual( project.objects['5'].buildSettings.LIBRARY_SEARCH_PATHS, 'path/to/search/**') self.assertEqual( project.objects['6'].buildSettings.LIBRARY_SEARCH_PATHS, 'path/to/search/**') self.assertEqual( project.objects['7'].buildSettings.LIBRARY_SEARCH_PATHS, 'path/to/search/**') self.assertEqual( project.objects['8'].buildSettings.LIBRARY_SEARCH_PATHS, 'path/to/search/**') project.remove_library_search_paths('path/to/search/**') self.assertIsNone( project.objects['5'].buildSettings['LIBRARY_SEARCH_PATHS']) self.assertIsNone( project.objects['6'].buildSettings['LIBRARY_SEARCH_PATHS']) self.assertIsNone( project.objects['7'].buildSettings['LIBRARY_SEARCH_PATHS']) self.assertIsNone( project.objects['8'].buildSettings['LIBRARY_SEARCH_PATHS'])
def testAddFileUnknownAllowed(self): project = XcodeProject(self.obj) build_file = project.add_file("file.unknowntype", file_options=FileOptions(ignore_unknown_type=True)) # unknown files are added as resources self.assertEqual(project.objects.get_objects_in_section(u'PBXResourcesBuildPhase').__len__(), 2) self.assertEqual(build_file.__len__(), 2)
def testAddFolderAsReference(self): project = XcodeProject(self.obj,path="tests/project.pbxproj") build_file = project.add_folder('samples', create_groups=False) self.assertListEqual(project.get_groups_by_name('samples'), []) self.assertEqual(project.objects.get_objects_in_section(u'PBXResourcesBuildPhase').__len__(), 2) self.assertEqual(build_file.__len__(), 2)
def testRemoveHeaderSearchPaths(self): project = XcodeProject(self.obj) project.add_header_search_paths('path/to/search') self.assertEqual( project.objects['5'].buildSettings.HEADER_SEARCH_PATHS, 'path/to/search/**') self.assertEqual( project.objects['6'].buildSettings.HEADER_SEARCH_PATHS, 'path/to/search/**') self.assertEqual( project.objects['7'].buildSettings.HEADER_SEARCH_PATHS, 'path/to/search/**') self.assertEqual( project.objects['8'].buildSettings.HEADER_SEARCH_PATHS, 'path/to/search/**') project.remove_header_search_paths('path/to/search/**') self.assertIsNone( project.objects['5'].buildSettings['HEADER_SEARCH_PATHS']) self.assertIsNone( project.objects['6'].buildSettings['HEADER_SEARCH_PATHS']) self.assertIsNone( project.objects['7'].buildSettings['HEADER_SEARCH_PATHS']) self.assertIsNone( project.objects['8'].buildSettings['HEADER_SEARCH_PATHS'])
def testEmbedFrameworkInRightCopySection(self): project = XcodeProject(self.obj) self.assertEqual(project.objects.get_objects_in_section(u'PBXCopyFilesBuildPhase').__len__(), 1) project.add_file('X.framework', file_options=FileOptions(embed_framework=True)) self.assertEqual(project.objects.get_objects_in_section(u'PBXCopyFilesBuildPhase').__len__(), 3)
def testGetFilesByNameWithParent(self): project = XcodeProject(self.obj) files = project.get_files_by_name('file', 'group2') self.assertEqual(files.__len__(), 2) files = project.get_files_by_name('file', 'group3') self.assertEqual(files.__len__(), 1)
def testAddReferenceFile(self): project = XcodeProject(self.obj, path="tests/project.pbxproj") build_file = project.add_file(os.path.abspath("samples/dirA")) self.assertEqual( project.objects.get_objects_in_section( u'PBXResourcesBuildPhase').__len__(), 2) self.assertEqual(build_file.__len__(), 2)
def testGetGroupsByNameFromParent(self): project = XcodeProject(self.obj) groups = project.get_groups_by_name('app', parent=project.objects['1']) self.assertIn(project.objects['2'], groups) self.assertIn(project.objects['3'], groups) self.assertNotIn(project.objects['5'], groups) self.assertNotIn(project.objects['6'], groups)
def testAddProjectNotForced(self): project = XcodeProject(self.obj) _ = project.add_project('samplescli/dependency.xcodeproj', file_options=FileOptions(create_build_files=False)) reference_proxies = project.add_project('samplescli/dependency.xcodeproj', force=False, file_options=FileOptions(create_build_files=False)) self.assertListEqual(reference_proxies, [])
def testRemoveByIdRecursivelyWithFiles(self): project = XcodeProject(self.obj) result = project.remove_group_by_id('a') self.assertTrue(result) self.assertIsNone(project.objects['a']) self.assertIsNone(project.objects['b']) self.assertIsNone(project.objects['c'])
def testGetGroupsByPathFromParent(self): project = XcodeProject(self.obj) groups = project.get_groups_by_path('..', parent=project.objects['1p']) self.assertIn(project.objects['2p'], groups) self.assertIn(project.objects['3p'], groups) self.assertNotIn(project.objects['5p'], groups) self.assertNotIn(project.objects['6p'], groups)
def testAddFileWithAbsolutePathOnUnknownTree(self): project = XcodeProject(self.obj) build_file = project.add_file(os.path.abspath("samples/test.framework"), tree='DEVELOPER_DIR') self.assertEqual(project.objects[build_file[0].fileRef].sourceTree, '<absolute>') self.assertEqual(project.objects[build_file[1].fileRef].sourceTree, '<absolute>') self.assertEqual(project.objects[build_file[2].fileRef].sourceTree, '<absolute>') self.assertEqual(project.objects[build_file[3].fileRef].sourceTree, '<absolute>')
def testAddOtherLDFlags(self): project = XcodeProject(self.obj) project.add_other_ldflags('-ObjC') self.assertEqual(project.objects['5'].buildSettings.OTHER_LDFLAGS, '-ObjC') self.assertEqual(project.objects['6'].buildSettings.OTHER_LDFLAGS, '-ObjC') self.assertEqual(project.objects['7'].buildSettings.OTHER_LDFLAGS, '-ObjC') self.assertEqual(project.objects['8'].buildSettings.OTHER_LDFLAGS, '-ObjC')
def testAddFlags(self): project = XcodeProject(self.obj) project.add_flags('flag', '-flag') self.assertEqual(project.objects['5'].buildSettings.flag, '-flag') self.assertEqual(project.objects['6'].buildSettings.flag, '-flag') self.assertEqual(project.objects['7'].buildSettings.flag, '-flag') self.assertEqual(project.objects['8'].buildSettings.flag, '-flag')
def testAddFileNoCreateBuildFiles(self): project = XcodeProject(self.obj) items = project.objects.__len__() build_file = project.add_file(".", file_options=FileOptions(create_build_files=False)) # no create build file flag self.assertEqual(project.objects.__len__(), items) self.assertEqual(build_file, [])
def testAddFileFrameworkWithAbsolutePath(self): project = XcodeProject(self.obj) build_file = project.add_file(os.path.abspath("samples/test.framework")) expected_flags = ["$(SRCROOT)/tests/samples", "$(inherited)"] self.assertListEqual(project.objects['5'].buildSettings.FRAMEWORK_SEARCH_PATHS, expected_flags) self.assertListEqual(project.objects['6'].buildSettings.FRAMEWORK_SEARCH_PATHS, expected_flags) self.assertListEqual(project.objects['7'].buildSettings.FRAMEWORK_SEARCH_PATHS, expected_flags) self.assertListEqual(project.objects['8'].buildSettings.FRAMEWORK_SEARCH_PATHS, expected_flags)
def testAddFileLibraryWithAbsolutePath(self): project = XcodeProject(self.obj) build_file = project.add_file(os.path.abspath("samples/testLibrary.a")) expected_flags = "$(SRCROOT)/tests/samples" self.assertEqual(project.objects['5'].buildSettings.LIBRARY_SEARCH_PATHS, expected_flags) self.assertEqual(project.objects['6'].buildSettings.LIBRARY_SEARCH_PATHS, expected_flags) self.assertEqual(project.objects['7'].buildSettings.LIBRARY_SEARCH_PATHS, expected_flags) self.assertEqual(project.objects['8'].buildSettings.LIBRARY_SEARCH_PATHS, expected_flags)
def testRemoveFilesByPath(self): project = XcodeProject(self.obj) original = project.__str__() build_files = project.add_file("file.m") result = project.remove_files_by_path('file.m') self.assertTrue(result) self.assertEqual(project.__str__(), original)
def testAddRunScriptBeforeCompile(self): project = XcodeProject(self.obj) project.add_run_script(u'ls -la', insert_before_compile=True) self.assertEqual( project.objects[project.objects['1'].buildPhases[0]].shellScript, u'ls -la') self.assertEqual( project.objects[project.objects['2'].buildPhases[0]].shellScript, u'ls -la')
def testAddRunScriptAfterCompile(self): project = XcodeProject(self.obj) project.add_run_script(u'ls -la') self.assertEqual( project.objects[project.objects['1'].buildPhases[1]].shellScript, u'ls -la') self.assertEqual( project.objects[project.objects['2'].buildPhases[1]].shellScript, u'ls -la')
def testRemoveFileById(self): project = XcodeProject(self.obj) original = project.__str__() build_files = project.add_file("file.m") file = project.get_files_by_name('file.m')[0] result = project.remove_file_by_id(file.get_id()) self.assertTrue(result) self.assertEqual(project.__str__(), original)