blob: 4fbe780288d8721416d3c34f5d46f513d6c3268a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.core.tests.compiler.regression;
import org.eclipse.jdt.internal.compiler.env.INameEnvironment;
import org.eclipse.jdt.core.tests.util.*;
import org.eclipse.jdt.internal.compiler.batch.FileSystem;
import java.util.Enumeration;
import junit.extensions.*;
import junit.framework.*;
public class RegressionTestSetup extends TestDecorator {
TestVerifier verifier = new TestVerifier(true);
public RegressionTestSetup(Test test) {
super(test);
}
private void initTest(Object test, TestVerifier testVerifier, INameEnvironment javaClassLib) {
if (test instanceof AbstractRegressionTest) {
AbstractRegressionTest regressionTest = (AbstractRegressionTest)test;
regressionTest.verifier = testVerifier;
regressionTest.javaClassLib = javaClassLib;
return;
}
if (test instanceof TestSuite) {
TestSuite regressionTestClassSuite = (TestSuite) test;
Enumeration regressionTestClassTests = regressionTestClassSuite.tests();
while (regressionTestClassTests.hasMoreElements()) {
initTest(regressionTestClassTests.nextElement(), testVerifier, javaClassLib);
}
return;
}
}
public void run(TestResult result) {
try {
setUp();
super.run(result);
} finally {
tearDown();
}
}
protected void setUp() {
// Create name environment
INameEnvironment javaClassLib = new FileSystem(new String[] {Util.getJavaClassLib()}, new String[0], null);
// Init wrapped suite
initTest(fTest, this.verifier, javaClassLib);
}
protected void tearDown() {
this.verifier.shutDown();
}
}