Skip to content

rogpeppe/go-internal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5223eff · Apr 10, 2025
Feb 24, 2025
Mar 6, 2025
Feb 24, 2025
Feb 24, 2025
Sep 20, 2024
Feb 24, 2025
Feb 24, 2025
Dec 26, 2024
Feb 24, 2025
Dec 6, 2024
May 15, 2023
Mar 27, 2023
Mar 27, 2023
Feb 24, 2025
Mar 8, 2024
Dec 13, 2023
Mar 27, 2023
Mar 8, 2024
Apr 10, 2025
Mar 8, 2024
Jun 24, 2022
Dec 17, 2018
Sep 23, 2024
Feb 24, 2025
Oct 8, 2024

Repository files navigation

This repository factors out an opinionated selection of internal packages and functionality from the Go standard library. Currently this consists mostly of packages and testing code from within the Go tool implementation.

This repo is primarily maintained by long-time Go contributors who are also currently maintaining CUE (which is primarily written in Go and which relies upon several of the packages here).

Contributions are welcome, but please open an issue for discussion first.

Packages

Included are the following:

  • goproxytest: a GOPROXY implementation designed for test use.
  • gotooltest: Use the Go tool inside test scripts (see testscript below)
  • imports: list of known architectures and OSs, and support for reading import statements.
  • par: do work in parallel.
  • testenv: information on the current testing environment.
  • testscript: script-based testing based on txtar files
  • txtar: simple text-based file archives for testing.

Note that most users of txtar should use https://pkg.go.dev/golang.org/x/tools/txtar instead. Our package will be replaced by it once golang/go#59264 is fixed.

testscript

The most popular package here is the testscript package:

  • Provides a shell-like test environment that is very nicely tuned for testing Go CLI commands.
  • Extracted from the core Go team's internal testscript package (cmd/go/internal/script), which is heavily used to test the go command.
  • Supports patterns for checking stderr/stdout, command pass/fail assertions, and so on.
  • Integrates well with go test, including coverage support.
  • Inputs and sample output files can use the simple txtar text archive format, also used by the Go playground.
  • Allows automatically updating golden files.
  • Built-in support for Go concepts like build tags.
  • Accompanied by a testscript command for running standalone scripts with files embedded in txtar format.

A nice introduction to using testscripts is this blog post series. Both testscript and txtar were originally created by Russ Cox.