A boilerplate for building Gradescope autograders for Go projects.

go-autograder

A boilerplate for building Gradescope autograders for Go projects.

Getting started

This autograder works by running all Go tests in a student's submission, parsing the results from stdout, and generating a results.json file in Gradescope's specified format. Only tests that you configure in autograder.config.json are graded and sent to Gradescope.

When the autograder runs, the student's submission will be copied into /autograder/source/submission. You can make any necessary changes to a student's submission -- such as copying in test suite files -- before the autograder runs by adding shell commands to run_autograder in the indicated area.

File hierarchy

  • autograder.config.json - A JSON file that specifies config options for your autograder suite. Here is where you will define the names of tests and associated point values.
  • setup.sh - A setup (Bash) script that installs all your dependencies. Gradescope uses Docker running on Ubuntu 18.04 images, so you can use apt, or any other means of setting up packages. By default, it simply uses apt-get to install Go.
  • run_autograder - An executable script, in any language (with appropriate #! line), that compiles and runs your autograder suite and produces the output in the correct place.
  • src/test_runner - A Go module containing the code responsible for running go test on a student's submission, parsing the results from stdout, and returning a results.json file in Gradescope's specified format.

autograder.config.json

This JSON file is where you will configure your autograder for your particular assignment. In this file, you must specify the names of the tests you want to use for grading, along with associated point values.

{
    "visibility": "visible", // Optional visibility setting for autograder results: visible, hidden, after_due_date, after_published
    "tests": [
        {
            "name": "TestAddTwoNumbers",  // The name of the test (must match the test name as defined in test files)
            "number": "1.1", // Optional (will just be numbered in order of array if no number given)
            "points": 5, // The point value of the test case
            "visibility": "visible" // Optional visibility setting for test case: visible, hidden, after_due_date, after_published
        },
        {
            "name": "TestAddTwoNegativeNumbers",
            "number": "1.2",
            "points": 5,
            "visibility": "visible"
        },
        {
            "name": "TestAddNums",
            "number": "2.1",
            "points": 5,
            "visibility": "visible"
        },
        {
            "name": "TestAddNumsOne",
            "number": "2.2",
            "points": 5,
            "visibility": "visible"
        }
    ]
}
Owner
Nathan Benavides-Luu
Applied Mathematics-Computer Science @ Brown University. SWE Intern @ Google.
Nathan Benavides-Luu
Similar Resources

Go-fn Boilerplate for Web Functions

alya-go-fn-boilerplate Go-fn Boilerplate for Web Functions This projects aiming to create a deployment ready go skeleton webserver for fast developmen

Feb 5, 2022

React + Golang boilerplate

React + Golang boilerplate Note: Optimized for running Docker in Linux where you can use port 80 without running docker-compose as root unless you mes

Feb 14, 2022

The gofinder program is an acme user interface to search through Go projects.

The gofinder program is an acme user interface to search through Go projects.

Jun 14, 2021

James is your butler and helps you to create, build, debug, test and run your Go projects

James is your butler and helps you to create, build, debug, test and run your Go projects

go-james James is your butler and helps you to create, build, debug, test and run your Go projects. When you often create new apps using Go, it quickl

Oct 8, 2022

Visualize how a projects source code is distributed among its files and folders

Visualize how a projects source code is distributed among its files and folders

Source Code Visualizer Visualize the code distribution in a project. Applications Applications include: Visualizing code distribution for more educate

Jul 31, 2022

Set of reusable components for Golang projects

go-utils Table of contents go-utils Table of contents 1. Overview 2. Install 3. Utils package 3.1 logger 3.2 error 3.3 datetime 1. Overview In my free

Sep 12, 2022

sentry integrated logrus package for our internal projects

sentry integrated logrus package for our internal projects

Oct 15, 2021

Auto-updates PaperMC Projects

Auto-updates PaperMC projects Motivation Paper has made it very difficult to auto update servers, because they discourage it. This means that you can'

Mar 15, 2022

A CLI for working with Go + Angular projects

NGGO A CLI tool for working with Angular + Go projects. Prerequisites You must have Go installed and GOPATH & GOBIN setup properly You must have angul

Feb 23, 2020
A boilerplate/starter project for quickly building APIs using Golang with Clean Architechture
A boilerplate/starter project for quickly building APIs using Golang with Clean Architechture

A boilerplate/starter project for quickly building APIs using Golang with Clean Architechture

Mar 2, 2022
Automatically generate Go test boilerplate from your source code.
Automatically generate Go test boilerplate from your source code.

gotests gotests makes writing Go tests easy. It's a Golang commandline tool that generates table driven tests based on its target source files' functi

Jan 3, 2023
A Visual Go REST API boilerplate builder.
A Visual Go REST API boilerplate builder.

A Visual Go REST API boilerplate builder. The boilerplate builder will export a Go web server with 0 dependencies, besides the ones you add.

Jul 8, 2022
A boilerplate for Go fiber versioning
A boilerplate for Go fiber versioning

Fiber Versioning Boilerplate Prerequisite Make sure you have the following installed outside the current project directory and available in your GOPAT

Nov 18, 2022
A boilerplate showing how to create a Pulumi component provider written in Go

xyz Pulumi Component Provider (Go) This repo is a boilerplate showing how to create a Pulumi component provider written in Go. You can search-replace

Mar 4, 2022
Golang Fiber boilerplate with MySQL resource.

Fibo - Go Fiber API Boilerplate A starter project with Golang, Fiber and Gorm Golang Fiber boilerplate with MySQL resource. Supports multiple configur

Nov 1, 2022
Example hello-world service uses go-fx-grpc-starter boilerplate code

About Example hello-world service uses https://github.com/srlk/go-fx-grpc-starter boilerplate code. Implementation A hello world grpc service is creat

Nov 14, 2021
Go Clean Architecture Boilerplate

Go Clean-Architecture Simple Go Clean-Architecture Boilerplate Overview The purpose of the template is to show: How to organize a project and prevent

Nov 27, 2021
A golang boilerplate for Mixin Bot

go-boilerplate This is a golang boilerplate for Mixin Bot. run ./go-boilerplate -f YOUR_KEYSTORE_FILE help to see the help. It enables several widely

Nov 3, 2022
Golang service boilerplate using best practices

go-boilerplate Golang service boilerplate using best practices. Responsibility: Register (CRUD) and Login Users with JWT. Dependencies Gin-Gonic Swagg

May 11, 2022