[2025-10-23 11:30:47,246] INFO in __init__: Application started in development mode [2025-10-23 11:30:47,450] INFO in __init__: Application started in development mode [2025-10-23 11:30:47,498] INFO in __init__: Application started in development mode [2025-10-23 11:30:47,515] INFO in __init__: Application started in development mode ============================================================ COMPREHENSIVE TEST SUITE FOR TASKS 1-10 Personal Website Project ============================================================ ============================================================ TASK 1: Project Structure and Configuration ============================================================ [PASS] app/ directory exists [PASS] app/routes/ directory exists [PASS] app/utils/ directory exists [PASS] app/templates/ directory exists [PASS] static/ directory exists [PASS] content/ directory exists [PASS] requirements.txt exists [PASS] .env.example exists [PASS] config.py exists [PASS] config.py has DevelopmentConfig [PASS] config.py has ProductionConfig ============================================================ TASK 2: Flask Application Factory ============================================================ [PASS] app/__init__.py exists [PASS] run.py exists [PASS] create_app() function works [PASS] App has config loaded [PASS] 404 error handler registered [PASS] 500 error handler registered ============================================================ TASK 3: Database Schema and Models ============================================================ [PASS] app/models.py exists Database initialized successfully [PASS] Database initialization works [PASS] content table exists [PASS] categories table exists [PASS] tags table exists [PASS] content_categories table exists [PASS] content_tags table exists [PASS] idx_content_type index exists [PASS] idx_content_date index exists [PASS] Content.create() works [PASS] Content.get_by_id() works [PASS] Content.get_by_slug() works [PASS] Content.get_by_type() works [PASS] Content.update() works [PASS] Content.delete() works ============================================================ TASK 4: Markdown Parser Utility ============================================================ [PASS] app/utils/markdown_parser.py exists [PASS] parse_file() returns dict [PASS] parse_file() extracts frontmatter [PASS] parse_file() extracts content [PASS] parse_file() renders HTML [PASS] Markdown extensions work (code highlighting) [PASS] render_markdown() works ============================================================ TASK 5: Content Indexer Utility ============================================================ [PASS] app/utils/content_indexer.py exists Database initialized successfully [PASS] ContentIndexer instantiates Starting content indexing from C:\Users\jerem\AppData\Local\Temp\tmp1auxh168\content Indexing blog content from blog/ Found 1 markdown file(s) + Indexed: test-post.md Skipping poems/ (directory not found) Skipping videos/ (directory not found) Skipping repos/ (directory not found) Skipping photos/ (directory not found) Cleaning up deleted files... No deleted files found ================================================== Indexing Summary: New files indexed: 1 Files updated: 0 Files skipped (unchanged): 0 Files deleted: 0 Errors: 0 ================================================== [PASS] index_all() returns stats [PASS] Content was indexed in database [PASS] Indexed content has correct title [PASS] Indexed content has correct type ============================================================ TASK 6: Base Template and Navigation ============================================================ [PASS] app/templates/base.html exists [PASS] app/templates/partials/navigation.html exists [PASS] app/templates/partials/footer.html exists [PASS] base.html has DOCTYPE [PASS] base.html has viewport meta tag [PASS] base.html includes navigation [PASS] base.html includes footer [PASS] base.html has content block [PASS] navigation has blog link [PASS] navigation has poems link ============================================================ TASK 7: Responsive CSS Stylesheet ============================================================ [PASS] static/css/style.css exists [PASS] CSS has media queries for responsive design [PASS] CSS has navigation styles ============================================================ TASK 8: Home Page Route and Template ============================================================ [PASS] app/routes/main.py exists [PASS] app/templates/index.html exists [PASS] Home page route (/) works [PASS] Home page returns HTML ============================================================ TASK 9: Blog Section Routes and Templates ============================================================ [PASS] app/routes/blog.py exists [PASS] app/templates/blog/list.html exists [PASS] app/templates/blog/post.html exists [FAIL] Blog listing route (/blog) works Error: Status code: 308 [PASS] Blog listing returns HTML [PASS] blog/list.html extends base template [PASS] blog/list.html has posts loop [PASS] blog/post.html extends base template [PASS] blog/post.html displays post content ============================================================ TASK 10: Poems Section Routes and Templates ============================================================ [PASS] app/routes/poems.py exists [PASS] app/templates/poems/list.html exists [PASS] app/templates/poems/poem.html exists [PASS] poems.py has list_view function [PASS] poems.py has detail_view function [PASS] poems.py imports Content model [PASS] poems.py imports MarkdownParser [FAIL] Poems listing route (/poems) works Error: Status code: 308 [PASS] Poems listing returns HTML [PASS] poems/list.html extends base template [PASS] poems/list.html has poems loop [PASS] poems/list.html is not a stub [PASS] poems/poem.html extends base template [PASS] poems/poem.html displays poem content [PASS] poems/poem.html is not a stub ============================================================ TEST SUMMARY ============================================================ Passed: 84 Failed: 2 Total: 86 Failed tests: - Blog listing route (/blog) works: Status code: 308 - Poems listing route (/poems) works: Status code: 308 [FAIL] Some tests failed. Please review the errors above.