blob: f84edf2a48a9316a3fb350b66fcf8af4d4035c1c [file] [log] [blame]
/*
* 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.netbeans.modules.maven;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.maven.repository.RepositorySystem;
import org.netbeans.api.project.Project;
import org.netbeans.api.project.ProjectManager;
import org.netbeans.junit.NbTestCase;
import org.netbeans.modules.maven.api.NbMavenProject;
import org.netbeans.modules.maven.indexer.api.RepositoryInfo;
import org.netbeans.modules.maven.indexer.api.RepositoryPreferences;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.filesystems.test.TestFileUtils;
public class TransientRepositoriesTest extends NbTestCase {
private static final String CENTRAL_ANON = RepositorySystem.DEFAULT_REMOTE_REPO_ID + ":" + RepositorySystem.DEFAULT_REMOTE_REPO_ID + ":" + RepositorySystem.DEFAULT_REMOTE_REPO_URL + /*MNG-5164*/"/";
/** @see RepositoryPreferences#RepositoryPreferences() */
private static final String CENTRAL_NAMED = RepositorySystem.DEFAULT_REMOTE_REPO_ID + ":Central Repository:" + RepositorySystem.DEFAULT_REMOTE_REPO_URL + "/";
public TransientRepositoriesTest(String name) {
super(name);
}
@Override protected void setUp() throws Exception {
clearWorkDir();
System.setProperty("no.local.settings", "true");
//synchronous reload of maven project asserts sanoty in some tests..
System.setProperty("test.reload.sync", "true");
}
public void testSimpleRegistration() throws Exception {
FileObject d = FileUtil.toFileObject(getWorkDir());
TestFileUtils.writeFile(d, "pom.xml",
"<project xmlns='http://maven.apache.org/POM/4.0.0'>\n"
+ " <modelVersion>4.0.0</modelVersion>\n"
+ " <groupId>grp</groupId>\n"
+ " <artifactId>art</artifactId>\n"
+ " <version>1.0</version>\n"
+ " <repositories>\n"
+ " <repository>\n"
+ " <id>stuff</id>\n"
+ " <name>Stuff</name>\n"
+ " <url>http://nowhere.net/stuff</url>\n"
+ " </repository>\n"
+ " </repositories>\n"
+ "</project>\n");
NbMavenProject p = ProjectManager.getDefault().findProject(d).getLookup().lookup(NbMavenProject.class);
TransientRepositories tr = new TransientRepositories(p);
assertRepos(CENTRAL_ANON);
tr.register();
assertRepos("stuff:Stuff:http://nowhere.net/stuff/", CENTRAL_NAMED);
tr.unregister();
assertRepos(CENTRAL_ANON);
}
public void testListening() throws Exception {
FileObject d = FileUtil.toFileObject(getWorkDir());
TestFileUtils.writeFile(d, "pom.xml",
"<project xmlns='http://maven.apache.org/POM/4.0.0'>\n"
+ " <modelVersion>4.0.0</modelVersion>\n"
+ " <groupId>grp</groupId>\n"
+ " <artifactId>art</artifactId>\n"
+ " <version>1.0</version>\n"
+ "</project>\n");
Project p = ProjectManager.getDefault().findProject(d);
TransientRepositories tr = new TransientRepositories(p.getLookup().lookup(NbMavenProject.class));
assertRepos(CENTRAL_ANON);
tr.register();
assertRepos(CENTRAL_NAMED);
TestFileUtils.writeFile(d, "pom.xml",
"<project xmlns='http://maven.apache.org/POM/4.0.0'>\n"
+ " <modelVersion>4.0.0</modelVersion>\n"
+ " <groupId>grp</groupId>\n"
+ " <artifactId>art</artifactId>\n"
+ " <version>1.0</version>\n"
+ " <repositories>\n"
+ " <repository>\n"
+ " <id>stuff</id>\n"
+ " <name>Stuff</name>\n"
+ " <url>http://nowhere.net/stuff</url>\n"
+ " </repository>\n"
+ " </repositories>\n"
+ "</project>\n");
NbMavenProject.fireMavenProjectReload(p);
assertRepos("stuff:Stuff:http://nowhere.net/stuff/", CENTRAL_NAMED);
tr.unregister();
assertRepos(CENTRAL_ANON);
}
// XXX test mirrors; current code mistakenly suppresses <name> of a mirrored repo when mirrored 1-1
private void assertRepos(String... expected) {
List<String> actual = new ArrayList<String>();
for (RepositoryInfo info : RepositoryPreferences.getInstance().getRepositoryInfos()) {
if (info.isLocal()) {
continue;
}
actual.add(info.getId() + ":" + info.getName() + ":" + info.getRepositoryUrl()); // XXX add mirrored repos too?
}
assertEquals(Arrays.toString(expected), actual.toString());
}
}