private boolean readFromScalaDsl(final Object instance) { try { // ensure scala module is activated load("cucumber.api.scala.ScalaDsl"); // read info directly {@see cucumber.api.scala.ScalaDsl} final Class<?> clazz = instance.getClass(); final Collection<StepDefinition> stepDefinitions = readField(clazz, "stepDefinitions", instance, StepDefinition.class); for (final StepDefinition sd : stepDefinitions) { glue.addStepDefinition(StepDefinition.class.cast(sd)); } final Collection<HookDefinition> beforeHooks = readField(clazz, "beforeHooks", instance, HookDefinition.class); for (final HookDefinition sd : beforeHooks) { glue.addBeforeHook(HookDefinition.class.cast(sd)); } final Collection<HookDefinition> afterHooks = readField(clazz, "afterHooks", instance, HookDefinition.class); for (final HookDefinition sd : afterHooks) { glue.addAfterHook(HookDefinition.class.cast(sd)); } return stepDefinitions.size() + beforeHooks.size() + afterHooks.size() > 0; } catch (final Exception e) { return false; } }
public void runAfterHooks(Reporter reporter, Set<Tag> tags) { runHooks(glue.getAfterHooks(), reporter, tags, false); }
public void runBeforeHooks(Reporter reporter, Set<Tag> tags) { runHooks(glue.getBeforeHooks(), reporter, tags, true); }
private void addHook(final Annotation annotation, final Method method, final Object instance) { if (annotation.annotationType().equals(Before.class)) { final String[] tagExpressions = ((Before) annotation).value(); final long timeout = ((Before) annotation).timeout(); glue.addBeforeHook(new ArquillianHookDefinition(method, tagExpressions, ((Before) annotation).order(), timeout, instance)); } else { final String[] tagExpressions = ((After) annotation).value(); final long timeout = ((After) annotation).timeout(); glue.addAfterHook(new ArquillianHookDefinition(method, tagExpressions, ((After) annotation).order(), timeout, instance)); } }
public void addStepDefinition(Global jsStepDefinition, NativeRegExp regexp, NativeFunction bodyFunc, NativeFunction argumentsFromFunc) throws Throwable { StackTraceElement stepDefLocation = jsLocation(); RhinoStepDefinition stepDefinition = new RhinoStepDefinition(cx, scope, jsStepDefinition, regexp, bodyFunc, stepDefLocation, argumentsFromFunc); glue.addStepDefinition(stepDefinition); }
public void addAfterHook(Function fn, String[] tags, int order, long timeoutMillis) { StackTraceElement stepDefLocation = jsLocation(); RhinoHookDefinition hookDefinition = new RhinoHookDefinition(cx, scope, fn, tags, order, timeoutMillis, stepDefLocation); glue.addAfterHook(hookDefinition); } }
public void addBeforeHook(Function fn, String[] tags, int order, long timeoutMillis) { StackTraceElement stepDefLocation = jsLocation(); RhinoHookDefinition hookDefinition = new RhinoHookDefinition(cx, scope, fn, tags, order, timeoutMillis, stepDefLocation); glue.addBeforeHook(hookDefinition); }
public void performInternalCucumberOperations(final Object testInstance, final TEST_NOTIFIER runNotifier) throws Exception { final Class<?> javaTestClass = getTestedClass(); final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); final InputStream configurationInputStream = classLoader.getResourceAsStream(ClientServerFiles.CONFIG); final Properties cukespaceConfigurationProperties = loadCucumberConfigurationProperties(configurationInputStream); final RuntimeOptions runtimeOptions = loadRuntimeOptions(javaTestClass, cukespaceConfigurationProperties); final boolean reported = Boolean.parseBoolean(cukespaceConfigurationProperties.getProperty(CucumberConfiguration.REPORTABLE, "false")); final StringBuilder reportBuilder = new StringBuilder(); if (reported) { runtimeOptions.addPlugin(new JSONFormatter(reportBuilder)); } final InputStream gluesInputStream = classLoader.getResourceAsStream(ClientServerFiles.GLUES_LIST); final Collection<Class<?>> glues = loadGlues(gluesInputStream, classLoader, javaTestClass); final ArquillianBackend arquillianBackend = new ArquillianBackend( glues, javaTestClass, testInstance, cukespaceConfigurationProperties.getProperty(CucumberConfiguration.OBJECT_FACTORY)); final CucumberRuntime cucumberRuntime = new CucumberRuntime(null, classLoader, singletonList(arquillianBackend), runtimeOptions); final Map<String, Collection<URL>> featuresMap = Features.createFeatureMap(CucumberConfiguration.instance().getTempDir(), cukespaceConfigurationProperties.getProperty(CucumberConfiguration.FEATURE_HOME), javaTestClass, classLoader); final List<CucumberFeature> cucumberFeatures = getCucumberFeatures(runtimeOptions.getFilters(), testInstance, classLoader, featuresMap); final Formatter formatter = runtimeOptions.formatter(classLoader); final Reporter reporter = runtimeOptions.reporter(classLoader); final StepDefinitionReporter stepDefinitionReporter = runtimeOptions.stepDefinitionReporter(classLoader); cucumberRuntime.getGlue().reportStepDefinitions(stepDefinitionReporter); runFeatures(cucumberFeatures, cucumberRuntime, getReporter(reporter, formatter, runtimeOptions), runNotifier); if (reported) { final String path = cukespaceConfigurationProperties.getProperty(CucumberConfiguration.REPORTABLE_PATH); addReportTestIntoFile(path, javaTestClass, reportBuilder); } handleCucumberTestErrors(cucumberRuntime.getErrors(), cucumberRuntime); }
public void addStepDefinition(Global jsStepDefinition, NativeRegExp regexp, NativeFunction bodyFunc, NativeFunction argumentsFromFunc) throws Throwable { StackTraceElement stepDefLocation = jsLocation(); RhinoStepDefinition stepDefinition = new RhinoStepDefinition(cx, scope, jsStepDefinition, regexp, bodyFunc, stepDefLocation, argumentsFromFunc); glue.addStepDefinition(stepDefinition); }
public void addAfterHook(Function fn, String[] tags, int order, long timeoutMillis) { StackTraceElement stepDefLocation = jsLocation(); RhinoHookDefinition hookDefinition = new RhinoHookDefinition(cx, scope, fn, tags, order, timeoutMillis, stepDefLocation); glue.addAfterHook(hookDefinition); } }
public void addBeforeHook(Function fn, String[] tags, int order, long timeoutMillis) { StackTraceElement stepDefLocation = jsLocation(); RhinoHookDefinition hookDefinition = new RhinoHookDefinition(cx, scope, fn, tags, order, timeoutMillis, stepDefLocation); glue.addBeforeHook(hookDefinition); }
this.getGlue().reportStepDefinitions(sdr); TestContext tc = TestContext.getCurrent(); AbstractZucchiniTest azt = tc.getParentTest();
@Override public void loadGlue(Glue glue, List<String> gluePaths) { URI uri = uriBuilderFor(GLUES_URI).queryParam("path", gluePaths.toArray()).buildAndExpand().toUri(); GlueDTO remoteGlue = template.postForObject(uri, null, GlueDTO.class); for (HookDefinitionDTO definitionDto : remoteGlue.getBeforeHooks()) { glue.addBeforeHook(new RemoteHookDefinition(this, definitionDto)); } for (HookDefinitionDTO definitionDto : remoteGlue.getAfterHooks()) { glue.addAfterHook(new RemoteHookDefinition(this, definitionDto)); } for (StepDefinitionDTO definitionDto : remoteGlue.getStepDefinitions()) { glue.addStepDefinition(new RemoteStepDefinition(this, definitionDto)); } }
public void addStepDefinition(Pattern regexp, long timeoutMillis, Closure body) { glue.addStepDefinition(new GroovyStepDefinition(regexp, timeoutMillis, body, currentLocation(), this)); }
public void addAfterHook(TagExpression tagExpression, long timeoutMillis, int order, Closure body) { glue.addAfterHook(new GroovyHookDefinition(tagExpression, timeoutMillis, order, body, currentLocation(), this)); }
public void addBeforeHook(TagExpression tagExpression, long timeoutMillis, int order, Closure body) { glue.addBeforeHook(new GroovyHookDefinition(tagExpression, timeoutMillis, order, body, currentLocation(), this)); }
private void addStepDefinition(final Annotation annotation, final Method method, final Object instance) { try { glue.addStepDefinition(new ArquillianStepDefinition(method, pattern(annotation), timeout(annotation), instance)); } catch (DuplicateStepDefinitionException e) { throw e; } catch (Throwable e) { throw new CucumberException(e); } }