Hey, I just wanted to drop in and see if any progress had been made on this? I for one am very excited about the possibility.
Thank you, Steven N. Oliver On Fri, Jan 8, 2016 at 2:55 PM -0800, "Chris Daley" <chebiza...@gmail.com> wrote: Hi Al, Thanks for the input, this is very much appreciated and incredibly useful! I had in fact just written a post on my blog asking for exactly this sort of feedback - you can read it here - http://chrisdaley.biz/test-driven-development-in-vala-pt-1.html I've got some time to work on this over the next few weeks and hope to have a usable release out for testing not long after, so now's the time for anyone else interested in a testing framework to hit me up with your ideas! Have a good weekend, Cheers Chris D 2016-01-08 14:29 GMT-08:00 Al Thomas : > > From: Chris Daley > > > Sent: Tuesday, 5 January 2016, 1:16 > > Subject: Re: [Vala] Testing framework > > > > I've done some thinking about this over the last couple of months and > used > > the holiday period to finish off a few things, namely a port of Gherkin > to > > Vala. You can grab it from here if you want to check it out: > > https://github.com/chebizarro/gherkin-vala > > > > I'm going to be sketching out what I think is a reasonable > > roadmap over the next week or so with a view to an alpha release around > the > > end of February. If anyone is interested in contributing, or has any > > specific ideas about what sort of features they would find the most > useful, > > > please get in touch > > > Hi, > > Great work on porting Gherkin 3 to Vala. > > I wanted to put forward a few ideas that I have been slowly > researching over the past year or so in the hope they are > > insightful to any developments of testing tools for Vala. > > Gherkin > ------- > Gherkin is a language for structuring human language in a > way that allows business analysts, developers and testers to define > features of an application. > > Some computer languages have tools available to developers to convert > > Gherkin to an outline of a computer program. The following meaningless > > example shows the structure. This uses PHP's Behat to convert Gherkin > > to PHP: > > Feature: test > > Background: given this is a test # features/test.feature:3 > > Scenario: testing of app # features/test.feature:5 > When i run something > Then it passes > > 1 scenario (1 undefined) > 2 steps (2 undefined) > 0m0.17s (9.41Mb) > > --- FeatureContext has missing steps. Define them with these snippets: > > /** > * @When i run something > */ > public function iRunSomething() > { > throw new PendingException(); > } > > /** > * @Then it passes > */ > public function itPasses() > { > throw new PendingException(); > } > > It is the feature context that forms the basis of generating > automated acceptance tests from the features specified in > > Gherkin. The developer then fills in the gaps with code that > drives the tests. In PHP web development this is a tool like > Mink that can drive various headless web browsers. > > Automatic code generation for Vala > ---------------------------------- > I can think of two approaches to generation code. I have > tried neither. > > The first is to use libvala to generate a Vala AST then output > the AST. Potentially libvala could be modified to generate a > > Genie version of the AST. This appeals to me. > > The other approach would be similar to Valadoc: > > https://git.gnome.org/browse/valadoc/tree/src/libvaladoc/api/formalparameter.vala#n131 > > Code generation could also be useful for anyone wanting to > > develop a tool similar to RSpec. So a common approach using libvala > may be helpful. I think Anjuta CTags also uses libvala for > > autosuggestion of function names etc. See: > > https://github.com/GNOME/anjuta/blob/master/plugins/symbol-db/anjuta-tags/ctags-visitor.vala > > Acceptance Testing Drivers > -------------------------- > This is probably the hardest part given the wide range of > interfaces available. > > Gherkin is from Cucumber written in Ruby with web application > development in mind. So I think most tools there use web > > interfaces. In the Vala world this could be done with libsoup > for a text analysis of the web interface, but also embedding > Webkit or Gecko which also allows Javascript to be tested. > > Vala is often used for desktop GUI development. So Linux > Desktop Testing Project ( http://ldtp.freedesktop.org/wiki/ ) > using Assistive Technology Service Provider Interface ( > > > https://en.wikipedia.org/wiki/Assistive_Technology_Service_Provider_Interface > ) may be relevant. > > Of course software is also developed for technical users. So > there are potentially command line interfaces, D-Bus interfaces, shared > library interfaces and so on to cater for. > > For command line interfaces I'm starting to think GLib's > trap_subprocess may be useful: > > http://valadoc.org/#!api=glib-2.0/GLib.Test.trap_subprocess > I'm trying to write functional tests for Genie, but some > > features need to stop the compilation process. e.g. attempting > to override a protected method in a class. The test should > > trap the error from valac and make sure it matches the > > expected error. > > > Test Output > ----------- > This is probably moving away from specification by example > with Gherkin and moving towards unit testing. Specifically > it's about my experience with GLib testing framework reports. > > Each test can output the results as TAP (Test Anything Protocol) > by using the --tap switch. I would recommend TAP because it > is processed more easily by a lot of tools.e.g. Jenkins build > server. > > > In the past I have done unit tests using a script such as: > > #/bin/sh > > tests="arrays_multiline > variables_declarations > variables_type_inference" > > # Build test binaries > for test in $tests > do > valac $test.gs > done > > # Run test binaries > gtester --keep-going -o results.xml $tests > > # Fix missing info section from results - see > https://bugzilla.gnome.org/show_bug.cgi?id=668035 > > info=" Unknown Unknown " > sed -i 's||'$info'|g' results.xml > > # Generate HTML report > gtester-report results.xml > report.html > > > I have not figured out a convenient way to get the output as TAP, > > although a script for automake is available: > https://git.gnome.org/browse/glib/tree/tap-driver.sh > > Unit Test of Binaries > --------------------- > Vala and Genie produce binaries of course. > > So far I have produced a test binary that is a Position > Independent Executable ( > > https://securityblog.redhat.com/2012/11/28/position-independent-executables-pie/ > ) that has all the symbols in the dynamic table. This > allows each unit test to treat the test binary as a > > shared object to it can test individual functions, but also > be run as an executable for functional testing. > > I haven't figured out how to do this for a production binary. > This would probably a static build so the production binary has > the unit tests aggregated after it in memory and the linker > should use the symbol table and not the dynamic symbol table. > > For a test binary you may also want to include the --debug > flag in Valac to include Vala filenames. I think this was tried > > for code coverage reports with Valum - see > > https://coveralls.io/builds/4147345 for example. Not sure of the results. > > > Vala Bugs to be Aware Off > ------------------------- > May be of interest: > https://bugzilla.gnome.org/show_bug.cgi?id=704072 > https://bugzilla.gnome.org/show_bug.cgi?id=597999 > https://bugzilla.gnome.org/show_bug.cgi?id=739725 > > Hope all this helps frame any work you may do on Vala > testing. > > All the best with it, > > Al > -- Chris Daley Pacific Northwest e: chebiza...@gmail.com w: http://chrisdaley.biz m: +1601 980 1249 s: chebizarro tw: chebizarro tz: PDT _______________________________________________ vala-list mailing list vala-list@gnome.org https://mail.gnome.org/mailman/listinfo/vala-list _______________________________________________ vala-list mailing list vala-list@gnome.org https://mail.gnome.org/mailman/listinfo/vala-list