Best Spectrum code snippet using com.greghaskins.spectrum.internal.configuration.ExcludeTags
Source:Suite.java  
1package com.greghaskins.spectrum.internal;2import static com.greghaskins.spectrum.internal.configuration.BlockConfiguration.merge;3import com.greghaskins.spectrum.Block;4import com.greghaskins.spectrum.internal.configuration.BlockConfiguration;5import com.greghaskins.spectrum.internal.configuration.ConfiguredBlock;6import com.greghaskins.spectrum.internal.configuration.TaggingFilterCriteria;7import com.greghaskins.spectrum.internal.hooks.Hook;8import com.greghaskins.spectrum.internal.hooks.HookContext;9import com.greghaskins.spectrum.internal.hooks.Hooks;10import org.junit.runner.Description;11import org.junit.runner.notification.Failure;12import java.util.ArrayList;13import java.util.HashSet;14import java.util.List;15import java.util.Set;16public class Suite implements Parent, Child {17  private Hooks hooks = new Hooks();18  protected final List<Child> children = new ArrayList<>();19  private final Set<Child> focusedChildren = new HashSet<>();20  private final ChildRunner childRunner;21  private final Description description;22  private final Parent parent;23  private boolean ignored;24  private final TaggingFilterCriteria tagging;25  private BlockConfiguration configuration = BlockConfiguration.defaultConfiguration();26  private NameSanitiser nameSanitiser = new NameSanitiser();27  /**28   * The strategy for running the children within the suite.29   */30  @FunctionalInterface31  interface ChildRunner {32    void runChildren(final Suite suite, final RunReporting<Description, Failure> reporting);33  }34  public static Suite rootSuite(final Description description) {35    return new Suite(description, Parent.NONE, Suite::defaultChildRunner,36        new TaggingFilterCriteria());37  }38  /**39   * Constructs a suite.40   *41   * @param description the JUnit description42   * @param parent parent item43   * @param childRunner which child running strategy to use - this will normally be44   *        {@link #defaultChildRunner(Suite, RunReporting)} which runs them all but can be45   *        substituted.46   * @param taggingFilterCriteria the state of tagging inherited from the parent47   */48  protected Suite(final Description description, final Parent parent, final ChildRunner childRunner,49      final TaggingFilterCriteria taggingFilterCriteria) {50    this.description = description;51    this.parent = parent;52    this.ignored = parent.isIgnored();53    this.childRunner = childRunner;54    this.tagging = taggingFilterCriteria;55  }56  public Suite addSuite(final String name) {57    return addSuite(name, Suite::defaultChildRunner);58  }59  private Suite addSuite(final String name, final ChildRunner childRunner) {60    final Suite suite = new Suite(Description.createSuiteDescription(sanitise(name)), this, childRunner,61        this.tagging.clone());62    suite.inheritConfigurationFromParent(configuration.forChild());63    return addedToThis(suite);64  }65  private Suite addedToThis(Suite suite) {66    addChild(suite);67    return suite;68  }69  public Suite addCompositeSuite(final String name) {70    final Suite suite =71        new CompositeTest(Description.createSuiteDescription(sanitise(name)), this,72            this.tagging.clone());73    return addedToThis(suite);74  }75  public Child addSpec(final String name, final Block block) {76    final Child spec = createSpec(name, block);77    addChild(spec);78    return spec;79  }80  private Child createSpec(final String name, final Block block) {81    final Description specDescription =82        Description.createTestDescription(this.description.getClassName(), sanitise(name));83    return configuredChild(new Spec(specDescription, block, this), block);84  }85  private void inheritConfigurationFromParent(final BlockConfiguration fromParent) {86    configuration = merge(fromParent, configuration);87  }88  private Child configuredChild(final Child child, final Block block) {89    merge(this.configuration.forChild(), ConfiguredBlock.configurationFromBlock(block))90        .applyTo(child, this.tagging);91    return child;92  }93  public void applyConfigurationFromBlock(Block block) {94    this.configuration = merge(this.configuration, ConfiguredBlock.configurationFromBlock(block));95    this.configuration.applyTo(this, this.tagging);96  }97  private void addChild(final Child child) {98    this.children.add(child);99  }100  /**101   * Adds a hook to be the first one executed before the block. This is the default. Hooks should be102   * executed in the order they are declared in the test.103   *104   * @param hook to add105   */106  public void addHook(final HookContext hook) {107    this.hooks.add(hook);108  }109  private Hooks getHooksFor(final Child child) {110    Hooks allHooks = this.parent.getInheritableHooks().plus(this.hooks);111    return child.isAtomic() ? allHooks.forAtomic() : allHooks.forNonAtomic();112  }113  @Override114  public Hooks getInheritableHooks() {115    // only the atomic hooks can be used by the children of this suite,116    // all other hooks would be executed at suite level only - either for117    // each child of the suite, or once118    return this.parent.getInheritableHooks().plus(this.hooks.forAtomic());119  }120  /**121   * Set the suite to require certain tags of all tests below.122   *123   * @param tags required tags - suites must have at least one of these if any are specified124   */125  public void includeTags(final String... tags) {126    this.tagging.include(tags);127  }128  /**129   * Set the suite to exclude certain tags of all tests below.130   *131   * @param tags excluded tags - suites and specs must not have any of these if any are specified132   */133  public void excludeTags(final String... tags) {134    this.tagging.exclude(tags);135  }136  @Override137  public void focus(final Child child) {138    this.focusedChildren.add(child);139    focus();140  }141  @Override142  public void focus() {143    if (this.ignored) {144      return;145    }146    this.parent.focus(this);147  }148  @Override149  public void ignore() {150    this.ignored = true;151  }152  @Override153  public boolean isIgnored() {154    return this.ignored;155  }156  @Override157  public void run(final RunReporting<Description, Failure> reporting) {158    if (testCount() == 0) {159      reporting.fireTestIgnored(this.description);160      runChildren(reporting);161    } else {162      runSuite(reporting);163    }164  }165  private void runSuite(final RunReporting<Description, Failure> reporting) {166    if (isEffectivelyIgnored()) {167      runChildren(reporting);168    } else {169      this.hooks.once().sorted()170          .runAround(this.description, reporting, () -> runChildren(reporting));171    }172  }173  private void runChildren(final RunReporting<Description, Failure> reporting) {174    this.childRunner.runChildren(this, reporting);175  }176  protected void runChild(final Child child, final RunReporting<Description, Failure> reporting) {177    if (child.isEffectivelyIgnored()) {178      // running the child will make it act ignored179      child.run(reporting);180    } else if (childIsNotInFocus(child)) {181      reporting.fireTestIgnored(child.getDescription());182    } else {183      addLeafHook(this.hooks.forThisLevel().sorted(), child).runAround(child.getDescription(), reporting,184          () -> runChildWithHooks(child, reporting));185    }186  }187  private boolean childIsNotInFocus(Child child) {188    return !this.focusedChildren.isEmpty() && !this.focusedChildren.contains(child);189  }190  private void runChildWithHooks(final Child child, final RunReporting<Description, Failure> reporting) {191    getHooksFor(child).sorted().runAround(child.getDescription(), reporting,192        () -> child.run(reporting));193  }194  private Hooks addLeafHook(final Hooks hooks, final Child child) {195    if (child.isLeaf()) {196      hooks.add(testNotifier());197    }198    return hooks;199  }200  private HookContext testNotifier() {201    return new HookContext(testNotificationHook(), 0, HookContext.AppliesTo.ONCE,202        HookContext.Precedence.ROOT);203  }204  private Hook testNotificationHook() {205    return (description, notifier, block) -> {206      notifier.fireTestStarted(description);207      try {208        block.run();209      } finally {210        notifier.fireTestFinished(description);211      }212    };213  }214  @Override215  public Description getDescription() {216    final Description copy = this.description.childlessCopy();217    this.children.forEach((child) -> copy.addChild(child.getDescription()));218    return copy;219  }220  @Override221  public int testCount() {222    return this.children.stream().mapToInt(Child::testCount).sum();223  }224  public void removeAllChildren() {225    this.children.clear();226  }227  private static void defaultChildRunner(final Suite suite,228      final RunReporting<Description, Failure> reporting) {229    suite.children.forEach((child) -> suite.runChild(child, reporting));230  }231  private String sanitise(final String name) {232    return this.nameSanitiser.sanitise(name);233  }234  @Override235  public boolean isEffectivelyIgnored() {236    return this.ignored || !hasANonIgnoredChild();237  }238  private boolean hasANonIgnoredChild() {239    return this.children.stream()240        .anyMatch(child -> !child.isEffectivelyIgnored());241  }242}...Source:Configure.java  
...4import com.greghaskins.spectrum.internal.configuration.BlockIgnore;5import com.greghaskins.spectrum.internal.configuration.BlockTagging;6import com.greghaskins.spectrum.internal.configuration.BlockTimeout;7import com.greghaskins.spectrum.internal.configuration.ConfiguredBlock;8import com.greghaskins.spectrum.internal.configuration.ExcludeTags;9import com.greghaskins.spectrum.internal.configuration.IncludeTags;10import com.greghaskins.spectrum.internal.junit.Rules;11import java.time.Duration;12import java.util.concurrent.TimeUnit;13import java.util.function.Supplier;14public interface Configure {15  String EXCLUDE_TAGS_PROPERTY = "spectrum.exclude.tags";16  String INCLUDE_TAGS_PROPERTY = "spectrum.include.tags";17  /**18   * Surround a {@link Block} with the {@code with} statement to add19   * configuration and metadata to it. E.g. <code>with(tags("foo"), () -> {})</code>.<br>20   * Note: configuration metadata can be chained using the21   * {@link BlockConfigurationChain#and(BlockConfigurationChain)} method. E.g.22   * <code>with(tags("foo").and(ignore()), () -> {})</code>23   *24   * @param configuration the chainable block configuration25   * @param block the enclosed block26   * @return a wrapped block with the given configuration27   * @see #ignore(String)28   * @see #ignore()29   * @see #focus()30   * @see #tags(String...)31   * @see #timeout(Duration)32   */33  static Block with(final BlockConfigurationChain configuration, final Block block) {34    return ConfiguredBlock.with(configuration.getBlockConfiguration(), block);35  }36  /**37   * Mark a block as ignored by surrounding it with the ignore method.38   *39   * @param why explanation of why this block is being ignored40   * @param block the block to ignore41   * @return a wrapped block which will be ignored42   */43  static Block ignore(final String why, final Block block) {44    return with(ignore(why), block);45  }46  /**47   * Mark a block as ignored by surrounding it with the ignore method.48   *49   * @param block the block to ignore50   * @return a wrapped block which will be ignored51   */52  static Block ignore(final Block block) {53    return with(ignore(), block);54  }55  /**56   * Ignore the suite or spec.57   *58   * @return a chainable configuration that will ignore the block within a {@link #with}59   */60  static BlockConfigurationChain ignore() {61    return new BlockConfigurationChain().with(new BlockIgnore());62  }63  /**64   * Ignore the suite or spec.65   *66   * @param reason why this block is ignored67   * @return a chainable configuration that will ignore the block within a {@link #with}68   */69  static BlockConfigurationChain ignore(final String reason) {70    return new BlockConfigurationChain().with(new BlockIgnore(reason));71  }72  /**73   * Tags the suite or spec that is being declared with the given strings. Depending on the current74   * filter criteria, this may lead to the item being ignored during test execution.75   *76   * @param tags tags that relate to the suite or spec77   * @return a chainable configuration that has these tags set for the block in {@link #with}78   */79  static BlockConfigurationChain tags(final String... tags) {80    return new BlockConfigurationChain().with(new BlockTagging(tags));81  }82  /**83   * Marks the suite or spec to be focused.84   *85   * @return a chainable configuration that will focus the suite or spec in the {@link #with}86   */87  static BlockConfigurationChain focus() {88    return new BlockConfigurationChain().with(new BlockFocused());89  }90  /**91   * Apply timeout to all leaf nodes from this level down. Can be superseded by a lower level having its92   * own timeout.93   * @param timeout the amount of the timeout94   * @return a chainable configuration that will apply a timeout to all leaf nodes below95   */96  static BlockConfigurationChain timeout(Duration timeout) {97    return new BlockConfigurationChain().with(new BlockTimeout(timeout));98  }99  /**100   * Filter which tests in the current suite will run.101   *102   * <br><br>103   * {@code filterRun(includeTags("foo").and(excludeTags("bar")));}104   *105   * @param configuration chainable filter configuration106   * @see #includeTags(String...)107   * @see #excludeTags(String...)108   */109  static void filterRun(FilterConfigurationChain configuration) {110    configuration.applyTo(DeclarationState.instance().getCurrentSuiteBeingDeclared());111  }112  /**113   * Set the test filter to require at least one of these tags for all following specs.114   *115   * @param tagsToInclude specs (or their parent suite) must have at least one of these116   * @return FilterConfigurationChain instance for chaining further calls117   */118  static FilterConfigurationChain includeTags(String... tagsToInclude) {119    return new FilterConfigurationChain(new IncludeTags(tagsToInclude));120  }121  /**122   * Set the test filter to exclude any following specs that have one of these tags.123   *124   * @param tagsToExclude specs and their parent suite must not have any of these125   * @return FilterConfigurationChain instance for chaining further calls126   */127  static FilterConfigurationChain excludeTags(String... tagsToExclude) {128    return new FilterConfigurationChain(new ExcludeTags(tagsToExclude));129  }130  /**131   * Uses the given class as a mix-in for JUnit rules to be applied. These rules will cascade down132   * and be applied at the level of specs or atomic specs.133   *134   * @param classWithRules Class to create and apply rules to for each spec.135   * @param <T>            type of the object136   * @return a supplier of the rules object137   */138  static <T> Supplier<T> junitMixin(final Class<T> classWithRules) {139    return Rules.applyRules(classWithRules, DeclarationState.instance()::addHook);140  }141}...Source:ExcludeTags.java  
1package com.greghaskins.spectrum.internal.configuration;2import com.greghaskins.spectrum.internal.Suite;3public class ExcludeTags implements SuiteConfigurable {4  private final String[] tags;5  public ExcludeTags(String[] tags) {6    this.tags = tags;7  }8  @Override9  public void applyTo(Suite suite) {10    suite.excludeTags(this.tags);11  }12}ExcludeTags
Using AI Code Generation
1import com.greghaskins.spectrum.Spectrum;2import com.greghaskins.spectrum.Spectrum.*;3import com.greghaskins.spectrum.internal.configuration.ExcludeTags;4import java.util.Arrays;5import java.util.List;6import static com.greghaskins.spectrum.Spectrum.*;7public class ExcludeTagsTest {8    public static void main(String[] args) {9        Describe("ExcludeTags class", () -> {10            It("should return true if the tag is present in the list of excluded tags", () -> {11                ExcludeTags excludeTags = new ExcludeTags(Arrays.asList("tag1", "tag2"));12                Boolean isTagExcluded = excludeTags.isTagExcluded("tag1");13                assert (isTagExcluded);14            });15            It("should return false if the tag is not present in the list of excluded tags", () -> {16                ExcludeTags excludeTags = new ExcludeTags(Arrays.asList("tag1", "tag2"));17                Boolean isTagExcluded = excludeTags.isTagExcluded("tag3");18                assert (!isTagExcluded);19            });20            It("should return false if the tag is empty", () -> {21                ExcludeTags excludeTags = new ExcludeTags(Arrays.asList("tag1", "tag2"));22                Boolean isTagExcluded = excludeTags.isTagExcluded("");23                assert (!isTagExcluded);24            });25        });26    }27}28import com.greghaskins.spectrum.Spectrum;29import com.greghaskins.spectrum.Spectrum.*;30import com.greghaskins.spectrum.internal.configuration.ExcludeTags;31import java.util.Arrays;32import java.util.List;33import static com.greghaskins.spectrum.Spectrum.*;34public class ExcludeTagsTest {35    public static void main(String[] args) {36        Describe("ExcludeTags class", () -> {37            It("should return true if the tag is present in the list of excluded tags", () -> {38                ExcludeTags excludeTags = new ExcludeTags(Arrays.asList("tag1", "tag2"));39                Boolean isTagExcluded = excludeTags.isTagExcluded("tag1");40                assert (isTagExcluded);41            });42            It("should return false if the tag is not present in the list of excluded tags", () -> {ExcludeTags
Using AI Code Generation
1import com.greghaskins.spectrum.Spectrum;2import com.greghaskins.spectrum.internal.configuration.ExcludeTags;3import org.junit.runner.RunWith;4import static com.greghaskins.spectrum.Spectrum.*;5@RunWith(Spectrum.class)6public class ExcludeTagsTest {7    public static void main(String[] args) {8        ExcludeTags.exclude("exclude me");9        describe("excluded", () -> {10            it("should not run", () -> {11                System.out.println("This test should not run because it is tagged with exclude me");12            });13        });14    }15}16import com.greghaskins.spectrum.Spectrum;17import com.greghaskins.spectrum.internal.configuration.ExcludeTags;18import org.junit.runner.RunWith;19import static com.greghaskins.spectrum.Spectrum.*;20@RunWith(Spectrum.class)21public class ExcludeTagsTest {22    public static void main(String[] args) {23        ExcludeTags.exclude("exclude me");24        ExcludeTags.exclude("exclude me too");25        describe("excluded", () -> {26            it("should not run", () -> {27                System.out.println("This test should not run because it is tagged with exclude me");28            });29        });30        describe("excluded too", () -> {31            it("should not run", () -> {32                System.out.println("This test should not run because it is tagged with exclude me too");33            });34        });35    }36}ExcludeTags
Using AI Code Generation
1import com.greghaskins.spectrum.Spectrum;2import com.greghaskins.spectrum.Spectrum.*;3import com.greghaskins.spectrum.internal.configuration.ExcludeTags;4import com.greghaskins.spectrum.internal.configuration.Tags;5import static com.greghaskins.spectrum.Spectrum.*;6public class ExcludeTagsTest {7    public static void main(String[] args) {8        ExcludeTags excludeTags = new ExcludeTags();9        excludeTags.addTag("exclude");10        Tags tags = new Tags();11        tags.addTag("exclude");12        describe("A suite of tests", () -> {13            it("should run this test", () -> {14                System.out.println("This test should run");15            });16            it("should not run this test", () -> {17                System.out.println("This test should not run");18            }, tags);19        }, excludeTags);20    }21}ExcludeTags
Using AI Code Generation
1package com.greghaskins.spectrum.internal.configuration;2import com.greghaskins.spectrum.Spectrum;3public class ExcludeTags {4  public static void main(String[] args) {5    Spectrum.configureSpectrum(new Spectrum.SuiteBuilder() {{6      describe("a suite", () -> {7        it("is empty", () -> {8        });9      });10    }}.withTagsToExclude("a suite"));11  }12}13package com.greghaskins.spectrum.internal.configuration;14import com.greghaskins.spectrum.Spectrum;15public class ExcludeTags {16  public static void main(String[] args) {17    Spectrum.configureSpectrum(new Spectrum.SuiteBuilder() {{18      describe("a suite", () -> {19        it("is empty", () -> {20        });21      });22    }}.withTagsToExclude("is empty"));23  }24}25package com.greghaskins.spectrum.internal.configuration;26import com.greghaskins.spectrum.Spectrum;27public class ExcludeTags {28  public static void main(String[] args) {29    Spectrum.configureSpectrum(new Spectrum.SuiteBuilder() {{30      describe("a suite", () -> {31        it("is empty", () -> {32        });33      });34    }}.withTagsToExclude("a suite", "is empty"));35  }36}37package com.greghaskins.spectrum.internal.configuration;38import com.greghaskins.spectrum.Spectrum;39public class ExcludeTags {40  public static void main(String[] args) {41    Spectrum.configureSpectrum(new Spectrum.SuiteBuilder() {{42      describe("a suite", () -> {43        it("is empty", () -> {44        });45      });46    }}.withTagsToExclude("a suite", "is empty"));47  }48}49package com.greghaskins.spectrum.internal.configuration;50import com.greghaskins.spectrum.Spectrum;51public class ExcludeTags {ExcludeTags
Using AI Code Generation
1public class ExcludeTagsTest {2    public static void main(String[] args) {3        ExcludeTags excludeTags = new ExcludeTags("tag1, tag2, tag3");4        System.out.println("Exclude tags: "+excludeTags.getTags());5    }6}ExcludeTags
Using AI Code Generation
1package com.greghaskins.spectrum;2import java.io.IOException;3import java.util.ArrayList;4import java.util.List;5import org.junit.runner.Description;6import com.greghaskins.spectrum.internal.configuration.ExcludeTags;7public class ExcludeTagsTest {8  public static void main(String[] args) throws IOException {9    List<String> tags = new ArrayList<>();10    ExcludeTags excludeTags = new ExcludeTags();11    List<String> tags1 = excludeTags.getTags();12    for (String tag : tags1) {13      tags.add(tag);14    }15    System.out.println(tags);16  }17}18package com.greghaskins.spectrum;19import java.io.IOException;20import java.util.ArrayList;21import java.util.List;22import org.junit.runner.Description;23import com.greghaskins.spectrum.internal.configuration.ExcludeTags;24public class ExcludeTagsTest {25  public static void main(String[] args) throws IOException {26    List<String> tags = new ArrayList<>();27    ExcludeTags excludeTags = new ExcludeTags();28    List<String> tags1 = excludeTags.getTags();29    for (String tag : tags1) {30      tags.add(tag);31    }32    System.out.println(tags);33  }34}35package com.greghaskins.spectrum;36import java.io.IOException;37import java.util.ArrayList;38import java.util.List;39import org.junit.runner.Description;40import com.greghaskins.spectrum.internal.configuration.ExcludeTags;41public class ExcludeTagsTest {42  public static void main(String[] args) throws IOException {43    List<String> tags = new ArrayList<>();44    ExcludeTags excludeTags = new ExcludeTags();45    List<String> tags1 = excludeTags.getTags();46    for (String tag : tags1) {47      tags.add(tag);48    }ExcludeTags
Using AI Code Generation
1public class ExcludeSlowAndIntegrationTests {2    public static void main(String[] args) {3        ExcludeTags excludeTags = new ExcludeTags("slow", "integration");4        Configuration configuration = new Configuration(excludeTags);5        Runner.run(ExampleSpec.class, configuration);6    }7}8public class ExcludeSlowAndIntegrationTests {9    public static void main(String[] args) {10        ExcludeTags excludeTags = new ExcludeTags("slow", "integration");11        Configuration configuration = new Configuration(excludeTags);12        Runner.run(ExampleSpec.class, configuration);13    }14}15public class ExcludeSlowAndIntegrationTests {16    public static void main(String[] args) {17        ExcludeTags excludeTags = new ExcludeTags("slow", "integration");18        Configuration configuration = new Configuration(excludeTags);19        Runner.run(ExampleSpec.class, configuration);20    }21}22public class ExcludeSlowAndIntegrationTests {23    public static void main(String[] args) {24        ExcludeTags excludeTags = new ExcludeTags("slow", "integration");25        Configuration configuration = new Configuration(excludeTags);26        Runner.run(ExampleSpec.class, configuration);27    }28}29public class ExcludeSlowAndIntegrationTests {30    public static void main(String[] args) {31        ExcludeTags excludeTags = new ExcludeTags("slow", "integration");32        Configuration configuration = new Configuration(excludeTags);33        Runner.run(ExampleSpec.class, configuration);34    }35}Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
