/*******************************************************************************
 * Copyright (c) 2016 Kichwa Coders 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:
 *     Kichwa Coders - initial API and implementation
 *******************************************************************************/

package org.eclipse.ease.lang.python;

import org.junit.Test;

public class PythonLanguageTest {
	// TODO write the real test - test plug-ins need at least one test otherwise they fail
	// (the other choice is failIfNoTests in pom.xml)
	@Test
	public void testTODO() {

	}
}
