-
Notifications
You must be signed in to change notification settings - Fork 0
V3.0.2/package maintenance #8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThis pull request updates the CI/CD pipeline by upgrading OS versions, introducing a new test matrix with Ubuntu and Windows, and offloading analysis tasks to external workflows. The solution is enhanced with new testing projects and updated package references. Additionally, new test host fixtures, startup classes, and test-specific configurations are added to support both functional and unit testing. Changes
Sequence Diagram(s)sequenceDiagram
participant GitHub as GitHub Actions
participant Build as Build Job (ubuntu-24.04)
participant Test as Test Job (matrix: ubuntu-24.04, windows-2022)
participant Sonar as External SonarCloud Workflow
participant Codecov as External Codecov Workflow
participant CodeQL as External CodeQL Workflow
participant Deploy as Deploy Job (ubuntu-24.04)
GitHub->>Build: Trigger build
Build->>Test: Trigger tests
Test->>Sonar: Call external SonarCloud workflow
Test->>Codecov: Call external Codecov workflow
Test->>CodeQL: Call external CodeQL workflow
Sonar-->>Deploy: Notify complete
Codecov-->>Deploy: Notify complete
CodeQL-->>Deploy: Notify complete
Deploy->>GitHub: Deploy finished
sequenceDiagram
participant Runner as TestRunner
participant Fixture as TestHostFixture
participant Builder as HostBuilder
participant Startup as TestStartup
Runner->>Fixture: Initialize test host
Fixture->>Builder: Create default host builder
Builder->>Startup: Configure services & configuration
Startup-->>Builder: Return configuration
Builder-->>Fixture: Build host
Fixture->>Runner: Provide test host for execution
Possibly related PRs
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (4)
🚧 Files skipped from review as they are similar to previous changes (3)
Note 🎁 Summarized by CodeRabbit FreeYour organization has reached its limit of developer seats under the Pro Plan. For new users, CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please add seats to your subscription by visiting https://app.coderabbit.ai/login.If you believe this is a mistake and have available seats, please assign one to the pull request author through the subscription management page using the link above. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot reviewed 7 out of 13 changed files in this pull request and generated 1 comment.
Files not reviewed (6)
- Codebelt.Bootstrapper.sln: Language not supported
- Directory.Build.props: Language not supported
- Directory.Packages.props: Language not supported
- test/Codebelt.Bootstrapper.FunctionalTests/Codebelt.Bootstrapper.FunctionalTests.csproj: Language not supported
- test/Codebelt.Bootstrapper.Tests/Codebelt.Bootstrapper.Tests.csproj: Language not supported
- testenvironments.json: Language not supported
test/Codebelt.Bootstrapper.FunctionalTests/BootstrapperLifetimeTest.cs
Outdated
Show resolved
Hide resolved
Welcome to Codecov 🎉Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests. Thanks for integrating Codecov - We've got you covered ☂️ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (13)
test/Codebelt.Bootstrapper.FunctionalTests/Assets/TestStartup.cs (2)
7-16
: Add documentation to TestStartup classThe TestStartup class inherits from StartupRoot but contains an empty ConfigureServices implementation, unlike its counterpart TestStartupRoot which adds test services. Consider adding XML documentation to explain the purpose of this class and why its ConfigureServices method is empty.
namespace Codebelt.Bootstrapper.Assets { + /// <summary> + /// Provides a test startup implementation for functional tests. + /// Unlike TestStartupRoot used in unit tests, this implementation + /// doesn't register any test services by default, allowing functional + /// tests to work with services configured by the application under test. + /// </summary> public class TestStartup : StartupRoot { public TestStartup(IConfiguration configuration, IHostEnvironment environment) : base(configuration, environment) { } + /// <summary> + /// Override to configure services for functional tests. + /// Currently empty by design to use services as configured by the application. + /// </summary> public override void ConfigureServices(IServiceCollection services) { } } }
13-15
: Consider test-specific service configurationThe empty ConfigureServices method might need implementation as functional tests evolve. Consider whether any common test services or mocks might be useful across functional tests.
Would you like me to suggest any common test services that might be beneficial to add here based on patterns in similar functional test setups?
test/Codebelt.Bootstrapper.Tests/Codebelt.Bootstrapper.Tests.csproj (1)
1-11
: Consider adding standard test project propertiesWhile the project file is functional, consider making it more explicitly a test project by adding standard test project properties. This would make the file more self-contained and easier to understand at a glance.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <RootNamespace>Codebelt.Bootstrapper</RootNamespace> + <IsPackable>false</IsPackable> + <IsTestProject>true</IsTestProject> </PropertyGroup> <ItemGroup> <ProjectReference Include="..\..\src\Codebelt.Bootstrapper\Codebelt.Bootstrapper.csproj" /> </ItemGroup> </Project>test/Codebelt.Bootstrapper.FunctionalTests/Codebelt.Bootstrapper.FunctionalTests.csproj (1)
8-10
: Consider removing unused NewFolder referencesThere are references to removing a "NewFolder" directory which appears to be unused. If this is leftover from a template or initial setup, consider removing these lines to keep the project file clean.
- <ItemGroup> - <Compile Remove="NewFolder\**" /> - <EmbeddedResource Remove="NewFolder\**" /> - <None Remove="NewFolder\**" /> - </ItemGroup>test/Codebelt.Bootstrapper.Tests/Assets/TestStartupRoot.cs (1)
14-18
: Consider adding additional test servicesThe implementation provides a basic test service, which is good for initial testing. As the project evolves, consider expanding this with additional test services that might be needed for comprehensive testing.
testenvironments.json (1)
12-12
: Document the Docker image specificationThe Docker image
gimlichael/ubuntu-testrunner:net8.0.407-9.0.202
is used for testing. Consider adding documentation that explains what this image contains and why this specific version was chosen to help future maintainers.test/Codebelt.Bootstrapper.Tests/Assets/StartupRootUnsafeAccessor.cs (1)
9-10
: Consider documenting the purpose of accessing private properties.While using UnsafeAccessor for testing is valid, it might be helpful to add a brief comment explaining why this approach was chosen over making the properties public or internal with [InternalsVisibleTo].
test/Codebelt.Bootstrapper.FunctionalTests/Assets/TestFixture.cs (1)
16-23
: Consider documenting the purpose of callbacks.The ConfigureCallback and ConfigureServicesCallback methods being used aren't clearly documented. Adding XML comments to explain their purpose would improve code maintainability.
- { - ConfigureCallback(config.Build(), context.HostingEnvironment); - }) - .ConfigureServices((context, services) => - { - Configuration = context.Configuration; - HostingEnvironment = context.HostingEnvironment; - ConfigureServicesCallback(services); - }) + { + // Apply additional test-specific configuration settings + ConfigureCallback(config.Build(), context.HostingEnvironment); + }) + .ConfigureServices((context, services) => + { + // Store context resources for test accessibility + Configuration = context.Configuration; + HostingEnvironment = context.HostingEnvironment; + // Apply test-specific service configuration + ConfigureServicesCallback(services); + })test/Codebelt.Bootstrapper.FunctionalTests/BootstrapperLifetimeTest.cs (1)
85-99
: Remove commented-out code.The commented-out methods appear to be older versions of the test setup that have been refactored. These should be removed to improve code clarity.
- - - //public override void ConfigureServices(IServiceCollection services) - //{ - // services.AddXunitTestLoggingOutputHelperAccessor(); - // services.AddXunitTestLogging(TestOutput); - //} - - //protected override void ConfigureHost(IHostBuilder hb) - //{ - // BootstrapperLifetime.OnApplicationStartedCallback = () => { _started = true; }; - // BootstrapperLifetime.OnApplicationStoppingCallback = () => { _stopping = true; }; - // BootstrapperLifetime.OnApplicationStoppedCallback = () => { _stopped = true; }; - // hb.UseBootstrapperLifetime(); - // hb.UseBootstrapperStartup<TestStartup>(); - //}test/Codebelt.Bootstrapper.Tests/StartupRootTest.cs (1)
50-52
: Remove unnecessary empty lines.There are two consecutive empty lines that can be reduced to one for better code consistency.
- - +.github/workflows/pipelines.yml (3)
111-119
: SonarCloud Job – External Workflow Integration and YAML Formatting
The SonarCloud job now calls an external workflow and correctly depends on both the build and test jobs. However, theneeds
list is declared as[build,test]
on line 113. For improved readability and to conform to YAML style guidelines, please add a space after the comma (i.e.,[build, test]
).🧰 Tools
🪛 YAMLlint (1.35.1)
[warning] 113-113: too few spaces after comma
(commas)
121-127
: Codecov Job – External Workflow and List Formatting
The Codecov job correctly invokes an external workflow and depends on the build and test jobs. Similar to the SonarCloud job, updating theneeds
list from[build,test]
to[build, test]
(line 123) will enhance readability and adhere to style best practices.🧰 Tools
🪛 YAMLlint (1.35.1)
[warning] 123-123: too few spaces after comma
(commas)
129-132
: CodeQL Job – External Workflow and YAML List Format
The CodeQL job is properly configured to depend on the build and test jobs and to call its external workflow. Please reformat theneeds
list at line 131 by ensuring a space after the comma (i.e.,[build, test]
) to comply with YAML formatting standards.🧰 Tools
🪛 YAMLlint (1.35.1)
[warning] 131-131: too few spaces after comma
(commas)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
.github/workflows/pipelines.yml
(4 hunks)Codebelt.Bootstrapper.sln
(3 hunks)Directory.Build.props
(1 hunks)Directory.Packages.props
(1 hunks)test/Codebelt.Bootstrapper.FunctionalTests/Assets/TestFixture.cs
(1 hunks)test/Codebelt.Bootstrapper.FunctionalTests/Assets/TestStartup.cs
(1 hunks)test/Codebelt.Bootstrapper.FunctionalTests/BootstrapperLifetimeTest.cs
(1 hunks)test/Codebelt.Bootstrapper.FunctionalTests/Codebelt.Bootstrapper.FunctionalTests.csproj
(1 hunks)test/Codebelt.Bootstrapper.Tests/Assets/StartupRootUnsafeAccessor.cs
(1 hunks)test/Codebelt.Bootstrapper.Tests/Assets/TestStartupRoot.cs
(1 hunks)test/Codebelt.Bootstrapper.Tests/Codebelt.Bootstrapper.Tests.csproj
(1 hunks)test/Codebelt.Bootstrapper.Tests/StartupRootTest.cs
(1 hunks)testenvironments.json
(1 hunks)
🧰 Additional context used
🧬 Code Definitions (4)
test/Codebelt.Bootstrapper.Tests/Assets/TestStartupRoot.cs (1)
test/Codebelt.Bootstrapper.FunctionalTests/Assets/TestStartup.cs (1)
ConfigureServices
(13-15)
test/Codebelt.Bootstrapper.FunctionalTests/Assets/TestStartup.cs (1)
test/Codebelt.Bootstrapper.Tests/Assets/TestStartupRoot.cs (1)
ConfigureServices
(14-18)
test/Codebelt.Bootstrapper.FunctionalTests/Assets/TestFixture.cs (2)
test/Codebelt.Bootstrapper.FunctionalTests/Assets/TestStartup.cs (1)
ConfigureServices
(13-15)test/Codebelt.Bootstrapper.Tests/Assets/TestStartupRoot.cs (1)
ConfigureServices
(14-18)
test/Codebelt.Bootstrapper.Tests/StartupRootTest.cs (2)
test/Codebelt.Bootstrapper.Tests/Assets/TestStartupRoot.cs (3)
TestStartupRoot
(7-19)TestStartupRoot
(9-12)ConfigureServices
(14-18)test/Codebelt.Bootstrapper.Tests/Assets/StartupRootUnsafeAccessor.cs (1)
StartupRootUnsafeAccessor
(7-14)
🪛 YAMLlint (1.35.1)
.github/workflows/pipelines.yml
[warning] 113-113: too few spaces after comma
(commas)
[warning] 123-123: too few spaces after comma
(commas)
[warning] 131-131: too few spaces after comma
(commas)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: 🧪 Test (windows-2022, Debug)
- GitHub Check: 🧪 Test (windows-2022, Release)
🔇 Additional comments (30)
Codebelt.Bootstrapper.sln (3)
42-47
: Good addition of test projects structureThe new test folder and projects are properly organized in the solution structure, following the established pattern in the project. This addition aligns well with the package maintenance goals outlined in the PR.
118-125
: Build configurations properly setThe build configurations for both test projects are correctly configured for Debug and Release configurations, ensuring they will build properly in all solution configurations.
147-148
: Proper solution folder nestingTest projects are correctly nested under the test solution folder, maintaining a clean and organized solution structure.
Directory.Packages.props (3)
8-15
: Package version updates for testing packagesAll testing-related packages have been updated to their latest versions, including Cuemon dependencies, Microsoft.NET.Test.Sdk, and xunit.runner.visualstudio. These updates are important for ensuring compatibility with the latest test runners and frameworks.
18-29
: Framework-specific package updatesThe Microsoft packages for both net9 and net8 target frameworks have been updated to their latest patches (9.0.3 and 8.0.14 respectively). This indicates proper maintenance of dependencies across different framework targets.
7-7
:❓ Verification inconclusive
Package reference change from Xunit to Xunit.App
The change from
Codebelt.Extensions.Xunit
toCodebelt.Extensions.Xunit.App
represents a significant shift in the testing infrastructure. This aligns with the new test projects being added and may provide additional functionality needed for the expanded test coverage.
🏁 Script executed:
#!/bin/bash # Check if there are existing projects using the old package reference rg -g "*.csproj" "Codebelt\.Extensions\.Xunit" --files-with-matches # Check for any breaking changes in this switch by searching for migration guides rg -g "*.md" -i "migration|upgrade|breaking.*Codebelt\.Extensions\.Xunit\.App" -A 3 -B 3Length of output: 160
Verify updated package references and confirm migration impact
The update replacing
Codebelt.Extensions.Xunit
withCodebelt.Extensions.Xunit.App
(version 9.1.3) aligns with the new test infrastructure, and our initial automated searches didn’t reveal any remaining references to the old package or specific migration guides. However, because the shell scripts produced no output—and thus the inference remains inconclusive—please perform a manual verification to ensure that all project files and documentation reflect this change correctly and that the new package meets all test requirements.
- Confirm that no
.csproj
,.props
, or.targets
files still reference the old package.- Verify that any related documentation or migration notes (if available) have been updated accordingly.
test/Codebelt.Bootstrapper.Tests/Codebelt.Bootstrapper.Tests.csproj (1)
3-5
:✅ Verification successful
Verify target framework inheritance
The project doesn't explicitly specify a TargetFramework. Verify that it's properly inheriting this from Directory.Build.props to ensure it's targeting the appropriate framework version(s).
🏁 Script executed:
#!/bin/bash # Check Directory.Build.props for target framework definitions rg "TargetFramework" -g "Directory.Build.props" # Check if any test projects explicitly define target frameworks rg "TargetFramework" -g "*Test*.csproj"Length of output: 239
Target Framework Inheritance Verified
The Directory.Build.props file correctly defines<TargetFrameworks>net9.0;net8.0</TargetFrameworks>
, and no test project (e.g.,Codebelt.Bootstrapper.Tests.csproj
) explicitly overrides this setting. Please confirm that these target frameworks are the intended defaults for the test projects.test/Codebelt.Bootstrapper.FunctionalTests/Codebelt.Bootstrapper.FunctionalTests.csproj (1)
1-17
: LGTM! New functional test project setup looks goodThe functional test project is correctly configured with the appropriate root namespace and project reference to the main library.
test/Codebelt.Bootstrapper.Tests/Assets/TestStartupRoot.cs (2)
1-20
: LGTM! Test startup implementation is properly structuredThe
TestStartupRoot
class correctly inherits fromStartupRoot
and passes the required parameters to the base constructor. TheConfigureServices
method is properly overridden to add test-specific services.
5-20
: Note the difference from TestStartup in FunctionalTestsI notice that
TestStartupRoot
registers a test service, while the similarTestStartup
class in the functional tests project has an emptyConfigureServices
implementation. Ensure this difference is intentional based on the different testing needs of each project.Directory.Build.props (2)
76-76
: LGTM! Package reference updated appropriatelyThe package reference has been updated from
Codebelt.Extensions.Xunit
toCodebelt.Extensions.Xunit.App
as part of the package maintenance effort described in the PR objectives.
76-76
:❓ Verification inconclusive
Verify compatibility with existing tests
Ensure that the transition from
Codebelt.Extensions.Xunit
toCodebelt.Extensions.Xunit.App
doesn't introduce breaking changes in existing tests. The.App
suffix suggests a different implementation that might have different APIs or behaviors.
🏁 Script executed:
#!/bin/bash # Find any references to the old package in test files rg -l "Codebelt\.Extensions\.Xunit" --type csharpLength of output: 239
Ensure Compatibility with Package Transition
The update in
Directory.Build.props
(Line 76) switches the package reference toCodebelt.Extensions.Xunit.App
, but our test files are still referencingCodebelt.Extensions.Xunit
(e.g., intest/Codebelt.Bootstrapper.Tests/StartupRootTest.cs
,test/Codebelt.Bootstrapper.FunctionalTests/BootstrapperLifetimeTest.cs
, andtest/Codebelt.Bootstrapper.FunctionalTests/Assets/TestFixture.cs
). Please verify that the new package version maintains backward compatibility with the APIs these tests rely on. If there are breaking changes, update the tests accordingly or provide adapter methods to align with the new implementation.testenvironments.json (2)
1-15
: LGTM! Test environment configuration looks well-structuredThe test environments configuration is well-structured with clear definitions for WSL and Docker environments. This aligns with the PR objective to update environment configurations.
7-7
: Verify Ubuntu-24.04 availability in CI/CDThe WSL distribution is specified as "Ubuntu-24.04". Ensure this exact version is available in your CI/CD environments where tests will run. This matches the updated
ubuntu-24.04
runner in the CI pipeline.test/Codebelt.Bootstrapper.Tests/Assets/StartupRootUnsafeAccessor.cs (1)
7-14
: Well-implemented UnsafeAccessor pattern for testing private members.This class uses the UnsafeAccessor attribute to access non-public properties of the StartupRoot class in a type-safe way, which is more modern than traditional reflection. It's properly focused on testing purposes and follows good naming conventions.
test/Codebelt.Bootstrapper.FunctionalTests/Assets/TestFixture.cs (1)
11-33
: Solid implementation of test host fixture configuration.The ConfigureHost method effectively sets up the testing infrastructure by configuring a host builder with the necessary components for test execution.
test/Codebelt.Bootstrapper.FunctionalTests/BootstrapperLifetimeTest.cs (4)
22-38
: Well-structured test for service registration.This test effectively verifies that the BootstrapperLifetime is properly registered as an IHostLifetime implementation.
40-58
: Well-implemented callback verification test.This test correctly verifies that the OnApplicationStartedCallback is invoked when the host starts.
60-82
: Well-structured test for multiple lifecycle callbacks.This test effectively verifies that both stopping and stopped callbacks are invoked during the host shutdown process.
44-44
:❓ Verification inconclusive
Caution: Static callbacks can cause test interference.
Using static callback properties can potentially cause interference between tests if run in parallel. Consider using instance-level callback approaches if possible.
🏁 Script executed:
#!/bin/bash # Check if BootstrapperLifetime.OnApplicationStartedCallback is static rg -A 5 'OnApplicationStartedCallback' --type csharpLength of output: 6042
Attention: Verify Static Callback Usage for Test Isolation
It’s been confirmed that
BootstrapperLifetime.OnApplicationStartedCallback
is a static property (seesrc/Codebelt.Bootstrapper/BootstrapperLifetime.cs
). Assignments like the one at line 44 intest/Codebelt.Bootstrapper.FunctionalTests/BootstrapperLifetimeTest.cs
directly affect global state. This can potentially lead to interference between tests if they run in parallel. If parallel execution is expected, please verify that tests remain isolated or consider refactoring to use instance-level callbacks.test/Codebelt.Bootstrapper.Tests/StartupRootTest.cs (4)
19-35
: Well-structured test setup with proper in-memory configuration.The constructor correctly sets up an in-memory configuration and a hosting environment for testing purposes.
37-48
: Good use of UnsafeAccessor to test private properties.This test verifies that the Configuration property returns the injected configuration, using the UnsafeAccessor pattern appropriately.
53-63
: Well-structured test for Environment property.This test effectively verifies that the Environment property returns the injected environment.
65-79
: Well-structured test for service registration.This test effectively verifies that the ConfigureServices method adds services to the service collection as expected. Good use of the Arrange-Act-Assert pattern.
.github/workflows/pipelines.yml (6)
24-24
: Build Job OS Upgrade Verified
The build job now explicitly runs onubuntu-24.04
, which aligns with the PR objective to update the pipeline’s environment.
65-65
: Pack Job OS Upgrade Verified
The pack job’s runtime has been updated toubuntu-24.04
, ensuring consistency with the build environment.
83-92
: New Test Job Integration
A new test job has been introduced with a matrix strategy that supports bothubuntu-24.04
andwindows-2022
. The use of a 15-minute timeout and distinct configurations (Debug and Release) looks well-aligned with the enhanced testing framework.
102-104
: .NET Tool - Report Generator Step Added
The addition of the step to install the .NET Tool for Report Generator is appropriate and supports test reporting.
105-109
: Test Step Configuration Verified
The test step utilizescodebeltnet/dotnet-test@v3
with the matrix-based configuration. The inclusion of the build switch (-p:SkipSignAssembly=true
) is noted; please confirm this flag is intended for your signing strategy.
137-138
: Deploy Job Dependency and Environment Confirmation
The deploy job now runs onubuntu-24.04
and correctly depends on all preceding jobs (build, pack, test, sonarcloud, codecov, codeql
), which establishes a robust dependency chain. This update meets the PR objectives.
|
Decided to opt-in for breaking changes; hance, this PR is closed. |
This pull request includes several important changes to the build and test configurations, as well as updates to project dependencies and the addition of new test projects and test cases.
Build and Test Configuration Updates:
.github/workflows/pipelines.yml
: Updated theruns-on
version toubuntu-24.04
forbuild
,pack
, anddeploy
jobs, and added a newtest
job with a matrix strategy forubuntu-24.04
andwindows-2022
. Replaced thesonarcloud
job withtest
, and added newsonarcloud
andcodecov
jobs. [1] [2] [3] [4]Project Dependency Updates:
Directory.Build.props
: UpdatedPackageReference
forCodebelt.Extensions.Xunit
toCodebelt.Extensions.Xunit.App
.Directory.Packages.props
: Updated versions for several package dependencies includingCodebelt.Extensions.Xunit.App
,Cuemon.Core
,Cuemon.Extensions.Hosting
,Microsoft.NET.Test.Sdk
,Microsoft.AspNetCore.OpenApi
,Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
,Microsoft.Extensions.Configuration
,Microsoft.Extensions.DependencyInjection.Abstractions
, andMicrosoft.Extensions.Hosting
.New Test Projects and Test Cases:
Codebelt.Bootstrapper.sln
: Added new test projectsCodebelt.Bootstrapper.Tests
andCodebelt.Bootstrapper.FunctionalTests
. [1] [2] [3]test/Codebelt.Bootstrapper.FunctionalTests/Assets/TestFixture.cs
: Added a newTestHostFixture
class for functional tests.test/Codebelt.Bootstrapper.FunctionalTests/Assets/TestStartup.cs
: Added a newTestStartup
class for functional tests.test/Codebelt.Bootstrapper.FunctionalTests/BootstrapperLifetimeTest.cs
: Added new test cases forBootstrapperLifetime
.test/Codebelt.Bootstrapper.FunctionalTests/Codebelt.Bootstrapper.FunctionalTests.csproj
: Added project file forCodebelt.Bootstrapper.FunctionalTests
.test/Codebelt.Bootstrapper.Tests/Assets/StartupRootUnsafeAccessor.cs
: Added a newStartupRootUnsafeAccessor
class for accessing private members ofStartupRoot
.test/Codebelt.Bootstrapper.Tests/Assets/TestStartupRoot.cs
: Added a newTestStartupRoot
class for unit tests.test/Codebelt.Bootstrapper.Tests/Codebelt.Bootstrapper.Tests.csproj
: Added project file forCodebelt.Bootstrapper.Tests
.test/Codebelt.Bootstrapper.Tests/StartupRootTest.cs
: Added new test cases forStartupRoot
.Environment Configuration:
testenvironments.json
: Added new test environments forWSL-Ubuntu
andDocker-Ubuntu
.Summary by CodeRabbit