Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add sourcelink support #1574

Merged
merged 6 commits into from
Apr 3, 2017
Merged

Conversation

ryangribble
Copy link
Contributor

@ryangribble ryangribble commented Mar 30, 2017

For our 2 library projects,

  • Set PDB option to embedded
  • add sourcelink MSBuild tools (should run automatically)
  • add sourcelink test MSBuild tool (should verify the sourcelink worked ok)

@ryangribble
Copy link
Contributor Author

ryangribble commented Mar 30, 2017

OK so this worked 😀 🎉

image

image

But I'd like to make a couple of enhancements

  • Ability to run sourcelink on local builds
    By default sourcelink is running only on CI server. Ill add a cake parameter allowing us to run sourcelink locally if required. When this parameter is passed to Cake, we can set /p:ci=true parameter on the DotNetBuild task which will cause sourcelink to run. Not sure what other side effects of setting ci=true are though... Alternatively I can investigate how to control running sourcelink or not with a specific parameter maybe...

  • Show sourcelink output in build script output
    Currently the log doesnt show any of this output unless you set verbosity (passing /v:n to the build task). But that of course shows HEAPS of other output when ideally there would be a way to just see the sourcelink info (or even just the result of dotnet sourcelink test). Let me know if there is anything like that @ctaggart or whether I have to go with verbose mode?

@mderriey
Copy link
Contributor

That's great @ryangribble!

@ctaggart
Copy link

Ability to run sourcelink on local builds
By default sourcelink is running only on CI server. Ill add a cake parameter allowing us to run sourcelink locally if required. When this parameter is passed to Cake, we can set /p:ci=true parameter on the DotNetBuild task which will cause sourcelink to run. Not sure what other side effects of setting ci=true are though... Alternatively I can investigate how to control running sourcelink or not with a specific parameter maybe

You could set the environment variables or msbuild properties of CI or SourceLinkCreate to true. They are not case sensitive. See this code for details.

Show sourcelink output in build script output
Currently the log doesnt show any of this output unless you set verbosity (passing /v:n to the build task). But that of course shows HEAPS of other output when ideally there would be a way to just see the sourcelink info (or even just the result of dotnet sourcelink test). Let me know if there is anything like that @ctaggart or whether I have to go with verbose mode?

2.1 will be a lot less verbose. It will not print all the source files. I'll probably publish to NuGet Gallery the latest prerelease soon if it passes tests.

@ctaggart
Copy link

ctaggart commented Mar 31, 2017

SourceLink 2.1.0 is out :-)

@ryangribble
Copy link
Contributor Author

2.1 will be a lot less verbose. It will not print all the source files. I'll probably publish to NuGet Gallery the latest prerelease soon if it passes tests.

I didnt mind the verbosity of the sourcelink output itself, the main problem was since it's part of the "build" task, when I set verbosity I got loads of build related output from MSBuild (when i really just wanted the sourelink output).

For the time being ive actually removed the builtin MSBuild sourcelink test, and running my own cake task to do a sourcelink test on the produced assemblies, so our build output shows that sourcelink was verified.

@ryangribble
Copy link
Contributor Author

Builds are green, I'm happy if you are 👍 @mderriey

From the appveyor build log:
image

TravisCI:
image

@ryangribble ryangribble changed the title [WIP] Add sourcelink support Add sourcelink support Apr 2, 2017
@ryangribble ryangribble modified the milestones: CAKE Builds, dotnetcore Apr 2, 2017
@ctaggart
Copy link

ctaggart commented Apr 2, 2017

You are the first to get it working on Travis! Thanks. I'll look to see how you got msbuild 15 running there. With 2.1, you can also just test nupkg files.

@ryangribble
Copy link
Contributor Author

Oh nice! I'll change my step to run after packaging and use the nupkg files instead, as the way I was getting the dll assemblies was assuming a few things!

Regarding travis yeah we had a few hoops to jump but between @mderriey and I we got it working! Most of the magic will be in travis.yml and build.sh and a little in our cake build (running nuget and gitversion via mono)

@mderriey
Copy link
Contributor

mderriey commented Apr 2, 2017

I don't explain it, but running dotnet sourcelink test as part of the Cake build is much much longer than running it directly; When I tried before pushing, it took a good 2 minutes as part of the Cake build, and maybe 4-5 seconds from a PowerShell console.

@ryangribble do you see the same behaviour? Is it worth looking into it?

@mderriey
Copy link
Contributor

mderriey commented Apr 2, 2017

Hmm, must be something with my machine, it took ~40 seconds on AppVeyor and Travis CI.

@ctaggart
Copy link

ctaggart commented Apr 2, 2017

It is literally downloading all the source files 1 by 1. I added an up for grabs to speed this up. How fast is your internet connection compared to AppVeyor and Travis CI?

@ryangribble
Copy link
Contributor Author

Yeah it did take a noticable amount of time but as @ctaggart said it is checking each file on github's checksum against that stored in the embedded pdb so it was expected. it seems to be faster on the subsequent assemblies so I'm guessing some caching must be involved?

Also when comparing to previous builds Im not sure if the SourceLink.Test msbuild target was even actually running once @mderriey introduced the SourceLinkCreate msbuild parameter setting. From the brief look I had, the CI parameter would run create and test actions, but the SourceLinkCreate parameter only controlled creation, and a separate SourceLinkTest parameter controlled the testing. See here.

@mderriey
Copy link
Contributor

mderriey commented Apr 2, 2017

@ctaggart in this case, I'm using a 100Mb/s link.
@ryangribble you're right, I don't think it was, and this was intentional. I like the fact that we're explicitly testing that source linking works. Do you prefer running it as part of the dotnet build?

If not, I'm happy with the current state of things 😃

@ryangribble
Copy link
Contributor Author

Do you prefer running it as part of the dotnet build?

I prefer running it separately as I liked the idea of seeing output/validation of the sourcelink data. Perhaps in the future if the msbuild sourcelink test target can log the "sourcelink test on xxxx succesful" when msbuild logging verbosity is the default, then we could remove the explicit step, but for now im happy!

@ryangribble
Copy link
Contributor Author

One other thing I just thought about... when you run sourcelink test "before pushing" it gets 404 failures because that commit hash doesnt exist on github.com. So perhaps that is the reason for seeing execution time take longer locally

@mderriey
Copy link
Contributor

mderriey commented Apr 3, 2017

I thought about that, too, I pushed before running it locally as the sourcelink test passed. It's not a big deal, really, I thought it would also take a long time on CI, but it turns out it's not, so it's not really an issue IMO.

@ryangribble
Copy link
Contributor Author

@ryangribble
Copy link
Contributor Author

ryangribble commented Apr 3, 2017

release_notes: Provide SourceLink capability for Octokit and Octokit.Reactive assemblies

