This is a nice pull request even, I've merged it.

Is there a simple way to automatically detect and fill the tests lists?

Also, what extra features would be nice to see in this template ?

Thanks!

On Fri, Feb 5, 2016 at 3:44 AM, Evan Nemerson <e...@coeus-group.com> wrote:
> You're missing support for `make test`.
>
> This is a bit more complicated than it needs to be since recent
> versions of CMake will complain if you try to create a "test" target;
> they've decided to reserve it for their ctest framework, so the only
> real choice is to use ctest.
>
> ctest is really geared towards executing multiple small test programs
> instead of one monolithic test, but you can get around that by running
> the same executable multiple times and having and only executing a
> subset of the tests each time.  If you don't, the ctest output will
> always treat your tests as a single test, and the usefulness of reports
> will be quite limited.
>
> If you want an example, you can look at
> <https://github.com/quixdb/squash/blob/master/tests/CMakeLists.txt>; it
> is for C tests using µnit not Vala tests using glib, but that only
> makes a difference in how you build the executable… the ctest
> integration part is the same.
>
> Assuming your executable is `my_project_unit_tests', you would want
> something like this:
>
>     # Enable ctest
>     enable_testing()
>
>     # Build your executable here, you'll have to figure this part out
>     # on your own, it's project-specific.
>     add_executable(my_project_unit_tests …)
>
>     # List of tests in the `my_project_unit_tests' executable that you
>     # want to execute.  The project currently only has a single test,
>     # "/my_class/foo", so I've added a few more so you get the idea.
>     set(MY_PROJECT_TESTS
>       /my_class/foo
>       /my_class/bar
>       /my_class/baz
>       /your_class)
>
>     foreach(test_name ${MY_PROJECT_TESTS})
>       add_test(NAME ${test_name}
>         COMMAND $<TARGET_FILE:my_project_unit_tests> -p ${test_name})
>     endforeach(test_name)
>
> The only line here that really needs an explanation is the second to
> last.  The $<…> thing is a generator expression; see <https://cmake.org
> /cmake/help/v3.0/manual/cmake-generator-
> expressions.7.html#manual:cmake-generator-expressions%287%29>.  In that
> case it will just be the path to the my_project_unit_tests executable.
>  The `-p ${test_name}' part just tells the executable to execute only a
> specific test instead of all of them.
>
> Once you're done, you should be able to run the tests with either `make
> test` or by just running `ctest` directly.
>
> <shameless-plug>
> Also, instead of the build.sh script, I'd like to suggest
> <https://github.com/nemequ/configure-cmake/>.
> </shameless-plug>
>
>
> -Evan
>
>
>
> On Fri, 2016-02-05 at 01:31 -0200, Felipe Lavratti wrote:
>> Steven,
>>
>> Since you brought it, I took the liberty to commit a project template
>> with my current setup of using Atom + Vala + Gee TestCase +
>> Cmake.
>>
>> It is here: https://github.com/felipe-lavratti/vala-unittests-cmake
>>
>> Hope it helps.
>>
>>
>> On Thu, Feb 4, 2016 at 9:09 PM, Steven Oliver <oliver.ste...@gmail.co
>> m> wrote:
>> > I'm in the process of implementing the gee test suite into my
>> > project. So far so good. The test suite was easy to figure out. So
>> > far my biggest problem has been trying to figure out how to setup
>> > CMake for it all to work.
>> >
>> > Thank you,
>> > Steven N. Oliver
>> >
>> >
>> >
>> >
>> >
>> > On Thu, Feb 4, 2016 at 3:07 PM -0800, "Chris Daley" <chebizarro@gma
>> > il.com> wrote:
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > You may also find the Gee.TestCase class suits your needs - it
>> > certainly
>> > makes the tests easier to read and is more xUnit like in its
>> > approach than
>> > the 'naked' GLib Test classes.
>> >
>> > https://esite.ch/2012/06/writing-tests-for-vala/
>> >
>> > Gives a good overview - and if I recall the GXml tests that Daniel
>> > mentioned uses it as well.
>> >
>> > Cheers
>> > Chris D
>> >
>> > 2016-02-04 14:09 GMT-08:00 Daniel Espinosa :
>> >
>> > > GXml have a test suite may you want to check. I has more than 50
>> > > tests
>> > > cases.
>> > > El feb. 4, 2016 3:04 PM, "Al Thomas"  escribió:
>> > >
>> > > >
>> > > >
>> > > > ----- Original Message -----
>> > > > > From: Felipe Lavratti
>> > > > > Sent: Thursday, 4 February 2016, 20:18
>> > > > > Subject: [Vala] Using TestCase class: assert (this is Object)
>> > > > > fails in
>> > > > method, but not in constructor
>> > > > >
>> > > > > Have a look at this code:
>> > > > >
>> > > > >     public class Tests : Object {
>> > > > >
>> > > > >         public Tests () {
>> > > > >             assert (this is Object); // THIS ASSERTION PASSES
>> > > > >             ts = new TestSuite ("dot_cap_dimmer") ;
>> > > > >             ts.add (new TestCase ("construction",
>> > > > > (TestFixtureFunc)
>> > > > > setup, (TestFixtureFunc) test_construction, (TestFixtureFunc)
>> > > > > teardown)) ;
>> > > > >             TestSuite.get_root ().add_suite (ts) ;
>> > > > >         }
>> > > > >
>> > > > >         void setup(void * fixture) {
>> > > > >             assert (this is Object);  // THIS ASSERTION FAILS
>> > > > >             this.cut = new DotCapDimmer () ;
>> > > > >             this.cut.on_change.connect (slot) ;
>> > > > >             this.called = false ;
>> > > > >         }
>> > > > >         ...
>> > > > >      }
>> > > > >
>> > > > > Would anyone know what happens to the `this` variable when
>> > > > > called
>> > > > > from the TestCase ? How came it is no longer an Object
>> > > > > anymore ?
>> > > >
>> > > >
>> > > > You need to instantiate your fixture so it has `this` to act
>> > > > upon.
>> > > > Your fixture should be a separate object to the test.
>> > > > As an outline;
>> > > >
>> > > >
>> > > > void main( string[] args ) {
>> > > >
>> > > >   Test.init(ref args);
>> > > >   TestSuite suite = new TestSuite( "DotCapDimmer" );
>> > > >   TestSuite.get_root ().add_suite (suite);
>> > > >
>> > > >   MyTestFixture fixture = new MyTestFixture();
>> > > >   suite.add( new TestCase ( "MyFirstTestCase", fixture.set_up,
>> > > > (TestFixtureFunc)test_my_first_test, fixture.tear_down ));
>> > > >   Test.run();
>> > > > }
>> > > >
>> > > > void test_my_first_test( MyTestFixture fixture ) {
>> > > >     // do testing
>> > > >
>> > > > }
>> > > >
>> > > >
>> > > >
>> > > > I put the test in a namespace like
>> > > > UnitTest.ModuleDirectory.FilenameOfClassToBeTested
>> > > >
>> > > > There is also g_test_add_data_func_full () instead, but I
>> > > > haven't used
>> > > > that yet.
>> > > >
>> > > > Al
>> > > > _______________________________________________
>> > > > 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
>> > >
>> >
>> >
>> >
>> > --
>> > 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
>>
>>
>>



-- 
Skype: felipeanl
_______________________________________________
vala-list mailing list
vala-list@gnome.org
https://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to