def _analyze(self, code_unit): """Analyze a single code unit. Returns a 4-tuple: (statements, excluded, missing, missing formatted). """ from parser import CodeParser filename = code_unit.filename ext = os.path.splitext(filename)[1] source = None if ext == '.py': if not os.path.exists(filename): source = self.file_locator.get_zip_data(filename) if not source: raise CoverageException( "No source for code '%s'." % code_unit.filename ) parser = CodeParser() statements, excluded, line_map = parser.parse_source( text=source, filename=filename, exclude=self.exclude_re ) # Identify missing statements. missing = [] execed = self.data.executed_lines(filename) for line in statements: lines = line_map.get(line) if lines: for l in range(lines[0], lines[1]+1): if l in execed: break else: missing.append(line) else: if line not in execed: missing.append(line) return ( statements, excluded, missing, format_lines(statements, missing) )
def process_data(self,data,username_and_repo_name): '''analyze the data and generate the test code''' self.trace_data = data ''' source_code source_lines_and_number per_line_dependencies AST file_name type_recording lines assigns globals kw arg return_value per_line_locals function_name ''' parsed = ast.parse(self.trace_data['source_code']) p = CodeParser() p.visit(parsed) #print self.trace_data['function_name'] self.trace_data['username_and_repo_name'] = username_and_repo_name self.trace_data['AST'] = ast.dump(parsed) self.trace_data['assigns'] = p.get_assigns() self.trace_data['decorators'] = p.get_decorators() self.trace_data['loops'] = p.get_loops() self.trace_data['calls'] = p.get_calls() #print self.trace_data['assigns'] #print self.trace_data['calls'] """for local in self.trace_data['per_line_locals']: print local print '\n\n'""" self.trace_data['return_calls'] = p.get_returns() self.trace_data['imports'] = p.get_imports() self.trace_data['mocked_out_functions'] = [] self.test_code['function']['def'] = "def test_" + self.trace_data['function_name'] self.test_data = {'mocked_out_calls':[],'fixtures':[],'imports':[]} self.specify_parameters() self.specify_parameter_values() self.specify_return_value() self.specify_patches() self.specify_mock_return_values()
def _analyze(self, code_unit): """Analyze a single code unit. Returns a 4-tuple: (statements, excluded, missing, missing formatted). """ from parser import CodeParser filename = code_unit.filename ext = os.path.splitext(filename)[1] source = None if ext == '.py': if not os.path.exists(filename): source = self.file_locator.get_zip_data(filename) if not source: raise CoverageException("No source for code '%s'." % code_unit.filename) parser = CodeParser() statements, excluded, line_map = parser.parse_source( text=source, filename=filename, exclude=self.exclude_re) # Identify missing statements. missing = [] execed = self.data.executed_lines(filename) for line in statements: lines = line_map.get(line) if lines: for l in range(lines[0], lines[1] + 1): if l in execed: break else: missing.append(line) else: if line not in execed: missing.append(line) return (statements, excluded, missing, format_lines(statements, missing))