Skip to content

Add test case support for Java & Haskell #6

Description

@benjaminkostiuk

Overview

On release of version 1.0.0 Puff has plans to release with support for 3 languages: Python, Java & Haskell. I've already implemented a mvp version of a python worker to run test cases.

Breakdown

Implement the logic + Dockerfiles to run test cases in Java & Haskell

Languages

For Java:
Idea was to support test cases written in JUnit5.
Possible roadblocks:

  • Wrapping the user code in braces correctly could prove tricky.
  • Handling compilation + execution and returning the correct error code. (Additional code may need to be checked on compilation failure)

For Haskell:
Idea was to support test cases written using HUnit. (I have no idea how it works, but it seems simple)
Possible roadblocks:

  • How to accept user input and the formatting for building out the cases.
  • Building a Docker image for Haskell. (+ Handling compilation files like Java above)

Also would like to support QuickCheck cases if possible in future.

Outline

  • Update CodeService.java asyncRunTestCasesInSuite() with cases for Haskell & Java
  • Update CodeService.java buildTestCaseCode() with functions to build the body of the test cases for Java & Haskell tests (like buildPythonTestFunction)
  • Update the Dockerfiles for Java & Haskell to create images for running the test cases (I've tried to use alpine to keep things small)
  • Create new entry files to compiling + running the Java + Haskell code, limiting resources with ulimit, similar to python_entry.sh
  • Update application-local.yml in docker.build.java and docker.build.haskell with the location of new entry files and dockerfiles.
  • It would be great to have a sample project + test cases to be able to run for java + haskell (like the one for python)
  • Tests for any methods you add (After I fix the project so tests can be run).

Metadata

Metadata

Assignees

Labels

featureFeature or improvementpriority:highHigh priority work item

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions