Skip to main content
aboutsummaryrefslogblamecommitdiffstats
blob: f97c5ad606dde09d9d1b8f0ccf0536fce9abc107 (plain) (tree)
1
2
3
4
5
6
7
8
9
10


                                                                                
                                                                       
                                                           


                                         

                                                                                 
                             
 

                                            





                                    


                                                  



                                                    


                                                               
                                                                 

                       

 
                                                                 
 






                                                                              











                                                                                                                   



                                                                                           

                                                                                                  


                                                                                                               

                                                                                                
                                                            









                                                                     
/*******************************************************************************
 * Copyright (c) 2016 Red Hat Inc.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *******************************************************************************/

package org.eclipse.m2e.core;

import static org.junit.Assert.assertEquals;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;

import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.utils.io.FileUtils;
import org.apache.maven.shared.utils.io.IOUtil;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.project.MavenProjectInfo;
import org.eclipse.m2e.core.project.ProjectImportConfiguration;
import org.eclipse.m2e.tests.common.AbstractMavenProjectTestCase;
import org.junit.After;
import org.junit.Test;


public class MavenBugsTest extends AbstractMavenProjectTestCase {

  @After
  public void clearWorkspace() throws Exception {
    for(IProject p : ResourcesPlugin.getWorkspace().getRoot().getProjects()) {
      p.delete(true, null);
    }
  }

  @Test
  public void testMNG6530() throws Exception {
    File sourceDirectory = new File(
        FileLocator.toFileURL(getClass().getResource("/resources/projects/testMNG6530")).toURI());
    File tempDirectory = Files.createTempDirectory(getClass().getSimpleName()).toFile();
    try {
      FileUtils.copyDirectoryStructure(sourceDirectory, tempDirectory);
      List<MavenProjectInfo> toImport = new ArrayList<>(2);
      toImport.add(new MavenProjectInfo("", new File(tempDirectory, "pom.xml"), null, null));
      toImport.add(new MavenProjectInfo("", new File(tempDirectory, "child/pom.xml"), null, null));
      MavenPlugin.getProjectConfigurationManager().importProjects(toImport, new ProjectImportConfiguration(), null,
          new NullProgressMonitor());

      IProject parent = ResourcesPlugin.getWorkspace().getRoot().getProject("testMNG6530");
      IProject child = ResourcesPlugin.getWorkspace().getRoot().getProject("child");
      try {
        IMavenProjectFacade childFacade = MavenPlugin.getMavenProjectRegistry().getProject(child);
        MavenProject mavenProject = childFacade.getMavenProject(new NullProgressMonitor());
        assertEquals("bar", mavenProject.getProperties().get("foo"));
        String content = IOUtil.toString(parent.getFile("pom.xml").getContents()).replaceAll("bar", "lol");
        parent.getFile("pom.xml").setContents(new ByteArrayInputStream(content.getBytes()), true, false, null);
        MavenPlugin.getProjectConfigurationManager().updateProjectConfiguration(child, monitor);
        waitForJobsToComplete();
        mavenProject = childFacade.getMavenProject(monitor);
        assertEquals("lol", mavenProject.getProperties().get("foo"));
      } finally {
        parent.delete(true, null);
        child.delete(true, null);
      }
    } finally {
      FileUtils.deleteDirectory(tempDirectory);
    }
  }
}

Back to the top