/** # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 # # 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 disabledevicenodemodification import ( "bytes" "testing" testlog "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/require" ) func TestGetModifiedParamsFileContentsFromReader(t *testing.T) { logger, _ := testlog.NewNullLogger() testCases := map[string]struct { contents []byte expectedError error expectedContents []byte }{ "no contents": { contents: nil, expectedError: nil, expectedContents: nil, }, "other contents are ignored": { contents: []byte(`# Some other content that we don't care about `), expectedError: nil, expectedContents: nil, }, "already zero requires no modification": { contents: []byte("ModifyDeviceFiles: 0"), expectedError: nil, expectedContents: nil, }, "leading spaces require no modification": { contents: []byte(" ModifyDeviceFiles: 1"), }, "Trailing spaces require no modification": { contents: []byte("ModifyDeviceFiles: 1 "), }, "Not 1 require no modification": { contents: []byte("ModifyDeviceFiles: 11"), }, "single line requires modification": { contents: []byte("ModifyDeviceFiles: 1"), expectedError: nil, expectedContents: []byte("ModifyDeviceFiles: 0\n"), }, "single line with trailing newline requires modification": { contents: []byte("ModifyDeviceFiles: 1\n"), expectedError: nil, expectedContents: []byte("ModifyDeviceFiles: 0\n"), }, "other content is maintained": { contents: []byte(`ModifyDeviceFiles: 1 other content that is maintained`), expectedError: nil, expectedContents: []byte(`ModifyDeviceFiles: 0 other content that is maintained `), }, } for description, tc := range testCases { t.Run(description, func(t *testing.T) { c := command{ logger: logger, } contents, err := c.getModifiedParamsFileContentsFromReader(bytes.NewReader(tc.contents)) require.EqualValues(t, tc.expectedError, err) require.EqualValues(t, string(tc.expectedContents), string(contents)) }) } }