View Javadoc
1   package org.apache.maven.surefire.api.report;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *     http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.apache.maven.surefire.api.stream.AbstractStreamDecoder.Segment;
23  
24  import java.util.HashMap;
25  import java.util.Map;
26  
27  import static java.nio.charset.StandardCharsets.US_ASCII;
28  
29  /**
30   * Determines the purpose the provider started the tests. It can be either normal run or a kind of re-run type.
31   * <br>
32   * This is important in the logic of {@code StatelessXmlReporter}.
33   *
34   * @author <a href="mailto:tibordigana@apache.org">Tibor Digana (tibor17)</a>
35   * @since 3.0.0-M4
36   */
37  public enum RunMode
38  {
39      NORMAL_RUN( "normal-run" ),
40      RERUN_TEST_AFTER_FAILURE( "rerun-test-after-failure" );
41      //todo add here RERUN_TESTSET, see https://github.com/apache/maven-surefire/pull/221
42  
43      // due to have fast and thread-safe Map
44      public static final Map<Segment, RunMode> RUN_MODES = segmentsToRunModes();
45  
46      private final String runmode;
47      private final byte[] runmodeBinary;
48  
49      RunMode( String runmode )
50      {
51          this.runmode = runmode;
52          runmodeBinary = runmode.getBytes( US_ASCII );
53      }
54  
55      public String geRunmode()
56      {
57          return runmode;
58      }
59  
60      public byte[] getRunmodeBinary()
61      {
62          return runmodeBinary;
63      }
64  
65      private static Map<Segment, RunMode> segmentsToRunModes()
66      {
67          Map<Segment, RunMode> runModes = new HashMap<>();
68          for ( RunMode runMode : RunMode.values() )
69          {
70              byte[] array = runMode.getRunmodeBinary();
71              runModes.put( new Segment( array, 0, array.length ), runMode );
72          }
73          return runModes;
74      }
75  }