146 lines
5.0 KiB
Go
146 lines
5.0 KiB
Go
package nix_test
|
|
|
|
import (
|
|
"bytes"
|
|
"compress/gzip"
|
|
_ "embed"
|
|
"io"
|
|
"strings"
|
|
)
|
|
|
|
var instSample = map[string]string{
|
|
"bad fields": segmentPrefix + `instantiated 'config.sub-948ae97' ` + segmentSuffix,
|
|
"unexpected quotes left": segmentPrefix + `instantiated 'config.sub-948ae97' -> /n'` + segmentSuffix,
|
|
"unexpected quotes right": segmentPrefix + `instantiated 'config.sub-948ae97' -> '/n` + segmentSuffix,
|
|
"unexpected quotes short": segmentPrefix + `instantiated 'config.sub-948ae97' -> ''` + segmentSuffix,
|
|
"not absolute": segmentPrefix + `instantiated 'config.sub-948ae97' -> ' '` + segmentSuffix,
|
|
"good segment": segmentPrefix + segmentBody + segmentSuffix,
|
|
|
|
"getchoo atlas": getchooAtlasOut,
|
|
"getchoo glados": getchooGladosOut,
|
|
"pluiedev pappardelle": pluiedevPappardelleOut,
|
|
}
|
|
|
|
var instWant = map[string][]string{
|
|
"getchoo atlas": getchooAtlasInstantiated,
|
|
"getchoo glados": getchooGladosInstantiated,
|
|
"pluiedev pappardelle": pluiedevPappardelleInstantiated,
|
|
}
|
|
|
|
var collectWant = map[string][]string{
|
|
"getchoo atlas": getchooAtlasCollective,
|
|
"getchoo glados": getchooGladosCollective,
|
|
"pluiedev pappardelle": pluiedevPappardelleCollective,
|
|
}
|
|
|
|
var drvShow = map[string][]byte{
|
|
"getchoo atlas": getchooAtlasShow,
|
|
"getchoo glados": getchooGladosShow,
|
|
"pluiedev pappardelle": pluiedevPappardelleShow,
|
|
}
|
|
|
|
var (
|
|
segmentPrefix = string(sampleMustGunzip(segmentPrefixGzip))
|
|
segmentBody = string(sampleMustGunzip(segmentBodyGzip))
|
|
segmentSuffix = string(sampleMustGunzip(segmentSuffixGzip))
|
|
segmentWant = sampleSplitPaths(sampleMustGunzip(segmentWantGzip))
|
|
segmentEarly = sampleSplitPaths(sampleMustGunzip(segmentEarlyGzip))
|
|
|
|
//go:embed testdata/segment/prefix.gz
|
|
segmentPrefixGzip []byte
|
|
//go:embed testdata/segment/body.gz
|
|
segmentBodyGzip []byte
|
|
//go:embed testdata/segment/suffix.gz
|
|
segmentSuffixGzip []byte
|
|
//go:embed testdata/segment/want.gz
|
|
segmentWantGzip []byte
|
|
//go:embed testdata/segment/early.gz
|
|
segmentEarlyGzip []byte
|
|
)
|
|
|
|
func sampleSplitPaths(data []byte) []string {
|
|
return strings.Split(strings.TrimSpace(string(data)), "\n")
|
|
}
|
|
|
|
func sampleMustGunzip(data []byte) []byte {
|
|
var u []byte
|
|
if r, err := gzip.NewReader(bytes.NewReader(data)); err != nil {
|
|
panic(err.Error())
|
|
} else if u, err = io.ReadAll(r); err != nil {
|
|
panic(err.Error())
|
|
}
|
|
return u
|
|
}
|
|
|
|
// github:getchoo/borealis#atlas
|
|
|
|
var (
|
|
getchooAtlasOut = string(sampleMustGunzip(getchooAtlasOutGzip))
|
|
//go:embed testdata/getchoo_atlas.gz
|
|
getchooAtlasOutGzip []byte
|
|
|
|
getchooAtlasInstantiated = sampleSplitPaths(sampleMustGunzip(getchooAtlasInstantiatedGzip))
|
|
//go:embed testdata/instantiated/getchoo_atlas.gz
|
|
getchooAtlasInstantiatedGzip []byte
|
|
|
|
getchooAtlasShow = sampleMustGunzip(getchooAtlasShowGzip)
|
|
//go:embed testdata/derivation/show_getchoo_atlas.json.gz
|
|
getchooAtlasShowGzip []byte
|
|
|
|
getchooAtlasCollective = sampleSplitPaths(sampleMustGunzip(getchooAtlasCollectiveGzip))
|
|
//go:embed testdata/derivation/collect_getchoo_atlas.gz
|
|
getchooAtlasCollectiveGzip []byte
|
|
|
|
getchooAtlasStdin = string(sampleMustGunzip(getchooAtlasStdinGzip))
|
|
//go:embed testdata/format/stdin_getchoo_atlas.gz
|
|
getchooAtlasStdinGzip []byte
|
|
)
|
|
|
|
// github:getchoo/borealis#glados
|
|
|
|
var (
|
|
getchooGladosOut = string(sampleMustGunzip(getchooGladosOutGzip))
|
|
//go:embed testdata/getchoo_glados.gz
|
|
getchooGladosOutGzip []byte
|
|
|
|
getchooGladosInstantiated = sampleSplitPaths(sampleMustGunzip(getchooGladosInstantiatedGzip))
|
|
//go:embed testdata/instantiated/getchoo_glados.gz
|
|
getchooGladosInstantiatedGzip []byte
|
|
|
|
getchooGladosShow = sampleMustGunzip(getchooGladosShowGzip)
|
|
//go:embed testdata/derivation/show_getchoo_glados.json.gz
|
|
getchooGladosShowGzip []byte
|
|
|
|
getchooGladosCollective = sampleSplitPaths(sampleMustGunzip(getchooGladosCollectiveGzip))
|
|
//go:embed testdata/derivation/collect_getchoo_glados.gz
|
|
getchooGladosCollectiveGzip []byte
|
|
|
|
getchooGladosStdin = string(sampleMustGunzip(getchooGladosStdinGzip))
|
|
//go:embed testdata/format/stdin_getchoo_glados.gz
|
|
getchooGladosStdinGzip []byte
|
|
)
|
|
|
|
// git+https://tangled.sh/@pluie.me/flake#pappardelle
|
|
|
|
var (
|
|
pluiedevPappardelleOut = string(sampleMustGunzip(pluiedevPappardelleGzip))
|
|
//go:embed testdata/pluiedev_pappardelle.gz
|
|
pluiedevPappardelleGzip []byte
|
|
|
|
pluiedevPappardelleInstantiated = sampleSplitPaths(sampleMustGunzip(pluiedevPappardelleInstantiatedGzip))
|
|
//go:embed testdata/instantiated/pluiedev_pappardelle.gz
|
|
pluiedevPappardelleInstantiatedGzip []byte
|
|
|
|
pluiedevPappardelleShow = sampleMustGunzip(pluiedevPappardelleShowGzip)
|
|
//go:embed testdata/derivation/show_pluiedev_pappardelle.json.gz
|
|
pluiedevPappardelleShowGzip []byte
|
|
|
|
pluiedevPappardelleCollective = sampleSplitPaths(sampleMustGunzip(pluiedevPappardelleCollectiveGzip))
|
|
//go:embed testdata/derivation/collect_pluiedev_pappardelle.gz
|
|
pluiedevPappardelleCollectiveGzip []byte
|
|
|
|
pluiedevPappardelleStdin = string(sampleMustGunzip(pluiedevPappardelleStdinGzip))
|
|
//go:embed testdata/format/stdin_pluiedev_pappardelle.gz
|
|
pluiedevPappardelleStdinGzip []byte
|
|
)
|