Arquillian Governor Github


#1

Hi I have started working in Arquillian Governor Github integration. First of all I have made some research, and before starting code I would like to discuss some things:

I have been reviewing all libraries that offers access to github. The best one in my opinion is https://github.com/eclipse/egit-github/tree/master/org.eclipse.egit.github.core because it has no dependencies to external libraries, so it is perfect because we won’t get any conflict with Json parsers, REST clients, …

Then about Governor, I think that some properties should be moved to core instead of JIRA module. For example:

server, force, closePassed and closingMessage, because it is something that all integrators should implement. And this implies not only changing the configuration class but also the service interface.

Also not related with this issue I think it would be great if we could do something like Serenity BDD and make the workflow configurable, so for example apart from having automatically close feature, also open a feature when it is closed but the test has just failed.

WDYT?


#2

egit looks good but I am not sure if it is compatible when it comes to licences but i guess it should be ok to use it

i am against moving these properties to core because you otherwise force the implementator to implement it, governor is not only about the various issue trackers, you can resolve your test execution condition against anything and it does not have to be issue tracker at all. someone just wants to resolve it against some system property but moving it to api forces him to deal with something he is not interested in at all.

automatic opening of the issue if it fails even it is resolved as done is excellent idea and i will be happy to see it in jira and git hub implementation

it would be nice to cover bugzilla as well


#3

egit looks good but I am not sure if it is compatible when it comes to licences

I think it is possible see point 30 of https://eclipse.org/legal/eplfaq.php


#4

Github integration almost done. Only I need to create the ClientFactory and fix minor issues, but I may say that the hard work is already done.

Also I thought about another feature, injecting issue at test.

We can create an Issue “wrapper” class on API which encapsulates an issue for example only exposing issue id, author and description. This class should be a wrapper because the issue can be a JIRA issue or GithubIssue. Then with this class we should be able to do something like:

@ArquillianResource
Issue issue;

@JIRA("ARQ-123")
public void test() {
  System.out.println("Fixing Issue ARQ-123 with description" + issue.getDescription();
}

Then for each test the issue instance is updated with the issue of the test we are executing. Why this could be important? Because then you will be able to put on issue description field some information like test parameters, or BDD description (Gherkin or JBehave format), and parse on test and do something with it.

WDYT?


#5

Intriguing idea. Opens up some interesting reporting / exception message options.


#6

hi guys, I have just implemented this feature, but I don’t know why even the test is failing, the TestResult instance received in the observer method says that it is PASSED.

I have debugged and for what I have been able to see it seems that the execution of one test throw two times TestResult event one with FAILED and another with PASSED and this is the one I received in Governor.

You can see code here https://github.com/lordofthejars/arquillian-governor then put a debug point at https://github.com/lordofthejars/arquillian-governor/blob/master/github/src/main/java/org/arquillian/extension/governor/github/impl/GithubTestExecutionDecider.java#L86
and execute this test https://github.com/lordofthejars/arquillian-governor/blob/master/github/src/test/java/org/arquillianextension/governor/github/ITGithubGovernorTest.java#L27

You will see that the TestResult is PASSED. As a side note I am using Arquillian in standalone mode.

Any idea?


#7

Seems to be a miss match in what’s caught and handled when running in standalone mode.

https://issues.jboss.org/browse/ARQ-1957

Try this: (needs more testing)