Groovy 101 (I): groovyCalc with tests and Travis-CI integration

The time has arrived; I cannot delay it more… I have to learn Groovy and Grails. In Kaleidos I’ve been moved to a new project developed with Grails so I need to be productive (ASAP! ^_^).

But, I don’t know Groovy. Even more, I don’t know Java. And I think it would be useful to document my own process. That said, let’s start in the beginning…

Disclaimer Almost all the documentation I found for beginners assumes the student knows Java; most tutorials start with the differences between Groovy and Java. As I don’t know Java, this posts are going to be slightly different. Maybe I’ll make some comparisons with Python, but I’ll try to keep those comparisons as anecdotal notes.

Assumptions

You have a Linux operating system. You know the command line. You know git and github. You know something about programming (variables, methods, class…). You can check the specific syntax on your own.

What is Groovy

From the oficial documentation:

Groovy is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for the Java platform aimed at multiplying developers’ productivity thanks to a concise, familiar and easy to learn syntax. It integrates smoothly with any Java program, and immediately delivers to your application powerful features, including scripting capabilities, Domain-Specific Language authoring, runtime and compile-time meta-programming and functional programming.

Installing Groovy

To manage and install Groovy components, it’s recommended to use GVM tool.

$ curl -s get.gvmtool.net | bash

Once you have installed gvm, you need to add the following to your .bashrc file:

#THIS MUST BE AT THE END OF THE FILE FOR FVM TO WORK!!
[[ -s "/path/to/.gvm/bin/gvm-init.sh" ]] && source "/path/to/.gvm/bin/gvm-init.sh"

Now we can install Groovy:

$ gvm install groovy

Good! Next step.

Hello world

Now you have installed Groovy, you have some tools like goovyConsole, or groovysh. Go to a terminal and type:

$ groovysh

A groovy interpreter is open, and we’re going to make our Hello, world with something like this:

aran :: ~/formacion/groovy101 » groovysh
Groovy Shell (2.3.9, JVM: 1.8.0_25)
Type ':help' or ':h' for help.
-----------------------------------------------------------------
<strong>groovy:000> println "Hello, world!"
Hello, world!</strong>
===> null
groovy:000>

WIN! Our first Groovy command ;-) Keep going!

Note: for specific issues concerning groovysh, check this page.

Now, create a file called hello.groovy and write the following:

println "Hello, world!"

And in the terminal, type:

$ groovy hello.groovy

You should have something like this:

aran :: ~/formacion/groovy101 » groovy hello.groovy
Hello, world!
aran :: ~/formacion/groovy101 »

Ou yeah! This is the beginning; next steps: the infinite, and beyond.

groovyCalc

It’s the moment to build a simple calculator. Let’s create a directory with these two files:

aran :: ~/formacion/groovy101 » ls groovyCalc
Calc.groovy
CalcTest.groovy

In the Calc.groovy file, you have to write the actual code, while in the CalcTest.groovy file (using jUnit), you write the tests. In this repository you can find an example with code and tests. You can clone it, or write one by yourself (recommended).

To run these tests:

$ groovy CalcTest.groovy

It only displays errors; so “no news, good news” ;-) Now you can extend the calculator, or you can create a new simple project to learn the Groovy syntax. And don’t miss the tests, they are also very important!

Bonus: Travis

Even if those tests are very very simple, I think it’s useful to integrate them in a continous integration tool. I have tried with Travis CI, but you could use any other you feel confortable with.

If you have never used Travis, you can read this post Travis 101 (spanish) to get used. The .travis.yml file for this project would be:

language: groovy
groovy:
    - 2.3.9
jdk:
    - oraclejdk8
script:
    - groovy CalcTest.groovy

Note: the jdk line is to force to use java8, instead of java7 (default). Currently, it’s not supported openjdk8, only oraclejdk8.

You can check the status of this repository.

And that’s all for now. From this moment, you can make some katas and exercises to learn the Groovy syntax. Next steps, we will learn something about gradle and spock. But now it is your turn to improve.

I would love to read your comments and feedback on this kind of posts :)

comments powered by Disqus