Exemplo n.º 1
0
 def test_parse_for_loop(self): 
     #for_loop_pattern = re.compile(r"(for|while) *?\(.*?\).*?{.*?(insert|update|delete|upsert).*?;.*?}", re.IGNORECASE|re.MULTILINE|re.DOTALL)
     for_loop_pattern = re.compile(r"""(?:\s|^)for\s*\([^;{}]*;[^;{}]*;[^{}]*\)\s*\{\}""", re.IGNORECASE|re.MULTILINE|re.DOTALL)
     #for_loop_pattern = re.compile(r"for\s*\([^;]*?;[^;]*?;[^)]*?\)", re.IGNORECASE|re.MULTILINE|re.DOTALL)
     file_name = os.path.join(base_test_directory,"test_workspace",project_name,"src","classes","MyClass.cls")
     file_body = mm_util.get_file_as_string(file_name)
     print file_body
     tree = parser.parse_string(file_body)
     print tree
Exemplo n.º 2
0
    def retrieve(self, **kwargs):
        # request = {
        #   'RetrieveRequest': {
        #     'unpackaged': {
        #       'types': {
        #         'ApexTrigger': '*'
        #       }
        #     },
        #     'apiVersion': {
        #       25.0
        #     }
        #   }
        # }
        # package = {
        #     'unpackaged' : {
        #         'types' : [
        #             {
        #                 "members": "*", 
        #                 "name": "ApexClass"
        #             }
        #         ]
        #     }
        # }
        package_dict = None
        request_payload = None
        
        if 'package' in kwargs and type(kwargs['package']) is not dict: 
            #if package is location of package.xml, we'll parse the xml and create a request
            package_dict = xmltodict.parse(mm_util.get_file_as_string(kwargs['package']))
            api_version = package_dict['Package']['version']
            package_dict['unpackaged'] = package_dict.pop('Package')
            package_dict['unpackaged'].pop('version')
            package_dict['unpackaged'].pop("@xmlns", None)
            package_dict['unpackaged'].pop("#text", None)
            package_dict['apiVersion'] = api_version
            types = package_dict['unpackaged']['types']
            if type(types) is not list:
                types = [types]
            if type(package_dict['unpackaged']['types']) is not list:
                package_dict['unpackaged']['types'] = [package_dict['unpackaged']['types']]
            requested_types = []
            if 'type' in kwargs and kwargs['type'] != None and kwargs['type'] != '': #if the request is for a certain type, only request that type
                for i, val in enumerate(types):
                    if val['name'] == kwargs['type']:
                        requested_types.append(val)
                package_dict['unpackaged']['types'] = requested_types
                types = requested_types
            for i, val in enumerate(types):
                try:
                    package_dict['unpackaged']['types'][i].pop("#text", None)
                except:
                    package_dict['unpackaged']['types'].pop("#text", None)

            #if custom object is asterisked, we need to explictly retrieve standard objects
            for t in package_dict['unpackaged']['types']:
                if 'name' in t and t['name'] == 'CustomObject':
                    if 'members' in t and type(t['members']) is not list:
                        if t['members'] == "*":
                            mlist = self.listMetadata('CustomObject', False)
                            objs = []
                            for obj in mlist:
                                if ('__c') not in mlist:
                                    objs.append(obj['fullName'])
                            objs.append("*")
                            objs.sort()
                            t['members'] = objs

            request_payload = package_dict

        elif 'package' in kwargs and type(kwargs['package']) is dict:
            package = kwargs['package']
            if 'unpackaged' not in package:
                #{ "ApexClass"    : ["MultiselectControllerTest","MultiselectController"] }
                type_array = []
                for i, metadata_type in enumerate(package):
                    member_value = package[metadata_type]
                    type_array.append({ "name" : metadata_type, "members" : member_value })

                package = {
                    'unpackaged' : {
                        'types' : type_array
                    },
                    'apiVersion' : mm_util.SFDC_API_VERSION
                }
            
            #if custom object is asterisked, we need to explictly retrieve standard objects
            for t in package['unpackaged']['types']:
                if 'name' in t and t['name'] == 'CustomObject':
                    if 'members' in t and type(t['members']) is not list:
                        if t['members'] == "*":
                            mlist = self.listMetadata('CustomObject', False)
                            objs = []
                            for obj in mlist:
                                if ('__c') not in mlist:
                                    objs.append(obj['fullName'])
                            objs.append("*")
                            objs.sort()
                            t['members'] = objs
            
            request_payload = package
        
        result = self._handleResultTyping(self._sforce.service.retrieve(request_payload))
        if result.done == False:
            self._waitForRequest(result.id)
            return self._getRetrieveBody(result.id)
        else:
            return result
