| // Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file | 
 | // for details. All rights reserved. Use of this source code is governed by a | 
 | // BSD-style license that can be found in the LICENSE file. | 
 |  | 
 | // This class is kept in a separate package because of the org.testng dependency. | 
 | // R8 tests do not depend on testng, this class does. | 
 | public class TestNGMainRunner { | 
 |  | 
 |   private static void runTestNg(Class<?> testClass, int verbose) { | 
 |     System.out.println("Running tests in " + testClass.getName()); | 
 |     org.testng.TestNG testng = new org.testng.TestNG(false); | 
 |     testng.setTestClasses(new Class<?>[] {testClass}); | 
 |     testng.setVerbose(verbose); | 
 |     // Deprecated API used because it works on Android unlike the recommended one. | 
 |     testng.addListener(new org.testng.reporters.TextReporter(testClass.getName(), verbose)); | 
 |     try { | 
 |       testng.run(); | 
 |       System.out.print("Tests result in " + testClass.getName() + ": "); | 
 |       if (testng.hasFailure()) { | 
 |         System.out.println("FAILURE"); | 
 |       } else { | 
 |         System.out.println("SUCCESS"); | 
 |       } | 
 |     } catch (RuntimeException | Error e) { | 
 |       System.out.print("Tests result in " + testClass.getName() + ": "); | 
 |       System.out.println("ERROR"); | 
 |       e.printStackTrace(); | 
 |     } | 
 |   } | 
 |  | 
 |   public static void main(String[] args) throws Exception { | 
 |     // First arg is the verbosity level. | 
 |     // Second arg is the class to run. | 
 |     int verbose = Integer.parseInt(args[0]); | 
 |     runTestNg(Class.forName(args[1]), verbose); | 
 |   } | 
 | } |