From 9f1bd62c423d970484f188af202e4db634036ca1 Mon Sep 17 00:00:00 2001 From: Evan Lezar Date: Wed, 23 Oct 2024 23:13:19 +0200 Subject: [PATCH] [no-relnote] Add failing libcuda locate test Signed-off-by: Evan Lezar --- internal/lookup/ldcache_test.go | 59 +++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 internal/lookup/ldcache_test.go diff --git a/internal/lookup/ldcache_test.go b/internal/lookup/ldcache_test.go new file mode 100644 index 00000000..4a40c0ef --- /dev/null +++ b/internal/lookup/ldcache_test.go @@ -0,0 +1,59 @@ +package lookup + +import ( + "path/filepath" + "testing" + + testlog "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/test" +) + +func TestLDCacheLookup(t *testing.T) { + logger, _ := testlog.NewNullLogger() + + moduleRoot, err := test.GetModuleRoot() + require.NoError(t, err) + + testCases := []struct { + rootFs string + inputs []string + expected string + expectedError error + }{ + { + rootFs: "rootfs-empty", + inputs: []string{"libcuda.so.1", "libcuda.so.*", "libcuda.so.*.*", "libcuda.so.999.88.77"}, + expectedError: ErrNotFound, + }, + { + rootFs: "rootfs-1", + inputs: []string{"libcuda.so.1", "libcuda.so.*", "libcuda.so.*.*", "libcuda.so.999.88.77"}, + expected: "/lib/x86_64-linux-gnu/libcuda.so.999.88.77", + }, + { + rootFs: "rootfs-2", + inputs: []string{"libcuda.so.1", "libcuda.so.*", "libcuda.so.*.*", "libcuda.so.999.88.77"}, + expected: "/var/lib/nvidia/lib64/libcuda.so.999.88.77", + }, + } + + for _, tc := range testCases { + for _, input := range tc.inputs { + t.Run(tc.rootFs+input, func(t *testing.T) { + rootfs := filepath.Join(moduleRoot, "testdata", "lookup", tc.rootFs) + l := newLdcacheLocator( + WithLogger(logger), + WithRoot(rootfs), + ) + + candidates, err := l.Locate(input) + require.ErrorIs(t, err, tc.expectedError) + if tc.expectedError == nil { + require.Equal(t, []string{filepath.Join(rootfs, tc.expected)}, candidates) + } + }) + } + } +}