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

refactor tests, update dependencies and Project API #401

Merged
merged 42 commits into from
Nov 30, 2016

Conversation

mathieudutour
Copy link
Contributor

@mathieudutour mathieudutour commented Nov 18, 2016

That's a lot of changes. Tell me if you are interested, I'll clean the history and the package.json

@codecov-io
Copy link

codecov-io commented Nov 18, 2016

Current coverage is 90.02% (diff: 93.84%)

No coverage report found for master at 78a98b1.

Powered by Codecov. Last update 78a98b1...f998a39

Copy link
Member

@clayreimann clayreimann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the great work!

The only question I have is what did you brea? I don't see what changes require a major version bump.

@@ -2,22 +2,18 @@ sudo: false
language: node_js
node_js:
- '6'
- '5'
- '4'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How much longer is node4 supported? Maybe we don't drop support for node4 just yet.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we are not dropping the support for node4, just node 0.12 and earlier. I removed it from the test cause there were some issues with running the test 3 times in parallel. But maybe we should test on node4 only

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

## GitHub Tools

The team behind Github.js has created a whole organization, called [GitHub Tools](https://github.com/github-tools),
dedicated to GitHub and its API. In the near future this repository could be moved under the GitHub Tools organization
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was moved to org

* @param {Requestable.callback} [cb] - will receive the pull request information
* @return {Promise} - the promise for the http request
*/
updatePullRequst(number, options, cb) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lolz

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@clayreimann You were asking about a breaking change that would necessitate a major version bump. This would be it.

@@ -152,7 +155,13 @@ class Requestable {
*/
_request(method, path, data, cb, raw) {
const url = this.__getURL(path);
const headers = this.__getRequestHeaders(raw);

const AcceptHeader = (data || {}).AcceptHeader;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

acceptHeader?

Copy link
Contributor Author

@mathieudutour mathieudutour Nov 21, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the header is call Accept so I wasn't sure. I have no strong feeling about it

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think @clayreimann is getting at the usage of PascalCasing instead of camelCasing.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes I understood

"name": "github-api",
"version": "2.4.0",
"name": "@mathieudutour/github-api",
"version": "3.2.0",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this diff still relevant?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's not, I will roll back those changes. I wasn't sure you were interested in merging such a PR so I waited for that first ;)

(found, member) => member.login === testUser.USERNAME || found,
false
);
const hasTestUser = members.some((member) => member.login === testUser.USERNAME);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Yay conciseness!

# switch back to master, build and publish
git checkout master
npm run build
npm publish
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't this done by CI?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

indeed, I'll roll back also

cache:
directories:
- node_modules
before_install: npm install -g npm@latest
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reasoning for not using the latest version of npm?

dedicated to GitHub and its API. In the near future this repository could be moved under the GitHub Tools organization
as well. In the meantime, we recommend you to take a look at other projects of the organization.

## Samples
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the thought behind removing all this documentation? Are you proposing we drop the link to the generated Docs?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not removed, it's rearranged to fit https://github.com/noffle/art-of-readme

});
```

```javascript
import GitHub from 'github-api';
var GitHub = require('github-api');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why downgrade from ECMA2015?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hum, because for people who are not using babel/ES6, it's an additional cognitive load which can be avoided. For people using ES6, I'm quite sure they know how to use const instead of var.
But again, no strong feeling and happy to roll back if you prefer

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My opinion is that ECMA2015 is spec now, so there's no need to downgrade.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure, but var is not deprecated in anyway, so if we can help people understand the repo, I think it's best, regardless of wether it's matching style guide or not, don't you think? (see #392)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My idea was, and hope is, that we can have at least one example of each of: require vs import and then vs cb to give people the full flavor of the API.

That being said I think that perhaps that means most of our examples are import + then with an example included toward the end of require + cb.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That might be a solution. Feel free to commit on directly here


// basic auth
const gh = new GitHub({
var gh = new GitHub({
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again downgrading from ECMA2015?

});

const me = gh.getUser();
var me = gh.getUser(); // no user specified defaults to the user for whom credentials were provided
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another downgrade from ECMA2015, I'll stop mentioning all the ones I see now.

* @param {Requestable.callback} [cb] - will receive the pull request information
* @return {Promise} - the promise for the http request
*/
updatePullRequst(number, options, cb) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@clayreimann You were asking about a breaking change that would necessitate a major version bump. This would be it.

let remoteIssues;

before(function() {
before(function(done) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mocha allows you to return a promise chain instead of passing the done callback.

@@ -23,7 +23,7 @@ describe('Project', function() {
github
.getUser()
.createRepo({name: testRepoName})
.then(wait())
.then(wait(5000))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally find arbitrary delays like this in tests to be brittle. Perhaps a better solution is to poll for the repo until it comes back successfully.

});
```

```javascript
import GitHub from 'github-api';
var GitHub = require('github-api');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My opinion is that ECMA2015 is spec now, so there's no need to downgrade.

@@ -152,7 +155,13 @@ class Requestable {
*/
_request(method, path, data, cb, raw) {
const url = this.__getURL(path);
const headers = this.__getRequestHeaders(raw);

const AcceptHeader = (data || {}).AcceptHeader;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think @clayreimann is getting at the usage of PascalCasing instead of camelCasing.

@@ -349,11 +349,12 @@ describe('Repository', function() {

it('should write to repo', function(done) {
remoteRepo.writeFile('master', fileName, initialText, initialMessage, assertSuccessful(done, function() {
remoteRepo.getContents('master', fileName, 'raw', assertSuccessful(done, function(err, fileText) {
wait().then(() => remoteRepo.getContents('master', fileName, 'raw',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why the wait?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sometimes the writeFile succeed even though github didn't really create the file yet and the getContents call fails with 404. Wait is there to give time to Github to settle down

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blind wait's a generally very brittle. Can you pull github for the file and if it doesn't show up within 20 seconds then fail?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed, I'll see if I can write an easy to use helper. (This can be done in another PR though)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, I'm fine with it in another PR as well.

@mtscout6
Copy link
Member

For the changelog generation should we have all these commits squashed with the commit message chore: fix tests

@clayreimann
Copy link
Member

There's nothing here that I really object to, @mtscout6 look good to you too?

@mtscout6
Copy link
Member

mtscout6 commented Nov 29, 2016

Just the rebase and squash for the change log generation. If that's still a thing for this repo.

@mathieudutour
Copy link
Contributor Author

How is the changelog generation working exactly?

@clayreimann
Copy link
Member

clayreimann commented Nov 30, 2016 via email

@mtscout6
Copy link
Member

Very well, I thought it was auto generated from the commit messages. Never mind then this is good to go.

@clayreimann clayreimann merged commit 6ec1d0b into github-tools:master Nov 30, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants