New bld Extension: JUnit Reporter

<1 min read

bld
Pure java build tool for developers who don't like dealing with build tools

I've released a new extension for bld, JUnit Reporter, which summarizes JUnit failures:

> ./bld compile test
> ./bld reporter
--------------------------------------------------
JUnit Failures Summary
--------------------------------------------------

[1] com.example.ExampleTests (3 failures, 0.011s)
  - [1.1] verifyFail(String)[1] ([1] foo)
  - [1.2] verifyFail(String)[2] ([2] bar)
  - [1.3] verifyHelloFoo()
[2] com.example.MoreTests (2 failures, 0.001s)
  - [2.1] verifyMore(String)[3] ([3] qux)
  - [2.2] verifyMore(String)[4] ([4] quux)

To display details about the failures:

> ./bld reporter --index=1
--------------------------------------------------
[1] com.example.ExampleTests
--------------------------------------------------

[1.1] Test: verifyFail(String)[1]
    - Name: [1] foo
    - Type: org.opentest4j.AssertionFailedError
    - Message:
        expected: <foo> but was: <Hello World!>
    - Time: 0.009s

[1.2] Test: verifyFail(String)[2]
    - Name: [2] bar
    - Type: org.opentest4j.AssertionFailedError
    - Message:
        expected: <bar> but was: <Hello World!>
    - Time: 0.001s

And to display the details of a specific failure:

> ./bld report --i=1.2
--------------------------------------------------
[1] com.example.ExampleTests
--------------------------------------------------

[1.2] Test: verifyFail(String)[2]
    - Name: [2] bar
    - Type: org.opentest4j.AssertionFailedError
    - Message:
        expected: <bar> but was: <Hello World!>
    - Time: 0.001s
    - Trace:
        org.opentest4j.AssertionFailedError: expected: <bar> but was: <Hello World!>
                at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
                at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
                at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
                at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
                at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
                at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
                ...

It's quite opinionated, but pretty useful, especially within a continuous integration (CI) workflow.

Robin Hood

1 min read

Following the Norman invasion of England, Rob — a Saxon forester's son — and Marian, the daughter of a Norman lord — fall in love and work together to fight for justice and freedom. As Rob rises as the leader of a band of rebel outlaws, Marian infiltrates the power at court, as both work together to thwart royal corruption and bring peace to the land.


Affinity

2 min read

A former Navy SEAL battling PTSD finds his solitary Southeast Asian life disrupted by a mysterious woman washing ashore near his home.

Deathstalker

2 min read

The warrior Deathstalker is tasked by an old witch lady to obtain and unite the three powers of creation – a chalice, an amulet, and a sword – lest the evil magician Munkar get them and use them for nefarious purposes. After obtaining the sword, Deathstalker joins with other travelers going to the Big Tournament to determine the strongest warrior. The false king holds the true princess in captivity, and plots to have Deathstalker killed, and Deathstalker must fight to free the princess.

SISU: Road to Revenge

3 min read

Vengeance has a name.

Returning to the house where his family was brutally murdered during the war, “the man who refuses to die” (Jorma Tommila) dismantles it, loads it on a truck, and is determined to rebuild it somewhere safe in their honor. When the Red Army commander who killed his family (Stephen Lang from Don’t Breathe) comes back hellbent on finishing the job, a relentless, eye-popping cross-country chase ensues - a fight to the death, full of clever, unbelievable action set pieces.