#!/usr/bin/env pwsh <# .SYNOPSIS Verifies the Module 03 challenge solution. .DESCRIPTION This script checks that: - The challenge directory exists - A Git repository exists - The feature-login branch exists - The branch has at least 2 new commits - login.py exists in the feature branch but not in main #> Write-Host "`n=== Verifying Module 03 Solution ===" -ForegroundColor Cyan $allChecksPassed = $true # Check if challenge directory exists if (-not (Test-Path "challenge")) { Write-Host "[FAIL] Challenge directory not found. Did you run setup.ps1?" -ForegroundColor Red exit 1 } Set-Location "challenge" # Check if git repository exists if (-not (Test-Path ".git")) { Write-Host "[FAIL] Not a git repository. Did you run setup.ps1?" -ForegroundColor Red Set-Location .. exit 1 } # Save current branch $originalBranch = git branch --show-current 2>$null # Check if feature-login branch exists $branchExists = git branch --list "feature-login" 2>$null if ($branchExists) { Write-Host "[PASS] Branch 'feature-login' exists" -ForegroundColor Green } else { Write-Host "[FAIL] Branch 'feature-login' not found" -ForegroundColor Red Write-Host "[HINT] Create the branch with: git switch -c feature-login" -ForegroundColor Yellow $allChecksPassed = $false Set-Location .. exit 1 } # Check if feature-login has commits beyond main $commitCount = git rev-list main..feature-login --count 2>$null if ($commitCount -ge 2) { Write-Host "[PASS] Branch 'feature-login' has $commitCount new commits" -ForegroundColor Green } else { Write-Host "[FAIL] Branch 'feature-login' needs at least 2 new commits (found: $commitCount)" -ForegroundColor Red Write-Host "[HINT] Make sure you've committed login.py and made at least one more commit" -ForegroundColor Yellow $allChecksPassed = $false } # Switch to feature-login and check for login.py git checkout feature-login 2>$null | Out-Null if (Test-Path "login.py") { Write-Host "[PASS] File 'login.py' exists in feature-login branch" -ForegroundColor Green } else { Write-Host "[FAIL] File 'login.py' not found in feature-login branch" -ForegroundColor Red Write-Host "[HINT] Create login.py and commit it to the feature-login branch" -ForegroundColor Yellow $allChecksPassed = $false } # Switch to main and verify login.py doesn't exist git switch main 2>$null | Out-Null if (-not (Test-Path "login.py")) { Write-Host "[PASS] File 'login.py' does NOT exist in main branch (branches are independent!)" -ForegroundColor Green } else { Write-Host "[FAIL] File 'login.py' should not exist in main branch" -ForegroundColor Red Write-Host "[HINT] Make sure you created login.py only on the feature-login branch" -ForegroundColor Yellow $allChecksPassed = $false } # Switch back to original branch if ($originalBranch) { git switch $originalBranch 2>$null | Out-Null } Set-Location .. # Final summary if ($allChecksPassed) { Write-Host "`n" -NoNewline Write-Host "=====================================" -ForegroundColor Green Write-Host " CONGRATULATIONS! CHALLENGE PASSED!" -ForegroundColor Green Write-Host "=====================================" -ForegroundColor Green Write-Host "`nYou've successfully learned about Git branches!" -ForegroundColor Cyan Write-Host "You now understand:" -ForegroundColor Cyan Write-Host " - How to create branches with git switch -c" -ForegroundColor White Write-Host " - How to switch between branches" -ForegroundColor White Write-Host " - That branches are independent lines of development" -ForegroundColor White Write-Host " - That files in one branch don't affect another" -ForegroundColor White Write-Host "`nReady for the next module!" -ForegroundColor Green Write-Host "" } else { Write-Host "`n[SUMMARY] Some checks failed. Review the hints above and try again." -ForegroundColor Red Write-Host "[INFO] You can run this verification script as many times as needed." -ForegroundColor Yellow Write-Host "" exit 1 }