package org.eclipse.buckminster.git.test; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import org.eclipse.buckminster.core.CorePlugin; import org.eclipse.buckminster.core.materializer.IMaterializer; import org.eclipse.buckminster.core.materializer.MaterializationContext; import org.eclipse.buckminster.core.materializer.MaterializationJob; import org.eclipse.buckminster.core.metadata.model.BillOfMaterials; import org.eclipse.buckminster.core.mspec.builder.MaterializationSpecBuilder; import org.eclipse.buckminster.core.mspec.model.MaterializationSpec; import org.eclipse.buckminster.core.parser.IParser; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IStatus; public class MaterializerTest extends GitTestCase { public void testMaterialize() throws Exception { IParser<BillOfMaterials> bomParser = CorePlugin.getDefault().getParserFactory().getBillOfMaterialsParser(true); File testOutputDirs = getTestOutputFolder("bomFiles"); File bomFile = new File(testOutputDirs, "test.bom"); InputStream bomInput = new FileInputStream(bomFile); BillOfMaterials bom = bomParser.parse(bomFile.getAbsolutePath(), bomInput); bomInput.close(); // Create a default MSPEC // MaterializationSpecBuilder mspecBld = new MaterializationSpecBuilder(); mspecBld.setURL(bomFile.toURI().toString()); mspecBld.setName(bom.getViewName()); mspecBld.setMaterializerID(IMaterializer.WORKSPACE); bom.addMaterializationNodes(mspecBld); MaterializationSpec mspec = mspecBld.createMaterializationSpec(); MaterializationContext matCtx = new MaterializationContext(bom, mspec); File repositories = getTestData("repositories"); matCtx.put("repositories", repositories.toURI().toString()); matCtx.setContinueOnError(false); MaterializationJob.run(matCtx); assertTrue(matCtx.getStatus().getSeverity() == IStatus.OK); // Verify that projects exists and contain the expected files // IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot(); IProject gitTest = wsRoot.getProject("git.test"); assertTrue(gitTest.isOpen()); IFile cspec = gitTest.getFile("buckminster.cspec"); assertTrue(cspec.exists()); IProject gitTest2 = wsRoot.getProject("git.test2"); assertTrue(gitTest2.isOpen()); cspec = gitTest2.getFile("buckminster.cspec"); assertTrue(cspec.exists()); } }