Exemplo n.º 3
0
    def retrieve(self, **kwargs):
        # request = {
        #   'RetrieveRequest': {
        #     'unpackaged': {
        #       'types': {
        #         'ApexTrigger': '*'
        #       }
        #     },
        #     'apiVersion': {
        #       25.0
        #     }
        #   }
        # }
        # package = {
        #     'unpackaged' : {
        #         'types' : [
        #             {
        #                 "members": "*",
        #                 "name": "ApexClass"
        #             }
        #         ]
        #     }
        # }
        package_dict = None
        request_payload = None

        if 'package' in kwargs and type(kwargs['package']) is not dict:
            #if package is location of package.xml, we'll parse the xml and create a request
            package_dict = xmltodict.parse(
                mm_util.get_file_as_string(kwargs['package']))
            #config.logger.debug('>>>> ', package_dict)
            api_version = package_dict['Package']['version']
            package_dict['unpackaged'] = package_dict.pop('Package')
            package_dict['unpackaged'].pop('version')
            package_dict['unpackaged'].pop("@xmlns", None)
            package_dict['unpackaged'].pop("#text", None)
            package_dict['apiVersion'] = api_version
            types = package_dict['unpackaged']['types']
            requested_types = []
            if 'type' in kwargs and kwargs['type'] != None and kwargs[
                    'type'] != '':  #if the request is for a certain type, only request that type
                for i, val in enumerate(types):
                    if val['name'] == kwargs['type']:
                        requested_types.append(val)
                package_dict['unpackaged']['types'] = requested_types
                types = requested_types
            for i, val in enumerate(types):
                try:
                    package_dict['unpackaged']['types'][i].pop("#text", None)
                except:
                    package_dict['unpackaged']['types'].pop("#text", None)

            #print json.dumps(package_dict, sort_keys=True, indent=4)
            request_payload = package_dict
            #pprint.pprint(request_payload)
        elif 'package' in kwargs and type(kwargs['package']) is dict:
            package = kwargs['package']
            #print package
            if 'unpackaged' not in package:
                #{ "ApexClass"    : ["MultiselectControllerTest","MultiselectController"] }
                type_array = []
                for i, metadata_type in enumerate(package):
                    #print i, metadata_type
                    #print package[metadata_type]
                    member_value = package[metadata_type]
                    type_array.append({
                        "name": metadata_type,
                        "members": member_value
                    })

                package = {
                    'unpackaged': {
                        'types': type_array
                    },
                    'apiVersion': mm_util.SFDC_API_VERSION
                }
            request_payload = package

        result = self._handleResultTyping(
            self._sforce.service.retrieve(request_payload))
        if result.done == False:
            self._waitForRequest(result.id)
            return self._getRetrieveBody(result.id)
        else:
            return result
Exemplo n.º 4
0
    def retrieve(self, **kwargs):
        # request = {
        #   'RetrieveRequest': {
        #     'unpackaged': {
        #       'types': {
        #         'ApexTrigger': '*'
        #       }
        #     },
        #     'apiVersion': {
        #       25.0
        #     }
        #   }
        # }
        # package = {
        #     'unpackaged' : {
        #         'types' : [
        #             {
        #                 "members": "*", 
        #                 "name": "ApexClass"
        #             }
        #         ]
        #     }
        # }
        package_dict = None
        request_payload = None
        
        if 'package' in kwargs and type(kwargs['package']) is not dict: 
            #if package is location of package.xml, we'll parse the xml and create a request
            package_dict = xmltodict.parse(mm_util.get_file_as_string(kwargs['package']))
            #config.logger.debug('>>>> ', package_dict)
            api_version = package_dict['Package']['version']
            package_dict['unpackaged'] = package_dict.pop('Package')
            package_dict['unpackaged'].pop('version')
            package_dict['unpackaged'].pop("@xmlns", None)
            package_dict['unpackaged'].pop("#text", None)
            package_dict['apiVersion'] = api_version
            types = package_dict['unpackaged']['types']
            requested_types = []
            if 'type' in kwargs and kwargs['type'] != None and kwargs['type'] != '': #if the request is for a certain type, only request that type
                for i, val in enumerate(types):
                    if val['name'] == kwargs['type']:
                        requested_types.append(val)
                package_dict['unpackaged']['types'] = requested_types
                types = requested_types
            for i, val in enumerate(types):
                try:
                    package_dict['unpackaged']['types'][i].pop("#text", None)
                except:
                    package_dict['unpackaged']['types'].pop("#text", None)

            #print json.dumps(package_dict, sort_keys=True, indent=4)
            request_payload = package_dict
            #pprint.pprint(request_payload)
        elif 'package' in kwargs and type(kwargs['package']) is dict:
            package = kwargs['package']
            #print package
            if 'unpackaged' not in package:
                #{ "ApexClass"    : ["MultiselectControllerTest","MultiselectController"] }
                type_array = []
                for i, metadata_type in enumerate(package):
                    #print i, metadata_type
                    #print package[metadata_type]
                    member_value = package[metadata_type]
                    type_array.append({ "name" : metadata_type, "members" : member_value })

                package = {
                    'unpackaged' : {
                        'types' : type_array
                    },
                    'apiVersion' : mm_util.SFDC_API_VERSION
                }
            request_payload = package
        
        result = self._handleResultTyping(self._sforce.service.retrieve(request_payload))
        if result.done == False:
            self._waitForRequest(result.id)
            return self._getRetrieveBody(result.id)
        else:
            return result