예제 #1
0
파일: unittest.py 프로젝트: DavidCDean/mm
    def execute(self):
        if int(float(util.SFDC_API_VERSION)) <= 28 or config.connection.get_plugin_client_setting("mm_use_legacy_test_ui", False):
            #raise MMException("This command requires mm_api_version to be set to 29.0 or higher.")
            return RunUnitTestsCommand(params=self.params,args=self.args).execute()

        project = config.project
        sfdc_client = config.sfdc_client

        generate_logs = self.params.get("generate_logs", False)
        if generate_logs:
            NewQuickTraceFlagCommand(params={"running_user_only":True}).execute()

        test_classes = self.params.get("classes", None)
        debug('running tests for')
        debug(test_classes)
        if test_classes == None or test_classes == []: #need to run all tests in project
            classes = []
            triggers = []
            test_classes = []
            for dirname, dirnames, filenames in os.walk(os.path.join(project.location,"src","classes")):
                for filename in filenames:
                    if "test" in filename.lower() and "-meta.xml" not in filename:
                        test_classes.append(util.get_file_name_no_extension(filename))
                    elif "-meta.xml" not in filename:
                        classes.append(util.get_file_name_no_extension(filename))
            for dirname, dirnames, filenames in os.walk(os.path.join(project.location,"src","triggers")):
                for filename in filenames:
                    if "-meta.xml" not in filename:
                        triggers.append(util.get_file_name_no_extension(filename))
        else: #user has specified certain tests to run
            classes = []
            triggers = []
            for dirname, dirnames, filenames in os.walk(os.path.join(project.location,"src","classes")):
                for filename in filenames:
                    if "test" not in filename.lower() and "-meta.xml" not in filename:
                        classes.append(util.get_file_name_no_extension(filename))
            for dirname, dirnames, filenames in os.walk(os.path.join(project.location,"src","triggers")):
                for filename in filenames:
                    if "-meta.xml" not in filename:
                        triggers.append(util.get_file_name_no_extension(filename))
        
        params = { "files" : test_classes }
        test_results = sfdc_client.run_async_apex_tests(params, False)
        
        params = { "classes" : classes, "triggers" : triggers, "test_classes" : test_classes }
        coverage_report = sfdc_client.get_apex_test_coverage(params, transform_ids=True)
        debug(">>>>>>>>>>")
        debug(coverage_report)
        result = {
            "test_results"  : test_results,
            "coverage"      : coverage_report
        }

        if self.args.respond_with_html:
            html = util.generate_html_response(self.args.operation, result, self.params)
            return util.generate_success_response(html, "html")
        else:
            return result
예제 #2
0
    def check_for_conflicts(self, files):
        local_store = self.get_local_store()
        retrieve_result = self.project.get_retrieve_result({"files": files})
        properties = retrieve_result.fileProperties
        for f in files:
            ext = util.get_file_extension_no_period(f)
            apex_type = util.get_meta_type_by_suffix(ext)
            apex_entity_api_name = util.get_file_name_no_extension(f)
            body_field = 'Body'
            if apex_type['xmlName'] == 'ApexPage' or apex_type[
                    'xmlName'] == 'ApexComponent':
                body_field = 'Markup'
            api_name_plus_extension = apex_entity_api_name + "." + ext

            server_property = None
            for p in properties:
                if p["fullName"] == apex_entity_api_name:
                    server_property = p
                    try:
                        config.api_name_to_id_dict[p["fullName"]] = p["id"]
                    except:
                        pass
                    break
            if api_name_plus_extension in local_store and server_property != None:
                local_store_entry = local_store[api_name_plus_extension]
                local_last_modified_date = local_store_entry[
                    "lastModifiedDate"]
                server_last_modified_date = server_property['lastModifiedDate']
                last_modified_name = server_property['lastModifiedByName']
                qr = self.project.sfdc_client.execute_query(
                    "Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'"
                    .format(body_field, apex_type['xmlName'],
                            apex_entity_api_name))
                # lets use the soap endpoint here to help the folks being affected by their proxy refusing REST requests bc of Authorization header
                # https://github.com/joeferraro/MavensMate-SublimeText/issues/315#issuecomment-35996112
                # try:
                #     qr = self.project.sfdc_client.query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name))
                # except:
                #     qr = self.project.sfdc_client.execute_query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name))
                body = qr['records'][0][body_field]
                body = body.encode('utf-8')
                if str(local_last_modified_date) != str(
                        server_last_modified_date
                ) or local_store_entry['mmState'] == 'dirty':
                    if local_store_entry['mmState'] != 'dirty':
                        local_store_entry['mmState'] = 'dirty'
                    msg = util.generate_request_for_action_response(
                        "The local version of your file and the server copy are out of sync.\n\n{0} was last modified by {1} on {2}."
                        .format(apex_entity_api_name, last_modified_name,
                                server_last_modified_date),
                        'compile', ["Diff With Server", "Operation Canceled"],
                        tmp_file_path=util.put_tmp_file_on_disk(
                            apex_entity_api_name, body,
                            apex_type.get('suffix', '')))
                    self.mark_dirty(api_name_plus_extension)
                    return True, msg
        return False, None
