blob: 8113109e758d31e95ce3211b72c98714f89a8641 [file] [log] [blame] [edit]
// Copyright 2023 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build go1.21
package quic
import (
"bytes"
"os"
"strings"
"testing"
)
// TestFiles checks that every file in this package has a build constraint on Go 1.21.
//
// The QUIC implementation depends on crypto/tls features added in Go 1.21,
// so there's no point in trying to build on anything older.
//
// Drop this test when the x/net go.mod depends on 1.21 or newer.
func TestFiles(t *testing.T) {
f, err := os.Open(".")
if err != nil {
t.Fatal(err)
}
names, err := f.Readdirnames(-1)
if err != nil {
t.Fatal(err)
}
for _, name := range names {
if !strings.HasSuffix(name, ".go") {
continue
}
b, err := os.ReadFile(name)
if err != nil {
t.Fatal(err)
}
// Check for copyright header while we're in here.
if !bytes.Contains(b, []byte("The Go Authors.")) {
t.Errorf("%v: missing copyright", name)
}
// doc.go doesn't need a build constraint.
if name == "doc.go" {
continue
}
if !bytes.Contains(b, []byte("//go:build go1.21")) {
t.Errorf("%v: missing constraint on go1.21", name)
}
}
}