diff options
author | Vinh Tran <vinhdaitran@google.com> | 2023-07-26 05:30:40 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-07-26 05:30:40 +0000 |
commit | 5c7cc0dce1331e9a2fcc166a80f4fab2c90ac590 (patch) | |
tree | acdcc148cabfb6f8242a6c83e37625eeaea4e628 /gazelle/manifest/test/test.go | |
parent | 62c90a8ca6aa21d4e60cfe32b3784609d80480f6 (diff) | |
parent | 3e21f23d9400ba51f10e9b76016ff6d472829b4e (diff) | |
download | bazelbuild-rules_python-5c7cc0dce1331e9a2fcc166a80f4fab2c90ac590.tar.gz |
Merge remote-tracking branch 'aosp/upstream-main' into main am: b14b3520de am: e398bc2bf7 am: a1ccc8dd9e am: f26ff44a64 am: 3e21f23d94android-14.0.0_r37android-14.0.0_r36android-14.0.0_r35android-14.0.0_r34android-14.0.0_r33android-14.0.0_r32android-14.0.0_r31android-14.0.0_r30android-14.0.0_r29android-14.0.0_r28android14-qpr2-s5-releaseandroid14-qpr2-s4-releaseandroid14-qpr2-s3-releaseandroid14-qpr2-s2-releaseandroid14-qpr2-s1-releaseandroid14-qpr2-release
Original change: https://android-review.googlesource.com/c/platform/external/bazelbuild-rules_python/+/2673976
Change-Id: Ib33cbb9758fb3c0287c21cf502885fec2f072343
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'gazelle/manifest/test/test.go')
-rw-r--r-- | gazelle/manifest/test/test.go | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/gazelle/manifest/test/test.go b/gazelle/manifest/test/test.go new file mode 100644 index 0000000..72cb260 --- /dev/null +++ b/gazelle/manifest/test/test.go @@ -0,0 +1,78 @@ +// Copyright 2023 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. + +/* +test.go is a unit test that asserts the Gazelle YAML manifest is up-to-date in +regards to the requirements.txt. + +It re-hashes the requirements.txt and compares it to the recorded one in the +existing generated Gazelle manifest. +*/ +package test + +import ( + "os" + "path/filepath" + "testing" + + "github.com/bazelbuild/rules_python/gazelle/manifest" +) + +func TestGazelleManifestIsUpdated(t *testing.T) { + requirementsPath := os.Getenv("_TEST_REQUIREMENTS") + if requirementsPath == "" { + t.Fatalf("_TEST_REQUIREMENTS must be set") + } + + manifestPath := os.Getenv("_TEST_MANIFEST") + if manifestPath == "" { + t.Fatalf("_TEST_MANIFEST must be set") + } + + manifestFile := new(manifest.File) + if err := manifestFile.Decode(manifestPath); err != nil { + t.Fatalf("decoding manifest file: %v", err) + } + + if manifestFile.Integrity == "" { + t.Fatal("failed to find the Gazelle manifest file integrity") + } + + manifestGeneratorHashPath := os.Getenv("_TEST_MANIFEST_GENERATOR_HASH") + manifestGeneratorHash, err := os.Open(manifestGeneratorHashPath) + if err != nil { + t.Fatalf("opening %q: %v", manifestGeneratorHashPath, err) + } + defer manifestGeneratorHash.Close() + + requirements, err := os.Open(requirementsPath) + if err != nil { + t.Fatalf("opening %q: %v", requirementsPath, err) + } + defer requirements.Close() + + valid, err := manifestFile.VerifyIntegrity(manifestGeneratorHash, requirements) + if err != nil { + t.Fatalf("verifying integrity: %v", err) + } + if !valid { + manifestRealpath, err := filepath.EvalSymlinks(manifestPath) + if err != nil { + t.Fatalf("evaluating symlink %q: %v", manifestPath, err) + } + t.Errorf( + "%q is out-of-date. Follow the update instructions in that file to resolve this", + manifestRealpath) + } +} |