All checks were successful
		
		
	
	Caddy Manager CI build / docker (push) Successful in 1m16s
				
			
		
			
				
	
	
		
			172 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Test and Coverage Scripts
 | |
| 
 | |
| This folder contains scripts to run tests and generate coverage reports for the CaddyManager application.
 | |
| 
 | |
| ## Available Scripts
 | |
| 
 | |
| ### Bash Script (Linux/macOS)
 | |
| - **File**: `run-tests-with-coverage.sh`
 | |
| - **Usage**: `./scripts/run-tests-with-coverage.sh [OPTIONS]`
 | |
| 
 | |
| ### PowerShell Script (Windows)
 | |
| - **File**: `run-tests-with-coverage.ps1`
 | |
| - **Usage**: `.\scripts\run-tests-with-coverage.ps1 [MODE]`
 | |
| 
 | |
| ## Features
 | |
| 
 | |
| Both scripts provide the following functionality:
 | |
| 
 | |
| 1. **Automatic Tool Installation**: Installs necessary .NET tools if not already present
 | |
| 2. **PATH Management**: Automatically adds .NET tools to PATH
 | |
| 3. **Test Execution**: Runs the complete test suite
 | |
| 4. **Coverage Collection**: Collects code coverage data
 | |
| 5. **Report Generation**: Creates HTML coverage reports
 | |
| 6. **Summary Statistics**: Provides coverage metrics
 | |
| 
 | |
| ## Usage Options
 | |
| 
 | |
| ### Full Mode (Default)
 | |
| Runs tests with coverage collection and generates a detailed report.
 | |
| 
 | |
| ```bash
 | |
| # Bash (Linux/macOS)
 | |
| ./scripts/run-tests-with-coverage.sh
 | |
| 
 | |
| # PowerShell (Windows)
 | |
| .\scripts\run-tests-with-coverage.ps1
 | |
| ```
 | |
| 
 | |
| ### Tests Only Mode
 | |
| Runs tests quickly without coverage collection (faster execution).
 | |
| 
 | |
| ```bash
 | |
| # Bash (Linux/macOS)
 | |
| ./scripts/run-tests-with-coverage.sh --tests-only
 | |
| 
 | |
| # PowerShell (Windows)
 | |
| .\scripts\run-tests-with-coverage.ps1 tests-only
 | |
| ```
 | |
| 
 | |
| ### Coverage Only Mode
 | |
| Generates coverage report from existing coverage data.
 | |
| 
 | |
| ```bash
 | |
| # Bash (Linux/macOS)
 | |
| ./scripts/run-tests-with-coverage.sh --coverage-only
 | |
| 
 | |
| # PowerShell (Windows)
 | |
| .\scripts\run-tests-with-coverage.ps1 coverage-only
 | |
| ```
 | |
| 
 | |
| ### Help
 | |
| Shows usage information and available options.
 | |
| 
 | |
| ```bash
 | |
| # Bash (Linux/macOS)
 | |
| ./scripts/run-tests-with-coverage.sh --help
 | |
| 
 | |
| # PowerShell (Windows)
 | |
| .\scripts\run-tests-with-coverage.ps1 help
 | |
| ```
 | |
| 
 | |
| ## Prerequisites
 | |
| 
 | |
| The scripts will automatically install the following tools if not present:
 | |
| 
 | |
| - **coverlet.collector**: For code coverage collection
 | |
| - **dotnet-reportgenerator-globaltool**: For generating HTML reports
 | |
| 
 | |
| ## Output
 | |
| 
 | |
| ### Test Results
 | |
| - Test execution status and results
 | |
| - Pass/fail statistics
 | |
| - Execution time
 | |
| 
 | |
| ### Coverage Data
 | |
| - **File**: `coverage.cobertura.xml`
 | |
| - **Format**: Cobertura XML format
 | |
| - **Location**: Project root directory
 | |
| 
 | |
| ### Coverage Report
 | |
| - **Directory**: `coverage-report/`
 | |
| - **Main File**: `coverage-report/index.html`
 | |
| - **Format**: Interactive HTML report
 | |
| - **Features**: 
 | |
|   - Line-by-line coverage details
 | |
|   - Branch coverage information
 | |
|   - File-level statistics
 | |
|   - Search and filter capabilities
 | |
| 
 | |
| ## Coverage Summary
 | |
| 
 | |
| The scripts provide a summary of coverage metrics:
 | |
| 
 | |
| - **Line Coverage**: Percentage of code lines executed
 | |
| - **Branch Coverage**: Percentage of code branches executed
 | |
| - **File Coverage**: Coverage statistics per file
 | |
| 
 | |
| ## Troubleshooting
 | |
| 
 | |
| ### Common Issues
 | |
| 
 | |
| 1. **Permission Denied** (Bash script)
 | |
|    ```bash
 | |
|    chmod +x scripts/run-tests-with-coverage.sh
 | |
|    ```
 | |
| 
 | |
| 2. **PowerShell Execution Policy** (PowerShell script)
 | |
|    ```powershell
 | |
|    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
 | |
|    ```
 | |
| 
 | |
| 3. **No Coverage Data Generated**
 | |
|    - This is normal if no code was executed during tests
 | |
|    - Check that tests are actually running the code under test
 | |
| 
 | |
| 4. **Tools Not Found**
 | |
|    - The scripts will automatically install missing tools
 | |
|    - Ensure you have .NET SDK installed
 | |
| 
 | |
| ### Manual Tool Installation
 | |
| 
 | |
| If automatic installation fails, you can install tools manually:
 | |
| 
 | |
| ```bash
 | |
| # Install coverage collector
 | |
| dotnet tool install --global coverlet.collector
 | |
| 
 | |
| # Install report generator
 | |
| dotnet tool install --global dotnet-reportgenerator-globaltool
 | |
| ```
 | |
| 
 | |
| ## Integration with CI/CD
 | |
| 
 | |
| These scripts can be integrated into CI/CD pipelines:
 | |
| 
 | |
| ```yaml
 | |
| # Example GitHub Actions step
 | |
| - name: Run Tests with Coverage
 | |
|   run: ./scripts/run-tests-with-coverage.sh --tests-only
 | |
| 
 | |
| - name: Generate Coverage Report
 | |
|   run: ./scripts/run-tests-with-coverage.sh --coverage-only
 | |
| ```
 | |
| 
 | |
| ## Customization
 | |
| 
 | |
| The scripts can be customized by modifying:
 | |
| 
 | |
| - **Coverage collection options**: Modify the `dotnet test` command parameters
 | |
| - **Report generation**: Change report types and output formats
 | |
| - **Tool installation**: Add or remove required tools
 | |
| - **Output directories**: Modify coverage and report directories
 | |
| 
 | |
| ## Support
 | |
| 
 | |
| For issues or questions about the scripts:
 | |
| 
 | |
| 1. Check the troubleshooting section above
 | |
| 2. Review the script output for error messages
 | |
| 3. Ensure all prerequisites are met
 | |
| 4. Verify .NET SDK is properly installed  |