1 /******************************************************************************* 2 * Copyright (c) 2000, 2020 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 *******************************************************************************/ 14 package org.eclipse.jdt.core.tests.model; 15 16 import java.lang.reflect.*; 17 import java.util.*; 18 import java.util.ArrayList; 19 20 import org.eclipse.jdt.core.tests.junit.extension.TestCase; 21 22 import junit.framework.Test; 23 import junit.framework.TestSuite; 24 25 @SuppressWarnings({"rawtypes", "unchecked"}) 26 public class RunJavaSearchTests extends junit.framework.TestCase { 27 28 public final static List TEST_CLASSES = new ArrayList(); 29 static { 30 // All test suites put in this list should use the same tests projects 31 // (eg. JavaSearch and JavaSearch15) 32 TEST_CLASSES.add(JavaSearchTests.class); 33 TEST_CLASSES.add(JavaSearchGenericTypeTests.class); 34 TEST_CLASSES.add(JavaSearchGenericTypeEquivalentTests.class); 35 TEST_CLASSES.add(JavaSearchGenericTypeExactTests.class); 36 TEST_CLASSES.add(JavaSearchGenericFieldTests.class); 37 TEST_CLASSES.add(JavaSearchGenericMethodTests.class); 38 TEST_CLASSES.add(JavaSearchGenericMethodExactTests.class); 39 TEST_CLASSES.add(JavaSearchGenericMethodEquivalentTests.class); 40 TEST_CLASSES.add(JavaSearchGenericConstructorTests.class); 41 TEST_CLASSES.add(JavaSearchGenericConstructorExactTests.class); 42 TEST_CLASSES.add(JavaSearchGenericConstructorEquivalentTests.class); 43 TEST_CLASSES.add(WorkingCopySearchTests.class); 44 TEST_CLASSES.add(JavaSearchJavadocTests.class); 45 TEST_CLASSES.add(JavaSearchFineGrainTests.class); 46 } 47 getTestClasses()48 public static Class[] getTestClasses() { 49 return (Class[]) TEST_CLASSES.toArray(); 50 } 51 RunJavaSearchTests(String name)52 public RunJavaSearchTests(String name) { 53 super(name); 54 } 55 suite()56 public static Test suite() { 57 TestSuite ts = new TestSuite(RunJavaSearchTests.class.getName()); 58 59 // Store test classes with same "JavaSearch"project 60 AbstractJavaSearchTests.JAVA_SEARCH_SUITES = new ArrayList(TEST_CLASSES); 61 62 // Get all classes 63 List allClasses = new ArrayList(TEST_CLASSES); 64 allClasses.add(JavaSearchBugsTests.class); 65 allClasses.add(JavaSearchBugsTests2.class); 66 allClasses.add(JavaSearchBugs8Tests.class); 67 allClasses.add(JavaSearchBugs9Tests.class); 68 allClasses.add(JavaSearchBugs10Tests.class); 69 allClasses.add(JavaSearchBugs13Tests.class); 70 allClasses.add(JavaSearchBugs14Tests.class); 71 allClasses.add(JavaSearchMultipleProjectsTests.class); 72 allClasses.add(SearchTests.class); 73 allClasses.add(JavaSearchScopeTests.class); 74 allClasses.add(MatchingRegionsTest.class); 75 allClasses.add(JavaIndexTests.class); 76 allClasses.add(Bug376673Test.class); 77 78 // Reset forgotten subsets of tests 79 TestCase.TESTS_PREFIX = null; 80 TestCase.TESTS_NAMES = null; 81 TestCase.TESTS_NUMBERS = null; 82 TestCase.TESTS_RANGE = null; 83 TestCase.RUN_ONLY_ID = null; 84 85 // Add all tests suite of tests 86 for (int i = 0, size = allClasses.size(); i < size; i++) { 87 Class testClass = (Class) allClasses.get(i); 88 89 // call the suite() method and add the resulting suite to the suite 90 try { 91 Method suiteMethod = testClass.getDeclaredMethod("suite", new Class[0]); //$NON-NLS-1$ 92 Test suite = (Test) suiteMethod.invoke(null, new Object[0]); 93 ts.addTest(suite); 94 } catch (IllegalAccessException e) { 95 e.printStackTrace(); 96 } catch (InvocationTargetException e) { 97 e.getTargetException().printStackTrace(); 98 } catch (NoSuchMethodException e) { 99 e.printStackTrace(); 100 } 101 } 102 return ts; 103 } 104 } 105