44import java .io .IOException ;
55import java .io .OutputStream ;
66import java .io .PrintStream ;
7+ import java .net .URI ;
78import java .nio .charset .StandardCharsets ;
89import java .nio .file .Files ;
910import java .nio .file .Path ;
3132import org .fedoraproject .javapackages .validator .spi .Validator ;
3233import org .yaml .snakeyaml .Yaml ;
3334
35+ import io .kojan .javadeptools .rpm .RpmPackage ;
36+
3437public class MainTmt extends Main {
3538 private Path TMT_TEST_DATA = null ;
3639 private Path TMT_TREE = null ;
40+ private Optional <URI > TESTING_FARM_GIT_URL = Optional .empty ();
3741 private Map <String , List <LogEntry >> additionalLogs = new TreeMap <>();
3842
43+ private static final Pattern URL_PACKAGE_NAME_PATTERN = Pattern .compile (".*/rpms/(.*)" );
44+
3945 private static String getenv (String key ) {
4046 var result = System .getenv (key );
4147 if (result == null ) {
@@ -47,13 +53,19 @@ private static String getenv(String key) {
4753 public static Main create () {
4854 var tmtTestData = Path .of (getenv ("TMT_TEST_DATA" ));
4955 var tmtTree = Path .of (getenv ("TMT_TREE" ));
50- return create (tmtTestData , tmtTree );
56+ var testingFarmGitUrl = Optional .ofNullable (System .getenv ("TESTING_FARM_GIT_URL" )).map (URI ::create );
57+ return create (tmtTestData , tmtTree , testingFarmGitUrl );
5158 }
5259
5360 public static Main create (Path tmtTestData , Path tmtTree ) {
61+ return create (tmtTestData , tmtTree , Optional .empty ());
62+ }
63+
64+ public static Main create (Path tmtTestData , Path tmtTree , Optional <URI > testingFarmGitUrl ) {
5465 var result = new MainTmt ();
5566 result .TMT_TEST_DATA = tmtTestData ;
5667 result .TMT_TREE = tmtTree ;
68+ result .TESTING_FARM_GIT_URL = testingFarmGitUrl ;
5769 return result ;
5870 }
5971
@@ -210,6 +222,24 @@ protected Map<String, Validator> select(Map<String, Validator> validators) throw
210222 return validators ;
211223 }
212224
225+ @ Override
226+ protected Iterable <RpmPackage > findRpms () throws Exception {
227+ logger .debug ("TESTING_FARM_GIT_URL: {0}" , Decorated .plain (TESTING_FARM_GIT_URL .map (String ::valueOf ).orElse ("" )));
228+ var rpms = new ArrayList <RpmPackage >();
229+ var it = ArgFileIterator .create (parameters .argPaths );
230+ while (it .hasNext ()) {
231+ var rpm = it .next ();
232+ if (TESTING_FARM_GIT_URL .isPresent ()) {
233+ var matcher = URL_PACKAGE_NAME_PATTERN .matcher (TESTING_FARM_GIT_URL .get ().getPath ());
234+ if (matcher .matches () && !matcher .group (1 ).equals (rpm .getInfo ().getSourceName ())) {
235+ continue ;
236+ }
237+ }
238+ rpms .add (rpm );
239+ }
240+ return rpms ;
241+ }
242+
213243 private static String getFormattedDuration (Instant startTime , Instant endTime ) {
214244 var duration = Duration .between (startTime , endTime );
215245 // TODO Wait for resolution within TF
0 commit comments