Contributions to relinq must follow the following guidelines in order to keep up the standards and quality of re-linq:

Integration Tests Frontend (Remotion.Linq)

  • Integration tests must be provided in UnitTests/Parsing/QueryParserIntegrationTests
  • The integration tests check that the LINQ-query corresponds to the expected expression tree

Integration Tests SQL Backend (Remotion.Linq.SqlBackend)

  • Integration tests must be provided for every variant affected by the feature. E.g. is it special in sub-queries, where-clauses, etc.
  • Integration tests must be provided in C# and VB.NET:
  • The integration tests check the result against reference data generated when executing the query using Linq2Sql. The test base contains a "Mode"-property that can be overridded in a test to change the mode from reading the reference data to generating it. See the existing tests for samples on how this is set up.
  • The "SystemTests" folder contains new integration tests. The "Linq101" folder contains tests based on the official 101-linq samples provided by Microsoft.
  • If there is already an existing test showing the feature but set to "Ignore" because the feature is not yet implemented, the test must be enabled and work as expected.

Code Style

  • The coding style and formatting must follow the setup shown in the rest of re-linq. To help with this, a ReSharper settings file is part of the project.
  • New files are fitted with a license header. This is usually done automatically via LicenseHeaderManager
  • There must be unit tests written in test first (or at least, be indistinguishable from a test first approach) for each change to the library code.
  • Public and protected members must provide argument checks (see existing code). Simple argument checks (e.g. not-null or string-not-empty) are not explictly tested.


re-linq is available under the Apache Software License (SAL) v2.0. The re-linq SQL Backend (Remotion.Linq.SqlBackend) is available under the Lesser GPL (LGPL) v2.1 or higher.
First-time contributors are asked to sign a Contributor Assignment Agreement.

Last edited Sep 26, 2016 at 6:23 AM by MichaelKetting, version 6


No comments yet.