Skip to content

Commit 45af837

Browse files
authored
Merge branch 'master' into bump-release-version
2 parents 3fbda36 + 1b10a86 commit 45af837

File tree

185 files changed

+2238
-3333
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

185 files changed

+2238
-3333
lines changed

GitVersion.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
assembly-versioning-scheme: None
2-
next-version: 7.0.0
32
branches:
43
master:
54
mode: ContinuousDelivery
@@ -12,4 +11,4 @@ branches:
1211
tag: alpha
1312
increment: Minor
1413
prevent-increment-of-merged-branch-version: false
15-
track-merge-target: true
14+
track-merge-target: true

README.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ![ReactiveUI Logo](https://i.imgur.com/23kfbS9.png) ReactiveUI
22

3-
[![Release Version](https://img.shields.io/github/release/reactiveui/reactiveui.svg)](https://github.com/reactiveui/reactiveui/releases) [![NuGet Stats](https://img.shields.io/nuget/dt/reactiveui-core.svg)](https://www.nuget.org/packages/reactiveui) [![#yourfirstpr](https://img.shields.io/badge/first--timers--only-friendly-blue.svg)](https://github.com/reactiveui/ReactiveUI/issues?utf8=%E2%9C%93&q=label%3Afirst-timers-only+) [![Issue Stats](http://www.issuestats.com/github/reactiveui/reactiveui/badge/issue?style=flat)](http://www.issuestats.com/github/reactiveui/reactiveui) [![Pull Request Stats](http://www.issuestats.com/github/reactiveui/reactiveui/badge/pr?style=flat)](http://www.issuestats.com/github/reactiveui/reactiveui) [![Build status](https://ci.appveyor.com/api/projects/status/nhsndp7v788t6a2m/branch/develop?svg=true)](https://ci.appveyor.com/project/ghuntley/reactiveui/branch/develop)
3+
[![Release Version](https://img.shields.io/github/release/reactiveui/reactiveui.svg)](https://github.com/reactiveui/reactiveui/releases) [![NuGet Stats](https://img.shields.io/nuget/v/reactiveui.svg)](https://www.nuget.org/packages/reactiveui) [![#yourfirstpr](https://img.shields.io/badge/first--timers--only-friendly-blue.svg)](https://github.com/reactiveui/ReactiveUI/issues?utf8=%E2%9C%93&q=label%3Afirst-timers-only+) [![Issue Stats](http://www.issuestats.com/github/reactiveui/reactiveui/badge/issue?style=flat)](http://www.issuestats.com/github/reactiveui/reactiveui) [![Pull Request Stats](http://www.issuestats.com/github/reactiveui/reactiveui/badge/pr?style=flat)](http://www.issuestats.com/github/reactiveui/reactiveui) [![Build status](https://ci.appveyor.com/api/projects/status/nhsndp7v788t6a2m/branch/develop?svg=true)](https://ci.appveyor.com/project/ghuntley/reactiveui/branch/develop) [![Coverage Status](https://coveralls.io/repos/github/reactiveui/ReactiveUI/badge.svg?branch=develop)](https://coveralls.io/github/reactiveui/ReactiveUI?branch=develop)
44

55

66
[![Follow us on Twitter](https://img.shields.io/badge/twitter-%40reactivexui-020031.svg)](https://twitter.com/reactivexui) [![Visit our website](https://img.shields.io/badge/website-reactiveui.net-020031.svg) ](http://www.reactiveui.net/)
@@ -11,7 +11,7 @@ If you’re already familiar with [functional reactive programming](http://docs.
1111

1212
If you have a question, please see if any discussions in our [GitHub issues](github.com/reactiveui/ReactiveUI/issues) or [Stack Overflow](https://stackoverflow.com/questions/tagged/reactiveui) have already answered it. If not, please [feel free to file your own](https://github.com/reactiveui/ReactiveUI/issues/new)!
1313

14-
We have our very own [Slack organization](https://reactivex.slack.com/) which contains some of the best user interface/reactive extension developers in the industry. All software engineers, young and old, regardless of experience are welcome to join our campfire but you'll need to send an email to [[email protected]](mailto:[email protected]) with the email address you'd like to be invited, and we'll send you an invite. Sit tight, it's worth it.
14+
We have our very own [Slack organization](https://reactivex.slack.com/) which contains some of the best user interface/reactive extension developers in the industry. All software engineers, young and old, regardless of experience are welcome to join our campfire but you'll need to send an email to [[email protected]](mailto:[email protected]) with the email address you'd like to be invited, and we'll send you an invite. Sit tight, it's worth it.
1515

1616
# Introduction
1717

@@ -50,7 +50,7 @@ public interface ISearchViewModel
5050
{
5151
ReactiveList<SearchResults> SearchResults { get; }
5252
string SearchQuery { get; }
53-
ReactiveCommand<List<SearchResults>> Search { get; }
53+
ReactiveCommand<string, List<SearchResults>> Search { get; }
5454
ISearchService SearchService { get; }
5555
}
5656
```
@@ -69,9 +69,8 @@ var canSearch = this.WhenAny(x => x.SearchQuery, x => !String.IsNullOrWhiteSpace
6969
// guarantees that this block will only run exactly once at a time, and
7070
// that the CanExecute will auto-disable and that property IsExecuting will
7171
// be set accordingly whilst it is running.
72-
Search = ReactiveCommand.CreateAsyncTask(canSearch, async _ => {
73-
return await searchService.Search(this.SearchQuery);
74-
});
72+
Search = ReactiveCommand.CreateFromTask<string, List<SearchResults>>(_ =>
73+
searchService.Search(this.SearchQuery), canSearch);
7574
```
7675

7776
### Update the user interface
@@ -102,12 +101,12 @@ Search.ThrownExceptions
102101
// of "dead airtime", then automatically invoke the subscribe command.
103102
this.WhenAnyValue(x => x.SearchQuery)
104103
.Throttle(TimeSpan.FromSeconds(1), RxApp.MainThreadScheduler)
105-
.InvokeCommand(this, x => x.Search);
104+
.InvokeCommand(Search);
106105
```
107106

108107
# Slack
109108

110-
We have our very own [Slack organization](https://reactivex.slack.com/) which contains some of the best user interface/reactive extension developers in the industry. All software engineers, young and old, regardless of experience are welcome to join our campfire but you'll need to send an email to [[email protected]](mailto:[email protected]) with the Email address you'd like to be invited, and we'll send you an invite. Sit tight, it's worth it.
109+
We have our very own [Slack organization](https://reactivex.slack.com/) which contains some of the best user interface/reactive extension developers in the industry. All software engineers, young and old, regardless of experience are welcome to join our campfire but you'll need to send an email to [[email protected]](mailto:[email protected]) with the Email address you'd like to be invited, and we'll send you an invite. Sit tight, it's worth it.
111110

112111
# Support
113112

appveyor.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
version: 1.0.{build}
88
environment:
99
ANDROID_HOME: "C:\\android-sdk-windows"
10+
COVERALLS_TOKEN: jLYKFVgST432LzbZeyLnLpoteXwQLveBw
1011
GITHUB_USERNAME:
1112
secure: 0Q9MvUId56SizmZwCf0cgg==
1213
GITHUB_TOKEN:
@@ -47,6 +48,7 @@
4748
version: 1.0.{build}
4849
environment:
4950
ANDROID_HOME: "C:\\android-sdk-windows"
51+
COVERALLS_TOKEN: jLYKFVgST432LzbZeyLnLpoteXwQLveBw
5052
NUGET_SOURCE: https://www.myget.org/F/reactiveui/api/v2/package
5153
NUGET_APIKEY:
5254
secure: YP/3KxC2ffsuHNaolPXj66JVGzSjON9FcR2S2OEzn9c6SV14oPzUh1ySyeT+G+aA

build.cake

Lines changed: 56 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
//////////////////////////////////////////////////////////////////////
44

55
#addin "Cake.FileHelpers"
6+
#addin "Cake.Coveralls"
67

78
//////////////////////////////////////////////////////////////////////
89
// TOOLS
@@ -11,6 +12,9 @@
1112
#tool "GitReleaseManager"
1213
#tool "GitVersion.CommandLine"
1314
#tool "GitLink"
15+
#tool "coveralls.io"
16+
#tool "OpenCover"
17+
#tool "ReportGenerator"
1418

1519
//////////////////////////////////////////////////////////////////////
1620
// ARGUMENTS
@@ -56,6 +60,7 @@ var buildVersion = gitVersion.FullBuildMetaData;
5660

5761
// Artifacts
5862
var artifactDirectory = "./artifacts/";
63+
var testCoverageOutputFile = artifactDirectory + "OpenCover.xml";
5964
var packageWhitelist = new[] { "ReactiveUI-Testing", "ReactiveUI-Events", "ReactiveUI-Events-XamForms", "ReactiveUI", "ReactiveUI-Core", "ReactiveUI-AndroidSupport", "ReactiveUI-Blend", "ReactiveUI-Winforms", "ReactiveUI-XamForms" };
6065

6166
// Define global marcos.
@@ -282,6 +287,18 @@ Task("UpdateAppVeyorBuildNumber")
282287
.Does(() =>
283288
{
284289
AppVeyor.UpdateBuildVersion(buildVersion);
290+
291+
}).ReportError(exception =>
292+
{
293+
// When a build starts, the initial identifier is an auto-incremented value supplied by AppVeyor.
294+
// As part of the build script, this version in AppVeyor is changed to be the version obtained from
295+
// GitVersion. This identifier is purely cosmetic and is used by the core team to correlate a build
296+
// with the pull-request. In some circumstances, such as restarting a failed/cancelled build the
297+
// identifier in AppVeyor will be already updated and default behaviour is to throw an
298+
// exception/cancel the build when in fact it is safe to swallow.
299+
// See https://github.com/reactiveui/ReactiveUI/issues/1262
300+
301+
Warning("Build with version {0} already exists.", buildVersion);
285302
});
286303

287304
Task("UpdateAssemblyInfo")
@@ -309,16 +326,51 @@ Task("RunUnitTests")
309326
.IsDependentOn("BuildReactiveUI")
310327
.Does(() =>
311328
{
312-
XUnit2("./src/ReactiveUI.Tests/bin/Release/Net45/ReactiveUI.Tests_Net45.dll", new XUnit2Settings {
313-
OutputDirectory = artifactDirectory,
314-
XmlReportV1 = true,
315-
NoAppDomain = true
329+
Action<ICakeContext> testAction = tool => {
330+
331+
tool.XUnit2("./src/ReactiveUI.Tests/bin/Release/Net45/ReactiveUI.Tests_Net45.dll", new XUnit2Settings {
332+
OutputDirectory = artifactDirectory,
333+
XmlReportV1 = true,
334+
NoAppDomain = true
335+
});
336+
};
337+
338+
OpenCover(testAction,
339+
testCoverageOutputFile,
340+
new OpenCoverSettings {
341+
ReturnTargetCodeOffset = 0,
342+
ArgumentCustomization = args => args.Append("-mergeoutput")
343+
}
344+
.WithFilter("+[*]* -[*.Testing]* -[*.Tests*]* -[Playground*]* -[ReactiveUI.Events]* -[Splat*]*")
345+
.ExcludeByAttribute("*.ExcludeFromCodeCoverage*")
346+
.ExcludeByFile("*/*Designer.cs;*/*.g.cs;*/*.g.i.cs;*splat/splat*"));
347+
348+
ReportGenerator(testCoverageOutputFile, artifactDirectory);
349+
});
350+
351+
Task("UploadTestCoverage")
352+
.WithCriteria(() => !local)
353+
.WithCriteria(() => isRepository)
354+
.IsDependentOn("RunUnitTests")
355+
.Does(() =>
356+
{
357+
// Resolve the API key.
358+
var token = EnvironmentVariable("COVERALLS_TOKEN");
359+
if (string.IsNullOrEmpty(token))
360+
{
361+
throw new Exception("The COVERALLS_TOKEN environment variable is not defined.");
362+
}
363+
364+
CoverallsIo(testCoverageOutputFile, new CoverallsIoSettings()
365+
{
366+
RepoToken = token
316367
});
317368
});
318369

319370
Task("Package")
320371
.IsDependentOn("PackageEvents")
321372
.IsDependentOn("PackageReactiveUI")
373+
.IsDependentOn("UploadTestCoverage")
322374
.Does (() =>
323375
{
324376

docs/advanced/act-on-every-object.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/advanced/autopersist.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/advanced/create-derived-collection.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/advanced/handle-observable-errors.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/advanced/index.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/advanced/memoizing-mru-cache.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)