From 2adaa5b499e66bcc76d9ee2600621360a2d0b64e Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Tue, 9 May 2023 13:21:25 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=F0=9F=92=BE=20Feat(CommandsExecutor):=20?= =?UTF-8?q?Now=20available=20to=20use=20`CancellationToken`=20to=20kill=20?= =?UTF-8?q?process.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Core/Shell/CommandsExecutor.cs | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/Common.BasicHelper/Core/Shell/CommandsExecutor.cs b/Common.BasicHelper/Core/Shell/CommandsExecutor.cs index c31d266..10fa493 100644 --- a/Common.BasicHelper/Core/Shell/CommandsExecutor.cs +++ b/Common.BasicHelper/Core/Shell/CommandsExecutor.cs @@ -67,7 +67,7 @@ public static async Task GetExecutionResultAsync string args, bool findInPath = false, Action? action = null, - CancellationToken? token = default + CancellationToken? token = null ) { if (findInPath) @@ -90,19 +90,24 @@ public static async Task GetExecutionResultAsync StartInfo = psi, }; - //var sb = new StringBuilder(); - - //void OutputHandler(object sendingProcess, DataReceivedEventArgs outLine) - // => sb.AppendLine(outLine.Data); - - //process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler); - //process.ErrorDataReceived += new DataReceivedEventHandler(OutputHandler); - process.Start(); var output = process.StandardOutput.ReadToEnd(); - await Task.Run(process.WaitForExit); + await Task.Run(() => + { + if (token is null) process.WaitForExit(); + + while (!process.HasExited) + { + if (token is not null && token.Value.IsCancellationRequested) + { + process.Kill(); + + break; + } + } + }); return output; } From b83d77e6b8603d150cd9d255615073b82fb84bd3 Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Tue, 9 May 2023 13:21:57 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=F0=9F=8E=87=20Style(Test):=20Use=20`=5F`?= =?UTF-8?q?=20to=20avoid=20assign=20value.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.BasicHelper.Test/Utils/Password_Tests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common.BasicHelper.Test/Utils/Password_Tests.cs b/Common.BasicHelper.Test/Utils/Password_Tests.cs index 6127619..35d9a03 100644 --- a/Common.BasicHelper.Test/Utils/Password_Tests.cs +++ b/Common.BasicHelper.Test/Utils/Password_Tests.cs @@ -6,7 +6,7 @@ public class Password_Tests [TestMethod] public void Test_GeneratePassword() { - foreach (var item in Enumerable.Range(0, 10)) + foreach (var _ in Enumerable.Range(0, 10)) Console.WriteLine(Password.GeneratePassword(length: 12)); } } From b536d2340d9eeead030650b21a4af7130c795bc8 Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Tue, 9 May 2023 17:17:23 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=F0=9F=92=BE=20Feat(QueueHelper):=20Now?= =?UTF-8?q?=20accept=20`CancellationToken`=20to=20control=20`ForEachAsync`?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Utils/Extensions/QueueHelper.cs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Common.BasicHelper/Utils/Extensions/QueueHelper.cs b/Common.BasicHelper/Utils/Extensions/QueueHelper.cs index c14ad28..e20747c 100644 --- a/Common.BasicHelper/Utils/Extensions/QueueHelper.cs +++ b/Common.BasicHelper/Utils/Extensions/QueueHelper.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; namespace Common.BasicHelper.Utils.Extensions; @@ -57,8 +58,12 @@ public static Queue Pop(this Queue queue) /// 是否将出队元素重新入队 /// 操作锁 /// 队列本身 - public static Queue ForEach(this Queue queue, Action action, - bool reappend = false, object? locker = null) + public static Queue ForEach( + this Queue queue, + Action action, + bool reappend = false, + object? locker = null + ) { Queue func() { @@ -92,8 +97,12 @@ Queue func() /// 是否将出队元素重新入队 /// 操作锁 /// 返回队列本身的任务 - public static async Task> ForEachAsync(this Queue queue, Action action, - bool reappend = false) + public static async Task> ForEachAsync( + this Queue queue, + Action action, + bool reappend = false, + CancellationToken token = default + ) { Queue func() { @@ -108,6 +117,6 @@ Queue func() return queue; } - return await Task.Run(func); + return await Task.Run(func, token); } } From 714f91904810293e10aed0b1b96a58bb2953553f Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Tue, 9 May 2023 17:17:55 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=F0=9F=92=BE=20Feat(TaskSystem):=20Import?= =?UTF-8?q?=20`SignalTask`=20system=20from=20KitX.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Core/TaskSystem/SignalTask.cs | 63 +++++++++ .../Core/TaskSystem/SignalTasksManager.cs | 124 ++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 Common.BasicHelper/Core/TaskSystem/SignalTask.cs create mode 100644 Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs diff --git a/Common.BasicHelper/Core/TaskSystem/SignalTask.cs b/Common.BasicHelper/Core/TaskSystem/SignalTask.cs new file mode 100644 index 0000000..c520400 --- /dev/null +++ b/Common.BasicHelper/Core/TaskSystem/SignalTask.cs @@ -0,0 +1,63 @@ +using Common.BasicHelper.Utils.Extensions; +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +namespace Common.BasicHelper.Core.TaskSystem; + +public class SignalTask +{ + public Queue Actions { get; } = new(); + + public bool SignalReusable { get; set; } = false; + + public bool ActionsReusable { get; set; } = false; + + public SignalTask AddAction(Action action) + { + Actions.Enqueue(action); + + return this; + } + + public SignalTask ReuseSignal(bool reusable = true) + { + SignalReusable = reusable; + + return this; + } + + public SignalTask ReuseActions(bool reusable = true) + { + ActionsReusable = reusable; + + return this; + } + + public SignalTask ExecuteAll(bool? reuseall = null) + { + Actions.ForEach(action => action(), reuseall ?? ActionsReusable); + + return this; + } + + public async Task ExecuteAllAsync(bool? reuseall = null, CancellationToken? token = null) + { + await Actions.ForEachAsync( + action => action(), + reuseall ?? ActionsReusable, + token ?? default + ); + + return this; + } +} + +public static class SignalTaskExtensions +{ + public static SignalTask AddTo(this Action action, SignalTask task) => task.AddAction(action); + + public static SignalTask ExecuteAll(this SignalTask task, bool reuseAll = false) + => task.ExecuteAll(reuseAll); +} diff --git a/Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs b/Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs new file mode 100644 index 0000000..7781fd7 --- /dev/null +++ b/Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Common.BasicHelper.Core.TaskSystem; + +public class SignalTasksManager +{ + private readonly Dictionary SignalTasks = new(); + + /// + /// 触发信号 + /// + /// 信号名称 + /// 任务管理器本身 + internal SignalTasksManager RaiseSignal(string signal) + { + if (SignalTasks.TryGetValue(signal, out var signalTask)) + { + signalTask.ExecuteAll(); + + if (!signalTask.SignalReusable) + SignalTasks.Remove(signal); + } + + return this; + } + + /// + /// 信号发生时运行任务 + /// + /// 信号 + /// 任务 + /// 任务管理器本身 + internal SignalTasksManager SignalRun(string signal, Action action, bool reusable = false) + { + if (SignalTasks.TryGetValue(signal, out var signalTask)) + signalTask.AddAction(action); + else + SignalTasks.Add( + signal, + new SignalTask() + .ReuseSignal(reusable) + .AddAction(action) + ); + + return this; + } + + /// + /// 清除所有信号响应任务 + /// + /// 任务管理器本身 + internal SignalTasksManager Clear() + { + SignalTasks.Clear(); + + return this; + } + + /// + /// 执行任务, 并带有更好的日志显示 + /// + /// 要执行的动作 + /// 日志显示名称 + /// 日志提示 + public static void RunTask( + Action action, + string name = nameof(Action), + string prompt = ">>> ", + bool catchException = false, + Action? infoLogger = null, + Action? errLogger = null) + { + infoLogger?.Invoke($"{prompt}Task `{name}` began."); + + if (catchException) + { + try + { + action(); + } + catch (Exception e) + { + errLogger?.Invoke(e, $"{prompt}Task `{name}` failed: {e.Message}"); + } + } + else action(); + + infoLogger?.Invoke($"{prompt}Task `{name}` done."); + } + + /// + /// 异步执行任务, 并带有更好的日志显示 + /// + /// 要执行的动作 + /// 任务名称 + /// 日志提示 + public static async Task RunTaskAsync( + Action action, + string name = nameof(Action), + string prompt = ">>> ", + bool catchException = false, + Action? infoLogger = null, + Action? errLogger = null) + { + infoLogger?.Invoke($"{prompt}Task `{name}` began."); + + if (catchException) + { + try + { + await Task.Run(action); + } + catch (Exception e) + { + errLogger?.Invoke(e, $"{prompt}Task `{name}` failed: {e.Message}"); + } + } + else await Task.Run(action); + + infoLogger?.Invoke($"{prompt}Task `{name}` done."); + } +} From c81af54e1e7cf1c1b8653483955dee669b92a3c0 Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Tue, 9 May 2023 17:21:15 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=F0=9F=94=A7=20Fix(SignalTasksManager):?= =?UTF-8?q?=20Error=20protection=20keyword,=20`internal`=20->=20`public`.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs b/Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs index 7781fd7..bb54ac3 100644 --- a/Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs +++ b/Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs @@ -13,7 +13,7 @@ public class SignalTasksManager /// /// 信号名称 /// 任务管理器本身 - internal SignalTasksManager RaiseSignal(string signal) + public SignalTasksManager RaiseSignal(string signal) { if (SignalTasks.TryGetValue(signal, out var signalTask)) { @@ -32,7 +32,7 @@ internal SignalTasksManager RaiseSignal(string signal) /// 信号 /// 任务 /// 任务管理器本身 - internal SignalTasksManager SignalRun(string signal, Action action, bool reusable = false) + public SignalTasksManager SignalRun(string signal, Action action, bool reusable = false) { if (SignalTasks.TryGetValue(signal, out var signalTask)) signalTask.AddAction(action); @@ -51,7 +51,7 @@ internal SignalTasksManager SignalRun(string signal, Action action, bool reusabl /// 清除所有信号响应任务 /// /// 任务管理器本身 - internal SignalTasksManager Clear() + public SignalTasksManager Clear() { SignalTasks.Clear(); From 571901ca4d4d80d78512c33a95740809ee23bafe Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Tue, 9 May 2023 17:29:20 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=F0=9F=92=BE=20Feat(TasksSystem):=20Remov?= =?UTF-8?q?e=20unneccessary=20functions.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Core/TaskSystem/SignalTasksManager.cs | 64 ------------------- 1 file changed, 64 deletions(-) diff --git a/Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs b/Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs index bb54ac3..6e90151 100644 --- a/Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs +++ b/Common.BasicHelper/Core/TaskSystem/SignalTasksManager.cs @@ -57,68 +57,4 @@ public SignalTasksManager Clear() return this; } - - /// - /// 执行任务, 并带有更好的日志显示 - /// - /// 要执行的动作 - /// 日志显示名称 - /// 日志提示 - public static void RunTask( - Action action, - string name = nameof(Action), - string prompt = ">>> ", - bool catchException = false, - Action? infoLogger = null, - Action? errLogger = null) - { - infoLogger?.Invoke($"{prompt}Task `{name}` began."); - - if (catchException) - { - try - { - action(); - } - catch (Exception e) - { - errLogger?.Invoke(e, $"{prompt}Task `{name}` failed: {e.Message}"); - } - } - else action(); - - infoLogger?.Invoke($"{prompt}Task `{name}` done."); - } - - /// - /// 异步执行任务, 并带有更好的日志显示 - /// - /// 要执行的动作 - /// 任务名称 - /// 日志提示 - public static async Task RunTaskAsync( - Action action, - string name = nameof(Action), - string prompt = ">>> ", - bool catchException = false, - Action? infoLogger = null, - Action? errLogger = null) - { - infoLogger?.Invoke($"{prompt}Task `{name}` began."); - - if (catchException) - { - try - { - await Task.Run(action); - } - catch (Exception e) - { - errLogger?.Invoke(e, $"{prompt}Task `{name}` failed: {e.Message}"); - } - } - else await Task.Run(action); - - infoLogger?.Invoke($"{prompt}Task `{name}` done."); - } } From 5a228e01c35bf48b585fe334208927aa010da40a Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Tue, 9 May 2023 17:38:25 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=F0=9F=93=9D=20Chore(Actions):=20Add=20`m?= =?UTF-8?q?erged`=20label=20to=20merged=20`Pull=20Request`=20automatically?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/codecov.yml | 25 ------------------------- .github/workflows/pr-merged.yml | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 25 deletions(-) delete mode 100644 .github/workflows/codecov.yml create mode 100644 .github/workflows/pr-merged.yml diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml deleted file mode 100644 index 688b5ec..0000000 --- a/.github/workflows/codecov.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: CodeCov - -on: - push: - branches: - - "main" - paths-ignore: - - ".*/**" - - "**/*.md" - pull_request: - branches: - - "main" - paths-ignore: - - ".*/**" - - "**/*.md" - - workflow_dispatch: - -jobs: - codecov: - runs-on: ubuntu-latest - - steps: - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v3 diff --git a/.github/workflows/pr-merged.yml b/.github/workflows/pr-merged.yml new file mode 100644 index 0000000..5b1b914 --- /dev/null +++ b/.github/workflows/pr-merged.yml @@ -0,0 +1,22 @@ +name: "Pull Request Labeler" +on: + pull_request: + types: + - closed + +jobs: + pr-merged: + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - uses: actions/github-script@v6 + with: + script: | + github.rest.issues.addLabels({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ["merged"] + }) From 0934df529580e126561aaf326f4e4e0a2d17b1af Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Tue, 9 May 2023 17:59:56 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=F0=9F=93=9D=20Chore(Actions):=20Upgraded?= =?UTF-8?q?=20`build.yml`=20with=20matrix=20strategy.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 54 +++++++++++++------------------------ 1 file changed, 18 insertions(+), 36 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 29e73d4..a4991d4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: Build +name: Build on: push: @@ -17,8 +17,12 @@ on: workflow_dispatch: jobs: - build-on-windows: - runs-on: windows-latest + build: + strategy: + matrix: + os: [windows-latest, linux-latest, macos-latest] + + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 @@ -26,58 +30,36 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v2 with: - dotnet-version: "6.0.x" + dotnet-version: | + 6.0.x + 7.0.x include-prerelease: false - name: Build run: | cd Common.BasicHelper - dotnet build -c Release - - build-on-ubuntu: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - name: Setup .NET - uses: actions/setup-dotnet@v2 - with: - dotnet-version: "6.0.x" - include-prerelease: false + dotnet build -c Release - - name: Build + - name: Test run: | - cd Common.BasicHelper - dotnet build -c Release + cd Common.BasicHelper.Test + + dotnet test -c Release - name: Add to GitHub Repo + if: ${{ matrix.os == 'ubuntu-latest' }} run: | nuget sources add -name github -Source https://nuget.pkg.github.com/Crequency/index.json -Username Crequency -Password ${{ secrets.GitHubToken }} - name: Install NuGet + if: ${{ matrix.os == 'ubuntu-latest' }} uses: nuget/setup-nuget@v1 with: nuget-version: "6.x" - name: Publish Package to GitHub and NuGet + if: ${{ matrix.os == 'ubuntu-latest' }} run: | nuget push ./Common.BasicHelper/bin/Release/*.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NugetKey }} -NoSymbol nuget push ./Common.BasicHelper/bin/Release/*.nupkg -Source github -SkipDuplicate - - build-on-macos: - runs-on: macos-latest - - steps: - - uses: actions/checkout@v3 - - - name: Setup .NET - uses: actions/setup-dotnet@v2 - with: - dotnet-version: "6.0.x" - include-prerelease: false - - - name: Build - run: | - cd Common.BasicHelper - dotnet build -c Release From e9d08de29c078b9296efb069e022d3f21e59978c Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Tue, 9 May 2023 18:11:11 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=F0=9F=94=A7=20Fix(Test):=20`help`=20comm?= =?UTF-8?q?and=20does=20not=20exist=20on=20other=20platforms,=20use=20othe?= =?UTF-8?q?r=20commands=20to=20replace.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Core/Shell/CommandsExecutor_Tests.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Common.BasicHelper.Test/Core/Shell/CommandsExecutor_Tests.cs b/Common.BasicHelper.Test/Core/Shell/CommandsExecutor_Tests.cs index 9f8017f..1bb360e 100644 --- a/Common.BasicHelper.Test/Core/Shell/CommandsExecutor_Tests.cs +++ b/Common.BasicHelper.Test/Core/Shell/CommandsExecutor_Tests.cs @@ -6,12 +6,26 @@ public class CommandsExecutor_Tests [TestMethod] public void Test_ExecuteAsCommand() { - Console.WriteLine("help".ExecuteAsCommand()); + if (OperatingSystem.IsWindows()) + Console.WriteLine("help".ExecuteAsCommand()); + + if (OperatingSystem.IsLinux()) + Console.WriteLine("apt".ExecuteAsCommand("-v")); + + if (OperatingSystem.IsMacOS()) + Console.WriteLine("sw_vers".ExecuteAsCommand()); } [TestMethod] public async Task Test_ExecuteAsCommandAsync() { - Console.WriteLine(await "help".ExecuteAsCommandAsync()); + if (OperatingSystem.IsWindows()) + Console.WriteLine(await "help".ExecuteAsCommandAsync()); + + if (OperatingSystem.IsLinux()) + Console.WriteLine(await "apt".ExecuteAsCommandAsync("-v")); + + if (OperatingSystem.IsMacOS()) + Console.WriteLine(await "sw_vers".ExecuteAsCommandAsync()); } } From 6f8ed42761430a42d4b7571ff0d756a7836ecab3 Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Tue, 9 May 2023 18:11:48 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=F0=9F=93=9D=20=F0=9F=94=A7=20Chore,=20Fi?= =?UTF-8?q?x(Actions):=20It=20should=20be=20`ubuntu-latest`.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a4991d4..d9fc2fa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: build: strategy: matrix: - os: [windows-latest, linux-latest, macos-latest] + os: [windows-latest, ubuntu-latest, macos-latest] runs-on: ${{ matrix.os }} From d23bc10ec9fe9d3ba003a4ea35304baa590c912e Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Tue, 9 May 2023 18:18:23 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=F0=9F=94=A7=20Fix(Test):=20Some=20functi?= =?UTF-8?q?ons=20only=20supported=20on=20serveral=20platforms.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Utils/Extensions/Dumpper_Tests.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Common.BasicHelper.Test/Utils/Extensions/Dumpper_Tests.cs b/Common.BasicHelper.Test/Utils/Extensions/Dumpper_Tests.cs index 0a1713e..e554da5 100644 --- a/Common.BasicHelper.Test/Utils/Extensions/Dumpper_Tests.cs +++ b/Common.BasicHelper.Test/Utils/Extensions/Dumpper_Tests.cs @@ -14,9 +14,12 @@ public void Test_Dump() .Dump() ; - var interfaces = NetworkInterface.GetAllNetworkInterfaces(); - foreach (var iface in interfaces) - iface.Dump(); + if (OperatingSystem.IsWindows()) + { + var interfaces = NetworkInterface.GetAllNetworkInterfaces(); + foreach (var iface in interfaces) + iface.Dump(); + } } [TestMethod()] @@ -28,9 +31,12 @@ public void Test_Dump2Lines() .Dump2Lines() ; - var interfaces = NetworkInterface.GetAllNetworkInterfaces(); - foreach (var iface in interfaces) - iface.Dump2Lines(); + if (OperatingSystem.IsWindows()) + { + var interfaces = NetworkInterface.GetAllNetworkInterfaces(); + foreach (var iface in interfaces) + iface.Dump2Lines(); + } } [TestMethod()] From 2ac280f0ac851610bb58ccefaa3f2036f0a98721 Mon Sep 17 00:00:00 2001 From: Dynesshely Date: Tue, 9 May 2023 18:22:49 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=F0=9F=94=A7=20Fix(Test):=20Some=20functi?= =?UTF-8?q?ons=20not=20supported=20on=20some=20platforms.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Network/NetUtils_Tests.cs | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/Common.BasicHelper.Test/Network/NetUtils_Tests.cs b/Common.BasicHelper.Test/Network/NetUtils_Tests.cs index a23206f..0158841 100644 --- a/Common.BasicHelper.Test/Network/NetUtils_Tests.cs +++ b/Common.BasicHelper.Test/Network/NetUtils_Tests.cs @@ -8,27 +8,36 @@ public class NetUtils_Tests [TestMethod] public void Test_IsWebConected() { - Assert.IsTrue(NetUtils.IsWebConected("localhost", 3)); - Assert.IsFalse(NetUtils.IsWebConected("192.168.255.255", 3)); + if (OperatingSystem.IsWindows()) + { + Assert.IsTrue(NetUtils.IsWebConected("localhost", 3)); + Assert.IsFalse(NetUtils.IsWebConected("192.168.255.255", 3)); + } } [TestMethod] public void Test_DownloadFile() { - var path = Path.GetFullPath($"{Path.GetTempPath()}/test_downloadFile.txt"); + if (OperatingSystem.IsWindows()) + { + var path = Path.GetFullPath($"{Path.GetTempPath()}/test_downloadFile.txt"); - NetUtils.DownloadFile(testDownloadFilePath, path); + NetUtils.DownloadFile(testDownloadFilePath, path); - File.Delete(path); + File.Delete(path); + } } [TestMethod] public void Test_WebDownloadFile() { - var path = Path.GetFullPath($"{Path.GetTempPath()}/test_webDownloadFile.txt"); + if (OperatingSystem.IsWindows()) + { + var path = Path.GetFullPath($"{Path.GetTempPath()}/test_webDownloadFile.txt"); - NetUtils.WebDownloadFile(testDownloadFilePath, path); + NetUtils.WebDownloadFile(testDownloadFilePath, path); - File.Delete(path); + File.Delete(path); + } } } \ No newline at end of file