diff options
Diffstat (limited to 'tests/core/go_library/embedsrcs_test.go')
-rw-r--r-- | tests/core/go_library/embedsrcs_test.go | 199 |
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") + } +} |