How to get the infinitest-eclipse plug-in-project running in eclipse

165 views
Skip to first unread message

Matthias Droste

unread,
Mar 13, 2011, 6:06:23 PM3/13/11
to infinitest-dev
Hi,

I just found out about infinitest a few weeks ago and now I really
would like to push it to better 64-bit and testng-integration.
But, alas, I don't really get the project running in my eclipse.
The reason seems to be that the project's structure differs a bit from
a normal eclipse-plug-in:
plugin.xml and MANFEST.MF are in src/main/resources instead of the
rout-folder and the whole setup of these files is only done by felix/
maven.
So when I try to start the infinitest-eclipse project by clicking
"launch an eclipse application" in the plugin-editor, an eclipse
starts but not the infinitest-eclipse. When I move the files into the
root folder, the plugin starts but fails (as they are not correctly
setup of course).

Could you please tell me how you get this project running in eclipse /
how you develop/debug it?

thanks,
Matthias

Ben Rady

unread,
Mar 13, 2011, 6:08:15 PM3/13/11
to infinit...@googlegroups.com
I was under the impression that building the project with maven initialized all the files necessary to run the plugin in the eclipse PDE. Is this not the case?

Ben

David Gageot

unread,
Mar 14, 2011, 11:31:32 AM3/14/11
to infinit...@googlegroups.com
Hi all.

On Sun, Mar 13, 2011 at 11:08 PM, Ben Rady <ben...@gmail.com> wrote:
I was under the impression that building the project with maven initialized all the files necessary to run the plugin in the eclipse PDE. Is this not the case?
  
Unfortunately not. It used to be true but fixes we made to the maven build broke this important feature.
In fact it seems to be very difficult with recent versions of maven to have both a correct one-pass build, 
a simple release process and still being able to test the plugin in a development environment.

To clarify a bit what I just said:
 
1) One-pass build is when you clone the project from github, just run mvn clean install and mvn eclipse:eclipse and it 
just works the first time. Very often maven projects have circular dependencies that make it necessary to run a mvn clean install -DskipTests to install the jars in the local repository. Future maven commands will the references this jars. Infinitest used to have this problem. It is now fixed.

2) Simple release process is important. Nobody wants to manually synchronize properties/xml/manifest files with the pom.xml
Infinitest used to depend on a custom maven plugin to do these things. It is now standard maven configuration, mainly using apache felix plugin.

3) Being able to debug infinitest inside Eclipse using the pde tools is very important. It used to be possible. It is not anymore.
From what I understand, one way to do it is to (at least) provide a MANIFEST file at the right place. This breaks 2) because you then have to manually synchronize a pom.xml and a MANIFEST.

I tried to port Infinitest which should *in theory* fix all theses problems. I can't say I was very impressed.

Doesn't anyone have any idea to fix this situation?

David.

Kyle Smith

unread,
Mar 14, 2011, 1:04:49 PM3/14/11
to infinit...@googlegroups.com
You can configure the maven-bundle-plugin to put the MANIFEST.MF
wherever you want. For my team's projects we have it generate
META-INF/MANIFEST.MF at the root of the project and it can then be
imported into Eclipse. The maven-bundle-plugin configuration in the
pom.xml becomes the source of truth.

ks

David Gageot

unread,
Mar 14, 2011, 1:43:17 PM3/14/11
to infinit...@googlegroups.com
Thanks Kyle,

I push an experimental branch on github https://github.com/infinitest/infinitest/commits/PdeExperimentation
In that branch, the META-IF/MANIFEST in generated at the root of the project.
To generate it, one can use mvn clean install -DskipTests

I also tried to create a launcher for Infinitest inside Eclipse without success. Maybe someone can help? Matthias?

David Gageot

CTO - Algodeal
http://www.algodeal.com
15 rue Drouot
75009 Paris
06 26 13 13 37

Ben Rady

unread,
Mar 14, 2011, 1:49:41 PM3/14/11
to infinit...@googlegroups.com, David Gageot
Perhaps generating an empty plugin project and working backwards from there would provide some insight.

Matthias Droste

unread,
Mar 15, 2011, 4:20:17 AM3/15/11
to infinit...@googlegroups.com

Hi,

Cool, so it wasn't just me being stupid :-)
Ok, then I'll take a look at the branch.

Matthias Droste

unread,
Mar 20, 2011, 7:16:11 PM3/20/11
to infinitest-dev
Hi,

I've pushed my changes to my fork of the project. You should see a
pull-request now, at least I hope so (my first).

Results: I can now launch the infinitest-plugin from eclipse's manfest-
editor (I added a short explanation to the readme)
So I don't think we need a shared launch-config, eclipse creates that
automatically for you anyway. Still, I added mine just to show you,
changes from the default are a few excluded (machine-specific) plug-
ins and an increased permgenspace.
One caveat: I'm working on 64bit, so I had to add swt64-bit and a
refined profile into the pom. I don't know if that works on every PC.

