1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugin.surefire.booterclient.lazytestprovider;
20
21 import java.util.Arrays;
22 import java.util.Collection;
23 import java.util.Collections;
24 import java.util.HashSet;
25 import java.util.Set;
26 import java.util.concurrent.ConcurrentLinkedDeque;
27
28
29
30
31
32
33 public class Commandline extends org.apache.maven.surefire.shared.utils.cli.Commandline {
34 private final Collection<String> excludedEnvironmentVariables;
35 private final Set<String> addedEnvironmentVariables;
36
37
38
39
40 public Commandline() {
41 this(new String[0]);
42 }
43
44 public Commandline(String[] excludedEnvironmentVariables) {
45 this.excludedEnvironmentVariables = new ConcurrentLinkedDeque<>();
46 this.addedEnvironmentVariables = new HashSet<>();
47 Collections.addAll(this.excludedEnvironmentVariables, excludedEnvironmentVariables);
48 }
49
50 @Override
51 public void addEnvironment(String name, String value) {
52 super.addEnvironment(name, value);
53 addedEnvironmentVariables.add(name);
54 }
55
56 @Override
57 public String[] getEnvironmentVariables() {
58 String[] envs = super.getEnvironmentVariables();
59 Set<String> result = new HashSet<>(Arrays.asList(envs));
60 result.addAll(addedEnvironmentVariables);
61 return excludedEnvironmentVariables.isEmpty()
62 ? result.toArray(new String[0])
63 : result.stream()
64 .filter(env -> {
65 String varName =
66 env != null && env.contains("=") ? env.substring(0, env.indexOf('=')) : env;
67 return !excludedEnvironmentVariables.contains(varName);
68 })
69 .toArray(String[]::new);
70 }
71 }