Skip to content

Commit

Permalink
Code quality and release prep
Browse files Browse the repository at this point in the history
  • Loading branch information
daveaglick committed Dec 17, 2018
1 parent a4da0d8 commit fcc9370
Show file tree
Hide file tree
Showing 33 changed files with 627 additions and 161 deletions.
77 changes: 77 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# EditorConfig is awesome:http://EditorConfig.org

# top-most EditorConfig file
root = true

# Don't use tabs for indentation.
[*]
indent_style = space
# (Please don't specify an indent_size here; that has too many unintended consequences.)

# Code files
[*.{cs,csx,vb,vbx}]
indent_size = 4

# Xml project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
indent_size = 2

# Xml config files
[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
indent_size = 2

# JSON files
[*.json]
indent_size = 2

# Dotnet code style settings:
[*.{cs,vb}]
# Sort using and Import directives with System.* appearing first
dotnet_sort_system_directives_first = true
# Avoid "this." and "Me." if not necessary
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion

# Use language keywords instead of framework type names for type references
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion

# Suggest more modern language features when available
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion

# CSharp code style settings:
[*.cs]
csharp_style_var_for_built_in_types = false:suggestion
csharp_style_var_when_type_is_apparent = false:suggestion
csharp_style_var_elsewhere = false:suggestion

# Prefer method-like constructs to have a block body
csharp_style_expression_bodied_methods = false:none
csharp_style_expression_bodied_constructors = false:none
csharp_style_expression_bodied_operators = false:none

# Prefer property-like constructs to have an expression-body
csharp_style_expression_bodied_properties = true:none
csharp_style_expression_bodied_indexers = true:none
csharp_style_expression_bodied_accessors = true:none

# Suggest more modern language features when available
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
csharp_style_throw_expression = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion

# Newline settings
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
16 changes: 16 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<Project>
<PropertyGroup>
<CodeAnalysisRuleSet>../../daveaglick.ruleset</CodeAnalysisRuleSet>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" Version="1.1.1-beta.61">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Roslynator.Analyzers" Version="2.0.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>
56 changes: 52 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,63 @@
# AzurePipelines.TestLogger

Azure Pipelines logger extension for the [Visual Studio Test Platform](https://gtihub.com/microsoft/vstest).

## Why Do I Need This?

This logger extensions allows you to send test results from a `dotnet test` session directly to Azure Pipelines in real-time as the tests are executed. It also talks directly to the Azure DevOps REST API and as a result can better represent your tests using Azure Pipelines conventions over other post-processing methods such as logging to a TRX file and processing with the `PublishTestResults` Azure Pipelines task.

## Usage
AzurePipelines.TestLogger can report test results automatically to the CI build.

1. Add a reference to the [AzurePipelines.TestLogger NuGet package](https://www.nuget.org/packages/AzurePipelines.TestLogger) in your test project
2. Use the following command when running tests
In order for the logger to authenticate against the Azure DevOps API you'll need to [expose the access token via an environment variable](https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=vsts&tabs=yaml%2Cbatch#systemaccesstoken) in your Azure Pipelines `.yml` file:

```
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
```

### Installing Into Your Project

* Add a reference to the [AzurePipelines.TestLogger NuGet package](https://www.nuget.org/packages/AzurePipelines.TestLogger) in your test project
* Use the following command when running tests
```
> dotnet test --test-adapter-path:. --logger:AzurePipelines
```
3. Test results are automatically reported to the Azure Pipelines CI results
* Test results are automatically reported to the Azure Pipelines CI results

### Using Cake

An alternative to installing the logger directly into your test project is installing it as a tool in Cake:

```
#tool "AzurePipelines.TestLogger&version=1.0.0"
```

Then you can specify the logger during test runs when running on your CI server (the following is example code, your Cake build script may look or behave a little differently):

```
Task("Test")
.Description("Runs all tests.")
.IsDependentOn("Build")
.DoesForEach(GetFiles("./tests/*Tests/*.csproj"), project =>
{
DotNetCoreTestSettings testSettings = new DotNetCoreTestSettings()
{
NoBuild = true,
NoRestore = true,
Configuration = configuration
};
if (isRunningOnBuildServer)
{
testSettings.Filter = "TestCategory!=ExcludeFromBuildServer";
testSettings.Logger = "AzurePipelines";
testSettings.TestAdapterPath = GetDirectories($"./tools/AzurePipelines.TestLogger.*/contentFiles/any/any").First();
}
Information($"Running tests in {project}");
DotNetCoreTest(MakeAbsolute(project).ToString(), testSettings);
})
.DeferOnError();
```

## Credit

Expand Down
4 changes: 4 additions & 0 deletions ReleaseNotes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# 1.0.0

- [Refactoring] Code quality improvements

# 0.4.7

- [Fix] Sends start dates when marking as completed so they don't get reset
Expand Down
22 changes: 22 additions & 0 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
jobs:
- job: Windows
pool:
vmImage: 'vs2017-win2016'
steps:
- script: build -target BuildServer
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
- job: Linux
pool:
vmImage: 'ubuntu 16.04'
steps:
- script: pwsh ./build.ps1 -target BuildServer
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
- job: Mac
pool:
vmImage: 'macOS-10.13'
steps:
- script: pwsh ./build.ps1 -target BuildServer
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
9 changes: 8 additions & 1 deletion build.cake
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// NUGET_KEY
// GITHUB_TOKEN

#tool "AzurePipelines.TestLogger&version=1.0.0"
#addin "Octokit"

using Octokit;
Expand Down Expand Up @@ -106,7 +107,8 @@ Task("Test")
if (isRunningOnBuildServer)
{
testSettings.Filter = "TestCategory!=ExcludeFromBuildServer";
testSettings.Logger = "trx";
testSettings.Logger = "AzurePipelines";
testSettings.TestAdapterPath = GetDirectories($"./tools/AzurePipelines.TestLogger.*/contentFiles/any/any").First();
}
Information($"Running tests in {project}");
Expand Down Expand Up @@ -218,6 +220,11 @@ Task("Release")
.Description("Generates a GitHub release and pushes the NuGet package.")
.IsDependentOn("GitHub")
.IsDependentOn("NuGet");

Task("BuildServer")
.Description("Runs a build from the build server and updates build server data.")
.IsDependentOn("Test")
.WithCriteria(() => isRunningOnBuildServer);

//////////////////////////////////////////////////////////////////////
// EXECUTION
Expand Down
Loading

0 comments on commit fcc9370

Please sign in to comment.