aboutsummaryrefslogtreecommitdiff
path: root/tests/core/go_library/embedsrcs_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'tests/core/go_library/embedsrcs_test.go')
-rw-r--r--tests/core/go_library/embedsrcs_test.go199
1 files changed, 199 insertions, 0 deletions
diff --git a/tests/core/go_library/embedsrcs_test.go b/tests/core/go_library/embedsrcs_test.go
new file mode 100644
index 00000000..0a4506e6
--- /dev/null
+++ b/tests/core/go_library/embedsrcs_test.go
@@ -0,0 +1,199 @@
+// Copyright 2021 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package embedsrcs
+
+import (
+ "bytes"
+ "embed"
+ "io/fs"
+ "strings"
+ "testing"
+)
+
+//go:embed embedsrcs_test.go
+var self embed.FS
+
+//go:embed embedsrcs_static/file embedsrcs_static/dir embedsrcs_static/glob/*
+var static embed.FS
+
+//go:embed embedsrcs_dynamic/file embedsrcs_dynamic/dir embedsrcs_dynamic/glob/*
+var dynamic embed.FS
+
+//go:embed embedsrcs_transitioned
+var transitioned embed.FS
+
+//go:embed *
+var star embed.FS
+
+//go:embed all:embedsrcs_static/contains_hidden
+var all embed.FS
+
+//go:embed embedsrcs_static/contains_hidden
+var allButHidden embed.FS
+
+func TestFiles(t *testing.T) {
+ for _, test := range []struct {
+ desc string
+ fsys fs.FS
+ want []string
+ }{
+ {
+ desc: "self",
+ fsys: self,
+ want: []string{
+ ".",
+ "embedsrcs_test.go",
+ },
+ },
+ {
+ desc: "gen",
+ fsys: gen,
+ want: []string{
+ ".",
+ "embedsrcs_test.go",
+ },
+ },
+ {
+ desc: "static",
+ fsys: static,
+ want: []string{
+ ".",
+ "embedsrcs_static",
+ "embedsrcs_static/dir",
+ "embedsrcs_static/dir/f",
+ "embedsrcs_static/file",
+ "embedsrcs_static/glob",
+ "embedsrcs_static/glob/_hidden",
+ "embedsrcs_static/glob/f",
+ },
+ },
+ {
+ desc: "dynamic",
+ fsys: dynamic,
+ want: []string{
+ ".",
+ "embedsrcs_dynamic",
+ "embedsrcs_dynamic/dir",
+ "embedsrcs_dynamic/dir/f",
+ "embedsrcs_dynamic/file",
+ "embedsrcs_dynamic/glob",
+ "embedsrcs_dynamic/glob/_hidden",
+ "embedsrcs_dynamic/glob/f",
+ },
+ },
+ {
+ desc: "transitioned",
+ fsys: transitioned,
+ want: []string{
+ ".",
+ "embedsrcs_transitioned",
+ },
+ },
+ {
+ desc: "star",
+ fsys: star,
+ want: []string{
+ ".",
+ "embedsrcs_dynamic",
+ "embedsrcs_dynamic/dir",
+ "embedsrcs_dynamic/dir/f",
+ "embedsrcs_dynamic/empty",
+ "embedsrcs_dynamic/file",
+ "embedsrcs_dynamic/glob",
+ "embedsrcs_dynamic/glob/f",
+ "embedsrcs_dynamic/no",
+ "embedsrcs_static",
+ "embedsrcs_static/contains_hidden",
+ "embedsrcs_static/contains_hidden/visible",
+ "embedsrcs_static/contains_hidden/visible/visible_file",
+ "embedsrcs_static/dir",
+ "embedsrcs_static/dir/f",
+ "embedsrcs_static/file",
+ "embedsrcs_static/glob",
+ "embedsrcs_static/glob/f",
+ "embedsrcs_static/no",
+ "embedsrcs_test.go",
+ "embedsrcs_transitioned",
+ },
+ },
+ {
+ desc: "all",
+ fsys: all,
+ want: []string{
+ ".",
+ "embedsrcs_static",
+ "embedsrcs_static/contains_hidden",
+ "embedsrcs_static/contains_hidden/.hidden",
+ "embedsrcs_static/contains_hidden/.hidden_dir",
+ "embedsrcs_static/contains_hidden/.hidden_dir/.env",
+ "embedsrcs_static/contains_hidden/.hidden_dir/visible_file",
+ "embedsrcs_static/contains_hidden/_hidden_dir",
+ "embedsrcs_static/contains_hidden/_hidden_dir/.bashrc",
+ "embedsrcs_static/contains_hidden/_hidden_dir/_hidden_file",
+ "embedsrcs_static/contains_hidden/_hidden_dir/visible_file",
+ "embedsrcs_static/contains_hidden/visible",
+ "embedsrcs_static/contains_hidden/visible/visible_file",
+ },
+ },
+ {
+ desc: "allButHidden",
+ fsys: allButHidden,
+ want: []string{
+ ".",
+ "embedsrcs_static",
+ "embedsrcs_static/contains_hidden",
+ "embedsrcs_static/contains_hidden/visible",
+ "embedsrcs_static/contains_hidden/visible/visible_file",
+ },
+ },
+ } {
+ t.Run(test.desc, func(t *testing.T) {
+ got, err := listFiles(test.fsys)
+ if err != nil {
+ t.Fatal(err)
+ }
+ gotStr := strings.Join(got, "\n")
+ wantStr := strings.Join(test.want, "\n")
+ if gotStr != wantStr {
+ t.Errorf("got:\n%s\nwant:\n%s", gotStr, wantStr)
+ }
+ })
+ }
+}
+
+func listFiles(fsys fs.FS) ([]string, error) {
+ var files []string
+ err := fs.WalkDir(fsys, ".", func(path string, _ fs.DirEntry, err error) error {
+ if err != nil {
+ return err
+ }
+ files = append(files, path)
+ return nil
+ })
+ if err != nil {
+ return nil, err
+ }
+ return files, nil
+}
+
+func TestContent(t *testing.T) {
+ data, err := fs.ReadFile(self, "embedsrcs_test.go")
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !bytes.Contains(data, []byte("package embedsrcs")) {
+ t.Error("embedded content did not contain package declaration")
+ }
+}