mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2025-04-21 22:55:21 +00:00
Add tests for identifying libraries
Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
parent
37ee972f74
commit
02c14e981c
@ -100,7 +100,7 @@ func getLibDirs(mounts []Mount) []string {
|
|||||||
if exists {
|
if exists {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
checked[dir] = isLibName(filepath.Base(m.Path))
|
checked[dir] = isLibName(m.Path)
|
||||||
|
|
||||||
if checked[dir] {
|
if checked[dir] {
|
||||||
paths = append(paths, dir)
|
paths = append(paths, dir)
|
||||||
@ -114,13 +114,18 @@ func getLibDirs(mounts []Mount) []string {
|
|||||||
|
|
||||||
// isLibName checks if the specified filename is a library (i.e. ends in `.so*`)
|
// isLibName checks if the specified filename is a library (i.e. ends in `.so*`)
|
||||||
func isLibName(filename string) bool {
|
func isLibName(filename string) bool {
|
||||||
parts := strings.Split(filename, ".")
|
|
||||||
|
|
||||||
for _, p := range parts {
|
base := filepath.Base(filename)
|
||||||
if p == "so" {
|
|
||||||
return true
|
isLib, err := filepath.Match("lib?*.so*", base)
|
||||||
}
|
if !isLib || err != nil {
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
return false
|
parts := strings.Split(base, ".so")
|
||||||
|
if len(parts) == 1 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return parts[len(parts)-1] == "" || strings.HasPrefix(parts[len(parts)-1], ".")
|
||||||
}
|
}
|
||||||
|
65
internal/discover/ldconfig_test.go
Normal file
65
internal/discover/ldconfig_test.go
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
/**
|
||||||
|
# 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 discover
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestIsLibName(t *testing.T) {
|
||||||
|
testCases := []struct {
|
||||||
|
name string
|
||||||
|
isLib bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "",
|
||||||
|
isLib: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "lib/not/.so",
|
||||||
|
isLib: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "lib.so",
|
||||||
|
isLib: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "notlibcuda.so",
|
||||||
|
isLib: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "libcuda.so",
|
||||||
|
isLib: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "libcuda.so.1",
|
||||||
|
isLib: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "libcuda.soNOT",
|
||||||
|
isLib: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
require.Equal(t, tc.isLib, isLibName(tc.name))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user