http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/eclipse/aether/internal/ant/types/Proxy.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/eclipse/aether/internal/ant/types/Proxy.java b/src/main/java/org/eclipse/aether/internal/ant/types/Proxy.java deleted file mode 100644 index 9e567a8..0000000 --- a/src/main/java/org/eclipse/aether/internal/ant/types/Proxy.java +++ /dev/null @@ -1,163 +0,0 @@ -package org.eclipse.aether.internal.ant.types; - -/* - * 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. - */ - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.types.DataType; -import org.apache.tools.ant.types.Reference; -import org.eclipse.aether.internal.ant.AntRepoSys; - -/** - */ -public class Proxy - extends DataType -{ - - private String host; - - private int port; - - private String type; - - private String nonProxyHosts; - - private Authentication authentication; - - @Override - public void setProject( Project project ) - { - super.setProject( project ); - - AntRepoSys.getInstance( project ).addProxy( this ); - } - - protected Proxy getRef() - { - return (Proxy) getCheckedRef(); - } - - public void setRefid( Reference ref ) - { - if ( host != null || port != 0 || type != null || nonProxyHosts != null ) - { - throw tooManyAttributes(); - } - if ( authentication != null ) - { - throw noChildrenAllowed(); - } - super.setRefid( ref ); - } - - public String getHost() - { - if ( isReference() ) - { - return getRef().getHost(); - } - return host; - } - - public void setHost( String host ) - { - checkAttributesAllowed(); - this.host = host; - } - - public int getPort() - { - if ( isReference() ) - { - return getRef().getPort(); - } - return port; - } - - public void setPort( int port ) - { - checkAttributesAllowed(); - if ( port <= 0 || port > 0xFFFF ) - { - throw new BuildException( "The port number must be within the range 1 - 65535" ); - } - this.port = port; - } - - public String getType() - { - if ( isReference() ) - { - return getRef().getType(); - } - return type; - } - - public void setType( String type ) - { - checkAttributesAllowed(); - this.type = type; - } - - public String getNonProxyHosts() - { - if ( isReference() ) - { - return getRef().getNonProxyHosts(); - } - return nonProxyHosts; - } - - public void setNonProxyHosts( String nonProxyHosts ) - { - checkAttributesAllowed(); - this.nonProxyHosts = nonProxyHosts; - } - - public Authentication getAuthentication() - { - if ( isReference() ) - { - return getRef().getAuthentication(); - } - return authentication; - } - - public void addAuthentication( Authentication authentication ) - { - checkChildrenAllowed(); - if ( this.authentication != null ) - { - throw new BuildException( "You must not specify multiple <authentication> elements" ); - } - this.authentication = authentication; - } - - public void setAuthRef( Reference ref ) - { - if ( authentication == null ) - { - authentication = new Authentication(); - authentication.setProject( getProject() ); - } - authentication.setRefid( ref ); - } - -}
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/eclipse/aether/internal/ant/types/RemoteRepositories.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/eclipse/aether/internal/ant/types/RemoteRepositories.java b/src/main/java/org/eclipse/aether/internal/ant/types/RemoteRepositories.java deleted file mode 100644 index 909a9e5..0000000 --- a/src/main/java/org/eclipse/aether/internal/ant/types/RemoteRepositories.java +++ /dev/null @@ -1,97 +0,0 @@ -package org.eclipse.aether.internal.ant.types; - -/* - * 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. - */ - -import java.util.ArrayList; -import java.util.List; - -import org.apache.tools.ant.Task; -import org.apache.tools.ant.types.DataType; -import org.apache.tools.ant.types.Reference; - -/** - */ -public class RemoteRepositories - extends DataType - implements RemoteRepositoryContainer -{ - - private List<RemoteRepositoryContainer> containers = new ArrayList<RemoteRepositoryContainer>(); - - protected RemoteRepositories getRef() - { - return (RemoteRepositories) getCheckedRef(); - } - - public void validate( Task task ) - { - if ( isReference() ) - { - getRef().validate( task ); - } - else - { - for ( RemoteRepositoryContainer container : containers ) - { - container.validate( task ); - } - } - } - - public void setRefid( Reference ref ) - { - if ( !containers.isEmpty() ) - { - throw noChildrenAllowed(); - } - super.setRefid( ref ); - } - - public void addRemoterepo( RemoteRepository repository ) - { - checkChildrenAllowed(); - containers.add( repository ); - } - - public void addRemoterepos( RemoteRepositories repositories ) - { - checkChildrenAllowed(); - if ( repositories == this ) - { - throw circularReference(); - } - containers.add( repositories ); - } - - public List<RemoteRepository> getRepositories() - { - if ( isReference() ) - { - return getRef().getRepositories(); - } - List<RemoteRepository> repos = new ArrayList<RemoteRepository>(); - for ( RemoteRepositoryContainer container : containers ) - { - repos.addAll( container.getRepositories() ); - } - return repos; - } - -} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/eclipse/aether/internal/ant/types/RemoteRepository.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/eclipse/aether/internal/ant/types/RemoteRepository.java b/src/main/java/org/eclipse/aether/internal/ant/types/RemoteRepository.java deleted file mode 100644 index 46f1b37..0000000 --- a/src/main/java/org/eclipse/aether/internal/ant/types/RemoteRepository.java +++ /dev/null @@ -1,351 +0,0 @@ -package org.eclipse.aether.internal.ant.types; - -/* - * 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. - */ - -import java.util.Collections; -import java.util.List; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.types.DataType; -import org.apache.tools.ant.types.Reference; -import org.eclipse.aether.internal.ant.AntRepoSys; -import org.eclipse.aether.repository.RepositoryPolicy; - -/** - */ -public class RemoteRepository - extends DataType - implements RemoteRepositoryContainer -{ - - private String id; - - private String url; - - private String type; - - private Policy releasePolicy; - - private Policy snapshotPolicy; - - private boolean releases = true; - - private boolean snapshots = false; - - private String checksums; - - private String updates; - - private Authentication authentication; - - @Override - public void setProject( Project project ) - { - super.setProject( project ); - - // NOTE: Just trigger side-effect of default initialization before this type potentially overrides central - AntRepoSys.getInstance( project ); - } - - protected RemoteRepository getRef() - { - return (RemoteRepository) getCheckedRef(); - } - - public void validate( Task task ) - { - if ( isReference() ) - { - getRef().validate( task ); - } - else - { - if ( url == null || url.length() <= 0 ) - { - throw new BuildException( "You must specify the 'url' for a remote repository" ); - } - if ( id == null || id.length() <= 0 ) - { - throw new BuildException( "You must specify the 'id' for a remote repository" ); - } - } - } - - public void setRefid( Reference ref ) - { - if ( id != null || url != null || type != null || checksums != null || updates != null ) - { - throw tooManyAttributes(); - } - if ( releasePolicy != null || snapshotPolicy != null || authentication != null ) - { - throw noChildrenAllowed(); - } - super.setRefid( ref ); - } - - public String getId() - { - if ( isReference() ) - { - return getRef().getId(); - } - return id; - } - - public void setId( String id ) - { - this.id = id; - } - - public String getUrl() - { - if ( isReference() ) - { - return getRef().getUrl(); - } - return url; - } - - public void setUrl( String url ) - { - checkAttributesAllowed(); - this.url = url; - } - - public String getType() - { - if ( isReference() ) - { - return getRef().getType(); - } - return ( type != null ) ? type : "default"; - } - - public void setType( String type ) - { - checkAttributesAllowed(); - this.type = type; - } - - public Policy getReleasePolicy() - { - if ( isReference() ) - { - return getRef().getReleasePolicy(); - } - return releasePolicy; - } - - public void addReleases( Policy policy ) - { - checkChildrenAllowed(); - if ( this.releasePolicy != null ) - { - throw new BuildException( "You must not specify multiple <releases> elements" ); - } - this.releasePolicy = policy; - } - - public Policy getSnapshotPolicy() - { - if ( isReference() ) - { - return getRef().getSnapshotPolicy(); - } - return snapshotPolicy; - } - - public void addSnapshots( Policy policy ) - { - checkChildrenAllowed(); - if ( this.snapshotPolicy != null ) - { - throw new BuildException( "You must not specify multiple <snapshots> elements" ); - } - this.snapshotPolicy = policy; - } - - public boolean isReleases() - { - if ( isReference() ) - { - return getRef().isReleases(); - } - return releases; - } - - public void setReleases( boolean releases ) - { - checkAttributesAllowed(); - this.releases = releases; - } - - public boolean isSnapshots() - { - if ( isReference() ) - { - return getRef().isSnapshots(); - } - return snapshots; - } - - public void setSnapshots( boolean snapshots ) - { - checkAttributesAllowed(); - this.snapshots = snapshots; - } - - public String getUpdates() - { - if ( isReference() ) - { - return getRef().getUpdates(); - } - return ( updates != null ) ? updates : RepositoryPolicy.UPDATE_POLICY_DAILY; - } - - public void setUpdates( String updates ) - { - checkAttributesAllowed(); - checkUpdates( updates ); - this.updates = updates; - } - - protected static void checkUpdates( String updates ) - { - if ( !RepositoryPolicy.UPDATE_POLICY_ALWAYS.equals( updates ) - && !RepositoryPolicy.UPDATE_POLICY_DAILY.equals( updates ) - && !RepositoryPolicy.UPDATE_POLICY_NEVER.equals( updates ) - && !updates.startsWith( RepositoryPolicy.UPDATE_POLICY_INTERVAL ) ) - { - throw new BuildException( "'" + updates + "' is not a permitted update policy" ); - } - } - - public String getChecksums() - { - if ( isReference() ) - { - return getRef().getChecksums(); - } - return ( checksums != null ) ? checksums : RepositoryPolicy.CHECKSUM_POLICY_WARN; - } - - public void setChecksums( String checksums ) - { - checkAttributesAllowed(); - checkChecksums( checksums ); - this.checksums = checksums; - } - - protected static void checkChecksums( String checksums ) - { - if ( !RepositoryPolicy.CHECKSUM_POLICY_FAIL.equals( checksums ) - && !RepositoryPolicy.CHECKSUM_POLICY_WARN.equals( checksums ) - && !RepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( checksums ) ) - { - throw new BuildException( "'" + checksums + "' is not a permitted checksum policy" ); - } - } - - public Authentication getAuthentication() - { - if ( isReference() ) - { - return getRef().getAuthentication(); - } - return authentication; - } - - public void addAuthentication( Authentication authentication ) - { - checkChildrenAllowed(); - if ( this.authentication != null ) - { - throw new BuildException( "You must not specify multiple <authentication> elements" ); - } - this.authentication = authentication; - } - - public void setAuthRef( Reference ref ) - { - checkAttributesAllowed(); - if ( authentication == null ) - { - authentication = new Authentication(); - authentication.setProject( getProject() ); - } - authentication.setRefid( ref ); - } - - public List<RemoteRepository> getRepositories() - { - return Collections.singletonList( this ); - } - - /** - */ - public static class Policy - { - - private boolean enabled = true; - - private String checksumPolicy; - - private String updatePolicy; - - public boolean isEnabled() - { - return enabled; - } - - public void setEnabled( boolean enabled ) - { - this.enabled = enabled; - } - - public String getChecksums() - { - return checksumPolicy; - } - - public void setChecksums( String checksumPolicy ) - { - checkChecksums( checksumPolicy ); - this.checksumPolicy = checksumPolicy; - } - - public String getUpdates() - { - return updatePolicy; - } - - public void setUpdates( String updatePolicy ) - { - checkUpdates( updatePolicy ); - this.updatePolicy = updatePolicy; - } - - } - -} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/eclipse/aether/internal/ant/types/RemoteRepositoryContainer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/eclipse/aether/internal/ant/types/RemoteRepositoryContainer.java b/src/main/java/org/eclipse/aether/internal/ant/types/RemoteRepositoryContainer.java deleted file mode 100644 index 24e6d59..0000000 --- a/src/main/java/org/eclipse/aether/internal/ant/types/RemoteRepositoryContainer.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.eclipse.aether.internal.ant.types; - -/* - * 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. - */ - -import java.util.List; - -import org.apache.tools.ant.Task; - -/** - */ -public interface RemoteRepositoryContainer -{ - - void validate( Task task ); - - List<RemoteRepository> getRepositories(); - -} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/java/org/eclipse/aether/internal/ant/types/Settings.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/eclipse/aether/internal/ant/types/Settings.java b/src/main/java/org/eclipse/aether/internal/ant/types/Settings.java deleted file mode 100644 index 7e872f5..0000000 --- a/src/main/java/org/eclipse/aether/internal/ant/types/Settings.java +++ /dev/null @@ -1,86 +0,0 @@ -package org.eclipse.aether.internal.ant.types; - -/* - * 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. - */ - -import java.io.File; - -import org.apache.tools.ant.types.DataType; -import org.apache.tools.ant.types.Reference; -import org.eclipse.aether.internal.ant.AntRepoSys; - -/** - */ -public class Settings - extends DataType -{ - - private File file; - - private File globalFile; - - protected Settings getRef() - { - return (Settings) getCheckedRef(); - } - - public void setRefid( Reference ref ) - { - if ( file != null || globalFile != null ) - { - throw tooManyAttributes(); - } - super.setRefid( ref ); - } - - public File getFile() - { - if ( isReference() ) - { - return getRef().getFile(); - } - return file; - } - - public void setFile( File file ) - { - checkAttributesAllowed(); - this.file = file; - - AntRepoSys.getInstance( getProject() ).setUserSettings( file ); - } - - public File getGlobalFile() - { - if ( isReference() ) - { - return getRef().getFile(); - } - return globalFile; - } - - public void setGlobalFile( File globalFile ) - { - checkAttributesAllowed(); - this.globalFile = globalFile; - - AntRepoSys.getInstance( getProject() ).setGlobalSettings( globalFile ); - } - -} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/resources/org/apache/maven/aether/ant/antlib.xml ---------------------------------------------------------------------- diff --git a/src/main/resources/org/apache/maven/aether/ant/antlib.xml b/src/main/resources/org/apache/maven/aether/ant/antlib.xml new file mode 100644 index 0000000..d08a0c8 --- /dev/null +++ b/src/main/resources/org/apache/maven/aether/ant/antlib.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + 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. +--> + +<antlib> + + <typedef name="authentication" classname="org.apache.maven.aether.internal.ant.types.Authentication"/> + <typedef name="proxy" classname="org.apache.maven.aether.internal.ant.types.Proxy"/> + <typedef name="mirror" classname="org.apache.maven.aether.internal.ant.types.Mirror"/> + <typedef name="localrepo" classname="org.apache.maven.aether.internal.ant.types.LocalRepository"/> + <typedef name="remoterepo" classname="org.apache.maven.aether.internal.ant.types.RemoteRepository"/> + <typedef name="remoterepos" classname="org.apache.maven.aether.internal.ant.types.RemoteRepositories"/> + <typedef name="dependency" classname="org.apache.maven.aether.internal.ant.types.Dependency"/> + <typedef name="dependencies" classname="org.apache.maven.aether.internal.ant.types.Dependencies"/> + <typedef name="artifact" classname="org.apache.maven.aether.internal.ant.types.Artifact"/> + <typedef name="artifacts" classname="org.apache.maven.aether.internal.ant.types.Artifacts"/> + <typedef name="settings" classname="org.apache.maven.aether.internal.ant.types.Settings"/> + + <taskdef name="resolve" classname="org.apache.maven.aether.internal.ant.tasks.Resolve"/> + <taskdef name="install" classname="org.apache.maven.aether.internal.ant.tasks.Install"/> + <taskdef name="deploy" classname="org.apache.maven.aether.internal.ant.tasks.Deploy"/> + <taskdef name="pom" classname="org.apache.maven.aether.internal.ant.types.Pom"/> + +</antlib> http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/main/resources/org/eclipse/aether/ant/antlib.xml ---------------------------------------------------------------------- diff --git a/src/main/resources/org/eclipse/aether/ant/antlib.xml b/src/main/resources/org/eclipse/aether/ant/antlib.xml deleted file mode 100644 index 176986c..0000000 --- a/src/main/resources/org/eclipse/aether/ant/antlib.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- - 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. ---> - -<antlib> - - <typedef name="authentication" classname="org.eclipse.aether.internal.ant.types.Authentication"/> - <typedef name="proxy" classname="org.eclipse.aether.internal.ant.types.Proxy"/> - <typedef name="mirror" classname="org.eclipse.aether.internal.ant.types.Mirror"/> - <typedef name="localrepo" classname="org.eclipse.aether.internal.ant.types.LocalRepository"/> - <typedef name="remoterepo" classname="org.eclipse.aether.internal.ant.types.RemoteRepository"/> - <typedef name="remoterepos" classname="org.eclipse.aether.internal.ant.types.RemoteRepositories"/> - <typedef name="dependency" classname="org.eclipse.aether.internal.ant.types.Dependency"/> - <typedef name="dependencies" classname="org.eclipse.aether.internal.ant.types.Dependencies"/> - <typedef name="artifact" classname="org.eclipse.aether.internal.ant.types.Artifact"/> - <typedef name="artifacts" classname="org.eclipse.aether.internal.ant.types.Artifacts"/> - <typedef name="settings" classname="org.eclipse.aether.internal.ant.types.Settings"/> - - <taskdef name="resolve" classname="org.eclipse.aether.internal.ant.tasks.Resolve"/> - <taskdef name="install" classname="org.eclipse.aether.internal.ant.tasks.Install"/> - <taskdef name="deploy" classname="org.eclipse.aether.internal.ant.tasks.Deploy"/> - <taskdef name="pom" classname="org.eclipse.aether.internal.ant.types.Pom"/> - -</antlib> http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/apache/maven/aether/internal/ant/AntBuildsTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/maven/aether/internal/ant/AntBuildsTest.java b/src/test/java/org/apache/maven/aether/internal/ant/AntBuildsTest.java new file mode 100644 index 0000000..14a6b04 --- /dev/null +++ b/src/test/java/org/apache/maven/aether/internal/ant/AntBuildsTest.java @@ -0,0 +1,123 @@ +package org.apache.maven.aether.internal.ant; + +/* + * 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. + */ + +import java.io.File; +import java.io.PrintStream; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.BuildFileTest; +import org.apache.tools.ant.DefaultLogger; +import org.apache.tools.ant.Project; +import org.eclipse.aether.internal.test.util.TestFileUtils; + +public abstract class AntBuildsTest + extends BuildFileTest +{ + + private static final File BASE_DIR; + + protected static final File BUILD_DIR; + + static + { + BASE_DIR = new File( "" ).getAbsoluteFile(); + BUILD_DIR = new File( BASE_DIR, "target/ant" ); + } + + protected File projectDir; + + protected File localRepoDir; + + protected File distRepoDir; + + protected String getProjectDirName() + { + String name = getClass().getSimpleName(); + if ( name.endsWith( "Test" ) ) + { + name = name.substring( 0, name.length() - 4 ); + } + return name; + } + + protected void setUpProperties() + throws Exception + { + // hook for subclasses to set further system properties for the project to pick up + } + + @Override + protected void setUp() + throws Exception + { + super.setUp(); + + TestFileUtils.deleteFile( BUILD_DIR ); + + projectDir = new File( new File( BASE_DIR, "src/test/resources/ant" ), getProjectDirName() ); + localRepoDir = new File( BUILD_DIR, "local-repo" ); + distRepoDir = new File( BUILD_DIR, "dist-repo" ); + + System.setProperty( "project.dir", projectDir.getAbsolutePath() ); + System.setProperty( "build.dir", BUILD_DIR.getAbsolutePath() ); + System.setProperty( "maven.repo.local", localRepoDir.getAbsolutePath() ); + System.setProperty( "project.distrepo.url", distRepoDir.toURI().toString() ); + setUpProperties(); + + configureProject( new File( projectDir, "ant.xml" ).getAbsolutePath(), Project.MSG_VERBOSE ); + } + + @Override + protected void tearDown() + throws Exception + { + try + { + ProjectWorkspaceReader.dropInstance(); + TestFileUtils.deleteFile( BUILD_DIR ); + } + finally + { + super.tearDown(); + } + } + + @Override + public void configureProject( String filename, int logLevel ) + throws BuildException + { + super.configureProject( filename, logLevel ); + DefaultLogger logger = new DefaultLogger() + { + @Override + protected void printMessage( String message, PrintStream stream, int priority ) + { + message = System.currentTimeMillis() + " " + message; + super.printMessage( message, stream, priority ); + } + }; + logger.setMessageOutputLevel( logLevel ); + logger.setOutputPrintStream( System.out ); + logger.setErrorPrintStream( System.err ); + getProject().addBuildListener( logger ); + } + +} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/apache/maven/aether/internal/ant/DeployTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/maven/aether/internal/ant/DeployTest.java b/src/test/java/org/apache/maven/aether/internal/ant/DeployTest.java new file mode 100644 index 0000000..7b52562 --- /dev/null +++ b/src/test/java/org/apache/maven/aether/internal/ant/DeployTest.java @@ -0,0 +1,91 @@ +package org.apache.maven.aether.internal.ant; + +/* + * 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. + */ + +import static org.hamcrest.MatcherAssert.*; +import static org.hamcrest.Matchers.*; + +import java.io.File; +import java.util.Arrays; + +/* + * still missing: + * - deploy snapshots/releases into correct repos + */ +public class DeployTest + extends AntBuildsTest +{ + + public void testDeployGlobalPom() + { + long min = System.currentTimeMillis(); + executeTarget( "testDeployGlobalPom" ); + long max = System.currentTimeMillis(); + + assertLogContaining( "Uploading" ); + + assertUpdatedFile( min, max, distRepoDir, "test/dummy/0.1-SNAPSHOT/maven-metadata.xml" ); + } + + public void testDeployOverrideGlobalPom() + { + long min = System.currentTimeMillis(); + executeTarget( "testDeployOverrideGlobalPom" ); + long max = System.currentTimeMillis(); + + assertLogContaining( "Uploading" ); + + assertUpdatedFile( min, max, distRepoDir, "test/other/0.1-SNAPSHOT/maven-metadata.xml" ); + } + + public void testDeployOverrideGlobalPomByRef() + { + long min = System.currentTimeMillis(); + executeTarget( "testDeployOverrideGlobalPomByRef" ); + long max = System.currentTimeMillis(); + + assertLogContaining( "Uploading" ); + + assertUpdatedFile( min, max, distRepoDir, "test/dummy/0.1-SNAPSHOT/maven-metadata.xml" ); + assertUpdatedFile( min, max, distRepoDir, "test/other/0.1-SNAPSHOT/maven-metadata.xml" ); + } + + public void testDeployAttachedArtifact() + { + executeTarget( "testDeployAttachedArtifact" ); + + assertLogContaining( "Uploading" ); + + File dir = new File(distRepoDir, "test/dummy/0.1-SNAPSHOT/" ); + String[] files = dir.list(); + assertThat( "attached artifact not found: " + Arrays.toString( files ), files, + hasItemInArray( endsWith( "-ant.xml" ) ) ); + } + + private void assertUpdatedFile( long min, long max, File repoPath, String path ) + { + File file = new File( repoPath, path ); + min = (min / 1000) * 1000; + max = ((max + 999) / 1000) * 1000; + assertThat( "File does not exist in default repo: " + file.getAbsolutePath(), file.exists() ); + assertThat( "Files were not updated for 1s before/after timestamp", file.lastModified(), + allOf( greaterThanOrEqualTo( min ), lessThanOrEqualTo( max ) ) ); + } +} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/apache/maven/aether/internal/ant/InstallTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/maven/aether/internal/ant/InstallTest.java b/src/test/java/org/apache/maven/aether/internal/ant/InstallTest.java new file mode 100644 index 0000000..a445853 --- /dev/null +++ b/src/test/java/org/apache/maven/aether/internal/ant/InstallTest.java @@ -0,0 +1,98 @@ +package org.apache.maven.aether.internal.ant; + +/* + * 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. + */ + +import static org.hamcrest.MatcherAssert.*; +import static org.hamcrest.Matchers.*; + +import java.io.File; +import java.io.IOException; + +public class InstallTest + extends AntBuildsTest +{ + + public void testInstallGlobalPom() + { + executeTarget( "testInstallGlobalPom" ); + long tstamp = System.currentTimeMillis(); + + assertLogContaining( "Installing" ); + + assertUpdatedFile( tstamp, localRepoDir, "test/dummy/0.1-SNAPSHOT/dummy-0.1-SNAPSHOT.pom" ); + } + + public void testInstallOverrideGlobalPom() + { + executeTarget( "testInstallOverrideGlobalPom" ); + long tstamp = System.currentTimeMillis(); + + assertLogContaining( "Installing" ); + + assertUpdatedFile( tstamp, localRepoDir, "test/other/0.1-SNAPSHOT/other-0.1-SNAPSHOT.pom" ); + } + + public void testInstallOverrideGlobalPomByRef() + { + long tstamp = System.currentTimeMillis(); + executeTarget( "testInstallOverrideGlobalPomByRef" ); + + assertLogContaining( "Installing" ); + + assertUpdatedFile( tstamp, localRepoDir, "test/dummy/0.1-SNAPSHOT/dummy-0.1-SNAPSHOT.pom" ); + assertUpdatedFile( tstamp, localRepoDir, "test/other/0.1-SNAPSHOT/other-0.1-SNAPSHOT.pom" ); + } + + public void testDefaultRepo() + { + executeTarget( "testDefaultRepo" ); + long tstamp = System.currentTimeMillis(); + + assertLogContaining( "Installing" ); + + assertUpdatedFile( tstamp, localRepoDir, "test/dummy/0.1-SNAPSHOT/dummy-0.1-SNAPSHOT.pom" ); + assertUpdatedFile( tstamp, localRepoDir, "test/dummy/0.1-SNAPSHOT/dummy-0.1-SNAPSHOT-ant.xml" ); + } + + public void testCustomRepo() + throws IOException + { + File repoPath = new File( BUILD_DIR, "local-repo-custom" ); + + executeTarget( "testCustomRepo" ); + long tstamp = System.currentTimeMillis(); + + System.out.println( getLog() ); + assertLogContaining( "Installing" ); + + assertUpdatedFile( tstamp, repoPath, "test/dummy/0.1-SNAPSHOT/dummy-0.1-SNAPSHOT.pom" ); + assertUpdatedFile( tstamp, repoPath, "test/dummy/0.1-SNAPSHOT/dummy-0.1-SNAPSHOT-ant.xml" ); + } + + private void assertUpdatedFile( long tstamp, File repoPath, String path ) + { + File file = new File( repoPath, path ); + assertThat( "File does not exist in default repo: " + file.getAbsolutePath(), file.exists() ); + assertThat( "Files were not updated for 1s before/after timestamp", + file.lastModified(), + allOf( greaterThanOrEqualTo( ( ( tstamp - 500 ) / 1000 ) * 1000 ), + lessThanOrEqualTo( tstamp + 2000 ) ) ); + } +} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/apache/maven/aether/internal/ant/ProjectWorkspaceReaderTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/maven/aether/internal/ant/ProjectWorkspaceReaderTest.java b/src/test/java/org/apache/maven/aether/internal/ant/ProjectWorkspaceReaderTest.java new file mode 100644 index 0000000..f3972ba --- /dev/null +++ b/src/test/java/org/apache/maven/aether/internal/ant/ProjectWorkspaceReaderTest.java @@ -0,0 +1,123 @@ +package org.apache.maven.aether.internal.ant; + +/* + * 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. + */ + +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.*; + +import java.io.File; + +import org.apache.maven.aether.internal.ant.types.Pom; +import org.apache.tools.ant.Project; +import org.junit.Before; +import org.junit.Test; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.DefaultArtifact; + +public class ProjectWorkspaceReaderTest +{ + + private ProjectWorkspaceReader reader; + + private Project project; + + @Before + public void setUp() + throws Exception + { + this.reader = new ProjectWorkspaceReader(); + + this.project = new Project(); + project.setProperty( "user.home", System.getProperty( "user.home" ) ); + } + + private Artifact artifact( String coords ) + { + return new DefaultArtifact( coords ); + } + + private File getFile( String name ) + { + return new File( "src/test/resources/ProjectWorkspaceReader", name ); + } + + @Test + public void testFindPom() + { + Pom pom = new Pom(); + pom.setProject( project ); + pom.setFile( getFile( "dummy-pom.xml" ) ); + + reader.addPom( pom ); + + assertEquals( pom.getFile(), reader.findArtifact( artifact( "test:dummy:pom:0.1-SNAPSHOT" ) ) ); + assertNull( reader.findArtifact( artifact( "unavailable:test:pom:0.1-SNAPSHOT" ) ) ); + } + + @Test + public void testFindArtifact() + { + Pom pom = new Pom(); + pom.setProject( project ); + pom.setFile( getFile( "dummy-pom.xml" ) ); + + reader.addPom( pom ); + + org.apache.maven.aether.internal.ant.types.Artifact artifact = new org.apache.maven.aether.internal.ant.types.Artifact(); + artifact.setProject( project ); + artifact.addPom( pom ); + artifact.setFile( getFile( "dummy-file.txt" ) ); + + reader.addArtifact( artifact ); + + assertEquals( artifact.getFile(), reader.findArtifact( artifact( "test:dummy:txt:0.1-SNAPSHOT" ) ) ); + assertNull( reader.findArtifact( artifact( "unavailable:test:jar:0.1-SNAPSHOT" ) ) ); + } + + @Test + public void testFindVersions() + { + Pom pom1 = new Pom(); + pom1.setProject( project ); + pom1.setCoords( "test:dummy:1-SNAPSHOT" ); + + org.apache.maven.aether.internal.ant.types.Artifact artifact1 = new org.apache.maven.aether.internal.ant.types.Artifact(); + artifact1.setProject( project ); + artifact1.addPom( pom1 ); + artifact1.setFile( getFile( "dummy-file.txt" ) ); + + reader.addArtifact( artifact1 ); + + Pom pom2 = new Pom(); + pom2.setProject( project ); + pom2.setCoords( "test:dummy:2-SNAPSHOT" ); + + org.apache.maven.aether.internal.ant.types.Artifact artifact2 = new org.apache.maven.aether.internal.ant.types.Artifact(); + artifact2.setProject( project ); + artifact2.addPom( pom2 ); + artifact2.setFile( getFile( "dummy-file.txt" ) ); + + reader.addArtifact( artifact2 ); + + assertThat( reader.findVersions( artifact( "test:dummy:txt:[0,)" ) ), + containsInAnyOrder( "1-SNAPSHOT", "2-SNAPSHOT" ) ); + } + +} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/apache/maven/aether/internal/ant/ReactorTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/maven/aether/internal/ant/ReactorTest.java b/src/test/java/org/apache/maven/aether/internal/ant/ReactorTest.java new file mode 100644 index 0000000..86a0ad5 --- /dev/null +++ b/src/test/java/org/apache/maven/aether/internal/ant/ReactorTest.java @@ -0,0 +1,99 @@ +package org.apache.maven.aether.internal.ant; + +/* + * 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. + */ + +import java.io.File; +import java.io.IOException; + +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.DefaultArtifact; + +public class ReactorTest + extends AntBuildsTest +{ + + private Artifact artifact( String coords ) + { + return new DefaultArtifact( coords ); + } + + public void testPom() + throws IOException + { + executeTarget( "testPom" ); + ProjectWorkspaceReader reader = ProjectWorkspaceReader.getInstance(); + File found = reader.findArtifact( artifact( "test:test:pom:0.1-SNAPSHOT" ) ); + assertNotNull( found ); + assertEquals( new File( projectDir, "pom1.xml" ), found.getAbsoluteFile() ); + } + + public void testArtifact() + throws IOException + { + executeTarget( "testArtifact" ); + ProjectWorkspaceReader reader = ProjectWorkspaceReader.getInstance(); + File found = reader.findArtifact( artifact( "test:test:pom:0.1-SNAPSHOT" ) ); + assertNotNull( found ); + assertEquals( new File( projectDir, "pom1.xml" ), found.getAbsoluteFile() ); + + found = reader.findArtifact( artifact( "test:test:xml:0.1-SNAPSHOT" ) ); + assertNotNull( found ); + assertEquals( new File( projectDir, "pom1.xml" ), found.getAbsoluteFile() ); + } + + public void testArtifactInMemoryPom() + throws IOException + { + executeTarget( "testArtifactInMemoryPom" ); + ProjectWorkspaceReader reader = ProjectWorkspaceReader.getInstance(); + File found = reader.findArtifact( artifact( "test:test:pom:0.1-SNAPSHOT" ) ); + assertNull( found ); + + found = reader.findArtifact( artifact( "test:test:xml:0.1-SNAPSHOT" ) ); + assertNotNull( found ); + assertEquals( new File( projectDir, "pom1.xml" ), found.getAbsoluteFile() ); + } + + public void testResolveArtifact() + throws IOException + { + executeTarget( "testResolveArtifact" ); + String prop = project.getProperty( "resolve.test:test:jar" ); + assertEquals( new File( projectDir, "pom1.xml" ).getAbsolutePath(), prop ); + } + + public void testResolveArtifactInMemoryPom() + throws IOException + { + executeTarget( "testResolveArtifactInMemoryPom" ); + String prop = project.getProperty( "resolve.test:test:jar" ); + assertEquals( new File( projectDir, "pom1.xml" ).getAbsolutePath(), prop ); + assertLogContaining( "The POM for test:test:jar:0.1-SNAPSHOT is missing, no dependency information available" ); + } + + public void testResolveVersionRange() + throws IOException + { + executeTarget( "testResolveVersionRange" ); + String prop = project.getProperty( "resolve.test:test:jar" ); + assertEquals( new File( projectDir, "pom1.xml" ).getAbsolutePath(), prop ); + } + +} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/apache/maven/aether/internal/ant/ResolveTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/maven/aether/internal/ant/ResolveTest.java b/src/test/java/org/apache/maven/aether/internal/ant/ResolveTest.java new file mode 100644 index 0000000..5b41e27 --- /dev/null +++ b/src/test/java/org/apache/maven/aether/internal/ant/ResolveTest.java @@ -0,0 +1,150 @@ +package org.apache.maven.aether.internal.ant; + +/* + * 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. + */ + +import static org.hamcrest.MatcherAssert.*; +import static org.hamcrest.Matchers.*; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.Iterator; +import java.util.Map; + +import org.apache.tools.ant.types.Path; +import org.apache.tools.ant.types.ResourceCollection; +import org.apache.tools.ant.types.resources.FileResource; + +public class ResolveTest + extends AntBuildsTest +{ + + public void testResolveGlobalPom() + { + executeTarget( "testResolveGlobalPom" ); + + String prop = getProject().getProperty( "test.resolve.path.org.eclipse.aether:aether-api:jar" ); + assertThat( "aether-api was not resolved as a property", prop, notNullValue() ); + assertThat( "aether-api was not resolved to default local repository", prop, + allOf( containsString( "aether-api" ), endsWith( ".jar" ) ) ); + } + + public void testResolveOverrideGlobalPom() + { + executeTarget( "testResolveOverrideGlobalPom" ); + + String prop = getProject().getProperty( "test.resolve.path.org.eclipse.aether:aether-api:jar" ); + assertThat( "aether-api was not resolved as a property", prop, notNullValue() ); + assertThat( "aether-api was not resolved to default local repository", prop, + allOf( containsString( "aether-api" ), endsWith( ".jar" ) ) ); + } + + public void testResolveGlobalPomIntoOtherLocalRepo() + { + executeTarget( "testResolveGlobalPomIntoOtherLocalRepo" ); + + String prop = getProject().getProperty( "test.resolve.path.org.eclipse.aether:aether-api:jar" ); + assertThat( "aether-api was not resolved as a property", prop, notNullValue() ); + assertThat( "aether-api was not resolved to default local repository", prop.replace( '\\', '/' ), + endsWith( "local-repo-custom/org/eclipse/aether/aether-api/0.9.0.M3/aether-api-0.9.0.M3.jar" ) ); + } + + public void testResolveCustomFileLayout() + throws IOException + { + File dir = new File( BUILD_DIR, "resolve-custom-layout" ); + executeTarget( "testResolveCustomFileLayout" ); + + assertThat( "aether-api was not saved with custom file layout", + new File( dir, "org.eclipse.aether/aether-api/org/eclipse/aether/jar" ).exists() ); + } + + public void testResolveAttachments() + throws IOException + { + File dir = new File( BUILD_DIR, "resolve-attachments" ); + executeTarget( "testResolveAttachments" ); + + File jdocDir = new File(dir, "javadoc"); + + assertThat( "aether-api-javadoc was not saved with custom file layout", + new File( jdocDir, "org.eclipse.aether-aether-api-javadoc.jar" ).exists() ); + + assertThat( "found non-javadoc files", Arrays.asList( jdocDir.list() ), everyItem( endsWith( "javadoc.jar" ) ) ); + + File sourcesDir = new File( dir, "sources" ); + assertThat( "aether-api-sources was not saved with custom file layout", + new File( sourcesDir, "org.eclipse.aether-aether-api-sources.jar" ).exists() ); + assertThat( "found non-sources files", Arrays.asList( sourcesDir.list() ), + everyItem( endsWith( "sources.jar" ) ) ); + } + + public void testResolvePath() + { + executeTarget( "testResolvePath" ); + Map<?, ?> refs = getProject().getReferences(); + Object obj = refs.get( "out" ); + assertThat( "ref 'out' is no path", obj, instanceOf( Path.class ) ); + Path path = (Path) obj; + String[] elements = path.list(); + assertThat( "no aether-api on classpath", elements, + hasItemInArray( allOf( containsString( "aether-api" ), endsWith( ".jar" ) ) ) ); + } + + public void testResolveDepsFromFile() + { + executeTarget( "testResolveDepsFromFile" ); + + String prop = getProject().getProperty( "test.resolve.path.org.eclipse.aether:aether-spi:jar" ); + assertThat( "aether-spi was not resolved as a property", prop, notNullValue() ); + assertThat( "aether-spi was not resolved to default local repository", prop, + allOf( containsString( "aether-spi" ), endsWith( ".jar" ) ) ); + prop = getProject().getProperty( "test.resolve.path.org.eclipse.aether:aether-api:jar" ); + assertThat( "aether-api was resolved as a property", prop, nullValue() ); + } + + public void testResolveNestedDependencyCollections() + { + executeTarget( "testResolveNestedDependencyCollections" ); + + String prop = getProject().getProperty( "test.resolve.path.org.eclipse.aether:aether-spi:jar" ); + assertThat( "aether-spi was not resolved as a property", prop, notNullValue() ); + prop = getProject().getProperty( "test.resolve.path.org.eclipse.aether:aether-util:jar" ); + assertThat( "aether-util was not resolved as a property", prop, notNullValue() ); + prop = getProject().getProperty( "test.resolve.path.org.eclipse.aether:aether-api:jar" ); + assertThat( "aether-api was resolved as a property", prop, nullValue() ); + } + + public void testResolveResourceCollectionOnly() + { + executeTarget( "testResolveResourceCollectionOnly" ); + + ResourceCollection resources = (ResourceCollection) getProject().getReference( "files" ); + assertThat( resources, is( notNullValue() ) ); + assertThat( resources.size(), is( 2 ) ); + assertThat( resources.isFilesystemOnly(), is( true ) ); + Iterator<?> it = resources.iterator(); + FileResource file = (FileResource) it.next(); + assertThat( file.getFile().getName(), is( "aether-spi-0.9.0.v20140226.jar" ) ); + file = (FileResource) it.next(); + assertThat( file.getFile().getName(), is( "aether-api-0.9.0.v20140226.jar" ) ); + } + +} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/apache/maven/aether/internal/ant/SettingsTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/maven/aether/internal/ant/SettingsTest.java b/src/test/java/org/apache/maven/aether/internal/ant/SettingsTest.java new file mode 100644 index 0000000..94a90a2 --- /dev/null +++ b/src/test/java/org/apache/maven/aether/internal/ant/SettingsTest.java @@ -0,0 +1,63 @@ +package org.apache.maven.aether.internal.ant; + +/* + * 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. + */ + +import static org.hamcrest.MatcherAssert.*; +import static org.hamcrest.Matchers.*; + +import java.io.File; +import java.io.IOException; + +public class SettingsTest + extends AntBuildsTest +{ + + public void testUserSettings() + { + executeTarget( "testUserSettings" ); + assertThat( "user settings not set", AntRepoSys.getInstance( getProject() ).getUserSettings().getName(), + equalTo( "userSettings.xml" ) ); + } + + public void testGlobalSettings() + { + executeTarget( "testGlobalSettings" ); + assertThat( "global settings not set", AntRepoSys.getInstance( getProject() ).getGlobalSettings().getName(), + equalTo( "globalSettings.xml" ) ); + } + + public void testBothSettings() + { + executeTarget( "testBothSettings" ); + assertThat( "global settings not set", AntRepoSys.getInstance( getProject() ).getGlobalSettings().getName(), + equalTo( "globalSettings.xml" ) ); + assertThat( "user settings not set", AntRepoSys.getInstance( getProject() ).getUserSettings().getName(), + equalTo( "userSettings.xml" ) ); + } + + public void testFallback() + throws IOException + { + executeTarget("setUp"); + assertThat( "no fallback to local settings", + AntRepoSys.getInstance( getProject() ).getUserSettings().getAbsolutePath(), endsWith( ".m2" + + File.separator + "settings.xml" ) ); + } +} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/apache/maven/aether/internal/ant/tasks/LayoutTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/maven/aether/internal/ant/tasks/LayoutTest.java b/src/test/java/org/apache/maven/aether/internal/ant/tasks/LayoutTest.java new file mode 100644 index 0000000..85ca36f --- /dev/null +++ b/src/test/java/org/apache/maven/aether/internal/ant/tasks/LayoutTest.java @@ -0,0 +1,54 @@ +package org.apache.maven.aether.internal.ant.tasks; + +/* + * 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. + */ + +import static org.junit.Assert.assertEquals; + +import org.apache.tools.ant.BuildException; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.junit.Test; + +/** + */ +public class LayoutTest +{ + + @Test( expected = BuildException.class ) + public void testUnknownVariable() + { + new Layout( "{unknown}" ); + } + + @Test + public void testGetPath() + { + Layout layout; + + layout = + new Layout( "{groupIdDirs}/{artifactId}/{baseVersion}/{artifactId}-{version}-{classifier}.{extension}" ); + assertEquals( "org/apache/maven/maven-model/3.0-SNAPSHOT/maven-model-3.0-20100720.132618-1.jar", + layout.getPath( new DefaultArtifact( "org.apache.maven:maven-model:3.0-20100720.132618-1" ) ) ); + + layout = new Layout( "{groupId}/{artifactId}-{version}-{classifier}.{extension}" ); + assertEquals( "org.apache.maven/maven-model-3.0-sources.jar", + layout.getPath( new DefaultArtifact( "org.apache.maven:maven-model:jar:sources:3.0" ) ) ); + } + +} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/apache/maven/aether/internal/ant/types/DependencyTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/maven/aether/internal/ant/types/DependencyTest.java b/src/test/java/org/apache/maven/aether/internal/ant/types/DependencyTest.java new file mode 100644 index 0000000..f5f04aa --- /dev/null +++ b/src/test/java/org/apache/maven/aether/internal/ant/types/DependencyTest.java @@ -0,0 +1,87 @@ +package org.apache.maven.aether.internal.ant.types; + +/* + * 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. + */ + +import static org.junit.Assert.*; + +import org.junit.Test; + +/** + */ +public class DependencyTest +{ + + @Test + public void testSetCoordsGidAidVer() + { + Dependency dep = new Dependency(); + dep.setCoords( "gid:aid:ver" ); + + assertEquals( "gid", dep.getGroupId() ); + assertEquals( "aid", dep.getArtifactId() ); + assertEquals( "ver", dep.getVersion() ); + assertEquals( "jar", dep.getType() ); + assertEquals( "", dep.getClassifier() ); + assertEquals( "compile", dep.getScope() ); + } + + @Test + public void testSetCoordsGidAidVerScope() + { + Dependency dep = new Dependency(); + dep.setCoords( "gid:aid:ver:scope" ); + + assertEquals( "gid", dep.getGroupId() ); + assertEquals( "aid", dep.getArtifactId() ); + assertEquals( "ver", dep.getVersion() ); + assertEquals( "jar", dep.getType() ); + assertEquals( "", dep.getClassifier() ); + assertEquals( "scope", dep.getScope() ); + } + + @Test + public void testSetCoordsGidAidVerTypeScope() + { + Dependency dep = new Dependency(); + dep.setCoords( "gid:aid:ver:type:scope" ); + + assertEquals( "gid", dep.getGroupId() ); + assertEquals( "aid", dep.getArtifactId() ); + assertEquals( "ver", dep.getVersion() ); + assertEquals( "type", dep.getType() ); + assertEquals( "", dep.getClassifier() ); + assertEquals( "scope", dep.getScope() ); + } + + @Test + public void testSetCoordsGidAidVerTypeClsScope() + { + Dependency dep = new Dependency(); + dep.setCoords( "gid:aid:ver:type:cls:scope" ); + + assertEquals( "gid", dep.getGroupId() ); + assertEquals( "aid", dep.getArtifactId() ); + assertEquals( "ver", dep.getVersion() ); + assertEquals( "type", dep.getType() ); + assertEquals( "cls", dep.getClassifier() ); + assertEquals( "scope", dep.getScope() ); + } + +} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/apache/maven/aether/internal/ant/types/ExclusionTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/maven/aether/internal/ant/types/ExclusionTest.java b/src/test/java/org/apache/maven/aether/internal/ant/types/ExclusionTest.java new file mode 100644 index 0000000..a187e7c --- /dev/null +++ b/src/test/java/org/apache/maven/aether/internal/ant/types/ExclusionTest.java @@ -0,0 +1,87 @@ +package org.apache.maven.aether.internal.ant.types; + +/* + * 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. + */ + +import static org.junit.Assert.*; + +import org.junit.Test; + +/** + */ +public class ExclusionTest +{ + + @Test + public void testSetCoordsGid() + { + Exclusion ex = new Exclusion(); + ex.setCoords( "gid" ); + + assertEquals( "gid", ex.getGroupId() ); + assertEquals( "*", ex.getArtifactId() ); + assertEquals( "*", ex.getExtension() ); + assertEquals( "*", ex.getClassifier() ); + } + + @Test + public void testSetCoordsGidAid() + { + Exclusion ex = new Exclusion(); + ex.setCoords( "gid:aid" ); + + assertEquals( "gid", ex.getGroupId() ); + assertEquals( "aid", ex.getArtifactId() ); + assertEquals( "*", ex.getExtension() ); + assertEquals( "*", ex.getClassifier() ); + } + + @Test + public void testSetCoordsGidAidExt() + { + Exclusion ex = new Exclusion(); + ex.setCoords( "gid:aid:ext" ); + + assertEquals( "gid", ex.getGroupId() ); + assertEquals( "aid", ex.getArtifactId() ); + assertEquals( "ext", ex.getExtension() ); + assertEquals( "*", ex.getClassifier() ); + } + + @Test + public void testSetCoordsGidAidExtCls() + { + Exclusion ex = new Exclusion(); + ex.setCoords( "gid:aid:ext:cls" ); + + assertEquals( "gid", ex.getGroupId() ); + assertEquals( "aid", ex.getArtifactId() ); + assertEquals( "ext", ex.getExtension() ); + assertEquals( "cls", ex.getClassifier() ); + + ex = new Exclusion(); + ex.setCoords( "gid:aid:ext:" ); + + assertEquals( "gid", ex.getGroupId() ); + assertEquals( "aid", ex.getArtifactId() ); + assertEquals( "ext", ex.getExtension() ); + assertEquals( "", ex.getClassifier() ); + } + +} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/apache/maven/aether/internal/ant/types/PomTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/maven/aether/internal/ant/types/PomTest.java b/src/test/java/org/apache/maven/aether/internal/ant/types/PomTest.java new file mode 100644 index 0000000..8ca1fae --- /dev/null +++ b/src/test/java/org/apache/maven/aether/internal/ant/types/PomTest.java @@ -0,0 +1,42 @@ +package org.apache.maven.aether.internal.ant.types; + +/* + * 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. + */ + +import static org.junit.Assert.*; + +import org.junit.Test; + +/** + */ +public class PomTest +{ + + @Test + public void testSetCoordsGid() + { + Pom pom = new Pom(); + pom.setCoords( "gid:aid:ver" ); + + assertEquals( "gid", pom.getGroupId() ); + assertEquals( "aid", pom.getArtifactId() ); + assertEquals( "ver", pom.getVersion() ); + } + +} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/eclipse/aether/internal/ant/AntBuildsTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/eclipse/aether/internal/ant/AntBuildsTest.java b/src/test/java/org/eclipse/aether/internal/ant/AntBuildsTest.java deleted file mode 100644 index 9e9be46..0000000 --- a/src/test/java/org/eclipse/aether/internal/ant/AntBuildsTest.java +++ /dev/null @@ -1,124 +0,0 @@ -package org.eclipse.aether.internal.ant; - -/* - * 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. - */ - -import java.io.File; -import java.io.PrintStream; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.BuildFileTest; -import org.apache.tools.ant.DefaultLogger; -import org.apache.tools.ant.Project; -import org.eclipse.aether.internal.ant.ProjectWorkspaceReader; -import org.eclipse.aether.internal.test.util.TestFileUtils; - -public abstract class AntBuildsTest - extends BuildFileTest -{ - - private static final File BASE_DIR; - - protected static final File BUILD_DIR; - - static - { - BASE_DIR = new File( "" ).getAbsoluteFile(); - BUILD_DIR = new File( BASE_DIR, "target/ant" ); - } - - protected File projectDir; - - protected File localRepoDir; - - protected File distRepoDir; - - protected String getProjectDirName() - { - String name = getClass().getSimpleName(); - if ( name.endsWith( "Test" ) ) - { - name = name.substring( 0, name.length() - 4 ); - } - return name; - } - - protected void setUpProperties() - throws Exception - { - // hook for subclasses to set further system properties for the project to pick up - } - - @Override - protected void setUp() - throws Exception - { - super.setUp(); - - TestFileUtils.deleteFile( BUILD_DIR ); - - projectDir = new File( new File( BASE_DIR, "src/test/resources/ant" ), getProjectDirName() ); - localRepoDir = new File( BUILD_DIR, "local-repo" ); - distRepoDir = new File( BUILD_DIR, "dist-repo" ); - - System.setProperty( "project.dir", projectDir.getAbsolutePath() ); - System.setProperty( "build.dir", BUILD_DIR.getAbsolutePath() ); - System.setProperty( "maven.repo.local", localRepoDir.getAbsolutePath() ); - System.setProperty( "project.distrepo.url", distRepoDir.toURI().toString() ); - setUpProperties(); - - configureProject( new File( projectDir, "ant.xml" ).getAbsolutePath(), Project.MSG_VERBOSE ); - } - - @Override - protected void tearDown() - throws Exception - { - try - { - ProjectWorkspaceReader.dropInstance(); - TestFileUtils.deleteFile( BUILD_DIR ); - } - finally - { - super.tearDown(); - } - } - - @Override - public void configureProject( String filename, int logLevel ) - throws BuildException - { - super.configureProject( filename, logLevel ); - DefaultLogger logger = new DefaultLogger() - { - @Override - protected void printMessage( String message, PrintStream stream, int priority ) - { - message = System.currentTimeMillis() + " " + message; - super.printMessage( message, stream, priority ); - } - }; - logger.setMessageOutputLevel( logLevel ); - logger.setOutputPrintStream( System.out ); - logger.setErrorPrintStream( System.err ); - getProject().addBuildListener( logger ); - } - -} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/eclipse/aether/internal/ant/DeployTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/eclipse/aether/internal/ant/DeployTest.java b/src/test/java/org/eclipse/aether/internal/ant/DeployTest.java deleted file mode 100644 index a496e81..0000000 --- a/src/test/java/org/eclipse/aether/internal/ant/DeployTest.java +++ /dev/null @@ -1,91 +0,0 @@ -package org.eclipse.aether.internal.ant; - -/* - * 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. - */ - -import static org.hamcrest.MatcherAssert.*; -import static org.hamcrest.Matchers.*; - -import java.io.File; -import java.util.Arrays; - -/* - * still missing: - * - deploy snapshots/releases into correct repos - */ -public class DeployTest - extends AntBuildsTest -{ - - public void testDeployGlobalPom() - { - long min = System.currentTimeMillis(); - executeTarget( "testDeployGlobalPom" ); - long max = System.currentTimeMillis(); - - assertLogContaining( "Uploading" ); - - assertUpdatedFile( min, max, distRepoDir, "test/dummy/0.1-SNAPSHOT/maven-metadata.xml" ); - } - - public void testDeployOverrideGlobalPom() - { - long min = System.currentTimeMillis(); - executeTarget( "testDeployOverrideGlobalPom" ); - long max = System.currentTimeMillis(); - - assertLogContaining( "Uploading" ); - - assertUpdatedFile( min, max, distRepoDir, "test/other/0.1-SNAPSHOT/maven-metadata.xml" ); - } - - public void testDeployOverrideGlobalPomByRef() - { - long min = System.currentTimeMillis(); - executeTarget( "testDeployOverrideGlobalPomByRef" ); - long max = System.currentTimeMillis(); - - assertLogContaining( "Uploading" ); - - assertUpdatedFile( min, max, distRepoDir, "test/dummy/0.1-SNAPSHOT/maven-metadata.xml" ); - assertUpdatedFile( min, max, distRepoDir, "test/other/0.1-SNAPSHOT/maven-metadata.xml" ); - } - - public void testDeployAttachedArtifact() - { - executeTarget( "testDeployAttachedArtifact" ); - - assertLogContaining( "Uploading" ); - - File dir = new File(distRepoDir, "test/dummy/0.1-SNAPSHOT/" ); - String[] files = dir.list(); - assertThat( "attached artifact not found: " + Arrays.toString( files ), files, - hasItemInArray( endsWith( "-ant.xml" ) ) ); - } - - private void assertUpdatedFile( long min, long max, File repoPath, String path ) - { - File file = new File( repoPath, path ); - min = (min / 1000) * 1000; - max = ((max + 999) / 1000) * 1000; - assertThat( "File does not exist in default repo: " + file.getAbsolutePath(), file.exists() ); - assertThat( "Files were not updated for 1s before/after timestamp", file.lastModified(), - allOf( greaterThanOrEqualTo( min ), lessThanOrEqualTo( max ) ) ); - } -} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/eclipse/aether/internal/ant/InstallTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/eclipse/aether/internal/ant/InstallTest.java b/src/test/java/org/eclipse/aether/internal/ant/InstallTest.java deleted file mode 100644 index 4ca864c..0000000 --- a/src/test/java/org/eclipse/aether/internal/ant/InstallTest.java +++ /dev/null @@ -1,98 +0,0 @@ -package org.eclipse.aether.internal.ant; - -/* - * 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. - */ - -import static org.hamcrest.MatcherAssert.*; -import static org.hamcrest.Matchers.*; - -import java.io.File; -import java.io.IOException; - -public class InstallTest - extends AntBuildsTest -{ - - public void testInstallGlobalPom() - { - executeTarget( "testInstallGlobalPom" ); - long tstamp = System.currentTimeMillis(); - - assertLogContaining( "Installing" ); - - assertUpdatedFile( tstamp, localRepoDir, "test/dummy/0.1-SNAPSHOT/dummy-0.1-SNAPSHOT.pom" ); - } - - public void testInstallOverrideGlobalPom() - { - executeTarget( "testInstallOverrideGlobalPom" ); - long tstamp = System.currentTimeMillis(); - - assertLogContaining( "Installing" ); - - assertUpdatedFile( tstamp, localRepoDir, "test/other/0.1-SNAPSHOT/other-0.1-SNAPSHOT.pom" ); - } - - public void testInstallOverrideGlobalPomByRef() - { - long tstamp = System.currentTimeMillis(); - executeTarget( "testInstallOverrideGlobalPomByRef" ); - - assertLogContaining( "Installing" ); - - assertUpdatedFile( tstamp, localRepoDir, "test/dummy/0.1-SNAPSHOT/dummy-0.1-SNAPSHOT.pom" ); - assertUpdatedFile( tstamp, localRepoDir, "test/other/0.1-SNAPSHOT/other-0.1-SNAPSHOT.pom" ); - } - - public void testDefaultRepo() - { - executeTarget( "testDefaultRepo" ); - long tstamp = System.currentTimeMillis(); - - assertLogContaining( "Installing" ); - - assertUpdatedFile( tstamp, localRepoDir, "test/dummy/0.1-SNAPSHOT/dummy-0.1-SNAPSHOT.pom" ); - assertUpdatedFile( tstamp, localRepoDir, "test/dummy/0.1-SNAPSHOT/dummy-0.1-SNAPSHOT-ant.xml" ); - } - - public void testCustomRepo() - throws IOException - { - File repoPath = new File( BUILD_DIR, "local-repo-custom" ); - - executeTarget( "testCustomRepo" ); - long tstamp = System.currentTimeMillis(); - - System.out.println( getLog() ); - assertLogContaining( "Installing" ); - - assertUpdatedFile( tstamp, repoPath, "test/dummy/0.1-SNAPSHOT/dummy-0.1-SNAPSHOT.pom" ); - assertUpdatedFile( tstamp, repoPath, "test/dummy/0.1-SNAPSHOT/dummy-0.1-SNAPSHOT-ant.xml" ); - } - - private void assertUpdatedFile( long tstamp, File repoPath, String path ) - { - File file = new File( repoPath, path ); - assertThat( "File does not exist in default repo: " + file.getAbsolutePath(), file.exists() ); - assertThat( "Files were not updated for 1s before/after timestamp", - file.lastModified(), - allOf( greaterThanOrEqualTo( ( ( tstamp - 500 ) / 1000 ) * 1000 ), - lessThanOrEqualTo( tstamp + 2000 ) ) ); - } -} http://git-wip-us.apache.org/repos/asf/maven-aether/blob/261b17db/src/test/java/org/eclipse/aether/internal/ant/ProjectWorkspaceReaderTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/eclipse/aether/internal/ant/ProjectWorkspaceReaderTest.java b/src/test/java/org/eclipse/aether/internal/ant/ProjectWorkspaceReaderTest.java deleted file mode 100644 index b5a1864..0000000 --- a/src/test/java/org/eclipse/aether/internal/ant/ProjectWorkspaceReaderTest.java +++ /dev/null @@ -1,124 +0,0 @@ -package org.eclipse.aether.internal.ant; - -/* - * 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. - */ - -import static org.hamcrest.Matchers.*; -import static org.junit.Assert.*; - -import java.io.File; - -import org.apache.tools.ant.Project; -import org.junit.Before; -import org.junit.Test; -import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.artifact.DefaultArtifact; -import org.eclipse.aether.internal.ant.ProjectWorkspaceReader; -import org.eclipse.aether.internal.ant.types.Pom; - -public class ProjectWorkspaceReaderTest -{ - - private ProjectWorkspaceReader reader; - - private Project project; - - @Before - public void setUp() - throws Exception - { - this.reader = new ProjectWorkspaceReader(); - - this.project = new Project(); - project.setProperty( "user.home", System.getProperty( "user.home" ) ); - } - - private Artifact artifact( String coords ) - { - return new DefaultArtifact( coords ); - } - - private File getFile( String name ) - { - return new File( "src/test/resources/ProjectWorkspaceReader", name ); - } - - @Test - public void testFindPom() - { - Pom pom = new Pom(); - pom.setProject( project ); - pom.setFile( getFile( "dummy-pom.xml" ) ); - - reader.addPom( pom ); - - assertEquals( pom.getFile(), reader.findArtifact( artifact( "test:dummy:pom:0.1-SNAPSHOT" ) ) ); - assertNull( reader.findArtifact( artifact( "unavailable:test:pom:0.1-SNAPSHOT" ) ) ); - } - - @Test - public void testFindArtifact() - { - Pom pom = new Pom(); - pom.setProject( project ); - pom.setFile( getFile( "dummy-pom.xml" ) ); - - reader.addPom( pom ); - - org.eclipse.aether.internal.ant.types.Artifact artifact = new org.eclipse.aether.internal.ant.types.Artifact(); - artifact.setProject( project ); - artifact.addPom( pom ); - artifact.setFile( getFile( "dummy-file.txt" ) ); - - reader.addArtifact( artifact ); - - assertEquals( artifact.getFile(), reader.findArtifact( artifact( "test:dummy:txt:0.1-SNAPSHOT" ) ) ); - assertNull( reader.findArtifact( artifact( "unavailable:test:jar:0.1-SNAPSHOT" ) ) ); - } - - @Test - public void testFindVersions() - { - Pom pom1 = new Pom(); - pom1.setProject( project ); - pom1.setCoords( "test:dummy:1-SNAPSHOT" ); - - org.eclipse.aether.internal.ant.types.Artifact artifact1 = new org.eclipse.aether.internal.ant.types.Artifact(); - artifact1.setProject( project ); - artifact1.addPom( pom1 ); - artifact1.setFile( getFile( "dummy-file.txt" ) ); - - reader.addArtifact( artifact1 ); - - Pom pom2 = new Pom(); - pom2.setProject( project ); - pom2.setCoords( "test:dummy:2-SNAPSHOT" ); - - org.eclipse.aether.internal.ant.types.Artifact artifact2 = new org.eclipse.aether.internal.ant.types.Artifact(); - artifact2.setProject( project ); - artifact2.addPom( pom2 ); - artifact2.setFile( getFile( "dummy-file.txt" ) ); - - reader.addArtifact( artifact2 ); - - assertThat( reader.findVersions( artifact( "test:dummy:txt:[0,)" ) ), - containsInAnyOrder( "1-SNAPSHOT", "2-SNAPSHOT" ) ); - } - -}