| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You 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 org.apache.sling.ide.eclipse.m2e.internal; |
| |
| import static org.hamcrest.CoreMatchers.equalTo; |
| |
| import java.io.IOException; |
| import java.nio.file.Files; |
| import java.nio.file.Paths; |
| import java.util.Optional; |
| import java.util.concurrent.Callable; |
| import java.util.concurrent.TimeUnit; |
| |
| import org.apache.sling.ide.eclipse.core.ProjectUtil; |
| import org.apache.sling.ide.eclipse.m2e.impl.helpers.MavenProjectAdapter; |
| import org.apache.sling.ide.test.impl.helpers.Poller; |
| import org.apache.sling.ide.test.impl.helpers.TemporaryProject; |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.Path; |
| import org.junit.Assert; |
| import org.junit.Rule; |
| import org.junit.Test; |
| |
| public class MavenProjectUtilsTest { |
| |
| @Rule |
| public TemporaryProject projectRule = new TemporaryProject(); |
| |
| @Test |
| public void inferDefaultProvisioningModelDirectories() throws Exception { |
| |
| IPath modelsDir = Path.fromPortableString("src/main/provisioning"); |
| |
| // create project |
| final IProject launchpadProject = projectRule.getProject(); |
| |
| MavenProjectAdapter project = new MavenProjectAdapter(launchpadProject); |
| project.createOrUpdateFile(Path.fromPortableString("pom.xml"), getClass().getResourceAsStream("slingstart-simple-pom.xml")); |
| project.ensureDirectoryExists(modelsDir); |
| project.convertToMavenProject(); |
| |
| // conversion should enable the slingstart configurator and set the provisioning model path |
| new Poller(TimeUnit.MINUTES.toMillis(1)).pollUntil(new Callable<IPath>() { |
| @Override |
| public IPath call() throws Exception { |
| return ProjectUtil.getProvisioningModelPath(launchpadProject); |
| } |
| }, equalTo(modelsDir)); |
| |
| } |
| |
| @Test |
| public void testGuessJcrRootFolder() throws IOException { |
| java.nio.file.Path rootPath = Paths.get("src", "org", "apache", "sling", "ide", "eclipse", "m2e", "internal", "project1"); |
| Assert.assertTrue("rootPath not found", Files.exists(rootPath)); |
| // create folder structure, |
| Optional<java.nio.file.Path> actualJcrRoot = MavenProjectUtils.guessJcrRootFolder(rootPath); |
| Assert.assertTrue(actualJcrRoot.isPresent()); |
| Assert.assertEquals(Paths.get("src", "main", "content", "jcr_root"), actualJcrRoot.get()); |
| |
| // test jcr_root beyond level 4 |
| rootPath = Paths.get("src", "org", "apache", "sling", "ide", "eclipse", "m2e", "internal", "project2"); |
| Assert.assertTrue("rootPath not found", Files.exists(rootPath)); |
| actualJcrRoot = MavenProjectUtils.guessJcrRootFolder(rootPath); |
| Assert.assertFalse(actualJcrRoot.isPresent()); |
| } |
| } |