tabs ↹ over ␣ ␣ ␣ spaces

by Jiří {x2} Činčura

Full CI for FirebirdClient

24 Aug 2015 2 mins .NET, C#, Continuous Integration, Firebird, Test Driven Development (TDD)

Recently I got a good PR changing the tests for FirebirdClient. Basically the suite is now executed for regular server as well as Embedded. Directly. You don’t need to change configuration values and restart tests etc. Great idea. There’s never enough tests. Especially as these are free.

While talking about the PR we also went around question why the tests are not executed on CI (AppVeyor in this case). I originally setted up the build just to try AppVeyor and play with it a little. But running the tests is, of course, a good idea. Normally I’m running these tests here and there, as usual 😉, and of course a lot before release. So the original contributor contributed set up for AppVeyor too. Nice.

Then I went to slightly polish it and make it 100%-ish reliable, else it’s just rubbish. That took me three evenings (tell me about estimates) – I was mostly afraid of this before, but once the PR was in place I was determined to do it. So now we have full (almost one might say, see below) CI stack for FirebirdClient. Every commit is compiled and fully tested.

If you want to have “nightly” build to test something new you can get it from here. And if you issue PR you don’t need to run all tests (although you should 😉), the machine will do it (and you can eventually fix what’s broken).

So why almost full CI stack? Well, first we’re not building all the packages with binaries, NuGet packages and installers. Would you like these? And also the tests are running only one type (SC, SS, CS) and version of server. Normally, before a release, I do kind of a matrix. Although it’s doable, given how long it takes to execute everything on AppVeyor currently (~20 minutes), I doubt it’s worth adding it and having the whole process take couple of hours. Or is it?

Profile Picture Jiří Činčura is .NET, C# and Firebird expert. He focuses on data and business layers, language constructs, parallelism, databases and performance. For almost two decades he contributes to open-source, i.e. FirebirdClient. He works as a senior software engineer for Microsoft. Frequent speaker and blogger at