Hope you like it :-)
Matthias

David Gageot

unread,
Mar 21, 2011, 6:03:34 AM3/21/11
to infinit...@googlegroups.com, Matthias Droste
Thank you very much Matthias.

I merged your changes into PdeExperimentation branch. Had to fix a few things such as
the plugin.xml not being packaged anymore.

We tested the launcher on Linux 64bits and on OSX 64bits. It works great.

Can you verify that it still works on you machine in order for me to merge the patch
into the master branch?

David.

Matthias Droste

unread,
Mar 21, 2011, 4:46:29 PM3/21/11
to infinitest-dev
Hi David,

yes, just tested, still working as a charm.

Matthias

On 21 Mrz., 11:03, David Gageot <gag...@algodeal.com> wrote:
> Thank you very much Matthias.
>
> I merged your changes into
> PdeExperimentation<https://github.com/infinitest/infinitest/commits/PdeExperimentation>
> branch.
> Had to fix a few things such as
> the plugin.xml not being packaged anymore.
>
> We tested the launcher on Linux 64bits and on OSX 64bits. It works great.
>
> Can you verify that it still works on you machine in order for me to merge
> the patch
> into the master branch?
>
> David.
>
> On Mon, Mar 21, 2011 at 12:16 AM, Matthias Droste <
>

David Gageot

unread,
Mar 25, 2011, 12:58:18 PM3/25/11
to infinit...@googlegroups.com, Matthias Droste
Great.

I merged the PdeExperimentation branch into master.


David Gageot

CTO - Algodeal
http://www.algodeal.com
15 rue Drouot
75009 Paris
06 26 13 13 37


Message has been deleted

Binh Truong

unread,
Apr 17, 2011, 5:18:10 PM4/17/11
to infinitest-dev
Hello,

after some fiddling, I finally got a build ready for eclipse.
But I can't get it to start. Here is a what the error log says

eclipse.buildId=M20110210-1200
java.version=1.6.0_20
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=de_DE
Framework arguments: -product org.eclipse.sdk.ide
Command-line arguments: -product org.eclipse.sdk.ide -data /home/b1/
workspace/../runtime-EclipseApplication -dev file:/home/b1/
workspace/.metadata/.plugins/org.eclipse.pde.core/Eclipse Application/
dev.properties -os linux -ws gtk -arch x86 -consoleLog


Error
Sun Apr 17 23:02:05 CEST 2011
An error occurred while automatically activating bundle
org.infinitest.eclipse (194).

