Skip to content

Testing Scaffolds ​

Scaffold does not have a test command or framework, however it does provide some tools that can be utilized to implement tests for your scaffolds.

Testing with ASTs ​

Scaffold provides a way to output an AST of the scaffolded files. This can be used with a diffing tool to compare the ASTs of the scaffolded files with the expected ASTs to ensure that the scaffolded files are correct.

Command

bash
scaffold \
    --log-level="error" \     # set log level to error to avoid noise
    --output-dir=":memory:" \ # render scaffold in memory
    new \
    --preset="default" \      # use scaffold preset
    --no-prompt \             # disable interactive prompts
    --snapshot="stdout" \     # write snapshot to stdout
    <scaffold>

Output

bash
scaffold-test-5781:  (type=dir)
        main.go:  (type=file)
                package main

                import (
                        "fmt"
                )

                func main() {
                        fmt.Println("colors=red, green description=This is a test description")
                }

Testing with Outputs ​

An alternative approach is to test out output scaffolds by running whatever output is generated by the scaffold. For example, we use this approach to test our scaffolds by generating a Go program and running it to ensure that it compiles and runs as expected.

See cli.test.sh for an example of how to test scaffolds using this approach.