From 3229ec8a7930f74be558052bddeffb9959d715d8 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Sat, 29 Oct 2022 11:12:41 +0200 Subject: [PATCH] fix: adjusted RAM top process parser (when the process has 0 PID and 0 in the usage) --- Modules/RAM/readers.swift | 8 ++++++-- Tests/RAM.swift | 11 +++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Modules/RAM/readers.swift b/Modules/RAM/readers.swift index b5b0e6a0..4bf33ba8 100644 --- a/Modules/RAM/readers.swift +++ b/Modules/RAM/readers.swift @@ -154,10 +154,14 @@ public class ProcessReader: Reader<[TopProcess]> { } static public func parseProcess(_ raw: String) -> TopProcess { - let str = raw.trimmingCharacters(in: .whitespaces) + var str = raw.trimmingCharacters(in: .whitespaces) let pidString = str.find(pattern: "^\\d+") - var arr = str.replacingOccurrences(of: pidString, with: "").split(separator: " ") + if let range = str.range(of: pidString) { + str = str.replacingCharacters(in: range, with: "") + } + + var arr = str.split(separator: " ") if arr.first == "*" { arr.removeFirst() } diff --git a/Tests/RAM.swift b/Tests/RAM.swift index e7fb7f4b..43693a40 100644 --- a/Tests/RAM.swift +++ b/Tests/RAM.swift @@ -55,12 +55,15 @@ class RAM: XCTestCase { XCTAssertEqual(process.usage, 11 * Double(1024 * 1024 * 1024)) } - func testReplacePID() throws { - let raw = "0 kernel_task 270M " - let process = ProcessReader.parseProcess(raw) - + func testKernelTask() throws { + var process = ProcessReader.parseProcess("0 kernel_task 270M ") XCTAssertEqual(process.pid, 0) XCTAssertEqual(process.command, "kernel_task") XCTAssertEqual(process.usage, 270 * Double(1024 * 1024)) + + process = ProcessReader.parseProcess("0 kernel_task 280M") + XCTAssertEqual(process.pid, 0) + XCTAssertEqual(process.command, "kernel_task") + XCTAssertEqual(process.usage, 280 * Double(1024 * 1024)) } }