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'])
Beispiel #3
0
    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'])
Beispiel #4
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
    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)
Beispiel #10
0
    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)
Beispiel #13
0
    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'])
Beispiel #14
0
    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)
Beispiel #16
0
    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)
Beispiel #17
0
    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)
Beispiel #18
0
    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, [])
Beispiel #19
0
    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'])
Beispiel #20
0
    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>')
Beispiel #22
0
    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')
Beispiel #23
0
    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)
Beispiel #28
0
    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')
Beispiel #29
0
    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)