From 8da7e74408dfef0987bb3ad53d2b0352c5cfadc2 Mon Sep 17 00:00:00 2001 From: Evan Lezar Date: Fri, 25 Nov 2022 13:59:11 +0100 Subject: [PATCH] Add tests for executable locator Signed-off-by: Evan Lezar --- internal/lookup/executable.go | 5 ++ internal/lookup/executable_test.go | 77 ++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 internal/lookup/executable_test.go diff --git a/internal/lookup/executable.go b/internal/lookup/executable.go index 2bfe04ea..d347732c 100644 --- a/internal/lookup/executable.go +++ b/internal/lookup/executable.go @@ -33,6 +33,10 @@ type executable struct { func NewExecutableLocator(logger *log.Logger, root string) Locator { paths := GetPaths(root) + return newExecutableLocator(logger, root, paths...) +} + +func newExecutableLocator(logger *log.Logger, root string, paths ...string) *executable { var prefixes []string for _, dir := range paths { prefixes = append(prefixes, filepath.Join(root, dir)) @@ -44,6 +48,7 @@ func NewExecutableLocator(logger *log.Logger, root string) Locator { filter: assertExecutable, }, } + return &l } diff --git a/internal/lookup/executable_test.go b/internal/lookup/executable_test.go new file mode 100644 index 00000000..68d7c678 --- /dev/null +++ b/internal/lookup/executable_test.go @@ -0,0 +1,77 @@ +/** +# Copyright (c) 2022, NVIDIA CORPORATION. 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 lookup + +import ( + "fmt" + "testing" + + testlog "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" +) + +func TestExecutableLocator(t *testing.T) { + logger, _ := testlog.NewNullLogger() + + testCases := []struct { + root string + paths []string + expectedPrefixes []string + }{ + { + root: "", + expectedPrefixes: nil, + }, + { + root: "", + paths: []string{"/"}, + expectedPrefixes: []string{"/"}, + }, + { + root: "", + paths: []string{"/", "/bin"}, + expectedPrefixes: []string{"/", "/bin"}, + }, + { + root: "/", + expectedPrefixes: nil, + }, + { + root: "/", + paths: []string{"/"}, + expectedPrefixes: []string{"/"}, + }, + { + root: "/", + paths: []string{"/", "/bin"}, + expectedPrefixes: []string{"/", "/bin"}, + }, + { + root: "/some/path", + paths: []string{"/", "/bin"}, + expectedPrefixes: []string{"/some/path", "/some/path/bin"}, + }, + } + + for i, tc := range testCases { + t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { + e := newExecutableLocator(logger, tc.root, tc.paths...) + + require.EqualValues(t, tc.expectedPrefixes, e.prefixes) + }) + } +}