projects/unit3/github-actions-integration/starter/validate_starter.py [12:78]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def test_project_structure():
    """Check that all required files exist."""
    print("Project Structure:")
    required_files = [
        "server.py",
        "pyproject.toml",
        "README.md"
    ]
    
    all_exist = True
    for file in required_files:
        if Path(file).exists():
            print(f"  ✓ {file} exists")
        else:
            print(f"  ✗ {file} missing")
            all_exist = False
    
    return all_exist

def test_imports():
    """Test that the starter code imports work."""
    try:
        # Test importing the server module
        import server
        print("✓ server.py imports successfully")
        
        # Check that FastMCP is imported
        if hasattr(server, 'mcp'):
            print("✓ FastMCP server instance found")
        else:
            print("✗ FastMCP server instance not found")
            return False
            
        return True
    except ImportError as e:
        print(f"✗ Import error: {e}")
        print("  Please ensure you've installed dependencies: uv sync")
        return False

def test_todos():
    """Check that TODO comments exist for learners."""
    print("\nTODO Comments:")
    
    with open("server.py", "r") as f:
        content = f.read()
    
    todos = []
    for i, line in enumerate(content.split('\n'), 1):
        if 'TODO' in line:
            todos.append((i, line.strip()))
    
    if todos:
        print(f"✓ Found {len(todos)} TODO comments for learners:")
        for line_no, todo in todos[:5]:  # Show first 5
            print(f"  Line {line_no}: {todo[:60]}...")
        if len(todos) > 5:
            print(f"  ... and {len(todos) - 5} more")
        return True
    else:
        print("✗ No TODO comments found - learners need guidance!")
        return False

def test_starter_runs():
    """Test that the starter code can at least be executed."""
    print("\nExecution Test:")
    
    try:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



projects/unit3/slack-notification/starter/validate_starter.py [12:78]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def test_project_structure():
    """Check that all required files exist."""
    print("Project Structure:")
    required_files = [
        "server.py",
        "pyproject.toml",
        "README.md"
    ]
    
    all_exist = True
    for file in required_files:
        if Path(file).exists():
            print(f"  ✓ {file} exists")
        else:
            print(f"  ✗ {file} missing")
            all_exist = False
    
    return all_exist

def test_imports():
    """Test that the starter code imports work."""
    try:
        # Test importing the server module
        import server
        print("✓ server.py imports successfully")
        
        # Check that FastMCP is imported
        if hasattr(server, 'mcp'):
            print("✓ FastMCP server instance found")
        else:
            print("✗ FastMCP server instance not found")
            return False
            
        return True
    except ImportError as e:
        print(f"✗ Import error: {e}")
        print("  Please ensure you've installed dependencies: uv sync")
        return False

def test_todos():
    """Check that TODO comments exist for learners."""
    print("\nTODO Comments:")
    
    with open("server.py", "r") as f:
        content = f.read()
    
    todos = []
    for i, line in enumerate(content.split('\n'), 1):
        if 'TODO' in line:
            todos.append((i, line.strip()))
    
    if todos:
        print(f"✓ Found {len(todos)} TODO comments for learners:")
        for line_no, todo in todos[:5]:  # Show first 5
            print(f"  Line {line_no}: {todo[:60]}...")
        if len(todos) > 5:
            print(f"  ... and {len(todos) - 5} more")
        return True
    else:
        print("✗ No TODO comments found - learners need guidance!")
        return False

def test_starter_runs():
    """Test that the starter code can at least be executed."""
    print("\nExecution Test:")
    
    try:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



