Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
dbd7a06
Add elm-pages script for running generator with coverage.
dillonkearns Mar 31, 2026
a65065a
Add coverage-guided generators for uncovered elm-codegen APIs.
dillonkearns Mar 31, 2026
5c89bf6
Add more coverage-guided generators: Let.fn, Arg.triple, Type.list/ma…
dillonkearns Mar 31, 2026
8829c2a
Add Declare module generators: value, fn4, alias, customType, module_.
dillonkearns Mar 31, 2026
d36bfb7
Add record alias, record update, appendable, and typed arg generators.
dillonkearns Mar 31, 2026
2565ef6
Add whitebox-guided generators targeting betaReduce, function, update…
dillonkearns Mar 31, 2026
a2f8c45
Add hex, literal patterns, ports, customTypeAdvanced, aliasAs generat…
dillonkearns Mar 31, 2026
021a422
Add unwrap, divide, pipeLeft, Declare.record, Elm.body generators.
dillonkearns Mar 31, 2026
e96c1ec
Add variant2, namedWith alias, record field unify generators.
dillonkearns Mar 31, 2026
b45d4df
Add extensible records, list patterns, pipeTo, fileWith, toFile gener…
dillonkearns Mar 31, 2026
a343e64
Add Elm.parse, variant3, fn5, Elm.unsafe generators.
dillonkearns Apr 1, 2026
32a7f26
Merge remote-tracking branch 'upstream/main' into experiment/coverage…
dillonkearns Apr 1, 2026
959e23d
Remove findings docs from PR (tracked separately)
dillonkearns Apr 2, 2026
eca08d4
Remove old Platform.worker generator, go all-in on elm-pages.
dillonkearns Apr 2, 2026
8094c91
Add README for property test setup and usage.
dillonkearns Apr 2, 2026
2fd69ff
Add elm-pages as npm dependency, use npx throughout.
dillonkearns Apr 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions test/property-test/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ generated/
.elm-pages/
elm-stuff/
script/elm-stuff/
script/.elm-pages/
script/.coverage/
script/coverage/
review/elm-stuff/
codegen/Gen/
package-lock.json
29 changes: 29 additions & 0 deletions test/property-test/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Property Tests

Random program generator for elm-codegen. Generates random Elm files using elm-codegen's API, compiles them with `elm make`, and runs `elm-review` to catch bugs.

## Quick start

```sh
cd test/property-test
npm install
SEED=42 COUNT=10 bash run.sh
```

## Running the generator directly

```sh
cd test/property-test/script
npx elm-pages run src/GenerateProgram.elm -- --seed 42 --count 20
```

## Code coverage

The `--coverage-include ../../../src` flag limits instrumentation to elm-codegen's own source. Without it, the report includes the generator itself and generated codegen helpers (`Gen.*` modules), which are all 0% and dilute the coverage numbers.

```sh
cd test/property-test/script
npx elm-pages run --coverage --coverage-include ../../../src src/GenerateProgram.elm -- --seed 42 --count 10
```

Coverage output is written to `script/coverage/lcov.info`.
100 changes: 0 additions & 100 deletions test/property-test/generate.mjs

This file was deleted.

3 changes: 2 additions & 1 deletion test/property-test/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
"type": "module",
"private": true,
"scripts": {
"generate": "node generate.mjs",
"generate": "cd script && npx elm-pages run src/GenerateProgram.elm",
"test": "node harness.mjs",
"property-test": "sh run.sh"
},
"devDependencies": {
"elm": "^0.19.1-6",
"elm-codegen": "^0.6.3",
"elm-pages": "^3.3.4",
"elm-review": "^2.12.0"
}
}
18 changes: 4 additions & 14 deletions test/property-test/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,6 @@ echo "=== elm-codegen Property Tests ==="
echo "Seed: $SEED Count: $COUNT"
echo ""

# Install npm deps if needed
if [ ! -d "node_modules" ]; then
echo "Installing dependencies..."
npm install
fi

# Generate codegen helpers if needed
if [ ! -d "codegen/Gen" ]; then
echo "Generating codegen helpers..."
npx elm-codegen install
fi

# Clean previous generated files, preserve elm.json
rm -rf generated/src generated/manifest.json generated/elm-stuff
mkdir -p generated/src
Expand Down Expand Up @@ -50,9 +38,11 @@ if [ ! -f "generated/elm.json" ]; then
ELMJSON
fi

# Generate programs
# Generate programs using elm-pages script
echo "Generating $COUNT test programs with seed $SEED..."
node generate.mjs --seed "$SEED" --count "$COUNT"
cd script
npx elm-pages run src/GenerateProgram.elm -- --seed "$SEED" --count "$COUNT"
cd ..
echo ""

# Run the harness (compile + elm-review)
Expand Down
1 change: 1 addition & 0 deletions test/property-test/script/elm-pages.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default {};
39 changes: 38 additions & 1 deletion test/property-test/script/elm.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
"elm-version": "0.19.1",
"dependencies": {
"direct": {
"dillonkearns/elm-cli-options-parser": "5.0.1",
"dillonkearns/elm-pages": "12.1.2",
"elm/core": "1.0.5",
"elm/json": "1.1.4",
"elm/random": "1.0.0",
Expand All @@ -16,9 +18,44 @@
"the-sett/elm-pretty-printer": "3.3.1"
},
"indirect": {
"Chadtech/elm-bool-extra": "2.4.2",
"MaybeJustJames/yaml": "2.1.7",
"avh4/elm-color": "1.0.0",
"danyx23/elm-mimetype": "4.0.1",
"dillonkearns/elm-bcp47-language-tag": "2.0.0",
"dillonkearns/elm-date-or-date-time": "2.0.0",
"dillonkearns/elm-form": "3.1.0",
"dillonkearns/elm-ts-json": "2.1.2",
"elm/browser": "1.0.2",
"elm/bytes": "1.0.8",
"elm/file": "1.0.5",
"elm/html": "1.0.1",
"elm/http": "2.0.0",
"elm/parser": "1.1.0",
"elm/regex": "1.0.0",
"elm/time": "1.0.0",
"stil4m/structured-writer": "1.0.3"
"elm/url": "1.0.0",
"elm/virtual-dom": "1.0.5",
"elm-community/dict-extra": "2.4.0",
"elm-community/list-extra": "8.7.0",
"elm-explorations/test": "2.2.1",
"elmcraft/core-extra": "2.3.0",
"fredcy/elm-parseint": "2.0.1",
"jluckyiv/elm-utc-date-strings": "1.0.0",
"justinmimbs/date": "4.1.0",
"mdgriffith/elm-codegen": "6.0.2",
"miniBill/elm-codec": "2.3.0",
"miniBill/elm-unicode": "1.1.1",
"noahzgordon/elm-color-extra": "1.0.2",
"pithub/elm-parser-bug-workaround": "1.0.0",
"pithub/elm-parser-extra": "1.0.0",
"robinheghan/fnv1a": "1.0.0",
"robinheghan/murmur3": "1.0.0",
"rtfeldman/elm-css": "18.0.0",
"rtfeldman/elm-iso8601-date-strings": "1.1.4",
"stil4m/structured-writer": "1.0.3",
"the-sett/elm-syntax-dsl": "6.0.5",
"wolfadex/elm-ansi": "3.0.1"
}
},
"test-dependencies": {
Expand Down
Loading
Loading