/******************************************************************************* * Copyright (c) 2009, 2013 Tasktop Technologies and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Tasktop Technologies - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.commons.sdk.util; import junit.framework.TestCase; import junit.framework.TestSuite; import org.eclipse.core.runtime.Assert; /** * @author Steffen Pingel * @author Thomas Ehrnhoefer */ public abstract class RepositoryTestFixture extends AbstractTestFixture { private final class Activation extends TestCase { private final boolean activate; private Activation(String name, boolean activate) { super(name); this.activate = activate; } @Override protected void runTest() throws Throwable { if (activate) { activate(); } else { ((RepositoryTestFixture) getDefault()).activate(); } } } private TestSuite suite; public RepositoryTestFixture(String connectorKind, String repositoryUrl) { super(connectorKind, repositoryUrl); this.useCertificateAuthentication = repositoryUrl.contains("/secure/"); } public void add(Class<? extends TestCase> clazz) { Assert.isNotNull(suite, "Invoke createSuite() first"); suite.addTestSuite(clazz); } public TestSuite createSuite(TestSuite parentSuite) { suite = new TestSuite("Testing on " + getInfo()); parentSuite.addTest(suite); suite.addTest(new Activation("repository: " + getRepositoryUrl() + " [@" + getSimpleInfo() + "]", true)); return suite; } public void done() { Assert.isNotNull(suite, "Invoke createSuite() first"); suite.addTest(new Activation("done", false)); suite = null; } protected abstract RepositoryTestFixture activate(); }