diff options
Diffstat (limited to 'gazelle/manifest/manifest_test.go')
-rw-r--r-- | gazelle/manifest/manifest_test.go | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/gazelle/manifest/manifest_test.go b/gazelle/manifest/manifest_test.go new file mode 100644 index 0000000..43c4099 --- /dev/null +++ b/gazelle/manifest/manifest_test.go @@ -0,0 +1,108 @@ +// 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. + +package manifest_test + +import ( + "bytes" + "log" + "os" + "reflect" + "strings" + "testing" + + "github.com/bazelbuild/rules_python/gazelle/manifest" +) + +var modulesMapping = manifest.ModulesMapping{ + "arrow": "arrow", + "arrow.__init__": "arrow", + "arrow.api": "arrow", + "arrow.arrow": "arrow", + "arrow.factory": "arrow", + "arrow.formatter": "arrow", + "arrow.locales": "arrow", + "arrow.parser": "arrow", + "arrow.util": "arrow", +} + +const pipDepsRepositoryName = "test_repository_name" + +func TestFile(t *testing.T) { + t.Run("Encode", func(t *testing.T) { + f := manifest.NewFile(&manifest.Manifest{ + ModulesMapping: modulesMapping, + PipDepsRepositoryName: pipDepsRepositoryName, + }) + var b bytes.Buffer + manifestGeneratorHashFile := strings.NewReader("") + requirements, err := os.Open("testdata/requirements.txt") + if err != nil { + log.Println(err) + t.FailNow() + } + defer requirements.Close() + if err := f.Encode(&b, manifestGeneratorHashFile, requirements); err != nil { + log.Println(err) + t.FailNow() + } + expected, err := os.ReadFile("testdata/gazelle_python.yaml") + if err != nil { + log.Println(err) + t.FailNow() + } + if !bytes.Equal(expected, b.Bytes()) { + log.Printf("encoded manifest doesn't match expected output: %v\n", b.String()) + t.FailNow() + } + }) + t.Run("Decode", func(t *testing.T) { + f := manifest.NewFile(&manifest.Manifest{}) + if err := f.Decode("testdata/gazelle_python.yaml"); err != nil { + log.Println(err) + t.FailNow() + } + if !reflect.DeepEqual(modulesMapping, f.Manifest.ModulesMapping) { + log.Println("decoded modules_mapping doesn't match expected value") + t.FailNow() + } + if f.Manifest.PipDepsRepositoryName != pipDepsRepositoryName { + log.Println("decoded pip repository name doesn't match expected value") + t.FailNow() + } + }) + t.Run("VerifyIntegrity", func(t *testing.T) { + f := manifest.NewFile(&manifest.Manifest{}) + if err := f.Decode("testdata/gazelle_python.yaml"); err != nil { + log.Println(err) + t.FailNow() + } + manifestGeneratorHashFile := strings.NewReader("") + requirements, err := os.Open("testdata/requirements.txt") + if err != nil { + log.Println(err) + t.FailNow() + } + defer requirements.Close() + valid, err := f.VerifyIntegrity(manifestGeneratorHashFile, requirements) + if err != nil { + log.Println(err) + t.FailNow() + } + if !valid { + log.Println("decoded manifest file is not valid") + t.FailNow() + } + }) +} |