예제 #3
0
파일: unittest.py 프로젝트: DavidCDean/mm
    def execute(self):
        project = config.project
        classes = []
        triggers = []
        if os.path.isdir(os.path.join(project.location,"src","classes")):
            for dirname, dirnames, filenames in os.walk(os.path.join(project.location,"src","classes")):
                for filename in filenames:
                    if "test" not in filename.lower() and "-meta.xml" not in filename:
                        classes.append(util.get_file_name_no_extension(filename))
        if os.path.isdir(os.path.join(project.location,"src","triggers")):
            for dirname, dirnames, filenames in os.walk(os.path.join(project.location,"src","triggers")):
                for filename in filenames:
                    if "-meta.xml" not in filename:
                        triggers.append(util.get_file_name_no_extension(filename))

        params = {
            "classes"   : classes,
            "triggers"  : triggers
        }
        return config.sfdc_client.get_apex_test_coverage(params, True)
예제 #4
0
파일: unittest.py 프로젝트: z00162835/mm
    def execute(self):
        project = config.project
        classes = []
        triggers = []
        if os.path.isdir(os.path.join(project.location, "src", "classes")):
            for dirname, dirnames, filenames in os.walk(
                    os.path.join(project.location, "src", "classes")):
                for filename in filenames:
                    if "test" not in filename.lower(
                    ) and "-meta.xml" not in filename:
                        classes.append(
                            util.get_file_name_no_extension(filename))
        if os.path.isdir(os.path.join(project.location, "src", "triggers")):
            for dirname, dirnames, filenames in os.walk(
                    os.path.join(project.location, "src", "triggers")):
                for filename in filenames:
                    if "-meta.xml" not in filename:
                        triggers.append(
                            util.get_file_name_no_extension(filename))

        params = {"classes": classes, "triggers": triggers}
        return config.sfdc_client.get_apex_test_coverage(params, True)
