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.
- 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
- 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