diff options
author | 2020-11-25 16:06:39 -0800 | |
---|---|---|
committer | 2021-01-07 14:34:00 -0500 | |
commit | 2dd9ca422d4745fac52d9d76e5e32fba3c555075 (patch) | |
tree | b3c65f92fe6eabfefff762d6029963dc5c9b5875 /bp2build/conversion_test.go | |
parent | 5bcf99a93a18030dbfa549dc99a41e8c762aa6d5 (diff) |
Refactor queryview.
Splits queryview into queryview and bp2build. The latter runs as a
presingleton (could be converted to a singleton). This prevents needing
to run soong_ui a subsequent time to build the query. Queryview remains
as a separate step to prevent increasing runtime due to this generation
every time Soong runs.
Currently this is running as a presingleton as this gives a translation
of Android.bp files after only LoadHooks have run, no mutators.
Test: go tests
Test: m queryview && bazel query --config=queryview //...
Change-Id: If2ba28c7ef60fbd41f43bda6623d41c8c7d23a1b
Diffstat (limited to 'bp2build/conversion_test.go')
-rw-r--r-- | bp2build/conversion_test.go | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/bp2build/conversion_test.go b/bp2build/conversion_test.go new file mode 100644 index 000000000..a38fa6a55 --- /dev/null +++ b/bp2build/conversion_test.go @@ -0,0 +1,73 @@ +// Copyright 2020 Google Inc. 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 bp2build + +import ( + "sort" + "testing" +) + +func TestCreateBazelFiles_AddsTopLevelFiles(t *testing.T) { + files := CreateBazelFiles(map[string]RuleShim{}, map[string][]BazelTarget{}) + expectedFilePaths := []struct { + dir string + basename string + }{ + { + dir: "", + basename: "BUILD", + }, + { + dir: "", + basename: "WORKSPACE", + }, + { + dir: bazelRulesSubDir, + basename: "BUILD", + }, + { + dir: bazelRulesSubDir, + basename: "providers.bzl", + }, + { + dir: bazelRulesSubDir, + basename: "soong_module.bzl", + }, + } + + if g, w := len(files), len(expectedFilePaths); g != w { + t.Errorf("Expected %d files, got %d", w, g) + } + + sort.Slice(files, func(i, j int) bool { + if dir1, dir2 := files[i].Dir, files[j].Dir; dir1 == dir2 { + return files[i].Basename < files[j].Basename + } else { + return dir1 < dir2 + } + }) + + for i := range files { + if g, w := files[i], expectedFilePaths[i]; g.Dir != w.dir || g.Basename != w.basename { + t.Errorf("Did not find expected file %s/%s", g.Dir, g.Basename) + } else if g.Basename == "BUILD" || g.Basename == "WORKSPACE" { + if g.Contents != "" { + t.Errorf("Expected %s to have no content.", g) + } + } else if g.Contents == "" { + t.Errorf("Contents of %s unexpected empty.", g) + } + } +} |