@@ -58,3 +58,41 @@ import Foo as F
58import Qux (Q(..), q)
58import Qux (Q(..), q)
59import qualified A
59import qualified A
62+## Development Workflow (If you plan on using Stack)
64+Here we outline a general workflow new contributors could adopt for a nice incremental development experience.
66+The root folder consists of two stack-*.yaml config files.
68+1. stack-nightly.yaml - Config file defines all the settings to build and test any changes.
69+2. stack-bench.yaml - Used to run benchmark tests.
70+3. stack-ffi-unescape.yaml - This is for replacing certain parts with a C-implementation.
72+Therefore, a ghci development experience would be:
74+1. `stack ghci --stack-yaml stack-nightly.yaml --test`
76+3. `main` to run all tests, or `:main --pattern Foo` to run specific tests matched by pattern.
78+Some discussion on this topic can also be found here [here](https://github.com/bos/aeson/issues/733)
80+Of course before submitting a PR, the following steps are recommended:
82+1. 'stack test --stack-yaml stack-nightly.yaml` - Run the entire suite of tests
83+2. `make hlint` - Run hlint on the source folders.
84+3. 'stack test --stack-yaml stack-bench.yaml` - Run the benchmark tests if you believe your changes could affect the benchmarks.
86+## Development Workflow (If you plan on using Cabal)
88+A ghci development experience would be:
90+1. `cabal new-repl test:tests`
92+3. `Main.main` to run all tests, or `:m Main; :main --pattern Foo` to run specific tests matched by pattern.
94+Of course before submitting a PR, the following steps are recommended:
96+1. `cabal new-test` - Run the entire suite of tests
97+2. `make hlint` - Run hlint on the source folders.
98+3. Uncomment the `benchmarks` line in `cabal.project` - Run the benchmark tests if you believe your changes could affect the benchmarks.