예제 #5
0
    def sync_with_server(self, files):
        local_store = self.get_local_store()
        retrieve_result = self.project.get_retrieve_result({"files": files})
        properties = retrieve_result.fileProperties
        for f in files:
            debug('\n\n\n\nFILE BRO ----->')

            ext = util.get_file_extension_no_period(f)
            apex_type = util.get_meta_type_by_suffix(ext)
            apex_entity_api_name = util.get_file_name_no_extension(f)
            body_field = 'Body'
            if apex_type['xmlName'] == 'ApexPage' or apex_type[
                    'xmlName'] == 'ApexComponent':
                body_field = 'Markup'
            api_name_plus_extension = apex_entity_api_name + "." + ext

            server_property = None
            for p in properties:
                if p["fullName"] == apex_entity_api_name:
                    server_property = p
                    try:
                        config.api_name_to_id_dict[p["fullName"]] = p["id"]
                    except:
                        pass
                    break

            debug(api_name_plus_extension)

            if api_name_plus_extension in local_store and server_property != None:
                local_store_entry = local_store[api_name_plus_extension]
                local_last_modified_date = local_store_entry[
                    "lastModifiedDate"]
                server_last_modified_date = server_property['lastModifiedDate']
                last_modified_name = server_property['lastModifiedByName']

                qr = self.project.sfdc_client.execute_query(
                    "Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'"
                    .format(body_field, apex_type['xmlName'],
                            apex_entity_api_name))
                body = qr['records'][0][body_field]
                body = body.encode('utf-8')

                msg = util.generate_sync_response(
                    "Server version was last modified by {0} on {1}.".format(
                        last_modified_name, server_last_modified_date),
                    tmp_file_path=util.put_tmp_file_on_disk(
                        apex_entity_api_name, body,
                        apex_type.get('suffix', '')))
                return msg
        return None
예제 #6
0
 def check_for_conflicts(self, files):
     local_store = self.get_local_store()
     retrieve_result = self.project.get_retrieve_result({"files":files})
     properties = retrieve_result.fileProperties
     for f in files:
         ext = util.get_file_extension_no_period(f)
         apex_type = util.get_meta_type_by_suffix(ext)
         apex_entity_api_name = util.get_file_name_no_extension(f)
         body_field = 'Body'
         if apex_type['xmlName'] == 'ApexPage' or apex_type['xmlName'] == 'ApexComponent':
             body_field = 'Markup'
         api_name_plus_extension = apex_entity_api_name+"."+ext
         
         server_property = None
         for p in properties:
             if p["fullName"] == apex_entity_api_name:
                 server_property = p
                 try:
                     config.api_name_to_id_dict[p["fullName"]] = p["id"]
                 except:
                     pass
                 break
         if api_name_plus_extension in local_store and server_property != None:
             local_store_entry = local_store[api_name_plus_extension]
             local_last_modified_date = local_store_entry["lastModifiedDate"]
             server_last_modified_date = server_property['lastModifiedDate']
             last_modified_name = server_property['lastModifiedByName']
             qr = self.project.sfdc_client.execute_query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name))
             # lets use the soap endpoint here to help the folks being affected by their proxy refusing REST requests bc of Authorization header
             # https://github.com/joeferraro/MavensMate-SublimeText/issues/315#issuecomment-35996112
             # try:
             #     qr = self.project.sfdc_client.query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name))
             # except:
             #     qr = self.project.sfdc_client.execute_query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name))
             body = qr['records'][0][body_field]
             body = body.encode('utf-8')
             if str(local_last_modified_date) != str(server_last_modified_date) or local_store_entry['mmState'] == 'dirty':
                 if local_store_entry['mmState'] != 'dirty':
                     local_store_entry['mmState'] = 'dirty'
                 msg = util.generate_request_for_action_response(
                     "The local version of your file and the server copy are out of sync.\n\n{0} was last modified by {1} on {2}."
                     .format(apex_entity_api_name, last_modified_name, server_last_modified_date),
                     'compile',
                     ["Diff With Server","Operation Canceled"],
                     tmp_file_path=util.put_tmp_file_on_disk(apex_entity_api_name, body, apex_type.get('suffix', ''))
                 )
                 self.mark_dirty(api_name_plus_extension)
                 return True, msg
     return False, None
예제 #7
0
    def sync_with_server(self, files):
        local_store = self.get_local_store()
        retrieve_result = self.project.get_retrieve_result({"files":files})
        properties = retrieve_result.fileProperties
        for f in files:
            debug('\n\n\n\nFILE BRO ----->')

            ext = util.get_file_extension_no_period(f)
            apex_type = util.get_meta_type_by_suffix(ext)
            apex_entity_api_name = util.get_file_name_no_extension(f)
            body_field = 'Body'
            if apex_type['xmlName'] == 'ApexPage' or apex_type['xmlName'] == 'ApexComponent':
                body_field = 'Markup'
            api_name_plus_extension = apex_entity_api_name+"."+ext
            
            server_property = None
            for p in properties:
                if p["fullName"] == apex_entity_api_name:
                    server_property = p
                    try:
                        config.api_name_to_id_dict[p["fullName"]] = p["id"]
                    except:
                        pass
                    break
            
            debug(api_name_plus_extension)

            if api_name_plus_extension in local_store and server_property != None:
                local_store_entry = local_store[api_name_plus_extension]
                local_last_modified_date = local_store_entry["lastModifiedDate"]
                server_last_modified_date = server_property['lastModifiedDate']
                last_modified_name = server_property['lastModifiedByName']
                
                qr = self.project.sfdc_client.execute_query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name))
                body = qr['records'][0][body_field]
                body = body.encode('utf-8')

                msg = util.generate_sync_response(
                    "Server version was last modified by {0} on {1}.".format(last_modified_name, server_last_modified_date),
                    tmp_file_path=util.put_tmp_file_on_disk(apex_entity_api_name, body, apex_type.get('suffix', ''))
                )
                return msg
        return None
예제 #8
0
파일: unittest.py 프로젝트: z00162835/mm
    def execute(self):
        if int(float(util.SFDC_API_VERSION)
               ) <= 28 or config.connection.get_plugin_client_setting(
                   "mm_use_legacy_test_ui", False):
            #raise MMException("This command requires mm_api_version to be set to 29.0 or higher.")
            return RunUnitTestsCommand(params=self.params,
                                       args=self.args).execute()

        project = config.project
        sfdc_client = config.sfdc_client

        generate_logs = self.params.get("generate_logs", False)
        if generate_logs:
            NewQuickTraceFlagCommand(params={
                "running_user_only": True
            }).execute()

        test_classes = self.params.get("classes", None)
        debug('running tests for')
        debug(test_classes)
        if test_classes == None or test_classes == []:  #need to run all tests in project
            classes = []
            triggers = []
            test_classes = []
            for dirname, dirnames, filenames in os.walk(
                    os.path.join(project.location, "src", "classes")):
                for filename in filenames:
                    if "test" in filename.lower(
                    ) and "-meta.xml" not in filename:
                        test_classes.append(
                            util.get_file_name_no_extension(filename))
                    elif "-meta.xml" not in filename:
                        classes.append(
                            util.get_file_name_no_extension(filename))
            for dirname, dirnames, filenames in os.walk(
                    os.path.join(project.location, "src", "triggers")):
                for filename in filenames:
                    if "-meta.xml" not in filename:
                        triggers.append(
                            util.get_file_name_no_extension(filename))
        else:  #user has specified certain tests to run
            classes = []
            triggers = []
            for dirname, dirnames, filenames in os.walk(
                    os.path.join(project.location, "src", "classes")):
                for filename in filenames:
                    if "test" not in filename.lower(
                    ) and "-meta.xml" not in filename:
                        classes.append(
                            util.get_file_name_no_extension(filename))
            for dirname, dirnames, filenames in os.walk(
                    os.path.join(project.location, "src", "triggers")):
                for filename in filenames:
                    if "-meta.xml" not in filename:
                        triggers.append(
                            util.get_file_name_no_extension(filename))

        params = {"files": test_classes}
        test_results = sfdc_client.run_async_apex_tests(params, False)

        params = {
            "classes": classes,
            "triggers": triggers,
            "test_classes": test_classes
        }
        coverage_report = sfdc_client.get_apex_test_coverage(
            params, transform_ids=True)
        debug(">>>>>>>>>>")
        debug(coverage_report)
        result = {"test_results": test_results, "coverage": coverage_report}

        if self.args.respond_with_html:
            html = util.generate_html_response(self.args.operation, result,
                                               self.params)
            return util.generate_success_response(html, "html")
        else:
            return result