/* * Copyright 2003-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jetbrains.mps.jps.make.testEnvironment; import com.intellij.openapi.application.PathManager; import jetbrains.mps.idea.core.facet.MPSConfigurationBean; import jetbrains.mps.idea.core.make.MPSMakeConstants; import jetbrains.mps.idea.testFramework.MpsBean; import jetbrains.mps.idea.testFramework.TestEnvironment; import jetbrains.mps.jps.make.fileUtil.FileFinder; import jetbrains.mps.jps.make.tests.MpsJpsBuildTestCase; import jetbrains.mps.jps.make.fileUtil.ProjectDirFinder; import jetbrains.mps.jps.model.JpsMPSExtensionService; import jetbrains.mps.jps.model.impl.JpsMPSModuleExtensionImpl; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.model.module.JpsModule; import java.io.File; public abstract class JpsTestEnvironmentBase<B extends MpsBean> implements TestEnvironment<B> { @NonNls public static final String[] MPS_LANGUAGE_LOCATIONS = {"mps-core/languages","mps-core/lib"}; protected final MpsJpsBuildTestCase myTestCase; public JpsTestEnvironmentBase(@NotNull MpsJpsBuildTestCase testCase) { myTestCase = testCase; } protected void preSetUp() { myTestCase.addBuildParameter(MPSMakeConstants.MPS_LANGUAGES.toString(), getLanguageLocations()); } private String getLanguageLocations() { String separator = ";"; final String projectDirPath = new ProjectDirFinder().findProjectDir().getAbsolutePath(); String[] dirsToScan = {PathManager.getPluginsPath(), projectDirPath}; StringBuilder sb = new StringBuilder(); for (String langLocation : MPS_LANGUAGE_LOCATIONS) { File locFile = new FileFinder(dirsToScan).checkedFind(langLocation); sb.append(locFile.getAbsolutePath()); sb.append(separator); } return sb.toString(); } protected JpsModule initJpsModule(String moduleName, String... sourceRoots) { return myTestCase.addModule(moduleName, sourceRoots); } protected void registerMpsModuleExtension(JpsModule module, MPSConfigurationBean configuration) { JpsMPSExtensionService.getInstance().setExtension(module, new JpsMPSModuleExtensionImpl(configuration)); } }