@ryangribble ryangribble merged commit 96df1a7 into octokit:dotnetcore Apr 3, 2017
@ryangribble ryangribble deleted the sourcelink branch April 3, 2017 00:50
SeanKilleen added a commit to SeanKilleen/octokit.net that referenced this pull request Oct 9, 2019
* Update ApiErrorMessageSafe to return null for empty and whitespace strings (#1540)

* return null if ApiError.Message is empty or whitespace

* Uncomment test, which now passes

* Add "Bot" AccountType, was causing a deserialization exception when running the integration test "SearchForExcludedLanguage" (#1541)

* Release v0.24 - A Sight For Sore Eyes (#1539)

* Add release notes and bump version to 0.24

* run "build FormatCode" to fix up whitespace/formatting issues

* Fix failing Ssh key tests due to "validation exception".  This key must be in use on github (under another user, most likely from these tests failing).  Changed to a new SSH key and tweaked tests to reduce chance of a key being created and not destroyed

* Assignee and Assignees cant both be specified on NewIssue.  We missed this one in the PR.  Marked Assignee as [Obsolete] and fixed tests to use Assignees

* Fix a couple of Reactions tests that were calling the wrong client methods

* Fix timeline tests - looks like the response class has changed shape a bit, it now has an Issue object in the payload and Id field isnt present (leaving Id field there in case other timeline events do use it)

* Fix some following tests that require the test user to follow more than 1 other user

* Unskip these Event tests now because apparently they work!

* add breaking changes notes

* Update ApiErrorMessageSafe to return null for empty and whitespace strings (#1540)

* return null if ApiError.Message is empty or whitespace

* Uncomment test, which now passes

* update release notes to include PR1540

* Add "Bot" AccountType, was causing a deserialization exception when running the integration test "SearchForExcludedLanguage" (#1541)

* Update to include PR1541

* add bullets to make release notes easier to read

* markup additional code mentions in notes

* Fix grammar

fields => field

* Port to .NET Core (#1503)

Port to .NET Core

* Add a build task to validate LINQPad samples (#1551)

* add a build task to run LINQPad samples

* make modifications to the validation of LINQPad samples

* rename the CAKE task to its original name ValidateLINQPadSamples
* rename the LINQPad samples file so they get executed in ordinal order (1, 2, ..., 10 and not 1, 10, 2, ...)

* remove openssl linking in TravisCI when on macOS

* Add a code formatting task to CAKE (#1550)

* add FormatCode build task

* add log message to indicate we generate temp .csproj files to run the code formatter

* Remove unneeded files for .NET Core (#1549)

* add .ruleset back to both Octokit and Octokit.Reactive

* rename Octokit.Core.sln to Octokit.sln

* remove platform-specific solution files

* remove .nuspec files

NuGet packaging information is now in the relevant project.json files

* remove ext folder containing platform-specific assemblies

* update the description of the .ruleset file we use

* add GitVersion configuration file (#1555)

* add GitVersion configuration file

* use beta tag for master

* change appveyor config - public projects can no longer use account feeds (plus we dont actually need it anyway)

* React to change in the way the RepositoryTraffic API communicates time (#1560)

* React to change in the way the API communicates time

Fixes #1558.
The API used to send times as number of seconds from Unix epoch time.
This has changed and is now ISO 8601.

* remove openssl linking in TravisCI when on macOS

# Conflicts:
#	.travis.yml

* change appveyor config - public projects can no longer use account feeds (plus we dont actually need it anyway)

* Add merge_commit_sha to PullRequest model (#1562)

* Add merge_commit_sha to PullRequest model

* Update MergeCommitSha summary

* fix .sln file for linux (#1556)

* Update existing tests to use Octokit PR 1503 as it has some of the newer event types that are failing to deserialize

* Write a timeline test that processes the most recent 20 closed PRs and 20 open Issues in octokit.net in attempt to more likely encounter a new EventType enum value added by github api changes

* Fix failing tests by adding 2 new (undocumented) EventInfoState values

* Changed test to use microsoft/vscode

* Found another new event type!

* response enums can be camelcase as underscores are removed in the deserializer

* delete the parameterless constructor of RepositoryUpdate

* Supply the call to ctor with anyreponame string parameter for unit test

* Since we'have removed the default constructor of RepositoryUpdate, this CanSerialize Fact needs to be updated

* Retain the rest of property initializers

* update the code to instantiate RepositoryUpdate with reponame param and keep the existing property init

* Migrate dotnetcore to vs2017 tooling (#1567)

* convert to VS2017

* rework cake.frosting build to latest cake vs2017 "template" example

* fix clean task and version suffix

* add arg to DotNetCorePack so it uses the correct version

* fix appveyor

* is there an easier way to test appveyor?

* ok travis, let's do this

* after reading the travis repo, this seems to be the version we want for vs201/csproj tool support

* msbuild complaining about arguments - we can use defaults anyhow so remove $@ from build.sh script

* add workaround for msbuild/travis, as mentioned on aspnet Mvc repo

* cmon travis

* perhaps tee isnt needed afterall

* travis permission denied when trying to install tools in build script... i feel dirty but need to see if sudo will fix it!

* could it be folder permissions of /build ?

* Try 777 for NuGet.exe permissions rather than 644

* remove windows platform restriction on GitVersion call

* Add a wrapper script for GitVersion on non windows

* fix wrapper script name

* add debug

* let's see if we are running the script at all!

* run mono gitversion direclty from travis.yml, for science

* see if we can run bin/sh and prepend an argument to our shell script

* remove echos from wrapper script

* Ensure full git repo include more than 50 commits and all tags are fetched, as GitVersion was failing on TravisCI

* only build netstandard framework on non windows

* revert overriding the target framework when building the solution

* Unix being case-sensitive, adjust app.config file name in csproj files

* set FrameworkPathOverride to point to different folders on macOS and Linux

* Remove NuGet.exe from the repo.

On Windows, it will be installed by the Frosting bootstrapper script.
On Unix/macOS, cake has smarts to look for mono- and Linux-specific executables

* tidy up GitVersion logic into a GitVersionRunner class

* apply workaround for osx dotnet restore "too many open files" errors

* update test project references to latest official versions

* doesnt seem to be a reason for overriding the implicit reference

* remove extra whitespace and unused namespace

* [StringExtensions] - Display correct variable name when throwing. (#1564)

* Update release code sample to client.Repository.Release

* Add sourcelink support (#1574)

* add sourcelink support

* Update sourcelink (2.0.2 -> 2.1.0)

* Add parameter to enable source linking

* tidy up the arguments with an extension method allowing an argument to be conditionally appended

* Add an explicit "test sourcelink" build task and remove the MSBuild one, so we can get some build script output without needing the whole build to be in verbose logging

* run sourcelink test against the NuGet packages

* Surface exceptions in RepoCollaboratorsClient.Add method (#1576)

* Surface exceptions in RepoCollaboratorsClient.Add method

* Reintroducing try...catch but for NotFoundException

* Remove old/test dotnet core builds from appveyor

* missed solution file update

* bugfix - PUT should have a payload for Mark as Read (#1579)

* bugfix - PUT should have a payload for Mark as Read

* also fix the Observable client test

* add integration tests for MarkRead methods

* Fixup MarkReadForRepository methods to specify a body in the PUT request

* Fix unit tests for regular and observable client

* helps if the new files are included in the test project :)

* Cloning ApiInfo object should work when some fields are null (#1580)

* Adjust ApiInfo.Clone() to work even if some elements (eg ETag) are null

* Remove c# 6 language feature and do it the old school way

* Add a test for cloning ApiInfo when some fields are null

* The 3 lists can never be null anyway so remove some un-needed statements

* Add test for null RateLimit

* Remove Rx-Main dependency from samples
This resolves #1592 - LINQPad doesn't understand how to restore this unlisted package and it's not actually needed in the samples.

* Adding RemovedFromProject and other missing EventInfoState types. (#1591)

* Adding missing review types to event info.

* Fixing whitespace.

* Reword `BaseRefChanged` comment

* Adding missing event types.

* Change response models 'Url' properties from `Uri` to `string` (#1585)

* Add convention test to ensure 'Url' properties are of type string

Closes #1582

* Change 'Url' properties from Uri to string

Global Find/Replace FTW!

* fix compilation errors in the integration tests project

* Extend 'Url' properties type check to request models

* Stick to convention tests naming convention

* Remove unused using directives in models

Changing from `Uri` to `string` means the `using System;`
directive was not needed anymore in some files

* Update exception message wording

* empty commit to trigger a new build - hopefully Travis passes

* add convention test to ensure request models have Uri 'Url' properties

* make request models 'Url' properties Uri

fix typo in convention test name

* revert some request models 'Url' properties as `string`

see https://github.com/octokit/octokit.net/pull/1585#issuecomment-297186728

* Change test so that all model types must have 'Url' properties of type string

 - Filter test input to only get types which have 'Url' properties
 - Merge response and request model types tests into one
 - Unparameterize the exception since we only check for the string type now

* Fix string.Format tokens

If this PR doesn't get rebased, it'll be my wall of shame FOREVER!

* and then it's even more embarrassing when the commit message says rebased but you really meant squashed

* Remove exclusion of `Release` from request models

* Merge master into dotnetcore (#1599)

* bugfix - PUT should have a payload for Mark as Read (#1579)

* bugfix - PUT should have a payload for Mark as Read

* also fix the Observable client test

* add integration tests for MarkRead methods

* Fixup MarkReadForRepository methods to specify a body in the PUT request

* Fix unit tests for regular and observable client

* helps if the new files are included in the test project :)

* Cloning ApiInfo object should work when some fields are null (#1580)

* Adjust ApiInfo.Clone() to work even if some elements (eg ETag) are null

* Remove c# 6 language feature and do it the old school way

* Add a test for cloning ApiInfo when some fields are null

* The 3 lists can never be null anyway so remove some un-needed statements

* Add test for null RateLimit

* Remove Rx-Main dependency from samples
This resolves #1592 - LINQPad doesn't understand how to restore this unlisted package and it's not actually needed in the samples.

* Adding RemovedFromProject and other missing EventInfoState types. (#1591)

* Adding missing review types to event info.

* Fixing whitespace.

* Reword `BaseRefChanged` comment

* Adding missing event types.

* Change response models 'Url' properties from `Uri` to `string` (#1585)

* Add convention test to ensure 'Url' properties are of type string

Closes #1582

* Change 'Url' properties from Uri to string

Global Find/Replace FTW!

* fix compilation errors in the integration tests project

* Extend 'Url' properties type check to request models

* Stick to convention tests naming convention

* Remove unused using directives in models

Changing from `Uri` to `string` means the `using System;`
directive was not needed anymore in some files

* Update exception message wording

* empty commit to trigger a new build - hopefully Travis passes

* add convention test to ensure request models have Uri 'Url' properties

* make request models 'Url' properties Uri

fix typo in convention test name

* revert some request models 'Url' properties as `string`

see https://github.com/octokit/octokit.net/pull/1585#issuecomment-297186728

* Change test so that all model types must have 'Url' properties of type string

 - Filter test input to only get types which have 'Url' properties
 - Merge response and request model types tests into one
 - Unparameterize the exception since we only check for the string type now

* Fix string.Format tokens

If this PR doesn't get rebased, it'll be my wall of shame FOREVER!

* and then it's even more embarrassing when the commit message says rebased but you really meant squashed

* Remove exclusion of `Release` from request models

* Final tidyups for dotnetcore (#1600)

* Dont hardcode linksources for linux builds

* split ConventionTests into their own build task, since this is how it was in FAKE previously

* update contributing doc after change to CAKE

* minor doc updates

* fix bash linksources argument

* remove all these old packages files

* use forward slashes when referring to bash script

* use Target parameter name for the PowerShell build script

* be consistent when referring to PowerShell build script

* Be even moar consistent

* Add BranchProtection.EnforceAdmins object (#1598)

* Add BranchProtection.EnforceAdmins object

* Add EnforceAdmin related methods to RepoBranch clients

* Add unit tests

* Add unit tests for Observable client

* Add integration tests for enforce admin methods

* Tweak integration test to ensure that they actually do something

The `CreateRepositoryWithProtectedBranch` helper method currently sets `EnforceAdmins` as true, so delete it before adding.

* add missing docs

* rename tests

* Add missing ctor

* Remove property that is no longer supported

https://developer.github.com/changes/2017-05-02-adoption-of-admin-enforced/

* Fix failing unit tests

* [doc/issues]fix typo

* Add Pull Request Review Request API. (#1588)

* Add Pull Request Review Request API.

* Add Reactive Pull Request Review Request API.

* Add PullRequestReviewRequestClient tests.

* Add ObservablePullRequestReviewRequestClient tests.

* Fix sub-client property naming.

* Remove redundant model and update PullRequest model.

* Add repositoryId based methods and missing Observable documentation.

* Add missing parameter to PullRequest ctor.

* Add integration tests for PullRequestReviewRequest.

* Upgrade PullRequestReviewRequest integration tests.

* Add integration tests for repositoryId methods and fix url bug.

* Add missing unit tests and fix PR issues.

* Add pagination support for PullRequestReviewRequst.GetAll and tests for it.

* Revert changes on `PullRequestReviewCommentsClientTests.cs`

* Small upgrades - remove unused using and compress property to expression body.

* Revert use of expression body in property.

* Add pagination tests for PullRequestReviewRequest.GetAll.

* Change pagination tests to use 2 users.

* Correct class/file name

* Reword the integration test names for consistency
Move the plumbing to create reviews into CreateTheWorld to clean up the actual tests

* Fix DebuggerDisplay of requested reviewers

* fix reviewRequestToCreate parameter to be consistent

* ReleaseUpdate should be NewRelease in create release section

* Added syntax highlighting to docs/getting-started.md (#1619)

* Add StringEnum to handle unknown enum values returned from API (#1595)

* Added StringEnum<TEnum>

* Added tests

* Make sure the serializer can work with StringEnum

* Use StringEnum for EventInfo.Event

* Add convention test to assert that all Response models use StringEnum<> to wrap enum properties

* Add Stringnum<> to all response types failing convention test

* Handle StringEnum to Enum conversion when Issue response model populates IssueUpdate request model

* Fix unit test

* Refactor SimpleJsonSerializer to expose the DeserializeEnum strategy so it can be used in StringEnum class

* Need to expose/use SerializeEnum functionality too, so we use the correct string representation of enum values that have custom properties (eg ReactionType Plus1 to "+1")

* fix unit tests, since the string is now the "correct" upstream api value

* Add a couple of tests for the Enum serialize/deserialize when underscores, hyphens and custom property attributes are present

* Compare parsed values for equality

* add convention test to ensure enum members all have Parameter property set

* update test to cover implicit conversions too

* this test should work but fails at the moment due to magic hyphen removal in deserializer causing a one way trip from utf-8 to EncodingType.Utf8 with no way to get back

* (unsuccesfully) expand event info test to try to catch more cases of unknown event types

* fix broken integration test while im here

* Fixed build errors after .NET Core merge

* Value -> StringValue, ParsedValue -> Value

* Don't allow StringValue to be null

* Ignore enums not used in request/response models

* Added ParameterAttribute to almost all enum values

* Ignore Language enum

* Fix failing tests

* Fix milestone sort parameter and tests

* whitespace

* fix milestone unit tests

* Fix StringEnum.Equals ... This could've been embarrassing!

* Change SimpleJsonSerializer Enum handling to only use `[Parameter()]` attributes (no more magic removal of hyphen/underscores from strings)

* Tidy up this integration test while im here

* Only test request/response enums in convention test

* Keep skipping Language

* Remove unused method

* Remove excluded enum types

* Removed unnecessary ParameterAttributes

* Remove unused enum

* Add StringEnum test for string-comparison of two invalid values

* Bring back IssueCommentSort and use it in IssueCommentRequest

This reverts commit 38a4a291d1476ef8c992fe0f76956974b6f32a49.

* Use assembly instead of namespace for Octokit check

* Add failing test to reproduce the issue where only the first enum paramter/value was added to the cache

* Fix deserializer enum cache to include all enum members rather than only the first member encountered

* Use a static SimpleJsonSerializer in StringEnum

* Remove serializer instance in StringEnum

* Add some documentation on StringEnum<TEnum>

* Fix parameter value to resolve failing integration test

* Remove the obsolete branch protection methods and classes as they are now no longer supported (#1620)

* Remove obsolete members (#1622)

* remove obsolete "Branches" methods from RepositoryClient (all were previuosly moved to RepositoryBranchesClient)

* Remove obsolete DeploymentStatus fields

* Remove obsoleteMergePullRequest.Squash parameter

* Remove obsolete request ctor

* Remove tests

* Not sure how I missed these test references

* Improve DocPlagiarizer.README.md readability (#1629)

* Fixes #1621 NewRepositoryWebHook no longer creates new instance... (#1623)

Fixes #1621 NewRepositoryWebHook should not discard existing fields

* [WIP] Add new Project API Preview (#1480)

Add Projects API client (preview)

* Fix async tests (#1631)

* Fix up Assert.ThrowsAsync tests to actually await the call

* ... and it even picked up a missing null check... pay day!

* Organization membership preview API changes - Review user permission (#1633)

* Add organization membership preview header

* Add API endpoints to preview a collaborators permission

* Add methods to preview a collaborators permission

* Add methods to the observable repo collaborator client

* Fix convention test failure

* Use correct API endpoint when using repository ID

* Move the helper function pair so they aren't in between another pair

* Use the correct URL for the review permission API endpoint

* Add unit tests

* Add integration tests for review permission methods

* Fix spelling mistake

* Renaming enum as per review

* Add client for organization outside collaborators (#1639)

* Add client for organization outside collaborators

* Add unit/integration tests

* Add methods for removing an outside collaborator

* Add unit/integration tests

* Add new Put method to Connection which accepts a preview header

* Add methods for converting an org member to an outside collaborator

* Fix copy paste errors in new exceptions

* According to API docs, a 403 should be returned if the member is not a member of the org, but a 404 is actually returned

* Add unit/integration tests

* Remove unused using directives

* Got a bit overzealous with my removal of using directives

* Fix integration tests by using the configured Organization and test username rather than henrik's :)

* Remove ApiOptions overloads as it isn't currently supported

* Fix XML doc grammar

* Fix failing unit tests

* Missed a couple of nameof replacements

* Fix broken JSON deserialization in .NET 4.5 (#1647)

* Cross target Octokit.Tests against netcoreapp1.0 and net452

* Add net45-specific references

This fixes a build error after adding the net452 target:
error CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'

* Add SimpleJson conditional compilation symbols for net45

* Disable AppDomain when running tests

Thanks to Dominick and Patrik: https://twitter.com/leastprivilege/status/893376624233762816

* Use nameof operator instead of magic strings

* Remove conditional compilation symbols as they are not used in the conventions tests project

* Enable cross targetting in the conventions tests project

* Run tests against netcoreapp1.0 only when not on Windows

* Going too fast bites you

* Fix Uri.ApplyParameters() to handle relative Uri's that have existing parameters (#1649)

* Expand ApplyParameter() tests to reveal failure case (relative URI with existing query parameters)

* Ensure new Uri is created from base Uri without existing parameters present

* Implement pagination on Organization Outside Collaborators Client GetAll() method (#1650)

* Reimplement ApiOptions overloads

* Unskip pagination tests and set page sizes correctly

* List pending organization / team invitations (#1640)

* Add methods for listing pending organization invites

* Add unit/integration tests

* Add methods for getting all pending invites for a team

* Add unit/integration tests

* :fire: whitespace :fire:

* Move new enum to it's own correct file and location

* Invite(s) -> Invitation(s)

* Add helper functions for adding invitations and cleaning the invitations up at the end of the test

* Add methods with ApiOptions

* Fix helper methods for adding/removing invitations

* Forgot to actually pass in the ApiOptions to the API call

* Add tests for new ApiOptions methods

* tweak integration tests

* Update outside collaborator tests to use [OrganizationTest] attribute for consistency

* Update test accounts used

* use octokitnet-test2 account now it has 2FA turned on

* Implement Review API for Pull Requests (#1648)

* First Iteration Need to finish tests and docs

* Mostly Complete

* Fixing tests and adding review comments

* Added tests for reactive client

* Moved Reviews inside fo the Pull request client for better organization and began initial intigration testing

* Fixing bad recursive function breaking tests

* test fixes

* Add paging support to review comments call

* Fixing recursive function

* Addressing comments from PR

* fixing CI break

* Typo build break

* Fixing Convention Tests

* Adding correct nameof() usage in Ensure

* Small consitancy changes

* Trigger build

* Address PR Comments

* Fixup test naming

* Fix sub client ordering and incorrect URL

* Tidy up comments and remove StringEnum wrapper from Request models as it is only for Response models

* Rename GetReview to Get

* tweak debugger display

* Rework integration tests - implement the easy Get/GetAll ones first...

* Implement integration tests for Create method.
Move helpers to create PR/review into SetupHelper class
Fixed up review status enum to contain correct values
Tests for Approve/RequestChanges currently failing as a user cant approve/request changes on their own PR

* Implement secondary account settings for integration tests and a new [DualAccountTest] attribute for discovery when configured
Change integration test to create PR from the 2nd account, so the main test account is able to perform review actions on the PR

* Add integration tests for Delete, Dismiss and Submit methods
Fixed up API client implementation for delete (was looking for incorrect 201 http status)
Removed unnecessary await/async calls from client implementations that dont need to do anything with the result

* Attempting to add comments as part of a review revealed that we cant use the existing PullRequestReviewCommentCreate class as the API throws a validation error due to the CommitId field
These newer review APIs need a DraftPullRequestReviewComment (that doesnt have a commitId) instead

* add second test account user/password to configure-integration-tests script

* General updates (#1653)

* Update README and shipping-releases as they are a bit out of date

* Update year/copyright info

* Update cake.frosting to latest for newest dotnet tooling support, and adjust builds for new configuration parameters

* update xunit packages so codelens works for nested test classes (VS2017 15.3 update is also required)

* Fixup VS version and remove win debugging tools

* Fix RepositoryCommitsClient.GetSha1 API call after preview period ended (#1654)

* Change GetSha1 for commit API call to use official media type accept header rather than preview header (which doesn't seem to work anymore)

* Missed 2 unit tests

* Release v0.25 - She'll be Comin' Round the Mountain (#1656)

* Run `build -Target FormatCode` to fixup whitespace etc

* Fix delete release asset integration test

* Fix repository fork test

* Fix pagination test for PR Review Request

* First cut of release notes

* update release notes

* Update release notes

* include links to contributors

* Add breaking changes/advisories section

* Tidy up formatting

* Tidy up wording

* Wop optimized this repository (#1657)

The Web Optimization Project optimized this repository. This commit contains the optimized files in this repository.

* ProtectedBranches API changes for Required Review Enforcement (#1523)

* Add `BranchProtectionRequiredPullRequestReviews` and `BranchProtectionRequiredPullRequestReviewsUpdate` models

* Add missing ctors and fix naming

Tests where updated to use the minimum nesseccary constructor

* Fix debugger display

* Update BranchProtection response model to include new dismissal restrictions fields and tidy up existing properties ctors and DebuggerDisplay

* Update BranchProtectionUpdate request model to include new dismissal restrictions fields/classes and tidy up existing properties and DebuggerDisplay

* Update BranchProtection tests to use new RequiredReviews and dismissal restrictions options

* Add specific client endpoints for GetReviewEnforcement UpdateReviewEnforcement and RemoveReviewEnforcement

* Add unit and integration tests for new client methods

* Implement Observable client methods and unit tests

* Add integration tests for Observable client

* Run CodeFormatter to fix up whitespace

* Clarify review dismissal restriction behaviour in code comments

* Release v0.26 - In the Nick of Time (#1658)

* Add release notes

* Tweaks to wording

* Final wording tweak

* Enable pagination convention tests (#1659)

* Unskip pagination convention tests and rework exclusion property names
Also exclude Obsolete methods from pagination convention tests

* Reaction APIs appear to support pagination, flag to exclude for now and mark a TODO that they need implementing

* Repository invitation APIs need pagination implemented

* Exclude methods that use an alternative pagination approach

* Migrations, Licenses and References all need pagination implemented

* Pagination not supported for these methods (determined by API doc and poking the API) so exclude them from convention tests

* These methods need renaming to GetAll

* Rename offending RepositoryTrafficClient GetReferrers and GetPaths to GetAllReferrers and GetAllPaths

* Rename offending RepositoryBranchesClient methods from Get to GetAll

* Fix assembly versioning/properties and handle platform exception (#1660)

* Use assembly version instead of hard-coded ones

Builds happening on AppVeyor specify the assembly version with `dotnet build /p:Version=<gitversion>`

* Set default version for dev time

This is to avoid that the default 1.0.0 version be assigned to the assemblies

* Move various package/assembly properties from AssemblyInfo into csproj files so dotnet build can set them all

* Get rid of SolutionInfo and move assembly version function into Connection class

* Rework FormatUserAgent to use InformationalVersion and guard against exceptions determining platform OS/arch (fixes #1617)

* Update assembly descriptions

* Reword dotnetcore to .NET Core

* Attempted workaround for package version dependency issue by specifying version on dotnet restore
see https://github.com/NuGet/Home/issues/4337

* Add missing fields to Team response, and NewTeam/UpdateTeam requests (#1669)

* Add Description and Privacy fields to Team and include in NewTeam and UpdateTeam requests
Also made Permission attribute nullable as it is an optional field

* Ensure there are integration tests using the new fields for Create and Update Team

* It seems this test doesnt need to be skipped anymore

* fixup tests

* Enable generation of XML doc files (#1674)

That post by Nate McMaster has saved my bacon a few times now: http://www.natemcmaster.com/blog/2017/01/19/project-json-to-csproj/#other-common-build-options

* Added Organization to code search (#1671) (#1672)

* Added Organization to code search (#1671)

* Added integration test (#1671) (#1672)

* Cant specify empty string, use parameterless ctor instead
Simplify test to check owner's login

* Provide constructors for EnforceAdmins class to allow mocking (#1679)

* Fix forks qualifier in repo search and add tests (#1680)

* Implement Team Membership changes (#1670)

* Fixup TeamContext helper name

* Implement overload for GetAllMembers to take request parameter

* Update tests

* Implement Obersvable client changes

* Observable tests

* Implement AddOrEditMembership function returning a new response model, and obsolete the old AddMembership function returning an enum

* Implement GetMembershipDetails function returning new TeamMembershipDetails response model, and obsolete the old GetMembership function returning an enum

* Clarify that an exception is thrown when not a member

* Add integration tests for AddOrEditMembership and GetMembershipDetails

* fixup exception test for observable client

* Update wording of obsolete message

* Implement Nested Teams preview API changes (#1682)

* Add new AcceptsHeader
add Parent field to Team
add ParentId field to NewTeam and UpdateTeam
update Create Edit and Delete Team methods to use preview header

* Implement new API call GetAllChildTeams()

* Implement GetAllChildTeams for ObservableClient

* add integration test for observable client

* Add pagination tests for GetAllChildTeams

* Add NestedTeams preview header to all the API calls that use it

* Update tests for accepts header

* Add accepts header to observable client calls

* Fix DELETE implementation to use correct overload

* Fix tests - parent and child teams must be visibility Closed whereas the default if not specified is Private

* make sure all tests are flagged as [OrganizationTest]

* Make sure Update tests change the parent of the team

* Update new methods with NesterTeams preview API header and adjust tests

* Release v0.27 - On a Roll (#1687)

* Fix integration test - protected branch status can now only be retrieved by an authorized user

* Fix integration test - labels in octokit.net repo were renamed

* Run build task "FormatCode"

* Update release notes for v0.27

* Fixed code formatting (#1691)

* Add possibility to configure GitHubClient timeout (#963) (#1693)

* Add possibility to configure GitHubClient timeout (#963)

A first attempt to fix the problem describe in #963 by adding a possibility
to extend the default timeout value (100s)
that is too short to be able to post assets in github release.

* Rename to SetRequestTimeout
Make comments consistent

* Remove extra space before close ticks. (#1699)

This is breaking the layout at http://octokitnet.readthedocs.io/en/latest/http-client/.

* Prevent overflow exceptions when status id > int.Max (#1703)

I have a (private) repository where GitHub reports statuses with
ids like 4299360515, which fail to deserialize as it doesn't fit
on the int.

There is nothing (I could find) on the GitHub API docs that say
that this status id is limited to an int-sized value.

Fixes #1702

* Release v0.28 - Get to the Chopper!!! (#1709)

* Update release notes

* fix whitespace

* Change warning color to yellow. (#1714)

* Add Pull Request Comment "In Reply To" Field (#1715)

* Support running in aws lambda by fixing netcoreapp1.1 vs netcoreapp1.0 confusion  (#1713)

* force the implicit netstandard package version to 1.6.0 to avoid automated update to 1.6.1 which prevents strict netcoreapp1.0 support (required in aws lambda)

* tidy up project files

* Added UpdatedAt property to Milestone. (#1722)

* Added UpdatedAt property to Milestone.

* Trying to find where travis moved our cheese

* Add pagination support to ReferencesClient. (#1694)

* Add pagination support to ReferencesClient.

* Add missing unit tests for ReferencesClient

* Add integration tests for ReferencesClient pagination.

* Refactor assertion.

* Add pagination support to repository invitation. (#1692)

* Add ApiOptions overloads to repository invitations.

* Remove ExcludeFromPaginationApiOptionsConvention for RepositoryInvitationsClient

* Adjust tests to new call form.

* Add null check and null check test for RepositoryInvitations.

* Add integration tests draft.

* Remove redundant using.

* Replace Octocat with dual account test second user.

* Fix mass repository creation by making it synchronous and fix last RepositoryInvitationsClient test utilizing Octokit user.

* Refactor async hack.

* Reduce number of created test repos.

* Fix OAuthClient to work correctly with GitHub Enterprise instances (#1726)

* Add more test cases for GetGitHubLoginUrl tests

* Fix enterprise authorize Urls by replacing the existing relative Uri segment (/api/v3) instead of appending to it via an extension method

* Add tests for new ReplaceRelativeUri extension method

* add test for GHE URL on oauth CreateAccessToken

* move away from class level consts

* Oauth client can store stripped base URL so it works with GHE

* Add support for StatusEventPayload (#1732)

* added support for StatusEventPayload

* Added test for StatusEventPayload and fixed serializer to return that event payload type.

* Added support for DateTime serialized as FileTime (#1735)

* added support for DateTime serialized as FileTime

* changed non-iso timestamp deserialization from FromFileTime to FromUnixTime.

* updated a test to also test the new time stamp deserializer.

* moved all tests projects to a solution folder of their own.

* Fixed test and added a missing field to Account.

* Use original values in test.

* Moved UpdatedAt from Account to User.

* Add a new column named PullRequestReviewId to PullRequestReviewComment in order to capture pull_request_review_id (#1739)

* Fixes #1586 - Repository license API (#1630)

* Implement GetLicenseContents() method for getting repository's license info

* Request License Preview API for calls that return Repository object.

* Add missing accept headers to observable methods for ObservableRepositoriesClients

* fix impacted unit tests

* Improve Rate Limits' Documentation (#1742)

* Improve Rate Limits' Documentation

I added an example about client.Miscellaneous.GetRateLimits().

* Update getting-started.md

* Update getting-started.md

* Update getting-started.md

* Update getting-started.md

* Update getting-started.md

* add NET Core (#1744)

* add NET Core

* Remove explicit platforms and link to .NET STandard

* Fixes #1750, changing description of productInformation param for clarity (#1751)

* Updated GitHubClient.cs XML Docs to match dev docs.

* Updated Connection.cs XML Docs to match dev docs.

* Updated ProductHeaderValue.cs XML Docs to match GitHub dev docs.

* Updated EnterpriseProbe.cs XML Docs to match GitHub dev docs.

* Updated GitHubClient.cs XML Docs to match GitHub dev docs, corrected grammar issue.

* Updated Connection.cs XML Docs to match GitHub dev docs, corrected grammar issue.

* Updated ProductHeaderValue.cs XML Docs to match GitHub dev docs, corrected grammar issue.

* Removed my tabs, replaced with spaces to match format.

* Removed tabs again

* There seems to be some kind of bug where tabs are being shown though my local editor show none, so I'm submitting a bug to GitHub.com and editing in-browser to fix.

* Update GitHubClient.cs

* There seems to be some kind of bug where tabs are being shown though my local editor show none, so I'm submitting a bug to GitHub.com and editing in-browser to fix.

* Update Connection.cs

* There seems to be some kind of bug where tabs are being shown though my local editor show none, so I'm submitting a bug to GitHub.com and editing in-browser to fix.

* Change a couple of tabs to spaces

* tabs to spaces

* tabs to spaces

* Refactors GitHubSerializerStrategy to be thread-safe (#1683) (#1748)

* fix AccountType enum attributes to match the sentence case used in the API responses (#1759)

* Add TLS1.2 to enabled security protocols (.NET Framework 4.5 only) (#1758)

* Add Tls1.2 to allowed protocols, for earlier target frameworks where this wasnt already the default.
ServicePointManager class used to do this, is only available in the full framework, so a preprocessor constant needs to be used

* intergration tests net452 target wasn't setup

* Use OR Assignment operator, just for Haacked

* Deserializer should handle nullable StringEnum<T> (#1760)

* add deserializer tests for nullable enums, StringEnum and nullable StringEnum properties

* Fix deserializing nullable structs by using the underlying type when nullable

* StringEnum<T> should behave like an enum, returning default(T) when it is uninitialised/null/blank

* Don't allow null to be passed into StringEnum ctor - if it needs to be null then it should be declared as nullable

* fix expected json

* move logic to determine if property is a StringEnum<T> into helper function

* serializer needs to treat StringEnum<T> specially by serializing the enum value according to existing serializer strategy (parameter attributes and so on)

* remove fallback to default(T)

* add test to assert ctor throws exception when null passed in

* remove test for default(T) fallback behaviour

* Fix exception in serializer test - StringEnum property must be initialized otherwise an exception is thrown when attempting to serialize

* Dont allow empty strings either

* Implements PullRequest.MergeableState field (#1764)

* Implement PullRequest.MergeableState property

* Tweak convention tests as they were being confused thinking the nullable StringEnum was a model class

* Asapferg/user email visibility (#1757)

* Added visibility field to EmailAddress response model

* quote private in comment to indicate string value

* Create EmailVisibility enum; change visibility to be StringEnum<EmailVisibility>

* Change EmailVisibility to be nullable, remove null option from enum

* Fixed closing tag on Visibility property summary

* unskip email integration test as it seems to work now

* Release v0.29 - This Looks Serious (TLS) (#1765)

* Add release notes

* Fix failing integration test

* Run FormatCode build task to tidy up whitespace

* Remove "UnkownUser" from release notes contributors

* Add PreviousFileName to the PullRequestFile model (#1770)

* Add PreviousFileName to the PullRequestFile model

* fix white space issue

* Adds PullRequestReviewEventPayload (#1767)

* Adds PullRequestReviewEventPayload

* Remove random A

* Tidy up compiler warnings (#1779)

Fix XmlDoc parameter warnings (and tidy up other build output/warnings)

* Prefer using nameof(x) over literal "x" (#1781)

* updated XML docs and added some missing bits.

* prefer nameof(x) over literal "x"

* Enable support for milestone-based issues queries (#1788)

* Added support for Milestone filter in SearchIssuesRequest

* Fixed some styling issues to match with the style of the existing code

* Wrap milestone value with double quotes as milestones can contain spaces

* Allow milestone filter to contain double quotes

* Ability to search by milestone exclusions

* Moved the EscapeDoubleQuotes method to StringExtensions

* Add csharp hint to code blocks (#1791)

* Adding initial support for GitHub Apps. (#1738)

* Added authentication using bearer token.

* Added Installation and AccessToken clients.

* Added new clients to Reactive project

* added support for DateTime serialized as FileTime

* added support for StatusEventPayload

* added support for StatusEventPayload

* Added test for StatusEventPayload and fixed serializer to return that event payload type.

* WIP - added ApplicationClient and related Api Urls.

* Continued implementing Installations support.

* Fixing build (WIP)

* fixed build

* added Account property to Installation. prefer nameof(x) over literal "x".

* fixed according to code review.

* fixed build.

* switched Installation ID from int to long.

* added Permissions and Events properties to Installation.

* added documentation to Application and Installation properties in IGitHubClient.

* wip - added tests to new clients

* wip - fix build

* wip - fixed build.

* added InstallationsClient tests.

* added integration test for InstallationsClient.

* changes requested in code review.

* add Get method for App

* Create GitHubApp response model instead of re-using existing Application response model

* add Get method to observable client

* fixed build (both locally and failed test).

* Fixed documentation and added some missing XML docs.

* added DebuggerDisplay to StatusEventPayload

* updated XML docs and added some missing bits. prefer nameof(x) over literal "x".

* Add xml comments to AccessToken response model and use DateTimeOffset rather than DateTime

* Tidy up XmlComments and make consistent across client and observable client and interfaces

* fixup unit tests to independently verify preview header

* Implement GetInstallation method

* revert commits unrelated to GitHubApps - these can be done on a separate PR if required

* this extra authenticator class doesnt appear to be used anywhere

* undo project file change as it doesnt appear to be necessary

* Revert "Merge remote-tracking branch 'remote/GitHubApps' into GitHubApps"

This reverts commit c53cc110b8d807f62fdfeaa7df19e1532d050007, reversing
changes made to 0c9e413d420a4725738644ea5b13af6ec102d456.

* Revert "Revert "Merge remote-tracking branch 'remote/GitHubApps' into GitHubApps""

This reverts commit 02d52b8adf814b6945c60cb59a907a8cd34b1ce7.

* add XmlDoc comments to response models and flesh out installation permissions

* name AcceptHeaders member consistently

* accidentally lost changes to Credentials.cs

* Enhance Intergation test framework to handle GitHubApp settings and discoer tests appropriately
Get code ready for GitHubJWT nuget package but for now just hardcode a JWT in ENV VAR
Add 1 integration test for each method and ensure they are working!

* fixed compiler warnings.

* Added support for Installation=>Id field that arrives in a Pull Request Event payload.

(See the last field in the sample JSON of https://developer.github.com/v3/activity/events/types/#pullrequestevent)

* Change integration test project to netcoreapp2.0 so we can use GitHubJwt nuget package in integration tests

* First cut at some GitHubApp doco

* update mkdocs config

* Moved the Installation property to ActivityPayload, so it's available in all payloads.

This feature is not undocumented, unfortunately, but valid:
https://platform.github.community/t/determining-which-installation-an-event-came-from/539/11

* Split Installation to Installation and InstallationId, and added a comfort method for gaining its AccessToken.

* fixed InstallationId CreateAccessToken to receive IGitHubAppsClient. added (and fixed) docs.

* reverted object-oriented style comfort method and it's docs.

* update all test projects to netcoreapp2.0

* tweak build configs to use 2.0.3 SDK

* also need to update cake frosting build to netcoreapp2.0

* tweak docs some more

* fix convention test failures

* test projects still had some old runtime parts in them!

* travis osx image needs to be at least 10.12 for .NET Core 2.0

* shell script might need the same argument tweak for cake

* more doc tweaks

* Make sure compiler warning output isnt somehow causing Linux and OSX builds to fail

* moar logging for linux/OSX builds

* stop sourcelink on linux/OSX builds to see if that is the problem

* set verbosity to detailed for the dotnet build step

* try new sourcelink and list out remotes

* is travis being weird with git clone?

* SourceLink may be defaulting to true on CI server so explicitly set it as false rather than omitting it

* detailed is a bit too verbose for travis, try normal

* turn sourcelink back on for Linux/OSX

* fix compiler warning

* Try SourceLink.Create.CommandLine instead of SourceLink.Create.GitHub

* CliToolReferences did not update to latest versions

* remove debug origin info

* turn off msbuild output

* go back to SourceLink.Create.GitHub!

* time diff between dev PC and API causes issues if specifying a full 600 second token

* handle extra date format that Installation end point now returns

* field needs to be protected in order to be deserialized

* provide even more buffer for client vs server clock drift

* Update to latest GitHubJwt reference

* go back to SDK 1 since SDK 2 is having sporadic travisCI faliures in TestSourceLink build step

* get appveyor working

* update sourcelink back to latest, and use SDK 1.04 (runtime 1.0.5)

* Added get release by tag endpoint (#1793)

* Added get release by tag endpoint

* Added integration tests for get release by tag overload

* tidy up integration tests and add reactive integration tests

* Implement repositoryId based method

* Implement repositoryId based method in Reactive client

* update test apps and cake.frosting build to netcoreapp2.0 but keep libraries targeting netstandard1.1 (#1784)

* Remove method/members previously deprecated (#1780)

* removes obsolete OranizationsClient.GetAll (replaced with GetAllForUser)

* removes obsolete PullRequestsClient.Comment (replaced with ReviewComment)

* removes obsolete TeamsClient.GetMembership (replaced with GetMembershipDetails)
removes obsolete TeamsClient.AddMembership (replaced with AddOrEditMembership)
removes obsolete TeamsClient.AddMembership (replaced with AddOrEditMembership)
removes obsolete TeamMembership response class (replaced with TeamMembershipDetails)

* removes obsolete RepositoryBranchesClient.GetRequiredStatusChecksContexts (replaced with GetAllRequiredStatusChecksContexts)
removes obsolete RepositoryBranchesClient.GetProtectedBranchTeamRestrictions (replaced with GetAllProtectedBranchTeamRestrictions)
removes obsolete RepositoryBranchesClient.GetProtectedBranchUserRestrictions (replaced with GetAllProtectedBranchUserRestrictions)

* removes obsolete RepositoryTrafficClient.GetReferrers (replaced with GetAllReferrers)
removes obsolete RepositoryTrafficClient.GetPaths (replaced with GetAllPaths)

* removes obsolete constructors from BranchProtectionUpdateSettings and UpdateTeam request models

* removes obsolete Assignee property from NewIssue and IssueUpdate request models (replaced with Assignees)

* Clarifies usage of reference in IReferencesClient methods (#1778)

* Clairifies usage of IReferencesClient.Delete

Details the format of the reference parameter

* update xml doc in all the places

* Adds MaintainerCanModify to PullRequest (#1771)

* Adds MaintainerCanModify to PullRequest

* Make MaintainerCanModify nullable

* Tweak MaintainerCanModify doc comment

* Add MaintainerCanModify to NewPullRequest

* Add MaintainerCanModify to PullRequestUpdate

* Update NewPulRequest tests

* Convert tabs to spaces

* Fix PullRequestUpdate and NewPullRequest doc comments

* Revert "Update NewPulRequest tests"

This reverts commit f20dfa7d0efc5ed18b7d622a0eb9b5d1f578f9a5.

* Make MaintainerCanModify fields nullable

* tweak doco comment and make setter public so it can be used

* Add proper accept header to all team calls (Fixes #1794) (#1795)

* add proper accept header to all teams calls

* use hardcoded headers in unit tests

* dont remove support for preview branch protection, on earlier github enterprise versions

* Adding a convention test to detect whether a model has a constructor exposing all properties (#1798)

* Added a convention test to detect a model constructor exposing all properties

* add ctors to classes where they are missing

* rename ctor parameters that dont match properties

* add missing parameters to existing ctors

* add specific PunchCard ctor to allow mocking, and update test to resolve call ambiguity

* Added base class properties to the convention test

Added member exclusion attribute

* Updated newly offending classes

2 excludes and 2 ctors

* rename exclusion attribute to be a bit shorter

* Added a pre-receive environments client (#1796)

* Added pre-receive environment client

https://developer.github.com/v3/enterprise-admin/pre_receive_environments

* Added unit and integration tests for the pre-receive environments client

* moved test setup outside of tests

* fixed unit test

* Added reactive components for pre-receive environment endpoints

* Debugger display's and non public setters on response object conventions

* removed redundant parameter attributes

implemented update request independently of new request
changed ints to longs for future proofing
updated unit tests
changed update integration tests to create a new update request to ensure optional values function

* updating reactive environmentids to longs as well

* also converting response id to a long

* Fixed an incorrect unit test

renamed some test variable names for consistency
Added mockable ctors on responses, and parameterless ctors to maintain functionality

* Adding missing state parameter

* rename client member accessor to singular form in accordance with octokit naming conventions

* fixup tests

* add integration tests for observable client

* Implement improved labels API (#1802)

* Implement new attributes for labels

* Include correct API header in all Labels calls

* Add integration tests for Create and Update methods for labels

* Use improved labels API in observable client

* found even more endpoints that need the preview header!

* RemoveFromIssue actually returns the list of remaining labels rather than null.  This change should be source compatible but not binary compatible

* Implement new labels search method in SearchClient

* Implement reactive client SearchLabels

* Improve documentation for label search methods

* more comment tidy up

* Correct upload asset code (#1805)

1. Remove incorrect usage of await on synchronous method
2. Dispose of stream after use

* Fix typo causing compile error (#1804)

* Release v0.30 - Where Have You Been All My Life? (#1816)

* run FormatCode build task to fix whitespace/formatting

* correctly flag some GitHub Enterprise tests

* Add Release Notes

* tweak appveyor to not build branch in the repo, when a PR exists already

* travis to only build master branch and PRs

* output actual "dotnet run" command being executed for cake.frosting builds

* update latest Cake.Frosting

* use normal verbosity at the moment due to apparent conflict with "verbose" and latest SDK on appveyor

* try using double dash so dotnet executable doesnt look at --verbosity argument

* travis OSX couldn't download SDK 2.0.3 anymore, lets try the latest 2.1.300

* Mentioning the reset time is based on UTC standard (#1819)

* A missing event state: comment_deleted (#1818)

* A missing event state: comment_deleted

Adding support for the comment_deleted event status.

* Add two new Event Status: Marked & Unmarked duplicates

* Update EventInfo.cs

* make sure we dont take a runtime dependency on sourcelink (#1822)

* [WIP] Fixes #1718 Implement Repository Transfer functionality (#1813)

* Add "transfer repository" accept header

* Create RepositoryTransfer class

This will be used to send the POST request to initiate the transfer.

* Create Ensure method to check for empty or null arrays

* Change arg name in Ensure for nonempty arrays

array -> value

* Add xmldoc for ArgumentNotNullOrEmptyArray

* Create Transfer method in IRepositoriesClient

* Implement Transfer method in RepositoriesClient

* Fix typo in xmldoc for Transfer

* Add <returns> to Transfer xmldoc

* Create Transfer method in IObservableRepositoriesClient

* Implement Transfer in ObservableRepositoriesClient

* Add DebuggerDIsplayAttribute do RepositoryTransfer

* Add unit tests for RepositoryTransfer constructors

* Change TeamId property type to IReadOnlyList<int>

* Rewrite DebuggerDisplay property into something more succint

* Make new Ensure method into an IEnumerable<T> checker

* Add XmlDoc to RepositoryTransfer

* Tweaks to first ctor XmlDoc

* Create basic unit tests for Transfer

* Create ApiUrls.RepositoryTransfer

* Use ApiUrls.RepositoryTransfer to get URI in Transfer

Previous implementation used wrong URI

* Start implementing RepositoriesClientTests.TheTransferMethod

* Implement org -> user transfer integration test

* Implement user -> org transfer integration test

* [WIP] Implement user -> org transfer with teams

Implementation doesn't work, API usage seems correct.

* Mark transfer user -> org w/ teams integration test with FIXME

* Add second end point URI to ApiUrls

* Add other Transfer overload to RepositoriesClient for other end point

* Create unit tests for other Transfer endpoint

* Add overload to IRepositoriesClient

* Add integration tests for overload

* Reorganize unit tests for TheTransferMethod

* Rename id to repositoryId

* Reorganize unit tests for RepositoriesClientTests.Transfer

* Add second endpoint to IObservableRepositoriesClient

* Add XmlDoc to second Transfer endpoint

* Add XmlDoc to second Transfer endpoint in RepositoriesClient

* Reimplement "with teams" integration tests using TeamContext

* Rename integration test for consistency

* Add asserts to actual ownership transfer

* Rename RepositoryTransfer.TeamId property to TeamIds

* Add awaiit to ThrowsAsync in RepositoriesClientTests

* Put await in right places for unit tests

* Add Ensures for Transfer method in RepositoriesClient

* Add XmlDoc to ApiUrls.RepositoryTransfer with repo id

* Update XmlDoc for RepositoryTransfer constructor and teamIds property

* Rename currentOwner to owner

* Add Ensure guards to ObservableRepositoriesClient.Transfer methods

* Add unit tests for ObservableRepositoriesClient

* handle when no languages exist in a repository (#1831)

* add GraphQL Node ID's to response models (#1806)

* add node_id to Deployments payloads (Deployment and DeploymentStatus and Account/User/Organization)

* add node_id to gist responses

* add node_id to Git Blob

* add node_id to Git Commit response

* add node_id to GitReference response

* add node_id to everything that inherits GitReference

* add node_id to Issue

* add node_id to IssueComment/IssueEvent

* add node_id to Label

* add node_id to Milestone

* add node_id to Project/ProjectCard/ProjectColumn

* add node_id to Reaction

* add node_id to Release/ReleaseAsset

* add node_id to Team

* add node_id to Repository.RepositoryContributor/RepositoryInvitation/RepositoryTag

* add node_id to Commit related responses

* Add node_id to PullRequest related responses

* Add node_id to any response models it was found to be missing, based on auditing integration test responses

* remove unused test variable that was using a response ctor

* fix tests that need to handle node_id now

* Committer is a request object as well as response, so make nodeId optional

* fix test

* Attempt to clarify GitHubApp docs (#1824)

* Attempt to clarify GitHubApp docs

* Tweak additional notes formatting

* more tweaks

* Fix ThrowsAsync tests that were not being awaited (#1838)

* Fix ThrowsAsync tests that were not being awaited

* fix for consistency

* Update github-apps.md (#1843)

* Implement new Project Card archiving (#1842)

* add Archived to ProjectCard response
add Archived to ProjectCardUpdate
update integration tests

* Add ProjectCardRequest model and update GetAll calls to use it
Update unit tests
Update integration tests

* skip_branch_with_pr still ends up building the branch on the initial push, so let's only build master instead

* Implement Check Suites API (#1846)

* Check run request models

* Check Run response models

* Check run clients

* Check run ApiUrls and AcceptHeaders

* Pack it all together for now

* Add missing accept headers to connection calls

* Standardize class definitions

* Standardize function names

* Merge ICheckRunAnnotationsClient into ICheckRunsClient

* Properly organize clients

* Cleanup CheckRun response model

* Fix slug check run urls

* Add checks installation permission

* Use StringEnums where appropriate

* Cleanup check run output models

* Flesh out CheckSuite model

* Delete CheckRunsList

* Remove a sealed, fix some line endings

* Adding check suite models

* Skeleton check suite client implementation

* Add check suite ApiUrls

* Flesh out check suites client

* Add parameterless CheckRun constructor

* Add DebuggerDisplay to checks models

* Add observable checks interfaces

* Add return values to POST and PATCH check clients

* Fix some check suite client return values

* Skeleton reactive checks implementation

* Implement observable checks clients

* Remove rogue tabs

* Add CheckSuiteEventPayload

* Add CheckRunEventPayload

* Add DebuggerDisplay attributes to checks API payloads

* Properly nullables check suite/run conclusion

* Add CheckSuiteEventTests

* Fix checks client accessor naming issues

* Add missing Text field to CheckRunOutput

* Marks CheckRunUpdate's conclusion as nullable

* Fix reactive checks client naming

* Today I learned DateTimeOffset is a struct

Makes CheckRunUpdate's DateTimeOffsets nullable

* Modify check clients to put slug version before repo id version

* Add nullable to CheckRun.CompletedAt

* Implement parameterless ICheckRunsClient.GetAllForReference and GetAllForCheckSuite

* Add missing RequestParameters base to CheckSuiteRequest

* Implement checks API GetAll methods

* Bring parity to Reactive checks clients

* fix project settings to get GitHubApp helper working again

* remove un-needed InstallationId setting - provide helper method to find installation based on owner

* fix up request object ctors based on required/optional parameters

* fix up request object ctors based on required/optional parameters

* add some initial integration tests for CheckSuites and CheckRuns including some helper methods

* Add test for Request CheckSuite
Fix Request CheckSuite to use correct Uri
Fix Request CheckSuite return type as it doesnt return an object
Fix CheckSuiteTriggerRequest ctor to make required fields mandatory

* simplify Get CheckSuite test to not require as much data setup

* Add test for CheckSuite GetAllForReference

* Add test for CheckSuite UpdatePreferences

* rename response models

* rename CheckSuitesList to CheckSuitesResponse and use as response to the GetAll calls

* Fix tests

* Fix observable

* fix model convention tests

* remove CheckRuns so we can focus only on CheckSuites for now

* naming things is hard

* oh so many unit tests for CheckSuites methods

* make client mockable

* Fix issue with .Max() when no results returned

* fix request parameter names

* add Xml doc comments

* Add XmlDoc comments to request/common model objects

* rename class to match usage

* tidy ups

* xmldoc for observable clients

* fix method order

* add observable unit tests and get them passing

* Add Observable unit tests and get them passing

* add observable integration tests

* tidy up ApiUrl method name

* whitespace/using tidy ups

* Ensure CheckSuiteEventPayload class is handled in deserializer and add to activity test

* add response model XmlDoc comments

* missed one xmldoc

* add xmldoc to NewCheckSuite request and remove HeadBranch property as it doesnt exist anymore

* add some extra check suites integration tests

* Added 'Archived' flag to Repository response. (#1845)

* Added 'Archived' flag to Repository response.

* add Archived support to repository update
add Archived support to search repo and search issues

* add archived field to ctor

* Implement Check Runs API (#1847)

* Add CheckRunEventPayload

* add CheckRunEventPayload into all the right places

* forgot integration tests for RepositoryId methods (+1 squashed commits)

Squashed commits:

[b2445bf3] Implement Create CheckRun methods for normal and observable clients including unit and integration tests and xmldoc comments

* Implement Update CheckRun method
Refactored NewCheckRun to inherit CheckRunUpdate since they share all fields except HeadSha

* Implement GetAllForReference method

* Implement GetAllForCheckSuite method

* tweak XmlDoc to match github documentation

* Implement Get method

* Implement GetAllAnnotations
Moved CheckRunAnnotation model from Request to Common and added a parameterless ctor, since it is now a response model as well as a request model

* Split common CheckRunAnnotation model into separate response and request models due to different field and ctor requirements
Rename other CheckRun request sub classes to be consistent with NewCheckRunAnnotation (eg NewCheckRunOutput, NewCheckRunImage, etc)

* add title field back into CheckRunAnnotation

* fix up XmlDocs

* fix mutable response property - hooray for convention tests!

* Release v0.31 - Check yo' self! (#1851)

* Fix whitespace/formatting with /FormatCode build option

* Update release notes

* fix a few failing integration tests

* Adjust required fields on UpdateCheckRun and NewCheckRun request models and fix tests
Tidy up field accessors and XmlDoc comments

* Update date in ReleaseNotes

* Keeping request models simple (avoid inheritance) - makes it easier when we move to generated models

* Fixes check runs taking over 2017 years to complete (#1852)

* Fixes check runs taking over 2017 years to complete

* Make StartedAt and Status fields nullable, since they dont have to be provided on new or update requests

* appClient - all GitHubApps methods inside subclass (#1853)

In implementing this, I found that `appClient.GetCurrent()…
@nickfloyd nickfloyd added Type: Feature New feature or request and removed category: feature labels Oct 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Feature New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants