From 046d761f4ccb069a2b8d9adc2f3a99f25a47bc44 Mon Sep 17 00:00:00 2001 From: Evan Lezar Date: Tue, 6 Dec 2022 14:01:35 +0100 Subject: [PATCH] Ensure that an empty discoverer returns valid edits Signed-off-by: Evan Lezar --- internal/edits/edits.go | 5 ++++- internal/edits/edits_test.go | 31 ++++++++++++++++++++++++++++++ internal/modifier/discover_test.go | 6 ++++-- 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 internal/edits/edits_test.go diff --git a/internal/edits/edits.go b/internal/edits/edits.go index 3d7560d5..d7795fd7 100644 --- a/internal/edits/edits.go +++ b/internal/edits/edits.go @@ -22,6 +22,7 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/internal/oci" "github.com/container-orchestrated-devices/container-device-interface/pkg/cdi" + "github.com/container-orchestrated-devices/container-device-interface/specs-go" ociSpecs "github.com/opencontainers/runtime-spec/specs-go" "github.com/sirupsen/logrus" ) @@ -63,7 +64,9 @@ func FromDiscoverer(d discover.Discover) (*cdi.ContainerEdits, error) { return nil, fmt.Errorf("failed to discover hooks: %v", err) } - c := cdi.ContainerEdits{} + c := cdi.ContainerEdits{ + ContainerEdits: &specs.ContainerEdits{}, + } for _, d := range devices { edits, err := device(d).toEdits() if err != nil { diff --git a/internal/edits/edits_test.go b/internal/edits/edits_test.go new file mode 100644 index 00000000..65211557 --- /dev/null +++ b/internal/edits/edits_test.go @@ -0,0 +1,31 @@ +/** +# Copyright (c) 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 edits + +import ( + "testing" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" + "github.com/stretchr/testify/require" +) + +func TestFromDiscovererAllowsMountsToIterate(t *testing.T) { + edits, err := FromDiscoverer(discover.None{}) + require.NoError(t, err) + + require.Empty(t, edits.Mounts) +} diff --git a/internal/modifier/discover_test.go b/internal/modifier/discover_test.go index f3523e3f..bbad61aa 100644 --- a/internal/modifier/discover_test.go +++ b/internal/modifier/discover_test.go @@ -37,8 +37,10 @@ func TestDiscoverModifier(t *testing.T) { expectedSpec *specs.Spec }{ { - description: "empty discoverer does not modify spec", - discover: &discover.DiscoverMock{}, + description: "empty discoverer does not modify spec", + spec: &specs.Spec{}, + discover: &discover.DiscoverMock{}, + expectedSpec: &specs.Spec{}, }, { description: "failed hooks discoverer returns error",