View Javadoc
1   package org.apache.maven.scm.provider.accurev.cli;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file
5    * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the
6    * Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a
7    * copy of the License at
8    * 
9    * http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS"
12   * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language
13   * governing permissions and limitations under the License.
14   */
15  
16  import static org.hamcrest.Matchers.hasItem;
17  import static org.hamcrest.Matchers.is;
18  import static org.junit.Assert.assertThat;
19  
20  import java.io.File;
21  import java.util.ArrayList;
22  import java.util.List;
23  
24  import org.codehaus.plexus.util.cli.StreamConsumer;
25  import org.junit.Test;
26  
27  public class FileConsumerTest
28  {
29  
30      @Test
31      public void testConsumeAdd()
32      {
33          List<File> extractedFiles = new ArrayList<File>();
34  
35          StreamConsumer consumer = new FileConsumer( extractedFiles, FileConsumer.ADD_PATTERN );
36  
37          consumer.consumeLine( "Added and kept element /./src/main/java/Application.java" );
38          consumer.consumeLine( "Added and kept element \\.\\src\\main\\java\\Windows.java" );
39  
40          assertThat( extractedFiles.size(), is( 2 ) );
41          assertThat( extractedFiles, hasItem( new File( "src/main/java/Application.java" ) ) );
42          assertThat( extractedFiles, hasItem( new File( "src\\main\\java\\Windows.java" ) ) );
43      }
44  
45      @Test
46      public void testConsumeUpdate()
47      {
48          List<File> extractedFiles = new ArrayList<File>();
49          StreamConsumer consumer = new FileConsumer( extractedFiles, FileConsumer.UPDATE_PATTERN );
50  
51          consumer.consumeLine( "Content (1 K) of \"readme.txt\" - ok" );
52          consumer.consumeLine( "Creating dir \"src/main/java/org\" ." );
53          consumer.consumeLine( "Updating (creating) dir /./src/test/java" );
54          consumer.consumeLine( "Updating element \\.\\src\\main\\java\\Application.java" );
55  
56          assertThat( extractedFiles.size(), is( 2 ) );
57          assertThat( extractedFiles, hasItem( new File( "readme.txt" ) ) );
58          assertThat( extractedFiles, hasItem( new File( "src\\main\\java\\Application.java" ) ) );
59      }
60  
61      @Test
62      public void testConsumePromoted()
63      {
64          List<File> extractedFiles = new ArrayList<File>();
65  
66          StreamConsumer consumer = new FileConsumer( extractedFiles, FileConsumer.PROMOTE_PATTERN );
67  
68          consumer.consumeLine( "Promoted element /./src/main/java/Application.java" );
69          consumer.consumeLine( "Promoted element \\.\\src\\main\\java\\Windows.java" );
70  
71          assertThat( extractedFiles.size(), is( 2 ) );
72          assertThat( extractedFiles, hasItem( new File( "src/main/java/Application.java" ) ) );
73          assertThat( extractedFiles, hasItem( new File( "src\\main\\java\\Windows.java" ) ) );
74      }
75  
76      @Test
77      public void testConsumeRemoved()
78      {
79          List<File> extractedFiles = new ArrayList<File>();
80          StreamConsumer consumer = new FileConsumer( extractedFiles, FileConsumer.DEFUNCT_PATTERN );
81  
82          consumer.consumeLine( "Recursively removing \"tcktests/src\" ." );
83          consumer.consumeLine( "Removing \"tcktests/src/main/java/Application.java\" ." );
84          consumer.consumeLine( "Removing \"tcktests/src/main/java\" ." );
85          consumer.consumeLine( "Removing \"tcktests/src/main\" ." );
86          consumer.consumeLine( "Removing \"tcktests/src\" ." );
87  
88          assertThat( extractedFiles.size(), is( 4 ) );
89          assertThat( extractedFiles, hasItem( new File( "tcktests/src" ) ) );
90          assertThat( extractedFiles, hasItem( new File( "tcktests/src/main/java/Application.java" ) ) );
91      }
92  }