in maven-scm-test/src/main/java/org/apache/maven/scm/tck/command/update/UpdateCommandTckTest.java [80:183]
public void testUpdateCommand() throws Exception {
deleteDirectory(getUpdatingCopy());
assertFalse(getUpdatingCopy().exists());
// deleteDirectory( getWorkingCopy() );
// assertFalse( getUpdatingCopy().exists() );
ScmRepository repository = makeScmRepository(getScmUrl());
checkOut(getUpdatingCopy(), repository);
// ----------------------------------------------------------------------
// Change the files
// ----------------------------------------------------------------------
/*
* readme.txt is changed (changed file in the root directory)
* project.xml is added (added file in the root directory)
* src/test/resources is untouched (a empty directory is left untouched)
* src/test/java is untouched (a non empty directory is left untouched)
* src/test/java/org (a empty directory is added)
* src/main/java/org/Foo.java (a non empty directory is added)
*/
// /readme.txt
this.edit(getWorkingCopy(), "readme.txt", null, getScmRepository());
ScmTestCase.makeFile(getWorkingCopy(), "/readme.txt", "changed readme.txt");
// /project.xml
ScmTestCase.makeFile(getWorkingCopy(), "/project.xml", "changed project.xml");
addToWorkingTree(getWorkingCopy(), new File("project.xml"), getScmRepository());
// /src/test/java/org
ScmTestCase.makeDirectory(getWorkingCopy(), "/src/test/java/org");
addToWorkingTree(getWorkingCopy(), new File("src/test/java/org"), getScmRepository());
// /src/main/java/org/Foo.java
ScmTestCase.makeFile(getWorkingCopy(), "/src/main/java/org/Foo.java");
addToWorkingTree(getWorkingCopy(), new File("src/main/java/org"), getScmRepository());
// src/main/java/org/Foo.java
addToWorkingTree(getWorkingCopy(), new File("src/main/java/org/Foo.java"), getScmRepository());
ScmManager scmManager = getScmManager();
Date lastUpdate = new Date(System.currentTimeMillis() - 1000000);
commit(getWorkingCopy(), getScmRepository());
Thread.sleep(5000);
// ----------------------------------------------------------------------
// Update the project
// ----------------------------------------------------------------------
UpdateScmResult result = scmManager.update(repository, new ScmFileSet(getUpdatingCopy()), lastUpdate);
assertNotNull("The command returned a null result.", result);
assertResultIsSuccess(result);
List<ScmFile> updatedFiles = result.getUpdatedFiles();
List<ChangeSet> changedSets = result.getChanges();
assertEquals("Expected 3 files in the updated files list " + updatedFiles, 3, updatedFiles.size());
assertNotNull("The changed files list is null", changedSets);
assertFalse("The changed files list is empty ", changedSets.isEmpty());
for (ChangeSet changeSet : changedSets) {
System.out.println(changeSet.toXML());
}
// ----------------------------------------------------------------------
// Assert the files in the updated files list
// ----------------------------------------------------------------------
Iterator<ScmFile> files = new TreeSet<ScmFile>(updatedFiles).iterator();
// Foo.java
ScmFile file = files.next();
assertPath("src/main/java/org/Foo.java", file.getPath());
// TODO : Consolidate file status so that we can remove "|| ADDED" term
assertTrue(file.getStatus().isUpdate() || file.getStatus() == ScmFileStatus.ADDED);
// readme.txt
file = files.next();
assertPath("readme.txt", file.getPath());
assertTrue(file.getStatus().isUpdate());
// project.xml
file = files.next();
assertPath("project.xml", file.getPath());
// TODO : Consolidate file status so that we can remove "|| ADDED" term
assertTrue(file.getStatus().isUpdate() || file.getStatus() == ScmFileStatus.ADDED);
}