diff --git a/.gitignore b/.gitignore index f00927bf..fbd649f4 100644 --- a/.gitignore +++ b/.gitignore @@ -145,7 +145,7 @@ _TeamCity* _NCrunch_* .*crunch*.local.xml nCrunchTemp_* -.NCrunch* +.NCrunch_* # MightyMoose *.mm.* diff --git a/PlatformLibs.sln b/PlatformLibs.sln index 7d65c7df..ddb9d4fe 100644 --- a/PlatformLibs.sln +++ b/PlatformLibs.sln @@ -50,23 +50,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Extensions.Hosting.SerilogC EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Extensions.Hosting.Tests", "libs\hosting\tests\Hosting.Tests\Extensions.Hosting.Tests.csproj", "{FA64DAF0-66F7-4F6B-BB1B-3B53F4FBC088}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".Solution Items", ".Solution Items", "{6560E27F-806F-4500-9C50-AA2755458AA1}" - ProjectSection(SolutionItems) = preProject - .dockerignore = .dockerignore - .editorconfig = .editorconfig - .gitattributes = .gitattributes - .gitignore = .gitignore - build.ps1 = build.ps1 - LICENSE = LICENSE - readme.md = readme.md - libs\src.props = libs\src.props - libs\test.props = libs\test.props - EndProjectSection -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{110FA643-6DE5-48FB-9368-FDE268A192C1}" - ProjectSection(SolutionItems) = preProject - .github\dependabot.yml = .github\dependabot.yml - EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bullseye", "libs\bullseye\src\Bullseye\Bullseye.csproj", "{558069C6-0126-45A2-89E0-A2739E5C1FBC}" EndProject @@ -247,6 +231,9 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "little-forker", "little-forker", "{C035DC26-7F31-432A-8CE2-221F7E1877B2}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{D87C8600-94DC-463D-947B-F1EFA6E748B4}" + ProjectSection(SolutionItems) = preProject + libs\little-forker\src\Directory.Build.props = libs\little-forker\src\Directory.Build.props + EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{1137E742-AF34-47F0-BFAA-F7FD0FE246F0}" EndProject diff --git a/build/Program.cs b/build/Program.cs index 1846c27a..a211df7f 100644 --- a/build/Program.cs +++ b/build/Program.cs @@ -25,19 +25,30 @@ foreach (var lib in libs) { + var srcPackages = Directory.GetFiles($"libs/{lib}/src/", "*.csproj", SearchOption.AllDirectories); + + var buildTarget = $"{lib}-build"; + Target( + buildTarget, + DependsOn(Clean), + srcPackages, + packableProject => Run("dotnet", $"pack {packableProject} -c Release -o {ArtifactsDir}")); + + var packTarget = $"{lib}-pack"; + Target( + packTarget, + DependsOn(Clean), + srcPackages, + packableProject => Run("dotnet", $"pack {packableProject} -c Release -o {ArtifactsDir}")); + defaultTargets.Add(packTarget); + var testProjects = Directory.GetFiles($"libs/{lib}/tests/", "*.Tests.csproj", SearchOption.AllDirectories); // will ignore "IntegrationTests.csproj" var testTarget = $"{lib}-test"; Target(testTarget, + DependsOn(buildTarget), testProjects, testProject => Run("dotnet", $"test {testProject} -c Release")); defaultTargets.Add(testTarget); - - var packableProjects = Directory.GetFiles($"libs/{lib}/src/", "*.csproj", SearchOption.AllDirectories); - var packTarget = $"{lib}-pack"; - Target(packTarget, DependsOn(Clean), - packableProjects, - packableProject => Run("dotnet", $"pack {packableProject} -c Release -o {ArtifactsDir}")); - defaultTargets.Add(packTarget); } Target(PushToGitHub, () => diff --git a/libs/little-forker/src/Directory.Build.props b/libs/little-forker/src/Directory.Build.props index b8b2e3ad..44df6ea6 100644 --- a/libs/little-forker/src/Directory.Build.props +++ b/libs/little-forker/src/Directory.Build.props @@ -5,7 +5,7 @@ little-forker- - 0.1 + 4.0 \ No newline at end of file diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.LittleForker.dll b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.LittleForker.dll deleted file mode 100644 index 3ecb1557..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.LittleForker.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.LittleForker.xml b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.LittleForker.xml deleted file mode 100644 index 5a48ce02..00000000 --- a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.LittleForker.xml +++ /dev/null @@ -1,240 +0,0 @@ - - - - Logicality.LittleForker - - - - - Allows a process to be co-cooperatively shut down (as opposed the more - brutal Process.Kill() - - - - - The pipe name a process will listen on for a EXIT signal. - - The process ID process listening. - A generated pipe name. - - - - Creates a listener for cooperative shutdown. - - - The callback that is invoked when cooperative shutdown has been - requested. - - - A logger factory. - - A method to be called if an error occurs while listening - - A disposable representing the named pipe listener. - - - - - Signals to a process to shut down. - - The process ID to signal too. - A logger factory. - A task representing the operation. - - - - Interlocked support for boolean values - - - - - Current value - - - - - Initializes a new instance of - - initial value - - - - Sets a new value - - new value - the original value before any operation was performed - - - - Compares the current value and the comparand for equality and, if they are equal, - replaces the current value with the new value in an atomic/thread-safe operation. - - new value - value to compare the current value with - the original value before any operation was performed - - - - The process's exit code. - - - - - The process's Id. - - - - - Helper that raises event when the process has exited. A wrapper around - Process.Exited with some error handling and logging. - - - - - Initializes a new instance of - - - The process Id of the process to watch for exited. - - - A callback that is invoked when process has exited or does not - exist with the instance as a - parameter. - - - A logger. - - - - - Defined how a process is expected to run. - - - - - Processes that are expected to terminate of their own accord. - - - - - Processes that are not expected to terminiate of their own - accord and that must be co-operatively shutdown or killed. - - - - - Launches an process and tracks it's lifecycle . - - - - - The state a process is in. - - - - - Initializes a new instance of - - - The working directory to start the process in. - - - The path to the process. - - - The process run type. - - - A logger factory. - - - Arguments to be passed to the process. - - - Environment variables that are set before the process starts. - - - A flag to indicated whether to capture standard error output. - - - - - Contains the caught exception in the event a process failed to - be launched. - - - - - Information about the launched process. - - - - - Raised when the process emits console data. - - - - - Raised when the process emits stderr console data. - - - - - Raised when the process state has changed. - - - - - Starts the process. - - - - - Initiates a process stop. If a timeout is supplied (and greater - than 0ms), it will attempt a "co-operative" shutdown by - signalling an EXIT command to the process. The process needs to - support such signalling and needs to complete within the timeout - otherwise the process will be terminated via Kill(). The maximum - recommended timeout is 25 seconds. This is 5 seconds less than - default 30 seconds that windows will consider a service to be - 'hung'. - - - - - - - Represents a queue of tasks where a task is processed one at a time. When disposed - the outstanding tasks are cancelled. - - - - - Enqueues a task for processing. - - The operations to invoke. - A task representing the operation. Awaiting is optional. - - - - Enqueues a task for processing. - - The operations to invoke. - A task representing the operation. Awaiting is optional. - - - - Enqueues a task for processing. - - The operation to invoke that is co-operatively cancelable. - A task representing the operation. Awaiting is optional. - - - - Enqueues a task for processing. - - The operation to invoke that is co-operatively cancelable. - A task representing the operation. Awaiting is optional. - - - diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.deps.json b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.deps.json deleted file mode 100644 index 050f7478..00000000 --- a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.deps.json +++ /dev/null @@ -1,768 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v6.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v6.0": { - "Logicality.NonTerminatingProcess/0.1.0-alpha.0.424+build.0": { - "dependencies": { - "Logicality.LittleForker": "1.0.0", - "Microsoft.Extensions.Configuration.Binder": "3.1.0", - "Microsoft.Extensions.Configuration.CommandLine": "3.1.0", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "3.1.0", - "Microsoft.SourceLink.GitHub": "1.1.1", - "MinVer": "4.3.0", - "Serilog.Sinks.Console": "3.1.1", - "Logicality.LittleForker.Reference": "0.0.0.0" - }, - "runtime": { - "Logicality.NonTerminatingProcess.dll": {} - } - }, - "Microsoft.Build.Tasks.Git/1.1.1": {}, - "Microsoft.CSharp/4.0.1": { - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.3.0", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "Microsoft.Extensions.Configuration/3.1.0": { - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.Extensions.Configuration.Abstractions/3.1.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "3.1.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.Extensions.Configuration.Binder/3.1.0": { - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.Extensions.Configuration.CommandLine/3.1.0": { - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.CommandLine.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables/3.1.0": { - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.Extensions.Logging.Abstractions/3.1.0": { - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.Extensions.Primitives/3.1.0": { - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.NETCore.Platforms/1.1.0": {}, - "Microsoft.NETCore.Targets/1.1.0": {}, - "Microsoft.SourceLink.Common/1.1.1": {}, - "Microsoft.SourceLink.GitHub/1.1.1": { - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" - } - }, - "MinVer/4.3.0": {}, - "runtime.native.System/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "Serilog/2.5.0": { - "dependencies": { - "Microsoft.CSharp": "4.0.1", - "System.Collections": "4.0.11", - "System.Collections.NonGeneric": "4.0.1", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.3.0", - "System.Linq": "4.1.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.3.0" - }, - "runtime": { - "lib/netstandard1.3/Serilog.dll": { - "assemblyVersion": "2.0.0.0", - "fileVersion": "2.5.0.0" - } - } - }, - "Serilog.Sinks.Console/3.1.1": { - "dependencies": { - "Serilog": "2.5.0", - "System.Console": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0" - }, - "runtime": { - "lib/netcoreapp1.1/Serilog.Sinks.Console.dll": { - "assemblyVersion": "3.1.1.0", - "fileVersion": "3.1.1.0" - } - } - }, - "stateless/5.11.0": { - "runtime": { - "lib/net5.0/stateless.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "5.11.0.0" - } - } - }, - "System.Collections/4.0.11": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Collections.NonGeneric/4.0.1": { - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.3.0" - } - }, - "System.Console/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Diagnostics.Debug/4.0.11": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Dynamic.Runtime/4.0.11": { - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.3.0", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.3.0" - } - }, - "System.Globalization/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.IO/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Linq/4.1.0": { - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0" - } - }, - "System.Linq.Expressions/4.1.0": { - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Linq": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.3.0" - } - }, - "System.ObjectModel/4.0.12": { - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Reflection/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit/4.0.1": { - "dependencies": { - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Primitives/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.TypeExtensions/4.1.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Resources.ResourceManager/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "System.Runtime.Extensions/4.1.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Handles/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.InteropServices/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Text.Encoding/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Text.RegularExpressions/4.1.0": { - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.3.0" - } - }, - "System.Threading/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.Tasks/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "Logicality.LittleForker/1.0.0": { - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "3.1.0", - "stateless": "5.11.0" - }, - "runtime": { - "Logicality.LittleForker.dll": {} - } - }, - "Logicality.LittleForker.Reference/0.0.0.0": { - "runtime": { - "Logicality.LittleForker.dll": { - "assemblyVersion": "0.0.0.0", - "fileVersion": "0.1.0.0" - } - } - } - } - }, - "libraries": { - "Logicality.NonTerminatingProcess/0.1.0-alpha.0.424+build.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Build.Tasks.Git/1.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==", - "path": "microsoft.build.tasks.git/1.1.1", - "hashPath": "microsoft.build.tasks.git.1.1.1.nupkg.sha512" - }, - "Microsoft.CSharp/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-17h8b5mXa87XYKrrVqdgZ38JefSUqLChUQpXgSnpzsM0nDOhE40FTeNWOJ/YmySGV6tG6T8+hjz6vxbknHJr6A==", - "path": "microsoft.csharp/4.0.1", - "hashPath": "microsoft.csharp.4.0.1.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", - "path": "microsoft.extensions.configuration/3.1.0", - "hashPath": "microsoft.extensions.configuration.3.1.0.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration.Abstractions/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", - "path": "microsoft.extensions.configuration.abstractions/3.1.0", - "hashPath": "microsoft.extensions.configuration.abstractions.3.1.0.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration.Binder/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", - "path": "microsoft.extensions.configuration.binder/3.1.0", - "hashPath": "microsoft.extensions.configuration.binder.3.1.0.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration.CommandLine/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-KDjz4HBw549oW4Y1eQAImAugCSYn84KXwgGZtgMqEwctvkdxZo0ObZC5QQI/YvX21U+DArR9+NfWZ3MxD9MhPA==", - "path": "microsoft.extensions.configuration.commandline/3.1.0", - "hashPath": "microsoft.extensions.configuration.commandline.3.1.0.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WryksPlAFFRMWIGpFwDDbrVSD/kSO7P7fRRzBHh6vEIrgflsM8tpPCcgIvKszH4fz4vcuapih9RMdiiJ2VS7aw==", - "path": "microsoft.extensions.configuration.environmentvariables/3.1.0", - "hashPath": "microsoft.extensions.configuration.environmentvariables.3.1.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging.Abstractions/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==", - "path": "microsoft.extensions.logging.abstractions/3.1.0", - "hashPath": "microsoft.extensions.logging.abstractions.3.1.0.nupkg.sha512" - }, - "Microsoft.Extensions.Primitives/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==", - "path": "microsoft.extensions.primitives/3.1.0", - "hashPath": "microsoft.extensions.primitives.3.1.0.nupkg.sha512" - }, - "Microsoft.NETCore.Platforms/1.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", - "path": "microsoft.netcore.platforms/1.1.0", - "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" - }, - "Microsoft.NETCore.Targets/1.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", - "path": "microsoft.netcore.targets/1.1.0", - "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512" - }, - "Microsoft.SourceLink.Common/1.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==", - "path": "microsoft.sourcelink.common/1.1.1", - "hashPath": "microsoft.sourcelink.common.1.1.1.nupkg.sha512" - }, - "Microsoft.SourceLink.GitHub/1.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", - "path": "microsoft.sourcelink.github/1.1.1", - "hashPath": "microsoft.sourcelink.github.1.1.1.nupkg.sha512" - }, - "MinVer/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-YNVAW3loCFW4kTwensApaZUl+7xREK75QQNOFSbsbXx2sCSm9/IHBjUHsJGn3u0UA5r/sAqrdYBNUlOFfLhUrA==", - "path": "minver/4.3.0", - "hashPath": "minver.4.3.0.nupkg.sha512" - }, - "runtime.native.System/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", - "path": "runtime.native.system/4.3.0", - "hashPath": "runtime.native.system.4.3.0.nupkg.sha512" - }, - "Serilog/2.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-JwwkgNYNFKT4kQZ3qBV3VqPgchUg1A6FnlFa9hgyanylwBhJ7eTFl3pgLVxijFEb+oHLImRcMaTsMzBt2AG0aQ==", - "path": "serilog/2.5.0", - "hashPath": "serilog.2.5.0.nupkg.sha512" - }, - "Serilog.Sinks.Console/3.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-56mI5AqvyF/i/c2451nvV71kq370XOCE4Uu5qiaJ295sOhMb9q3BWwG7mWLOVSnmpWiq0SBT3SXfgRXGNP6vzA==", - "path": "serilog.sinks.console/3.1.1", - "hashPath": "serilog.sinks.console.3.1.1.nupkg.sha512" - }, - "stateless/5.11.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5XXmdEQBOpgE90vqxfZH0ekdqfGB6xLe0Uyb7EyHr/fgv/zkZtDcru4KxRvAvWxE1u4c8MOZnOnXoRfQOfFnTg==", - "path": "stateless/5.11.0", - "hashPath": "stateless.5.11.0.nupkg.sha512" - }, - "System.Collections/4.0.11": { - "type": "package", - "serviceable": true, - "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==", - "path": "system.collections/4.0.11", - "hashPath": "system.collections.4.0.11.nupkg.sha512" - }, - "System.Collections.NonGeneric/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==", - "path": "system.collections.nongeneric/4.0.1", - "hashPath": "system.collections.nongeneric.4.0.1.nupkg.sha512" - }, - "System.Console/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", - "path": "system.console/4.3.0", - "hashPath": "system.console.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.Debug/4.0.11": { - "type": "package", - "serviceable": true, - "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==", - "path": "system.diagnostics.debug/4.0.11", - "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512" - }, - "System.Dynamic.Runtime/4.0.11": { - "type": "package", - "serviceable": true, - "sha512": "sha512-db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", - "path": "system.dynamic.runtime/4.0.11", - "hashPath": "system.dynamic.runtime.4.0.11.nupkg.sha512" - }, - "System.Globalization/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", - "path": "system.globalization/4.3.0", - "hashPath": "system.globalization.4.3.0.nupkg.sha512" - }, - "System.IO/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", - "path": "system.io/4.3.0", - "hashPath": "system.io.4.3.0.nupkg.sha512" - }, - "System.Linq/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==", - "path": "system.linq/4.1.0", - "hashPath": "system.linq.4.1.0.nupkg.sha512" - }, - "System.Linq.Expressions/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", - "path": "system.linq.expressions/4.1.0", - "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512" - }, - "System.ObjectModel/4.0.12": { - "type": "package", - "serviceable": true, - "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", - "path": "system.objectmodel/4.0.12", - "hashPath": "system.objectmodel.4.0.12.nupkg.sha512" - }, - "System.Reflection/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", - "path": "system.reflection/4.3.0", - "hashPath": "system.reflection.4.3.0.nupkg.sha512" - }, - "System.Reflection.Emit/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", - "path": "system.reflection.emit/4.0.1", - "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512" - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", - "path": "system.reflection.emit.ilgeneration/4.0.1", - "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512" - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", - "path": "system.reflection.emit.lightweight/4.0.1", - "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512" - }, - "System.Reflection.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", - "path": "system.reflection.extensions/4.3.0", - "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512" - }, - "System.Reflection.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", - "path": "system.reflection.primitives/4.3.0", - "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" - }, - "System.Reflection.TypeExtensions/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==", - "path": "system.reflection.typeextensions/4.1.0", - "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512" - }, - "System.Resources.ResourceManager/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", - "path": "system.resources.resourcemanager/4.3.0", - "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" - }, - "System.Runtime/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", - "path": "system.runtime/4.3.0", - "hashPath": "system.runtime.4.3.0.nupkg.sha512" - }, - "System.Runtime.Extensions/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==", - "path": "system.runtime.extensions/4.1.0", - "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512" - }, - "System.Runtime.Handles/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", - "path": "system.runtime.handles/4.3.0", - "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512" - }, - "System.Runtime.InteropServices/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", - "path": "system.runtime.interopservices/4.3.0", - "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512" - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", - "path": "system.runtime.interopservices.runtimeinformation/4.3.0", - "hashPath": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512" - }, - "System.Text.Encoding/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "path": "system.text.encoding/4.3.0", - "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" - }, - "System.Text.RegularExpressions/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==", - "path": "system.text.regularexpressions/4.1.0", - "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512" - }, - "System.Threading/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", - "path": "system.threading/4.3.0", - "hashPath": "system.threading.4.3.0.nupkg.sha512" - }, - "System.Threading.Tasks/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", - "path": "system.threading.tasks/4.3.0", - "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" - }, - "Logicality.LittleForker/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Logicality.LittleForker.Reference/0.0.0.0": { - "type": "reference", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.dll b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.dll deleted file mode 100644 index ef2ae399..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.exe b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.exe deleted file mode 100644 index 2978dd10..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.exe and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.runtimeconfig.json b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.runtimeconfig.json deleted file mode 100644 index 3e5d4719..00000000 --- a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.runtimeconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net6.0", - "framework": { - "name": "Microsoft.NETCore.App", - "version": "6.0.16" - } - } -} \ No newline at end of file diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.xml b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.xml deleted file mode 100644 index 317e7632..00000000 --- a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Logicality.NonTerminatingProcess.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - Logicality.NonTerminatingProcess - - - - diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.Abstractions.dll b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.Abstractions.dll deleted file mode 100644 index 52befe91..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.Abstractions.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.Binder.dll b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.Binder.dll deleted file mode 100644 index 84b0357b..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.Binder.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.CommandLine.dll b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.CommandLine.dll deleted file mode 100644 index 5cd78f5f..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.CommandLine.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.EnvironmentVariables.dll b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.EnvironmentVariables.dll deleted file mode 100644 index fa1bd7e8..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.EnvironmentVariables.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.dll b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.dll deleted file mode 100644 index 718180b5..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Logging.Abstractions.dll b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Logging.Abstractions.dll deleted file mode 100644 index 82e06989..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Logging.Abstractions.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Primitives.dll b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Primitives.dll deleted file mode 100644 index d12ec5bd..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Primitives.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Serilog.Sinks.Console.dll b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Serilog.Sinks.Console.dll deleted file mode 100644 index b0178a75..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Serilog.Sinks.Console.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Serilog.dll b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Serilog.dll deleted file mode 100644 index acb43403..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/Serilog.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/stateless.dll b/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/stateless.dll deleted file mode 100644 index 2fdd58ee..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/NonTerminatingProcess/stateless.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.deps.json b/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.deps.json deleted file mode 100644 index 319cf547..00000000 --- a/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.deps.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v6.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v6.0": { - "Logicality.SelfTerminatingProcess/0.1.0-alpha.0.424+build.0": { - "dependencies": { - "Microsoft.SourceLink.GitHub": "1.1.1", - "MinVer": "4.3.0" - }, - "runtime": { - "Logicality.SelfTerminatingProcess.dll": {} - } - }, - "Microsoft.Build.Tasks.Git/1.1.1": {}, - "Microsoft.SourceLink.Common/1.1.1": {}, - "Microsoft.SourceLink.GitHub/1.1.1": { - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" - } - }, - "MinVer/4.3.0": {} - } - }, - "libraries": { - "Logicality.SelfTerminatingProcess/0.1.0-alpha.0.424+build.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Build.Tasks.Git/1.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==", - "path": "microsoft.build.tasks.git/1.1.1", - "hashPath": "microsoft.build.tasks.git.1.1.1.nupkg.sha512" - }, - "Microsoft.SourceLink.Common/1.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==", - "path": "microsoft.sourcelink.common/1.1.1", - "hashPath": "microsoft.sourcelink.common.1.1.1.nupkg.sha512" - }, - "Microsoft.SourceLink.GitHub/1.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", - "path": "microsoft.sourcelink.github/1.1.1", - "hashPath": "microsoft.sourcelink.github.1.1.1.nupkg.sha512" - }, - "MinVer/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-YNVAW3loCFW4kTwensApaZUl+7xREK75QQNOFSbsbXx2sCSm9/IHBjUHsJGn3u0UA5r/sAqrdYBNUlOFfLhUrA==", - "path": "minver/4.3.0", - "hashPath": "minver.4.3.0.nupkg.sha512" - } - } -} \ No newline at end of file diff --git a/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.dll b/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.dll deleted file mode 100644 index 26c60f94..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.dll and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.exe b/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.exe deleted file mode 100644 index eda9ac00..00000000 Binary files a/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.exe and /dev/null differ diff --git a/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.runtimeconfig.json b/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.runtimeconfig.json deleted file mode 100644 index 3e5d4719..00000000 --- a/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.runtimeconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net6.0", - "framework": { - "name": "Microsoft.NETCore.App", - "version": "6.0.16" - } - } -} \ No newline at end of file diff --git a/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.xml b/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.xml deleted file mode 100644 index bc9f95d3..00000000 --- a/libs/little-forker/src/LittleForker.Tests/SelfTerminatingProcess/Logicality.SelfTerminatingProcess.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - Logicality.SelfTerminatingProcess - - - - diff --git a/libs/little-forker/src/LittleForker/AssemblyInfo.cs b/libs/little-forker/src/LittleForker/AssemblyInfo.cs deleted file mode 100644 index a670b500..00000000 --- a/libs/little-forker/src/LittleForker/AssemblyInfo.cs +++ /dev/null @@ -1,3 +0,0 @@ -using System.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("LittleForker.Tests")] \ No newline at end of file diff --git a/libs/little-forker/src/LittleForker/LittleForker.csproj b/libs/little-forker/src/LittleForker/LittleForker.csproj index 3a7af827..56e8860e 100644 --- a/libs/little-forker/src/LittleForker/LittleForker.csproj +++ b/libs/little-forker/src/LittleForker/LittleForker.csproj @@ -1,7 +1,9 @@  - net6.0 + net6.0;net7.0 + Logicality.LittleForker + Logicality.LittleForker process-supervision, child-process A utility to assist with spawing child processes, monitor their lifecycle and co-operative shutdown. @@ -9,8 +11,14 @@ - + + + + + + + diff --git a/libs/little-forker/src/LittleForker/ProcessSupervisor.cs b/libs/little-forker/src/LittleForker/ProcessSupervisor.cs index ea3c6179..a57c2f08 100644 --- a/libs/little-forker/src/LittleForker/ProcessSupervisor.cs +++ b/libs/little-forker/src/LittleForker/ProcessSupervisor.cs @@ -6,6 +6,14 @@ namespace Logicality.LittleForker; +public class ProcessSupervisorSettings +{ + public ProcessSupervisorSettings() + { + + } +} + /// /// Launches an process and tracks it's lifecycle . /// diff --git a/libs/little-forker/src/LittleForker/ProcessSupervisorExtensions.cs b/libs/little-forker/src/LittleForker/ProcessSupervisorExtensions.cs index 2f6bf673..92e36d88 100644 --- a/libs/little-forker/src/LittleForker/ProcessSupervisorExtensions.cs +++ b/libs/little-forker/src/LittleForker/ProcessSupervisorExtensions.cs @@ -1,6 +1,6 @@ namespace Logicality.LittleForker; -public static class ProcessSupervisorExtensions +public static class ProcessSupervisorExtensions { public static Task WhenStateIs( this ProcessSupervisor processSupervisor, @@ -23,25 +23,4 @@ void Handler(ProcessSupervisor.State state) return taskCompletionSource.Task; } - - public static Task WhenOutputStartsWith( - this ProcessSupervisor processSupervisor, - string startsWith, - CancellationToken cancellationToken = default) - { - var taskCompletionSource = new TaskCompletionSource(); - cancellationToken.Register(() => taskCompletionSource.TrySetCanceled()); - - void Handler(string data) - { - if (data != null && data.StartsWith(startsWith)) - { - taskCompletionSource.SetResult(0); - processSupervisor.OutputDataReceived -= Handler; - } - } - - processSupervisor.OutputDataReceived += Handler; - return taskCompletionSource.Task; - } } \ No newline at end of file diff --git a/libs/little-forker/src/LittleForker/TaskExtensions.cs b/libs/little-forker/src/LittleForker/TaskExtensions.cs index 6ae31503..656a9fd4 100644 --- a/libs/little-forker/src/LittleForker/TaskExtensions.cs +++ b/libs/little-forker/src/LittleForker/TaskExtensions.cs @@ -17,37 +17,33 @@ internal static Task WithCancellation(this Task task, CancellationToken internal static async Task TimeoutAfter(this Task task, TimeSpan timeout) { - using (var timeoutCancellationTokenSource = new CancellationTokenSource()) - { - var completedTask = await Task - .WhenAny(task, Task.Delay(timeout, timeoutCancellationTokenSource.Token)) - .ConfigureAwait(false); - - if (completedTask == task) - { - timeoutCancellationTokenSource.Cancel(); - await task.ConfigureAwait(false); - return; - } + using var timeoutCancellationTokenSource = new CancellationTokenSource(); + var completedTask = await Task + .WhenAny(task, Task.Delay(timeout, timeoutCancellationTokenSource.Token)) + .ConfigureAwait(false); - throw new TimeoutException("The operation has timed out."); + if (completedTask == task) + { + timeoutCancellationTokenSource.Cancel(); + await task.ConfigureAwait(false); + return; } + + throw new TimeoutException("The operation has timed out."); } internal static async Task TimeoutAfter(this Task task, TimeSpan timeout) { - using (var timeoutCancellationTokenSource = new CancellationTokenSource()) + using var timeoutCancellationTokenSource = new CancellationTokenSource(); + var completedTask = await Task + .WhenAny(task, Task.Delay(timeout, timeoutCancellationTokenSource.Token)) + .ConfigureAwait(false); + if (completedTask == task) { - var completedTask = await Task - .WhenAny(task, Task.Delay(timeout, timeoutCancellationTokenSource.Token)) - .ConfigureAwait(false); - if (completedTask == task) - { - timeoutCancellationTokenSource.Cancel(); - return await task.ConfigureAwait(false); - } - - throw new TimeoutException("The operation has timed out."); + timeoutCancellationTokenSource.Cancel(); + return await task.ConfigureAwait(false); } + + throw new TimeoutException("The operation has timed out."); } } \ No newline at end of file diff --git a/libs/little-forker/src/NonTerminatingProcess/NonTerminatingProcess.csproj b/libs/little-forker/src/NonTerminatingProcess/NonTerminatingProcess.csproj index 9463e324..06988867 100644 --- a/libs/little-forker/src/NonTerminatingProcess/NonTerminatingProcess.csproj +++ b/libs/little-forker/src/NonTerminatingProcess/NonTerminatingProcess.csproj @@ -3,7 +3,7 @@ Exe net6.0 - ..\LittleForker.Tests\NonTerminatingProcess\ + ..\..\tests\LittleForker.Tests\NonTerminatingProcess\ false false @@ -13,10 +13,10 @@ - - - - + + + + diff --git a/libs/little-forker/src/NonTerminatingProcess/Program.cs b/libs/little-forker/src/NonTerminatingProcess/Program.cs index 6e68e066..4c36c156 100644 --- a/libs/little-forker/src/NonTerminatingProcess/Program.cs +++ b/libs/little-forker/src/NonTerminatingProcess/Program.cs @@ -4,105 +4,182 @@ using Microsoft.Extensions.Logging.Abstractions; using Serilog; -namespace Logicality.NonTerminatingProcess + + +var logger = new LoggerConfiguration() + .WriteTo.Console() + .CreateLogger(); + +var configRoot = new ConfigurationBuilder() + .AddCommandLine(args) + .AddEnvironmentVariables() + .Build(); + +// Running program with --debug=true will attach a debugger. +// Used to assist with debugging LittleForker. +if (configRoot.GetValue("debug", false)) { - internal sealed class Program + Debugger.Launch(); +} + +var ignoreShutdownSignal = configRoot.GetValue("ignore-shutdown-signal", false); +if (ignoreShutdownSignal) +{ + logger.Information("Will ignore Shutdown Signal"); +} + +var exitWithNonZero = configRoot.GetValue("exit-with-non-zero", false); +if (exitWithNonZero) +{ + logger.Information("Will exit with non-zero exit code"); +} + +var shutdown = new CancellationTokenSource(TimeSpan.FromSeconds(100)); +var pid = Environment.ProcessId; +var parentPid = configRoot.GetValue("ParentProcessId"); + +logger.Information($"Long running process started. PID={pid}"); + +using (parentPid.HasValue + ? new ProcessExitedHelper(parentPid.Value, _ => ParentExited(parentPid.Value), new NullLoggerFactory()) + : NoopDisposable.Instance) +{ + using (await CooperativeShutdown.Listen(ExitRequested, new NullLoggerFactory())) { - // Yeah this process is supposed to be "non-terminating" - // but we don't want tons of orphaned instances running - // because of tests so it terminates after a long - // enough time (100 seconds) - private readonly CancellationTokenSource _shutdown = new CancellationTokenSource(TimeSpan.FromSeconds(100)); - private readonly IConfigurationRoot _configRoot; - private readonly bool _ignoreShutdownSignal; - private readonly bool _exitWithNonZero; - - static Program() + // Poll the shutdown token in a tight loop + while (!shutdown.IsCancellationRequested || ignoreShutdownSignal) { - Log.Logger = new LoggerConfiguration() - .WriteTo.Console() - .CreateLogger(); + await Task.Delay(100); } + logger.Information("Exiting."); + } +} - private Program(string[] args) +return exitWithNonZero ? -1 : 0; + +void ExitRequested() +{ + logger.Information("Cooperative shutdown requested."); + + if (ignoreShutdownSignal) + { + Log.Logger.Information("Shut down signal ignored."); + return; + } + shutdown.Cancel(); +} + +void ParentExited(int processId) +{ + logger.Information($"Parent process {processId} exited."); + shutdown.Cancel(); +} + +class NoopDisposable : IDisposable +{ + public void Dispose() + { } + + internal static readonly IDisposable Instance = new NoopDisposable(); +} + +/* +internal sealed class Program +{ + // Yeah this process is supposed to be "non-terminating" + // but we don't want tons of orphaned instances running + // because of tests so it terminates after a long + // enough time (100 seconds) + private readonly CancellationTokenSource _shutdown = new(TimeSpan.FromSeconds(100)); + private readonly IConfigurationRoot _configRoot; + private readonly bool _ignoreShutdownSignal; + private readonly bool _exitWithNonZero; + + static Program() + { + Log.Logger = new LoggerConfiguration() + .WriteTo.Console() + .CreateLogger(); + } + + private Program(string[] args) + { + _configRoot = new ConfigurationBuilder() + .AddCommandLine(args) + .AddEnvironmentVariables() + .Build(); + + // Running program with --debug=true will attach a debugger. + // Used to assist with debugging LittleForker. + if (_configRoot.GetValue("debug", false)) { - _configRoot = new ConfigurationBuilder() - .AddCommandLine(args) - .AddEnvironmentVariables() - .Build(); - - // Running program with --debug=true will attach a debugger. - // Used to assist with debugging LittleForker. - if (_configRoot.GetValue("debug", false)) - { - Debugger.Launch(); - } + Debugger.Launch(); + } - _ignoreShutdownSignal = _configRoot.GetValue("ignore-shutdown-signal", false); - if (_ignoreShutdownSignal) - { - Log.Logger.Information("Will ignore Shutdown Signal"); - } - - _exitWithNonZero = _configRoot.GetValue("exit-with-non-zero", false); - if (_exitWithNonZero) - { - Log.Logger.Information("Will exit with non-zero exit code"); - } + _ignoreShutdownSignal = _configRoot.GetValue("ignore-shutdown-signal", false); + if (_ignoreShutdownSignal) + { + Log.Logger.Information("Will ignore Shutdown Signal"); } - private async Task Run() + _exitWithNonZero = _configRoot.GetValue("exit-with-non-zero", false); + if (_exitWithNonZero) { - var pid = Process.GetCurrentProcess().Id; - Log.Logger.Information($"Long running process started. PID={pid}"); + Log.Logger.Information("Will exit with non-zero exit code"); + } + } - var parentPid = _configRoot.GetValue("ParentProcessId"); + private async Task Run() + { + var pid = Process.GetCurrentProcess().Id; + Log.Logger.Information($"Long running process started. PID={pid}"); + + var parentPid = _configRoot.GetValue("ParentProcessId"); - using (parentPid.HasValue - ? new ProcessExitedHelper(parentPid.Value, _ => ParentExited(parentPid.Value), new NullLoggerFactory()) - : NoopDisposable.Instance) + using (parentPid.HasValue + ? new ProcessExitedHelper(parentPid.Value, _ => ParentExited(parentPid.Value), new NullLoggerFactory()) + : NoopDisposable.Instance) + { + using (await CooperativeShutdown.Listen(ExitRequested, new NullLoggerFactory())) { - using (await CooperativeShutdown.Listen(ExitRequested, new NullLoggerFactory())) + // Poll the shutdown token in a tight loop + while(!_shutdown.IsCancellationRequested || _ignoreShutdownSignal) { - // Poll the shutdown token in a tight loop - while(!_shutdown.IsCancellationRequested || _ignoreShutdownSignal) - { - await Task.Delay(100); - } - Log.Information("Exiting."); + await Task.Delay(100); } + Log.Information("Exiting."); } - - return _exitWithNonZero ? -1 : 0; } - static Task Main(string[] args) => new Program(args).Run(); - - private void ExitRequested() - { - Log.Logger.Information("Cooperative shutdown requested."); + return _exitWithNonZero ? -1 : 0; + } - if (_ignoreShutdownSignal) - { - Log.Logger.Information("Shut down signal ignored."); - return; - } + static Task Main(string[] args) => new Program(args).Run(); - _shutdown.Cancel(); - } + private void ExitRequested() + { + Log.Logger.Information("Cooperative shutdown requested."); - private void ParentExited(int processId) + if (_ignoreShutdownSignal) { - Log.Logger.Information($"Parent process {processId} exited."); - _shutdown.Cancel(); + Log.Logger.Information("Shut down signal ignored."); + return; } - private class NoopDisposable : IDisposable - { - public void Dispose() - {} + _shutdown.Cancel(); + } - internal static readonly IDisposable Instance = new NoopDisposable(); - } + private void ParentExited(int processId) + { + Log.Logger.Information($"Parent process {processId} exited."); + _shutdown.Cancel(); } -} + + private class NoopDisposable : IDisposable + { + public void Dispose() + {} + + internal static readonly IDisposable Instance = new NoopDisposable(); + } +}*/ \ No newline at end of file diff --git a/libs/little-forker/src/SelfTerminatingProcess/SelfTerminatingProcess.csproj b/libs/little-forker/src/SelfTerminatingProcess/SelfTerminatingProcess.csproj index e8130b7b..3f57f96b 100644 --- a/libs/little-forker/src/SelfTerminatingProcess/SelfTerminatingProcess.csproj +++ b/libs/little-forker/src/SelfTerminatingProcess/SelfTerminatingProcess.csproj @@ -4,9 +4,8 @@ Exe net6.0 latest - bin false - ..\LittleForker.Tests\SelfTerminatingProcess\ + ..\..\tests\LittleForker.Tests\SelfTerminatingProcess\ false diff --git a/libs/little-forker/tests/LittleForker.Tests/.gitignore b/libs/little-forker/tests/LittleForker.Tests/.gitignore new file mode 100644 index 00000000..74ff0bc1 --- /dev/null +++ b/libs/little-forker/tests/LittleForker.Tests/.gitignore @@ -0,0 +1,2 @@ +NonTerminatingProcess/* +SelfTerminatingProcess/* diff --git a/libs/little-forker/tests/LittleForker.Tests/Constants.cs b/libs/little-forker/tests/LittleForker.Tests/Constants.cs new file mode 100644 index 00000000..08b110f1 --- /dev/null +++ b/libs/little-forker/tests/LittleForker.Tests/Constants.cs @@ -0,0 +1,9 @@ +using System; +namespace Logicality.LittleForker; + +internal static class Constants +{ + internal const string DotNet = "dotnet"; + internal const string NonTerminatingProcessPath = "./NonTerminatingProcess/Logicality.NonTerminatingProcess.dll"; + internal const string SelfTerminatingProcessPath = "./SelfTerminatingProcess/Logicality.SelfTerminatingProcess.dll"; +} \ No newline at end of file diff --git a/libs/little-forker/tests/LittleForker.Tests/CooperativeShutdownTests.cs b/libs/little-forker/tests/LittleForker.Tests/CooperativeShutdownTests.cs index d2888306..82917b2b 100644 --- a/libs/little-forker/tests/LittleForker.Tests/CooperativeShutdownTests.cs +++ b/libs/little-forker/tests/LittleForker.Tests/CooperativeShutdownTests.cs @@ -23,7 +23,7 @@ public async Task When_server_signals_exit_then_should_notify_client_to_exit() () => exitCalled.SetResult(true), _loggerFactory); - await CooperativeShutdown.SignalExit(Process.GetCurrentProcess().Id, _loggerFactory); + await CooperativeShutdown.SignalExit(Environment.ProcessId, _loggerFactory); (await exitCalled.Task).ShouldBeTrue(); diff --git a/libs/little-forker/tests/LittleForker.Tests/LittleForker.Tests.csproj b/libs/little-forker/tests/LittleForker.Tests/LittleForker.Tests.csproj index 81378262..f45aba77 100644 --- a/libs/little-forker/tests/LittleForker.Tests/LittleForker.Tests.csproj +++ b/libs/little-forker/tests/LittleForker.Tests/LittleForker.Tests.csproj @@ -1,7 +1,7 @@  - net6.0 + net6.0;net7.0 Logicality.LittleForker diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/LittleForker.dll b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/LittleForker.dll deleted file mode 100644 index 05147981..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/LittleForker.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/LittleForker.xml b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/LittleForker.xml deleted file mode 100644 index b95694c5..00000000 --- a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/LittleForker.xml +++ /dev/null @@ -1,240 +0,0 @@ - - - - LittleForker - - - - - Allows a process to be co-cooperatively shut down (as opposed the more - brutal Process.Kill() - - - - - The pipe name a process will listen on for a EXIT signal. - - The process ID process listening. - A generated pipe name. - - - - Creates a listener for cooperative shutdown. - - - The callback that is invoked when cooperative shutdown has been - requested. - - - A logger factory. - - A method to be called if an error occurs while listening - - A disposable representing the named pipe listener. - - - - - Signals to a process to shut down. - - The process ID to signal too. - A logger factory. - A task representing the operation. - - - - Interlocked support for boolean values - - - - - Current value - - - - - Initializes a new instance of - - initial value - - - - Sets a new value - - new value - the original value before any operation was performed - - - - Compares the current value and the comparand for equality and, if they are equal, - replaces the current value with the new value in an atomic/thread-safe operation. - - new value - value to compare the current value with - the original value before any operation was performed - - - - The process's exit code. - - - - - The process's Id. - - - - - Helper that raises event when the process has exited. A wrapper around - Process.Exited with some error handling and logging. - - - - - Initializes a new instance of - - - The process Id of the process to watch for exited. - - - A callback that is invoked when process has exited or does not - exist with the instance as a - parameter. - - - A logger. - - - - - Defined how a process is expected to run. - - - - - Processes that are expected to terminate of their own accord. - - - - - Processes that are not expected to terminiate of their own - accord and that must be co-operatively shutdown or killed. - - - - - Launches an process and tracks it's lifecycle . - - - - - The state a process is in. - - - - - Initializes a new instance of - - - The working directory to start the process in. - - - The path to the process. - - - The process run type. - - - A logger factory. - - - Arguments to be passed to the process. - - - Environment variables that are set before the process starts. - - - A flag to indicated whether to capture standard error output. - - - - - Contains the caught exception in the event a process failed to - be launched. - - - - - Information about the launched process. - - - - - Raised when the process emits console data. - - - - - Raised when the process emits stderr console data. - - - - - Raised when the process state has changed. - - - - - Starts the process. - - - - - Initiates a process stop. If a timeout is supplied (and greater - than 0ms), it will attempt a "co-operative" shutdown by - signalling an EXIT command to the process. The process needs to - support such signalling and needs to complete within the timeout - otherwise the process will be terminated via Kill(). The maximum - recommended timeout is 25 seconds. This is 5 seconds less than - default 30 seconds that windows will consider a service to be - 'hung'. - - - - - - - Represents a queue of tasks where a task is processed one at a time. When disposed - the outstanding tasks are cancelled. - - - - - Enqueues a task for processing. - - The operations to invoke. - A task representing the operation. Awaiting is optional. - - - - Enqueues a task for processing. - - The operations to invoke. - A task representing the operation. Awaiting is optional. - - - - Enqueues a task for processing. - - The operation to invoke that is co-operatively cancelable. - A task representing the operation. Awaiting is optional. - - - - Enqueues a task for processing. - - The operation to invoke that is co-operatively cancelable. - A task representing the operation. Awaiting is optional. - - - diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.Abstractions.dll b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.Abstractions.dll deleted file mode 100644 index 52befe91..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.Abstractions.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.Binder.dll b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.Binder.dll deleted file mode 100644 index 84b0357b..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.Binder.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.CommandLine.dll b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.CommandLine.dll deleted file mode 100644 index 5cd78f5f..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.CommandLine.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.EnvironmentVariables.dll b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.EnvironmentVariables.dll deleted file mode 100644 index fa1bd7e8..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.EnvironmentVariables.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.dll b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.dll deleted file mode 100644 index 718180b5..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Configuration.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Logging.Abstractions.dll b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Logging.Abstractions.dll deleted file mode 100644 index 82e06989..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Logging.Abstractions.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Primitives.dll b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Primitives.dll deleted file mode 100644 index d12ec5bd..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Microsoft.Extensions.Primitives.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.deps.json b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.deps.json deleted file mode 100644 index 9d6886b2..00000000 --- a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.deps.json +++ /dev/null @@ -1,715 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v3.1", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v3.1": { - "NonTerminatingProcess/1.0.0": { - "dependencies": { - "LittleForker": "1.0.0", - "Microsoft.Extensions.Configuration.Binder": "3.1.0", - "Microsoft.Extensions.Configuration.CommandLine": "3.1.0", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "3.1.0", - "Serilog.Sinks.Console": "3.1.1" - }, - "runtime": { - "NonTerminatingProcess.dll": {} - } - }, - "Microsoft.CSharp/4.0.1": { - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.3.0", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "Microsoft.Extensions.Configuration/3.1.0": { - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.Extensions.Configuration.Abstractions/3.1.0": { - "dependencies": { - "Microsoft.Extensions.Primitives": "3.1.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.Extensions.Configuration.Binder/3.1.0": { - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.Extensions.Configuration.CommandLine/3.1.0": { - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.CommandLine.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables/3.1.0": { - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.Extensions.Logging.Abstractions/3.1.0": { - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.Extensions.Primitives/3.1.0": { - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.100.19.56504" - } - } - }, - "Microsoft.NETCore.Platforms/1.1.0": {}, - "Microsoft.NETCore.Targets/1.1.0": {}, - "runtime.native.System/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "Serilog/2.5.0": { - "dependencies": { - "Microsoft.CSharp": "4.0.1", - "System.Collections": "4.0.11", - "System.Collections.NonGeneric": "4.0.1", - "System.Dynamic.Runtime": "4.0.11", - "System.Globalization": "4.3.0", - "System.Linq": "4.1.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0", - "System.Text.RegularExpressions": "4.1.0", - "System.Threading": "4.3.0" - }, - "runtime": { - "lib/netstandard1.3/Serilog.dll": { - "assemblyVersion": "2.0.0.0", - "fileVersion": "2.5.0.0" - } - } - }, - "Serilog.Sinks.Console/3.1.1": { - "dependencies": { - "Serilog": "2.5.0", - "System.Console": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0" - }, - "runtime": { - "lib/netcoreapp1.1/Serilog.Sinks.Console.dll": { - "assemblyVersion": "3.1.1.0", - "fileVersion": "3.1.1.0" - } - } - }, - "Stateless/5.1.3": { - "runtime": { - "lib/netstandard2.0/Stateless.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "5.1.3.0" - } - } - }, - "System.Collections/4.0.11": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Collections.NonGeneric/4.0.1": { - "dependencies": { - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.3.0" - } - }, - "System.Console/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Diagnostics.Debug/4.0.11": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Dynamic.Runtime/4.0.11": { - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.3.0", - "System.Linq": "4.1.0", - "System.Linq.Expressions": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.3.0" - } - }, - "System.Globalization/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.IO/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Linq/4.1.0": { - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0" - } - }, - "System.Linq.Expressions/4.1.0": { - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Linq": "4.1.0", - "System.ObjectModel": "4.0.12", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.0.1", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Emit.Lightweight": "4.0.1", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.1.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.3.0" - } - }, - "System.ObjectModel/4.0.12": { - "dependencies": { - "System.Collections": "4.0.11", - "System.Diagnostics.Debug": "4.0.11", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Reflection/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit/4.0.1": { - "dependencies": { - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.0.1", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Primitives/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.TypeExtensions/4.1.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Resources.ResourceManager/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "System.Runtime.Extensions/4.1.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Handles/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.InteropServices/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Text.Encoding/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Text.RegularExpressions/4.1.0": { - "dependencies": { - "System.Collections": "4.0.11", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.1.0", - "System.Threading": "4.3.0" - } - }, - "System.Threading/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.Tasks/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "LittleForker/1.0.0": { - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "3.1.0", - "Stateless": "5.1.3" - }, - "runtime": { - "LittleForker.dll": {} - } - } - } - }, - "libraries": { - "NonTerminatingProcess/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.CSharp/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-17h8b5mXa87XYKrrVqdgZ38JefSUqLChUQpXgSnpzsM0nDOhE40FTeNWOJ/YmySGV6tG6T8+hjz6vxbknHJr6A==", - "path": "microsoft.csharp/4.0.1", - "hashPath": "microsoft.csharp.4.0.1.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", - "path": "microsoft.extensions.configuration/3.1.0", - "hashPath": "microsoft.extensions.configuration.3.1.0.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration.Abstractions/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", - "path": "microsoft.extensions.configuration.abstractions/3.1.0", - "hashPath": "microsoft.extensions.configuration.abstractions.3.1.0.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration.Binder/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", - "path": "microsoft.extensions.configuration.binder/3.1.0", - "hashPath": "microsoft.extensions.configuration.binder.3.1.0.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration.CommandLine/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-KDjz4HBw549oW4Y1eQAImAugCSYn84KXwgGZtgMqEwctvkdxZo0ObZC5QQI/YvX21U+DArR9+NfWZ3MxD9MhPA==", - "path": "microsoft.extensions.configuration.commandline/3.1.0", - "hashPath": "microsoft.extensions.configuration.commandline.3.1.0.nupkg.sha512" - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WryksPlAFFRMWIGpFwDDbrVSD/kSO7P7fRRzBHh6vEIrgflsM8tpPCcgIvKszH4fz4vcuapih9RMdiiJ2VS7aw==", - "path": "microsoft.extensions.configuration.environmentvariables/3.1.0", - "hashPath": "microsoft.extensions.configuration.environmentvariables.3.1.0.nupkg.sha512" - }, - "Microsoft.Extensions.Logging.Abstractions/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==", - "path": "microsoft.extensions.logging.abstractions/3.1.0", - "hashPath": "microsoft.extensions.logging.abstractions.3.1.0.nupkg.sha512" - }, - "Microsoft.Extensions.Primitives/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==", - "path": "microsoft.extensions.primitives/3.1.0", - "hashPath": "microsoft.extensions.primitives.3.1.0.nupkg.sha512" - }, - "Microsoft.NETCore.Platforms/1.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-idaVSR7ew5XDPrfLP7d36Ku/ccVVEL9UUELGX571U9pLLvUS40bfcpsMSbvwaAPBX5gLnz69G2cTb7+8uN3fNA==", - "path": "microsoft.netcore.platforms/1.1.0", - "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" - }, - "Microsoft.NETCore.Targets/1.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BwoPHv7y0C6m1x9P0EqsanTX7hGx7/I6vTufhGR8oGzQQIYLrxhHrzVjXakRRIfPQLZ6cVrDDGJpkMefwjh1qw==", - "path": "microsoft.netcore.targets/1.1.0", - "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512" - }, - "runtime.native.System/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-TkXr4hGTR6iKbKfjodEXZqydO5JVQJufXKfUQD6cNqRKJzRNwoq7if1e+x5Oiqs4HEUiaxDFDzrDPRuuhAccLA==", - "path": "runtime.native.system/4.3.0", - "hashPath": "runtime.native.system.4.3.0.nupkg.sha512" - }, - "Serilog/2.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-JwwkgNYNFKT4kQZ3qBV3VqPgchUg1A6FnlFa9hgyanylwBhJ7eTFl3pgLVxijFEb+oHLImRcMaTsMzBt2AG0aQ==", - "path": "serilog/2.5.0", - "hashPath": "serilog.2.5.0.nupkg.sha512" - }, - "Serilog.Sinks.Console/3.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-56mI5AqvyF/i/c2451nvV71kq370XOCE4Uu5qiaJ295sOhMb9q3BWwG7mWLOVSnmpWiq0SBT3SXfgRXGNP6vzA==", - "path": "serilog.sinks.console/3.1.1", - "hashPath": "serilog.sinks.console.3.1.1.nupkg.sha512" - }, - "Stateless/5.1.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZQ4XGc1DyrrCxhjIoj6cCIEF39KE8eWP/nyLji5IJOTMc0/JQuhzHUF7YTp1gZ/GWx7QHyQSKuSkSF0wAaV8/g==", - "path": "stateless/5.1.3", - "hashPath": "stateless.5.1.3.nupkg.sha512" - }, - "System.Collections/4.0.11": { - "type": "package", - "serviceable": true, - "sha512": "sha512-YUJGz6eFKqS0V//mLt25vFGrrCvOnsXjlvFQs+KimpwNxug9x0Pzy4PlFMU3Q2IzqAa9G2L4LsK3+9vCBK7oTg==", - "path": "system.collections/4.0.11", - "hashPath": "system.collections.4.0.11.nupkg.sha512" - }, - "System.Collections.NonGeneric/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==", - "path": "system.collections.nongeneric/4.0.1", - "hashPath": "system.collections.nongeneric.4.0.1.nupkg.sha512" - }, - "System.Console/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-cEaRntm8ZPeydLEgB9BFgSCtLq1OH8NKEOYbScAuS951k/SkRNHoOa7eH/j7laqQRemlRs+OfWT3PfJC25KomA==", - "path": "system.console/4.3.0", - "hashPath": "system.console.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.Debug/4.0.11": { - "type": "package", - "serviceable": true, - "sha512": "sha512-w5U95fVKHY4G8ASs/K5iK3J5LY+/dLFd4vKejsnI/ZhBsWS9hQakfx3Zr7lRWKg4tAw9r4iktyvsTagWkqYCiw==", - "path": "system.diagnostics.debug/4.0.11", - "hashPath": "system.diagnostics.debug.4.0.11.nupkg.sha512" - }, - "System.Dynamic.Runtime/4.0.11": { - "type": "package", - "serviceable": true, - "sha512": "sha512-db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", - "path": "system.dynamic.runtime/4.0.11", - "hashPath": "system.dynamic.runtime.4.0.11.nupkg.sha512" - }, - "System.Globalization/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FTwzGe2H4gLc3ntm182f3urwoW/XOo86zWR18UTnmAhGiP86xVal32NPy8TF+tGtUNH6Swx1NxfuF5WcX4g30A==", - "path": "system.globalization/4.3.0", - "hashPath": "system.globalization.4.3.0.nupkg.sha512" - }, - "System.IO/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-w7XW+nMsWTj1rYjEWgpq9cvJUtCwghvCDlBgjbzp/P/B6wVFTgO66CIuqJtyDk6aVlFRj0sCMjQuHav3C/7L2A==", - "path": "system.io/4.3.0", - "hashPath": "system.io.4.3.0.nupkg.sha512" - }, - "System.Linq/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bQ0iYFOQI0nuTnt+NQADns6ucV4DUvMdwN6CbkB1yj8i7arTGiTN5eok1kQwdnnNWSDZfIUySQY+J3d5KjWn0g==", - "path": "system.linq/4.1.0", - "hashPath": "system.linq.4.1.0.nupkg.sha512" - }, - "System.Linq.Expressions/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", - "path": "system.linq.expressions/4.1.0", - "hashPath": "system.linq.expressions.4.1.0.nupkg.sha512" - }, - "System.ObjectModel/4.0.12": { - "type": "package", - "serviceable": true, - "sha512": "sha512-tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", - "path": "system.objectmodel/4.0.12", - "hashPath": "system.objectmodel.4.0.12.nupkg.sha512" - }, - "System.Reflection/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-QvYQf904nQBXZ5aecu0SYhXIDxvPTNyyNK5GJk5scORZ+suONOEoLEnVVVNBh2oo0iOMxs0wNnUSRYUKjTOY1g==", - "path": "system.reflection/4.3.0", - "hashPath": "system.reflection.4.3.0.nupkg.sha512" - }, - "System.Reflection.Emit/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", - "path": "system.reflection.emit/4.0.1", - "hashPath": "system.reflection.emit.4.0.1.nupkg.sha512" - }, - "System.Reflection.Emit.ILGeneration/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", - "path": "system.reflection.emit.ilgeneration/4.0.1", - "hashPath": "system.reflection.emit.ilgeneration.4.0.1.nupkg.sha512" - }, - "System.Reflection.Emit.Lightweight/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", - "path": "system.reflection.emit.lightweight/4.0.1", - "hashPath": "system.reflection.emit.lightweight.4.0.1.nupkg.sha512" - }, - "System.Reflection.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ceOwyoOAcGXe5RcsxOa5YTv+WkusdkcgI4uLWAruXJQqzsm+JpykgmVl1qIEteujPe25CSiuZ0bia6bEC91wjg==", - "path": "system.reflection.extensions/4.3.0", - "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512" - }, - "System.Reflection.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-t4hYC7B1Nx1nfCita2rvT5jmUIBdB9WetwDCNRM563xaMe2OJG6B/IYw/3G3yjVNSnDwNE4ZCgX1+sWaWiFdtw==", - "path": "system.reflection.primitives/4.3.0", - "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" - }, - "System.Reflection.TypeExtensions/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==", - "path": "system.reflection.typeextensions/4.1.0", - "hashPath": "system.reflection.typeextensions.4.1.0.nupkg.sha512" - }, - "System.Resources.ResourceManager/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-9wMxekOHhBZK/q67VtoJqMatuAtYxxvMwPZaNtcE4hDE7ABntfCwYGfiI2Py85NF1a4+vEFxbs0aU4lZLapIJA==", - "path": "system.resources.resourcemanager/4.3.0", - "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" - }, - "System.Runtime/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lzGIsYqFiek4CIq57IfoD82j2eDEY8MUuaeydMYqPbMGtwQjIrQOBkQ8BEZt6/OFFdbzrTMTBYDSwknfZ3cINA==", - "path": "system.runtime/4.3.0", - "hashPath": "system.runtime.4.3.0.nupkg.sha512" - }, - "System.Runtime.Extensions/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-CUOHjTT/vgP0qGW22U4/hDlOqXmcPq5YicBaXdUR2UiUoLwBT+olO6we4DVbq57jeX5uXH2uerVZhf0qGj+sVQ==", - "path": "system.runtime.extensions/4.1.0", - "hashPath": "system.runtime.extensions.4.1.0.nupkg.sha512" - }, - "System.Runtime.Handles/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-C9iaNbc8GDTo1QhPZfM9rMVAW4bvGIyy2dQNfkLH9cWTN1SciXs3vAiUocQa2+B/qoSxWFGVToCVufdjdtu52A==", - "path": "system.runtime.handles/4.3.0", - "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512" - }, - "System.Runtime.InteropServices/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Bw8KLS0ShC4QpngDuL3T8Xh8FysQL9hCOnxtQptYkDpn1kuI5AxovlxfLG0c9AIgUGacShvMklB9J35knOZlSQ==", - "path": "system.runtime.interopservices/4.3.0", - "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512" - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Yd576GicDywTfJFH7Q7xr5yKWqIInr7c11zhyDIfQvIqreKIQ+86ChmaIDXaq1k3lPSnEH76YD8ZVCHLBl8sOw==", - "path": "system.runtime.interopservices.runtimeinformation/4.3.0", - "hashPath": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512" - }, - "System.Text.Encoding/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-IinDSYC7nZb0lQk79K+IOK7iiMJBYB91QtYzfKUyUWaP+TDVHoLJbYc6Qo53NSTXqnYOZL5BjTqXjp1SGsIGKA==", - "path": "system.text.encoding/4.3.0", - "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" - }, - "System.Text.RegularExpressions/4.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-i88YCXpRTjCnoSQZtdlHkAOx4KNNik4hMy83n0+Ftlb7jvV6ZiZWMpnEZHhjBp6hQVh8gWd/iKNPzlPF7iyA2g==", - "path": "system.text.regularexpressions/4.1.0", - "hashPath": "system.text.regularexpressions.4.1.0.nupkg.sha512" - }, - "System.Threading/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-a2F+Zx5I0i9eiralJbAzTio7iYgMNK49g4pHWOuOFndEPpTtNpJjY4/w5Dd5LhVRtrfcm/hLBU5h9S9wkBXSFw==", - "path": "system.threading/4.3.0", - "hashPath": "system.threading.4.3.0.nupkg.sha512" - }, - "System.Threading.Tasks/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3qCGA18efLdzj3ypbcV3tDHTE+U9ubICeDBxmNvSNTcDrwUX7u+JDD8MhVq2DtMEf4mxqHTf3gegXBTXYoes7g==", - "path": "system.threading.tasks/4.3.0", - "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" - }, - "LittleForker/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.dll b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.dll deleted file mode 100644 index 531525ef..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.exe b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.exe deleted file mode 100644 index 9f546b47..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.exe and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.runtimeconfig.dev.json b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.runtimeconfig.dev.json deleted file mode 100644 index 477e698c..00000000 --- a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.runtimeconfig.dev.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "runtimeOptions": { - "additionalProbingPaths": [ - "C:\\Users\\damian\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\damian\\.nuget\\packages", - "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" - ] - } -} \ No newline at end of file diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.runtimeconfig.json b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.runtimeconfig.json deleted file mode 100644 index bc456d78..00000000 --- a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.runtimeconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "netcoreapp3.1", - "framework": { - "name": "Microsoft.NETCore.App", - "version": "3.1.0" - } - } -} \ No newline at end of file diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.xml b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.xml deleted file mode 100644 index ac11791a..00000000 --- a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/NonTerminatingProcess.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - NonTerminatingProcess - - - - diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Serilog.Sinks.Console.dll b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Serilog.Sinks.Console.dll deleted file mode 100644 index b0178a75..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Serilog.Sinks.Console.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Serilog.dll b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Serilog.dll deleted file mode 100644 index acb43403..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Serilog.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Stateless.dll b/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Stateless.dll deleted file mode 100644 index 89419fed..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/NonTerminatingProcess/Stateless.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/ProcessExitedHelperTests.cs b/libs/little-forker/tests/LittleForker.Tests/ProcessExitedHelperTests.cs index 84aa9b2c..15724931 100644 --- a/libs/little-forker/tests/LittleForker.Tests/ProcessExitedHelperTests.cs +++ b/libs/little-forker/tests/LittleForker.Tests/ProcessExitedHelperTests.cs @@ -35,8 +35,8 @@ public async Task When_parent_process_exits_than_should_call_parent_exited_callb _loggerFactory, ProcessRunType.NonTerminating, Environment.CurrentDirectory, - "dotnet", - "./NonTerminatingProcess/NonTerminatingProcess.dll"); + Constants.DotNet, + Constants.NonTerminatingProcessPath); var parentIsRunning = supervisor.WhenStateIs(ProcessSupervisor.State.Running); supervisor.OutputDataReceived += data => _outputHelper.WriteLine($"Parent Process: {data}"); await supervisor.Start(); @@ -44,12 +44,12 @@ public async Task When_parent_process_exits_than_should_call_parent_exited_callb // Monitor parent var parentExited = new TaskCompletionSource(); - using (new ProcessExitedHelper(supervisor.ProcessInfo.Id, watcher => parentExited.SetResult(watcher.ProcessId), _loggerFactory)) + using (new ProcessExitedHelper(supervisor.ProcessInfo!.Id, watcher => parentExited.SetResult(watcher.ProcessId), _loggerFactory)) { // Stop parent await supervisor.Stop(TimeSpan.FromSeconds(2)); var processId = await parentExited.Task.TimeoutAfter(TimeSpan.FromSeconds(2)); - processId.Value.ShouldBeGreaterThan(0); + processId!.Value.ShouldBeGreaterThan(0); } } @@ -61,8 +61,8 @@ public async Task When_parent_process_exits_then_child_process_should_also_do_so _loggerFactory, ProcessRunType.NonTerminating, Environment.CurrentDirectory, - "dotnet", - "./NonTerminatingProcess/NonTerminatingProcess.dll"); + Constants.DotNet, + Constants.NonTerminatingProcessPath); parentSupervisor.OutputDataReceived += data => _outputHelper.WriteLine($"Parent: {data}"); var parentIsRunning = parentSupervisor.WhenStateIs(ProcessSupervisor.State.Running); await parentSupervisor.Start(); @@ -73,8 +73,8 @@ public async Task When_parent_process_exits_then_child_process_should_also_do_so _loggerFactory, ProcessRunType.SelfTerminating, Environment.CurrentDirectory, - "dotnet", - $"./NonTerminatingProcess/NonTerminatingProcess.dll --ParentProcessId={parentSupervisor.ProcessInfo.Id}"); + Constants.DotNet, + $"{Constants.NonTerminatingProcessPath} --ParentProcessId={parentSupervisor.ProcessInfo!.Id}"); childSupervisor.OutputDataReceived += data => _outputHelper.WriteLine($"Child: {data}"); var childIsRunning = childSupervisor.WhenStateIs(ProcessSupervisor.State.Running); var childHasStopped = childSupervisor.WhenStateIs(ProcessSupervisor.State.ExitedSuccessfully); diff --git a/libs/little-forker/tests/LittleForker.Tests/ProcessSupervisorTests.cs b/libs/little-forker/tests/LittleForker.Tests/ProcessSupervisorTests.cs index 66217b12..2d5e01ff 100644 --- a/libs/little-forker/tests/LittleForker.Tests/ProcessSupervisorTests.cs +++ b/libs/little-forker/tests/LittleForker.Tests/ProcessSupervisorTests.cs @@ -7,7 +7,7 @@ namespace Logicality.LittleForker; -public class ProcessSupervisorTests : IDisposable +public class ProcessSupervisorTests { private readonly ITestOutputHelper _outputHelper; private readonly ILoggerFactory _loggerFactory; @@ -21,7 +21,7 @@ public ProcessSupervisorTests(ITestOutputHelper outputHelper) [Fact] public async Task Given_invalid_process_path_then_state_should_be_StartError() { - var supervisor = new ProcessSupervisor(_loggerFactory, ProcessRunType.NonTerminating, "c:/", "invalid.exe"); + using var supervisor = new ProcessSupervisor(_loggerFactory, ProcessRunType.NonTerminating, "c:/", "invalid.exe"); var stateIsStartFailed = supervisor.WhenStateIs(ProcessSupervisor.State.StartFailed); await supervisor.Start(); @@ -35,7 +35,7 @@ public async Task Given_invalid_process_path_then_state_should_be_StartError() [Fact] public async Task Given_invalid_working_directory_then_state_should_be_StartError() { - var supervisor = new ProcessSupervisor(_loggerFactory, ProcessRunType.NonTerminating, "c:/does_not_exist", "git.exe"); + using var supervisor = new ProcessSupervisor(_loggerFactory, ProcessRunType.NonTerminating, "c:/does_not_exist", "git.exe"); await supervisor.Start(); supervisor.CurrentState.ShouldBe(ProcessSupervisor.State.StartFailed); @@ -48,14 +48,14 @@ public async Task Given_invalid_working_directory_then_state_should_be_StartErro public async Task Given_short_running_exe_then_should_run_to_exit() { var envVars = new StringDictionary {{"a", "b"}}; - var supervisor = new ProcessSupervisor( + using var supervisor = new ProcessSupervisor( _loggerFactory, ProcessRunType.SelfTerminating, Environment.CurrentDirectory, - "dotnet", - "./SelfTerminatingProcess/SelfTerminatingProcess.dll", + Constants.DotNet, + Constants.SelfTerminatingProcessPath, envVars); - supervisor.OutputDataReceived += data => _outputHelper.WriteLine2(data); + supervisor.OutputDataReceived += _outputHelper.WriteLine2; var whenStateIsExited = supervisor.WhenStateIs(ProcessSupervisor.State.ExitedSuccessfully); var whenStateIsExitedWithError = supervisor.WhenStateIs(ProcessSupervisor.State.ExitedWithError); @@ -66,18 +66,18 @@ public async Task Given_short_running_exe_then_should_run_to_exit() task.ShouldBe(whenStateIsExited); supervisor.CurrentState.ShouldBe(ProcessSupervisor.State.ExitedSuccessfully); supervisor.OnStartException.ShouldBeNull(); - supervisor.ProcessInfo.ExitCode.ShouldBe(0); + supervisor.ProcessInfo!.ExitCode.ShouldBe(0); } [Fact] public async Task Given_non_terminating_process_then_should_exit_when_stopped() { - var supervisor = new ProcessSupervisor( + using var supervisor = new ProcessSupervisor( _loggerFactory, ProcessRunType.NonTerminating, Environment.CurrentDirectory, - "dotnet", - "./NonTerminatingProcess/NonTerminatingProcess.dll"); + Constants.DotNet, + Constants.NonTerminatingProcessPath); supervisor.OutputDataReceived += data => _outputHelper.WriteLine2($"Process: {data}"); var running = supervisor.WhenStateIs(ProcessSupervisor.State.Running); await supervisor.Start(); @@ -99,9 +99,9 @@ public async Task Can_restart_a_stopped_short_running_process() _loggerFactory, ProcessRunType.SelfTerminating, Environment.CurrentDirectory, - "dotnet", - "./SelfTerminatingProcess/SelfTerminatingProcess.dll"); - supervisor.OutputDataReceived += data => _outputHelper.WriteLine2(data); + Constants.DotNet, + Constants.SelfTerminatingProcessPath); + supervisor.OutputDataReceived += _outputHelper.WriteLine2; var stateIsStopped = supervisor.WhenStateIs(ProcessSupervisor.State.ExitedSuccessfully); await supervisor.Start(); await stateIsStopped; @@ -117,9 +117,9 @@ public async Task Can_restart_a_stopped_long_running_process() _loggerFactory, ProcessRunType.NonTerminating, Environment.CurrentDirectory, - "dotnet", - "./NonTerminatingProcess/NonTerminatingProcess.dll"); - supervisor.OutputDataReceived += data => _outputHelper.WriteLine2(data); + Constants.DotNet, + Constants.NonTerminatingProcessPath); + supervisor.OutputDataReceived += _outputHelper.WriteLine2; var exitedKilled = supervisor.WhenStateIs(ProcessSupervisor.State.ExitedKilled); await supervisor.Start(); await supervisor.Stop(); @@ -135,54 +135,54 @@ public async Task Can_restart_a_stopped_long_running_process() [Fact] public async Task When_stop_a_non_terminating_process_without_a_timeout_then_should_exit_killed() { - var supervisor = new ProcessSupervisor( + using var supervisor = new ProcessSupervisor( _loggerFactory, ProcessRunType.NonTerminating, Environment.CurrentDirectory, - "dotnet", - "./NonTerminatingProcess/NonTerminatingProcess.dll"); - supervisor.OutputDataReceived += data => _outputHelper.WriteLine2(data); + Constants.DotNet, + Constants.NonTerminatingProcessPath); + supervisor.OutputDataReceived += _outputHelper.WriteLine2; var stateIsStopped = supervisor.WhenStateIs(ProcessSupervisor.State.ExitedKilled); await supervisor.Start(); await supervisor.Stop(); // No timeout so will just kill the process await stateIsStopped.TimeoutAfter(TimeSpan.FromSeconds(2)); - _outputHelper.WriteLine($"Exit code {supervisor.ProcessInfo.ExitCode}"); + _outputHelper.WriteLine($"Exit code {supervisor.ProcessInfo!.ExitCode}"); } [Fact] public async Task When_stop_a_non_terminating_process_that_does_not_shutdown_within_timeout_then_should_exit_killed() { - var supervisor = new ProcessSupervisor( + using var supervisor = new ProcessSupervisor( _loggerFactory, ProcessRunType.NonTerminating, Environment.CurrentDirectory, - "dotnet", - "./NonTerminatingProcess/NonTerminatingProcess.dll --ignore-shutdown-signal=true"); - supervisor.OutputDataReceived += data => _outputHelper.WriteLine2(data); + Constants.DotNet, + $"{Constants.NonTerminatingProcessPath} --ignore-shutdown-signal=true"); + supervisor.OutputDataReceived += _outputHelper.WriteLine2; var stateIsKilled = supervisor.WhenStateIs(ProcessSupervisor.State.ExitedKilled); await supervisor.Start(); await supervisor.Stop(TimeSpan.FromSeconds(2)); await stateIsKilled.TimeoutAfter(TimeSpan.FromSeconds(5)); - _outputHelper.WriteLine($"Exit code {supervisor.ProcessInfo.ExitCode}"); + _outputHelper.WriteLine($"Exit code {supervisor.ProcessInfo!.ExitCode}"); } [Fact] public async Task When_stop_a_non_terminating_process_with_non_zero_then_should_exit_error() { - var supervisor = new ProcessSupervisor( + using var supervisor = new ProcessSupervisor( _loggerFactory, ProcessRunType.NonTerminating, Environment.CurrentDirectory, - "dotnet", - "./NonTerminatingProcess/NonTerminatingProcess.dll --exit-with-non-zero=true"); - supervisor.OutputDataReceived += data => _outputHelper.WriteLine2(data); + Constants.DotNet, + $"{Constants.NonTerminatingProcessPath} --exit-with-non-zero=true"); + supervisor.OutputDataReceived += _outputHelper.WriteLine2; var stateExitWithError = supervisor.WhenStateIs(ProcessSupervisor.State.ExitedWithError); await supervisor.Start(); await supervisor.Stop(TimeSpan.FromSeconds(5)); await stateExitWithError.TimeoutAfter(TimeSpan.FromSeconds(5)); - supervisor.ProcessInfo.ExitCode.ShouldNotBe(0); + supervisor.ProcessInfo!.ExitCode.ShouldNotBe(0); _outputHelper.WriteLine($"Exit code {supervisor.ProcessInfo.ExitCode}"); } @@ -190,7 +190,7 @@ public async Task When_stop_a_non_terminating_process_with_non_zero_then_should_ [Fact] public async Task Can_attempt_to_restart_a_failed_short_running_process() { - var supervisor = new ProcessSupervisor( + using var supervisor = new ProcessSupervisor( _loggerFactory, ProcessRunType.NonTerminating, Environment.CurrentDirectory, @@ -209,15 +209,11 @@ public async Task Can_attempt_to_restart_a_failed_short_running_process() [Fact] public void WriteDotGraph() { - var processController = new ProcessSupervisor( + using var processController = new ProcessSupervisor( _loggerFactory, ProcessRunType.NonTerminating, Environment.CurrentDirectory, "invalid.exe"); _outputHelper.WriteLine(processController.GetDotGraph()); } - - public void Dispose() - { - } } \ No newline at end of file diff --git a/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.deps.json b/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.deps.json deleted file mode 100644 index ca283660..00000000 --- a/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.deps.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v3.1", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v3.1": { - "SelfTerminatingProcess/1.0.0": { - "runtime": { - "SelfTerminatingProcess.dll": {} - } - } - } - }, - "libraries": { - "SelfTerminatingProcess/1.0.0": { - "type": "project", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.dll b/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.dll deleted file mode 100644 index d2fcddf7..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.dll and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.exe b/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.exe deleted file mode 100644 index 4e4ae680..00000000 Binary files a/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.exe and /dev/null differ diff --git a/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.runtimeconfig.dev.json b/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.runtimeconfig.dev.json deleted file mode 100644 index 477e698c..00000000 --- a/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.runtimeconfig.dev.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "runtimeOptions": { - "additionalProbingPaths": [ - "C:\\Users\\damian\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\damian\\.nuget\\packages", - "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" - ] - } -} \ No newline at end of file diff --git a/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.runtimeconfig.json b/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.runtimeconfig.json deleted file mode 100644 index bc456d78..00000000 --- a/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.runtimeconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "netcoreapp3.1", - "framework": { - "name": "Microsoft.NETCore.App", - "version": "3.1.0" - } - } -} \ No newline at end of file diff --git a/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.xml b/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.xml deleted file mode 100644 index 84b67a7c..00000000 --- a/libs/little-forker/tests/LittleForker.Tests/SelfTerminatingProcess/SelfTerminatingProcess.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - SelfTerminatingProcess - - - -