//===----------------------------------------------------------------------===// // Copyright © 2025 Apple Inc. and the Containerization project authors. 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 // // https://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. //===----------------------------------------------------------------------===// import ContainerizationOCI import Foundation import Testing @testable import Containerization struct LinuxContainerTests { @Test func processInitFromImageConfigWithAllFields() { let imageConfig = ImageConfig( user: "appuser", env: ["NODE_ENV=production", "PORT=3000"], entrypoint: ["/usr/bin/node"], cmd: ["app.js", "--verbose"], workingDir: "/app" ) let process = LinuxContainer.Configuration.Process(from: imageConfig) #expect(process.workingDirectory == "/app") #expect(process.environmentVariables == ["NODE_ENV=production", "PORT=3000"]) #expect(process.arguments == ["/usr/bin/node", "app.js", "--verbose"]) #expect(process.user.username == "appuser") } @Test func processInitFromImageConfigWithNilValues() { let imageConfig = ImageConfig( user: nil, env: nil, entrypoint: nil, cmd: nil, workingDir: nil ) let process = LinuxContainer.Configuration.Process(from: imageConfig) #expect(process.workingDirectory == "/") #expect(process.environmentVariables == []) #expect(process.arguments == []) #expect(process.user.username == "") // Default User() has empty string username } @Test func processInitFromImageConfigEntrypointAndCmdConcatenation() { let imageConfig = ImageConfig( entrypoint: ["/bin/sh", "-c"], cmd: ["echo 'hello'", "&&", "sleep 10"] ) let process = LinuxContainer.Configuration.Process(from: imageConfig) #expect(process.arguments == ["/bin/sh", "-c", "echo 'hello'", "&&", "sleep 10"]) } }