org.osgi.framework.BundleException: The activator
org.infinitest.eclipse.InfinitestPlugin for bundle
org.infinitest.eclipse is invalid
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:
156)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:
751)
at
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:
370)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:
284)
at
org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:
417)
at
org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:
265)
at
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:
106)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:
453)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:
216)
at
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:
393)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:
469)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:
422)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:
410)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:
107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at
org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:
338)
at
org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:
232)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:
1197)
at
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:
174)
at
org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:
904)
at
org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:
243)
at
org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:
55)
at
org.eclipse.ui.internal.util.Util.safeLoadExecutableExtension(Util.java:
879)
at
org.eclipse.ui.internal.menus.TrimAdditionCacheEntry.loadWidget(TrimAdditionCacheEntry.java:
249)
at
org.eclipse.ui.internal.menus.TrimAdditionCacheEntry.getWidgets(TrimAdditionCacheEntry.java:
222)
at
org.eclipse.ui.internal.menus.TrimBarManager2$STrimBuilder.processAdditions(TrimBarManager2.java:
357)
at
org.eclipse.ui.internal.menus.TrimBarManager2$STrimBuilder.build(TrimBarManager2.java:
330)
at
org.eclipse.ui.internal.menus.TrimBarManager2.update(TrimBarManager2.java:
109)
at
org.eclipse.ui.internal.WorkbenchWindow.updateLayoutDataForContents(WorkbenchWindow.java:
3834)
at
org.eclipse.ui.internal.WorkbenchWindow.setLayoutDataForContents(WorkbenchWindow.java:
3847)
at
org.eclipse.ui.internal.WorkbenchWindow.createDefaultContents(WorkbenchWindow.java:
1130)
at
org.eclipse.ui.internal.WorkbenchWindowConfigurer.createDefaultContents(WorkbenchWindowConfigurer.java:
623)
at
org.eclipse.ui.application.WorkbenchWindowAdvisor.createWindowContents(WorkbenchWindowAdvisor.java:
268)
at
org.eclipse.ui.internal.WorkbenchWindow.createContents(WorkbenchWindow.java:
1016)
at org.eclipse.jface.window.Window.create(Window.java:431)
at org.eclipse.ui.internal.Workbench
$64.runWithException(Workbench.java:3598)
at org.eclipse.ui.internal.StartupThreading
$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:
134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164)
at
org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:
803)
at org.eclipse.ui.internal.Workbench
$31.runWithException(Workbench.java:1567)
at org.eclipse.ui.internal.StartupThreading
$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:
134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2548)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:
332)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:
664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:
149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:
115)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:
196)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:
110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:
79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
369)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
at org.eclipse.equinox.launcher.Main.main(Main.java:1384)
Caused by: java.lang.NoClassDefFoundError: org/infinitest/util/
LoggingListener
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2406)
at java.lang.Class.getConstructor0(Class.java:2716)
at java.lang.Class.newInstance0(Class.java:343)
at java.lang.Class.newInstance(Class.java:325)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:
151)
... 67 more
Caused by: java.lang.ClassNotFoundException:
org.infinitest.util.LoggingListener
at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:
506)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:
422)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:
410)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:
107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 73 more
Root exception:
java.lang.NoClassDefFoundError: org/infinitest/util/LoggingListener
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2406)
at java.lang.Class.getConstructor0(Class.java:2716)
at java.lang.Class.newInstance0(Class.java:343)
at java.lang.Class.newInstance(Class.java:325)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:
151)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:
751)
at
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:
370)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:
284)
at
org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:
417)
at
org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:
265)
at
org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:
106)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:
453)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:
216)
at
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:
393)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:
469)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:
422)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:
410)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:
107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at
org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:
338)
at
org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:
232)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:
1197)
at
org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:
174)
at
org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:
904)
at
org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:
243)
at
org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:
55)
at
org.eclipse.ui.internal.util.Util.safeLoadExecutableExtension(Util.java:
879)
at
org.eclipse.ui.internal.menus.TrimAdditionCacheEntry.loadWidget(TrimAdditionCacheEntry.java:
249)
at
org.eclipse.ui.internal.menus.TrimAdditionCacheEntry.getWidgets(TrimAdditionCacheEntry.java:
222)
at
org.eclipse.ui.internal.menus.TrimBarManager2$STrimBuilder.processAdditions(TrimBarManager2.java:
357)
at
org.eclipse.ui.internal.menus.TrimBarManager2$STrimBuilder.build(TrimBarManager2.java:
330)
at
org.eclipse.ui.internal.menus.TrimBarManager2.update(TrimBarManager2.java:
109)
at
org.eclipse.ui.internal.WorkbenchWindow.updateLayoutDataForContents(WorkbenchWindow.java:
3834)
at
org.eclipse.ui.internal.WorkbenchWindow.setLayoutDataForContents(WorkbenchWindow.java:
3847)
at
org.eclipse.ui.internal.WorkbenchWindow.createDefaultContents(WorkbenchWindow.java:
1130)
at
org.eclipse.ui.internal.WorkbenchWindowConfigurer.createDefaultContents(WorkbenchWindowConfigurer.java:
623)
at
org.eclipse.ui.application.WorkbenchWindowAdvisor.createWindowContents(WorkbenchWindowAdvisor.java:
268)
at
org.eclipse.ui.internal.WorkbenchWindow.createContents(WorkbenchWindow.java:
1016)
at org.eclipse.jface.window.Window.create(Window.java:431)
at org.eclipse.ui.internal.Workbench
$64.runWithException(Workbench.java:3598)
at org.eclipse.ui.internal.StartupThreading
$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:
134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164)
at
org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:
803)
at org.eclipse.ui.internal.Workbench
$31.runWithException(Workbench.java:1567)
at org.eclipse.ui.internal.StartupThreading
$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:
134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2548)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:
332)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:
664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:
149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:
115)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:
196)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:
110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:
79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
369)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
at org.eclipse.equinox.launcher.Main.main(Main.java:1384)
Caused by: java.lang.ClassNotFoundException:
org.infinitest.util.LoggingListener
at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:
506)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:
422)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:
410)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:
107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 73 more

How can I get it to work?

Thanks,
Binh Truong


On Mar 25, 6:58 pm, David Gageot <gag...@algodeal.com> wrote:
> Great.
>
> I merged the PdeExperimentation branch into master.
>
> David Gageot
>
> CTO - Algodealhttp://www.algodeal.com

David Gageot

unread,
Apr 21, 2011, 12:41:12 PM4/21/11
to infinit...@googlegroups.com
Hi,

Have you tried the latest commits I made today?

David.

Binh Truong

unread,
Apr 21, 2011, 3:34:08 PM4/21/11
to infinitest-dev
Hi David,

yes, I just tested it - works now :)
Thank you,

Binh.

On Apr 21, 6:41 pm, David Gageot <dgag...@gmail.com> wrote:
> Hi,
>
> Have you tried the latest commits I made today?
>
> David.
>
> ...
>
> read more »
Reply all
Reply to author
Forward
0 new messages