def run(self, params=None, timeout=TIMEOUT): classpath = generate_classpath([ SAFIRA ]) params = ["--intraclass"] start = time.time() try: output = self.java.exec_java( None, self.java.get_env(), timeout, '-classpath', classpath, 'saferefactor.safira.SafiraStart', *tuple(params if params else []), self.classes_dir, self.mutant_dir ) methods, constructors, all_methods_by_class = self._extract_results(output.decode('unicode_escape')) return ImpactAnalysisResult( methods, constructors, all_methods_by_class, time.time() - start ) except subprocess.TimeoutExpired as e: elapsed_time = time.time() - start print("# ERROR: [SAFIRA] execution timed out: {0} seconds".format( elapsed_time), file=sys.stderr) raise e
def exec(self, suite_dir, suite_classes_dir, sut_class, test_class, timeout=TIMEOUT): classpath = generate_classpath([ JMOCKIT, JUNIT, HAMCREST, EVOSUITE_RUNTIME, suite_classes_dir, self.classpath ]) return self._exec(suite_dir, sut_class, test_class, classpath, '.', timeout)
def createJacocoExec(self, projectJar, suite_class, test_class): classpath = generate_classpath([ JUNIT, HAMCREST, JACOCOAGENT, suite_class, projectJar ]) params = ( '-classpath', classpath, 'org.junit.runner.JUnitCore', test_class ) return self.execJava(*params)
def _exec_tool(self): params = [ '-classpath', generate_classpath([self.classpath, MOD_RANDOOP]), 'randoop.main.Main', 'gentests', '--randomseed=10', '--time-limit=300', '--junit-output-dir=' + self.suite_dir ] params += self.parameters return self._exec(*tuple(params))
def _exec_tool(self): params = [ '-classpath', generate_classpath([self.classpath, RANDOOP]), 'randoop.main.Main', 'gentests', '--randomseed=' + str(random.randint(0, 9999)), '--testclass=' + self.sut_class, '--junit-output-dir=' + self.suite_dir ] params += self.parameters return self._exec(*tuple(params))
def _compile(self): self.suite_classes_dir = os.path.join(self.suite_dir, 'classes') self._create_dirs(self.suite_classes_dir) classpath = generate_classpath([ self.classpath, self.suite_dir, JUNIT, HAMCREST, self.suite_classes_dir ] + self._extra_classpath()) params = '-classpath', classpath, '-d', self.suite_classes_dir self.java.exec_java_all( [os.path.join(self.suite_dir, f) for f in self._get_java_files()], self._get_suite_dir(), self.java.get_env(), COMPILE_TIMEOUT * len(self._get_java_files()), *params)
def _compile(self): self.suite_classes_dir = os.path.join(self.suite_dir, 'classes') self._create_dirs(self.suite_classes_dir) classpath = generate_classpath([ self.classpath, self.suite_dir, JUNIT, HAMCREST, self.suite_classes_dir ] + self._extra_classpath()) for java_file in self._get_java_files(): java_file = os.path.join(self.suite_dir, java_file) try: self.java.exec_javac(java_file, self._get_suite_dir(), self.java.get_env(), COMPILE_TIMEOUT, '-classpath', classpath, '-d', self.suite_classes_dir) except subprocess.CalledProcessError as e: print('[ERROR] Compiling {0} tests: {1}'.format( self._get_tool_name(), e.output.decode('unicode_escape')), file=sys.stderr)
def test_generate_classpath_with_invalid_paths(self): path = generate_classpath(['a', None, 'b', '', 'c']) path_split = path.split(os.pathsep) self.assertEqual('a', path_split[0]) self.assertEqual('b', path_split[1]) self.assertEqual('c', path_split[2])