diff options
Diffstat (limited to 'vid-automation/src/main/java')
-rw-r--r-- | vid-automation/src/main/java/vid/automation/test/infra/SkipTestUntil.java | 21 | ||||
-rw-r--r-- | vid-automation/src/main/java/vid/automation/test/infra/SkipTestUntilTestngTransformer.java | 57 |
2 files changed, 78 insertions, 0 deletions
diff --git a/vid-automation/src/main/java/vid/automation/test/infra/SkipTestUntil.java b/vid-automation/src/main/java/vid/automation/test/infra/SkipTestUntil.java new file mode 100644 index 000000000..5aad0e03a --- /dev/null +++ b/vid-automation/src/main/java/vid/automation/test/infra/SkipTestUntil.java @@ -0,0 +1,21 @@ +package vid.automation.test.infra; + +import static java.lang.annotation.ElementType.METHOD; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/* +Skip test until date (AKA TimeBomb) + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({METHOD}) +public @interface SkipTestUntil { + + /** + * Date in the form of "2007-12-20" + */ + String value(); + +} diff --git a/vid-automation/src/main/java/vid/automation/test/infra/SkipTestUntilTestngTransformer.java b/vid-automation/src/main/java/vid/automation/test/infra/SkipTestUntilTestngTransformer.java new file mode 100644 index 000000000..2d2ce7cde --- /dev/null +++ b/vid-automation/src/main/java/vid/automation/test/infra/SkipTestUntilTestngTransformer.java @@ -0,0 +1,57 @@ +package vid.automation.test.infra; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.time.LocalDate; +import org.testng.IAnnotationTransformer; +import org.testng.annotations.ITestAnnotation; + +/* +TestNg listener that skip tests that are annotated with SkipTestUntil annotation +Pay attention that this listener shall be configured in the testng.xml (or command line) +*/ +public class SkipTestUntilTestngTransformer implements IAnnotationTransformer { + + @Override + public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) { + + if (testMethod!=null) { + try { + + if (!annotation.getEnabled()) { + return; + } + + if (!testMethod.isAnnotationPresent(SkipTestUntil.class)) { + return; + } + + String dateAsStr = testMethod.getAnnotation(SkipTestUntil.class).value(); + if (shallDisableTest(dateAsStr)) { + disableTest(annotation, testMethod.getDeclaringClass().getName(), dateAsStr); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + private boolean shallDisableTest(String dateAsStr) { + try { + return LocalDate.now().isBefore(LocalDate.parse(dateAsStr)); + } + catch (RuntimeException exception) { + System.out.println("Failure during processing of SkipTestUntil annotation value is " + dateAsStr); + exception.printStackTrace(); + return false; + } + } + + private void disableTest(ITestAnnotation annotation, String name, String dateAsStr) { + System.out.println("Ignore "+ name+" till "+dateAsStr); + annotation.setEnabled(false); + } + +} + |