The Marten library provides .NET developers with the ability to use the proven PostgreSQL database engine and its fantastic JSON support as a fully fledged document database. The Marten team believes that a document database has far reaching benefits for developer productivity over relational databases with or without an ORM tool.
Marten also provides .NET developers with an ACID-compliant event store with user-defined projections against event streams.
Before getting started you will need the following in your environment:
1. .NET Core SDK 2.1
Available here
2. PostgreSQL 9.5+ database with PLV8
You need to enable the PLV8 extension inside of PostgreSQL for running JavaScript stored procedures for the nascent projection support.
Ensure the following:
- The login you are using to connect to your database is a member of the
postgres
role - An environment variable of
marten_testing_database
is set to the connection string for the database you want to use as a testbed. (See the Npgsql documentation for more information about PostgreSQL connection strings ).
Help with PSQL/PLV8
- On Windows, see this link for pre-built binaries of PLV8
- On *nix, check marten-local-db for a Docker based PostgreSQL instance including PLV8.
Once you have the codebase and the connection string file, run the rake script or use the dotnet CLI to restore and build the solution.
You are now ready to contribute to Marten.
- Unit Tests rely on xUnit and Shouldly
- Rake is used for build automation. It is not mandatory for development.
- Node.js runs our Mocha specs.
- Storyteller for some of the data intensive automated tests
To run mocha tests use rake mocha
or npm run test
. There is also npm run tdd
to run the mocha specifications
in a watched mode with growl turned on.
Note: remember to run
npm install
To open the Storyteller editor, use the command rake open_st
from the command line or rake storyeller
to run the Storyteller specs. If you don't want to use rake, you can launch the
Storyteller editor after compiling the solution by the command packages\storyteller\tools\st.exe open src/Marten.Testing
.
The documentation content is the markdown files in the /documentation
directory directly under the project root. To run the documentation website locally with auto-refresh, either use the rake task rake docs
or the batch script named run-docs.cmd
.
If you wish to insert code samples to a documentation page from the tests, wrap the code you wish to insert with
// SAMPLE: name-of-sample
and // ENDSAMPLE
.
Then to insert that code to the documentation, add <[sample:name-of-sample]>
.
Note: content is published to the
gh-pages
branch of this repository by running thepublish-docs.cmd
command.
# run restore, build and test
rake
# run all tests including mocha tests
rake test
# running documentation website locally
rake docs
# restore nuget libraries
dotnet restore src\Marten.sln
# build solution
dotnet build src\Marten.sln
# running tests for a specific target framework
dotnet run -p martenbuild.csproj -- test
# mocha tests
dotnet run -p martenbuild.csproj -- mocha
# running documentation website locally
dotnet run -p martenbuild.csproj -- docs