Skip to content

Commit 2e92823

Browse files
dbrattliclaude
andcommitted
feat: add Testing chapter and rename chapter files to PascalCase
- Add new Testing chapter covering Fable.Python.Testing and Pyxpecto - Explains why testing matters even with F#'s strong type system - Documents Fable.Python.Testing assertions (equal, notEqual, throws*, etc.) - Shows both XUnit-style (pytest) and Expecto-style (Pyxpecto) approaches - Rename all chapter files to PascalCase for consistency - Remove individual docs/*.md files (using blogpost.md instead) - Update justfile with testing in chapters list 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 24471e7 commit 2e92823

27 files changed

Lines changed: 341 additions & 2926 deletions

‎.gitignore‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,4 +212,8 @@ node_modules/
212212
# Fable Python generated files
213213
output/
214214
obj/
215-
bin/
215+
bin/
216+
217+
# Generated docs (except blogpost.md which is published)
218+
docs/*.md
219+
!docs/blogpost.md

‎.vscode/settings.json‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"pathlib",
1414
"pyname",
1515
"Pyxpecto",
16-
"stroustrup"
16+
"stroustrup",
17+
"xunit"
1718
]
1819
}

‎README.md‎

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -64,25 +64,27 @@ just clean # Remove generated files
6464

6565
```text
6666
chapters/
67-
├── introduction.fs # What is Fable.Python
68-
├── python.fs # F# for Python developers
69-
├── getting-started.fs # Setup and first project
70-
├── interop.fs # Using Python libraries
71-
├── bindings.fs # Creating bindings
72-
├── compatibility.fs # F# feature support
73-
├── fable-v5.fs # What's new in Fable v5
74-
├── pydantic.fs # Pydantic interop
75-
└── units-of-measure.fs # Dimensional analysis
76-
tools/
77-
├── fabletext.fs # Fabletext converter (F#)
78-
└── fabletext.fsproj
67+
├── Introduction.fs # What is Fable.Python
68+
├── Python.fs # F# for Python developers
69+
├── GettingStarted.fs # Setup and first project
70+
├── Interop.fs # Using Python libraries
71+
├── Bindings.fs # Creating bindings
72+
├── Compatibility.fs # F# feature support
73+
├── AsyncProgramming.fs # Async workflows
74+
├── Testing.fs # Testing with Python
75+
├── FableV5.fs # What's new in Fable v5
76+
├── Pydantic.fs # Pydantic interop
77+
└── UnitsOfMeasure.fs # Dimensional analysis
78+
Fable.Literate/
79+
├── App.fs # Fable.Literate converter (F#)
80+
└── Fable.Literate.fsproj
7981
output/
8082
├── chapters/ # Generated Python from chapters
81-
└── tools/
82-
└── fabletext.py # Generated converter (Python)
83+
└── Fable.Literate/
84+
└── app.py # Generated converter (Python)
8385
docs/
84-
├── introduction.md # Individual chapter docs
85-
├── python.md
86+
├── Introduction.md # Individual chapter docs
87+
├── Python.md
8688
├── ...
8789
└── blogpost.md # Concatenated for Hashnode
8890
```
@@ -92,7 +94,7 @@ docs/
9294
Defined in `justfile`:
9395

9496
```just
95-
chapters := "introduction python getting-started interop bindings compatibility fable-v5 pydantic units-of-measure"
97+
chapters := "Introduction Python GettingStarted Interop Bindings Compatibility AsyncProgramming Testing FableV5 Pydantic UnitsOfMeasure"
9698
```
9799

98100
To add a new chapter, just add the file and update this list.
File renamed without changes.

0 commit comments

Comments
 (0)