{"action":"created","comment":{"url":"https://api.github.com/repos/yiisoft/yii2/pulls/comments/87707801","pull_request_review_id":8311194,"id":87707801,"diff_hunk":"@@ -71,6 +86,8 @@ script:\n   - cd framework && composer validate --no-check-lock && cd ..\n   # run PHPUnit\n   - vendor/bin/phpunit --verbose $PHPUNIT_FLAGS --exclude-group mssql,oci,wincache,xcache,zenddata,cubrid\n+  # run Mocha\n+  - npm test","path":".travis.yml","position":63,"original_position":63,"commit_id":"c0b31c744e8021a0f46dbc6e248a969db4225b15","original_commit_id":"c0b31c744e8021a0f46dbc6e248a969db4225b15","user":{"login":"arogachev","id":8326201,"avatar_url":"https://avatars.githubusercontent.com/u/8326201?v=3","gravatar_id":"","url":"https://api.github.com/users/arogachev","html_url":"https://github.com/arogachev","followers_url":"https://api.github.com/users/arogachev/followers","following_url":"https://api.github.com/users/arogachev/following{/other_user}","gists_url":"https://api.github.com/users/arogachev/gists{/gist_id}","starred_url":"https://api.github.com/users/arogachev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arogachev/subscriptions","organizations_url":"https://api.github.com/users/arogachev/orgs","repos_url":"https://api.github.com/users/arogachev/repos","events_url":"https://api.github.com/users/arogachev/events{/privacy}","received_events_url":"https://api.github.com/users/arogachev/received_events","type":"User","site_admin":false},"body":"Run the actual JS unit tests.","created_at":"2016-11-13T08:15:58Z","updated_at":"2016-11-13T08:15:59Z","html_url":"https://github.com/yiisoft/yii2/pull/12936#discussion_r87707801","pull_request_url":"https://api.github.com/repos/yiisoft/yii2/pulls/12936","_links":{"self":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/comments/87707801"},"html":{"href":"https://github.com/yiisoft/yii2/pull/12936#discussion_r87707801"},"pull_request":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/12936"}}},"pull_request":{"url":"https://api.github.com/repos/yiisoft/yii2/pulls/12936","id":92722346,"html_url":"https://github.com/yiisoft/yii2/pull/12936","diff_url":"https://github.com/yiisoft/yii2/pull/12936.diff","patch_url":"https://github.com/yiisoft/yii2/pull/12936.patch","issue_url":"https://api.github.com/repos/yiisoft/yii2/issues/12936","number":12936,"state":"open","locked":false,"title":"#12840: Added unit tests for yii.validation.js","user":{"login":"arogachev","id":8326201,"avatar_url":"https://avatars.githubusercontent.com/u/8326201?v=3","gravatar_id":"","url":"https://api.github.com/users/arogachev","html_url":"https://github.com/arogachev","followers_url":"https://api.github.com/users/arogachev/followers","following_url":"https://api.github.com/users/arogachev/following{/other_user}","gists_url":"https://api.github.com/users/arogachev/gists{/gist_id}","starred_url":"https://api.github.com/users/arogachev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arogachev/subscriptions","organizations_url":"https://api.github.com/users/arogachev/orgs","repos_url":"https://api.github.com/users/arogachev/repos","events_url":"https://api.github.com/users/arogachev/events{/privacy}","received_events_url":"https://api.github.com/users/arogachev/received_events","type":"User","site_admin":false},"body":"| Q             | A\r\n| ------------- | ---\r\n| Is bugfix?    | yes, it contains some bug fixes\r\n| New feature?  | no\r\n| Breaks BC?    | no\r\n| Tests pass?   | yes\r\n| Fixed issues  | #12840\r\n\r\nUsed @nkovacs draft as starting point(https://github.com/yiisoft/yii2/issues/11037#issuecomment-193356450). I also fixed some bugs in `yii.validation.js` and did some refactoring.\r\n\r\n## Implemented tests\r\n\r\n- yii.validation.js\r\n\r\n## Running tests\r\n\r\n- JS tests use jQuery and Punycode.js libraries from `vendor/bower` to match those that are used in assets and prevent installing and synchronizing duplicates via NPM. So make sure you have them installed. If no - run `composer install` to install them via Composer Asset Plugin.\r\n- Install Node.js. I used the latest version available at the moment - `v7.1.0`. Note that used `jsdom` dependent library version requires `Node.js >= 4`.\r\n- Run `npm install` to install dependencies.\r\n- Execute `npm test` for running tests.\r\n\r\n## Problems list\r\n\r\n- [x] Sinon can not be installed via Composer Asset Plugin. If I add line `\"npm-asset/sinon\": \"^1.17.6\"` to `required-dev` section of `composer.json` and run `composer update` I get the following error:\r\n\r\n```\r\n[RuntimeException]\r\nFailed to execute git clone --mirror 'git+ssh://git@github.com/sinonjs/sinon.git' '/home/vagrant/.composer/cache/vcs/git-ssh---git-github.com-sinonjs-sinon.git/'\r\nCloning into bare repository '/home/vagrant/.composer/cache/vcs/git-ssh---git-github.com-sinonjs-sinon.git'...\r\nPermission denied (publickey).\r\nfatal: Could not read from remote repository.\r\nPlease make sure you have the correct access rights and the repository exists.\r\n```\r\n\r\nPossibly related: https://github.com/fxpio/composer-asset-plugin/issues/187.\r\n\r\nI tried `--prefer-dist` option, that didn't help. I also have generated SSH key and it's added it to `ssh-agent` (error is mentioned in [git-workflow](https://github.com/yiisoft/yii2/blob/master/docs/internals/git-workflow.md#1-fork-the-yii-repository-on-github-and-clone-your-fork-to-your-development-environment) document which is a part of internal docs).\r\n\r\nThis is not actual anymore because Node.js and NPM are used for testing.\r\n\r\n- [x] Sometimes \"image validator with FileReader API is not available\" test takes a long time to load and gives warning with time written inside of a red label. This is because of swapping native `FileReader`:\r\n\r\n```js\r\nvar initialFileReader = FileReader;\r\n\r\nbeforeEach(function () {\r\n    FileReader = undefined;\r\n});\r\n\r\nafterEach(function () {\r\n    FileReader = initialFileReader;\r\n});\r\n```\r\n\r\nBut:\r\n\r\n- It happens pretty seldom and increases time by about half of second only.\r\n- I can't see a better solution for testing this, so this is not a big problem.\r\n- Similar technique is used for swapping native JS components in other places.\r\n\r\nSo this is not a big deal.\r\n\r\nThis is not actual anymore because Node.js and NPM are used for testing and for testing that case different approach is used.\r\n\r\n- [x] Run tests in command line instead of a browser.\r\n\r\nNode.js and NPM are used for testing.\r\n\r\n- [ ] Error while running `npm test`:\r\n\r\n> Error: timeout of 15000ms exceeded. Ensure the done() callback is being called in this test.\r\n\r\nHappens very seldom, this is because of jsdom and integrating jQuery. Default timeout is 2000ms. And this is always not enough, so I increased it to be 15000ms.\r\n\r\n- [ ] In build detailed info the line after \"with width more than minimum width\" (validateImage method, with successfully read image) is not printed. It's OK locally though.\r\n\r\nCan't see it in some builds, maybe it was Travis glitch related with formatting.\r\n\r\n## Integration with Travis CI\r\n\r\nI found this [article](https://ma27.github.io/travis-ci/2016/05/06/travis-for-nodejs-and-php.html) and used it as starting point.\r\n\r\n> TravisCI uses the software which is shipped by default on a `precise`: An ancient setup with NodeJS 0.10 and NPM 1.x. The current 3.x series of NPM is much more stable than the ancient NPM 1.x and fixed a lot of misbehavior which has been implemented in the older versions of NPM. Especially code which has been written for the browser will experience issues due to some implementation details of NPM releases prior to the 3.x series.\r\n\r\nWe can't use Node.js < 4 because of [jsdom](https://github.com/tmpvar/jsdom) dependency. I refused to use [3.x branch](https://github.com/tmpvar/jsdom/tree/3.x) of jsdom because it's considered legacy and no longer maintained.\r\n\r\nI tried to change dist to `trusty` and install newer versions of Node.js and NPM. It worked, but another error appeared during creating test MySQL database:\r\n\r\n```\r\n- mysql -e 'CREATE DATABASE yiitest;';\r\n```\r\n\r\nError's text:\r\n\r\n> ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)\r\n\r\nThen I found https://github.com/travis-ci/travis-ci/issues/6842 and fixed it with installation of MySQL 5.6 (default is MySQL 5.5 for trusty dist).\r\n\r\nHovewer new problems appeared.\r\n\r\n- [ ] On PHP 5.4:\r\n\r\n> Warning: PHP Startup: Unable to load dynamic library\r\n> '/home/travis/.phpenv/versions/5.4.45/lib/php/extensions/no-debug-zts-20100525/apc.so' -\r\n> /home/travis/.phpenv/versions/5.4.45/lib/php/extensions/no-debug-zts-20100525/apc.so:\r\n> cannot open shared object file: \r\n> No such file or directory in Unknown on line 0\r\n\r\nRelated: https://github.com/travis-ci/travis-ci/issues/6853\r\n\r\nI'm trying to fix it by installing PECL package, see this [article](http://olvlvl.com/2016-09-travis-apc). Hovewer no results yet, because it tries to install it for PHP 7 version (that's weird because version in the build is 5.4).\r\n\r\n- [ ] On HHVM 2 tests related with PostgreSQL are now failing.","created_at":"2016-11-08T06:31:41Z","updated_at":"2016-11-13T08:15:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2395380c880efb6cf7f9000ca002c936e8f99641","assignee":{"login":"dynasource","id":125726,"avatar_url":"https://avatars.githubusercontent.com/u/125726?v=3","gravatar_id":"","url":"https://api.github.com/users/dynasource","html_url":"https://github.com/dynasource","followers_url":"https://api.github.com/users/dynasource/followers","following_url":"https://api.github.com/users/dynasource/following{/other_user}","gists_url":"https://api.github.com/users/dynasource/gists{/gist_id}","starred_url":"https://api.github.com/users/dynasource/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dynasource/subscriptions","organizations_url":"https://api.github.com/users/dynasource/orgs","repos_url":"https://api.github.com/users/dynasource/repos","events_url":"https://api.github.com/users/dynasource/events{/privacy}","received_events_url":"https://api.github.com/users/dynasource/received_events","type":"User","site_admin":false},"assignees":[{"login":"dynasource","id":125726,"avatar_url":"https://avatars.githubusercontent.com/u/125726?v=3","gravatar_id":"","url":"https://api.github.com/users/dynasource","html_url":"https://github.com/dynasource","followers_url":"https://api.github.com/users/dynasource/followers","following_url":"https://api.github.com/users/dynasource/following{/other_user}","gists_url":"https://api.github.com/users/dynasource/gists{/gist_id}","starred_url":"https://api.github.com/users/dynasource/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dynasource/subscriptions","organizations_url":"https://api.github.com/users/dynasource/orgs","repos_url":"https://api.github.com/users/dynasource/repos","events_url":"https://api.github.com/users/dynasource/events{/privacy}","received_events_url":"https://api.github.com/users/dynasource/received_events","type":"User","site_admin":false},{"login":"cebe","id":189796,"avatar_url":"https://avatars.githubusercontent.com/u/189796?v=3","gravatar_id":"","url":"https://api.github.com/users/cebe","html_url":"https://github.com/cebe","followers_url":"https://api.github.com/users/cebe/followers","following_url":"https://api.github.com/users/cebe/following{/other_user}","gists_url":"https://api.github.com/users/cebe/gists{/gist_id}","starred_url":"https://api.github.com/users/cebe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cebe/subscriptions","organizations_url":"https://api.github.com/users/cebe/orgs","repos_url":"https://api.github.com/users/cebe/repos","events_url":"https://api.github.com/users/cebe/events{/privacy}","received_events_url":"https://api.github.com/users/cebe/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/yiisoft/yii2/milestones/20","html_url":"https://github.com/yiisoft/yii2/milestones/2.0.11","labels_url":"https://api.github.com/repos/yiisoft/yii2/milestones/20/labels","id":1736699,"number":20,"title":"2.0.11","description":"","creator":{"login":"cebe","id":189796,"avatar_url":"https://avatars.githubusercontent.com/u/189796?v=3","gravatar_id":"","url":"https://api.github.com/users/cebe","html_url":"https://github.com/cebe","followers_url":"https://api.github.com/users/cebe/followers","following_url":"https://api.github.com/users/cebe/following{/other_user}","gists_url":"https://api.github.com/users/cebe/gists{/gist_id}","starred_url":"https://api.github.com/users/cebe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cebe/subscriptions","organizations_url":"https://api.github.com/users/cebe/orgs","repos_url":"https://api.github.com/users/cebe/repos","events_url":"https://api.github.com/users/cebe/events{/privacy}","received_events_url":"https://api.github.com/users/cebe/received_events","type":"User","site_admin":false},"open_issues":125,"closed_issues":64,"state":"open","created_at":"2016-04-28T15:04:50Z","updated_at":"2016-11-13T08:10:44Z","due_on":"2016-12-18T00:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/yiisoft/yii2/pulls/12936/commits","review_comments_url":"https://api.github.com/repos/yiisoft/yii2/pulls/12936/comments","review_comment_url":"https://api.github.com/repos/yiisoft/yii2/pulls/comments{/number}","comments_url":"https://api.github.com/repos/yiisoft/yii2/issues/12936/comments","statuses_url":"https://api.github.com/repos/yiisoft/yii2/statuses/c0b31c744e8021a0f46dbc6e248a969db4225b15","head":{"label":"arogachev:12840-js-tests","ref":"12840-js-tests","sha":"c0b31c744e8021a0f46dbc6e248a969db4225b15","user":{"login":"arogachev","id":8326201,"avatar_url":"https://avatars.githubusercontent.com/u/8326201?v=3","gravatar_id":"","url":"https://api.github.com/users/arogachev","html_url":"https://github.com/arogachev","followers_url":"https://api.github.com/users/arogachev/followers","following_url":"https://api.github.com/users/arogachev/following{/other_user}","gists_url":"https://api.github.com/users/arogachev/gists{/gist_id}","starred_url":"https://api.github.com/users/arogachev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arogachev/subscriptions","organizations_url":"https://api.github.com/users/arogachev/orgs","repos_url":"https://api.github.com/users/arogachev/repos","events_url":"https://api.github.com/users/arogachev/events{/privacy}","received_events_url":"https://api.github.com/users/arogachev/received_events","type":"User","site_admin":false},"repo":{"id":41841832,"name":"yii2","full_name":"arogachev/yii2","owner":{"login":"arogachev","id":8326201,"avatar_url":"https://avatars.githubusercontent.com/u/8326201?v=3","gravatar_id":"","url":"https://api.github.com/users/arogachev","html_url":"https://github.com/arogachev","followers_url":"https://api.github.com/users/arogachev/followers","following_url":"https://api.github.com/users/arogachev/following{/other_user}","gists_url":"https://api.github.com/users/arogachev/gists{/gist_id}","starred_url":"https://api.github.com/users/arogachev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arogachev/subscriptions","organizations_url":"https://api.github.com/users/arogachev/orgs","repos_url":"https://api.github.com/users/arogachev/repos","events_url":"https://api.github.com/users/arogachev/events{/privacy}","received_events_url":"https://api.github.com/users/arogachev/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/arogachev/yii2","description":"Yii 2 framework main development repo","fork":true,"url":"https://api.github.com/repos/arogachev/yii2","forks_url":"https://api.github.com/repos/arogachev/yii2/forks","keys_url":"https://api.github.com/repos/arogachev/yii2/keys{/key_id}","collaborators_url":"https://api.github.com/repos/arogachev/yii2/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/arogachev/yii2/teams","hooks_url":"https://api.github.com/repos/arogachev/yii2/hooks","issue_events_url":"https://api.github.com/repos/arogachev/yii2/issues/events{/number}","events_url":"https://api.github.com/repos/arogachev/yii2/events","assignees_url":"https://api.github.com/repos/arogachev/yii2/assignees{/user}","branches_url":"https://api.github.com/repos/arogachev/yii2/branches{/branch}","tags_url":"https://api.github.com/repos/arogachev/yii2/tags","blobs_url":"https://api.github.com/repos/arogachev/yii2/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/arogachev/yii2/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/arogachev/yii2/git/refs{/sha}","trees_url":"https://api.github.com/repos/arogachev/yii2/git/trees{/sha}","statuses_url":"https://api.github.com/repos/arogachev/yii2/statuses/{sha}","languages_url":"https://api.github.com/repos/arogachev/yii2/languages","stargazers_url":"https://api.github.com/repos/arogachev/yii2/stargazers","contributors_url":"https://api.github.com/repos/arogachev/yii2/contributors","subscribers_url":"https://api.github.com/repos/arogachev/yii2/subscribers","subscription_url":"https://api.github.com/repos/arogachev/yii2/subscription","commits_url":"https://api.github.com/repos/arogachev/yii2/commits{/sha}","git_commits_url":"https://api.github.com/repos/arogachev/yii2/git/commits{/sha}","comments_url":"https://api.github.com/repos/arogachev/yii2/comments{/number}","issue_comment_url":"https://api.github.com/repos/arogachev/yii2/issues/comments{/number}","contents_url":"https://api.github.com/repos/arogachev/yii2/contents/{+path}","compare_url":"https://api.github.com/repos/arogachev/yii2/compare/{base}...{head}","merges_url":"https://api.github.com/repos/arogachev/yii2/merges","archive_url":"https://api.github.com/repos/arogachev/yii2/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/arogachev/yii2/downloads","issues_url":"https://api.github.com/repos/arogachev/yii2/issues{/number}","pulls_url":"https://api.github.com/repos/arogachev/yii2/pulls{/number}","milestones_url":"https://api.github.com/repos/arogachev/yii2/milestones{/number}","notifications_url":"https://api.github.com/repos/arogachev/yii2/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/arogachev/yii2/labels{/name}","releases_url":"https://api.github.com/repos/arogachev/yii2/releases{/id}","deployments_url":"https://api.github.com/repos/arogachev/yii2/deployments","created_at":"2015-09-03T04:26:43Z","updated_at":"2016-11-08T12:06:48Z","pushed_at":"2016-11-13T07:25:32Z","git_url":"git://github.com/arogachev/yii2.git","ssh_url":"git@github.com:arogachev/yii2.git","clone_url":"https://github.com/arogachev/yii2.git","svn_url":"https://github.com/arogachev/yii2","homepage":"http://www.yiiframework.com","size":40563,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"yiisoft:master","ref":"master","sha":"a246b1beeae3d6af62a492440841be12ef042e87","user":{"login":"yiisoft","id":993323,"avatar_url":"https://avatars.githubusercontent.com/u/993323?v=3","gravatar_id":"","url":"https://api.github.com/users/yiisoft","html_url":"https://github.com/yiisoft","followers_url":"https://api.github.com/users/yiisoft/followers","following_url":"https://api.github.com/users/yiisoft/following{/other_user}","gists_url":"https://api.github.com/users/yiisoft/gists{/gist_id}","starred_url":"https://api.github.com/users/yiisoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yiisoft/subscriptions","organizations_url":"https://api.github.com/users/yiisoft/orgs","repos_url":"https://api.github.com/users/yiisoft/repos","events_url":"https://api.github.com/users/yiisoft/events{/privacy}","received_events_url":"https://api.github.com/users/yiisoft/received_events","type":"Organization","site_admin":false},"repo":{"id":3431193,"name":"yii2","full_name":"yiisoft/yii2","owner":{"login":"yiisoft","id":993323,"avatar_url":"https://avatars.githubusercontent.com/u/993323?v=3","gravatar_id":"","url":"https://api.github.com/users/yiisoft","html_url":"https://github.com/yiisoft","followers_url":"https://api.github.com/users/yiisoft/followers","following_url":"https://api.github.com/users/yiisoft/following{/other_user}","gists_url":"https://api.github.com/users/yiisoft/gists{/gist_id}","starred_url":"https://api.github.com/users/yiisoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yiisoft/subscriptions","organizations_url":"https://api.github.com/users/yiisoft/orgs","repos_url":"https://api.github.com/users/yiisoft/repos","events_url":"https://api.github.com/users/yiisoft/events{/privacy}","received_events_url":"https://api.github.com/users/yiisoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/yiisoft/yii2","description":"Yii 2 framework main development repo","fork":false,"url":"https://api.github.com/repos/yiisoft/yii2","forks_url":"https://api.github.com/repos/yiisoft/yii2/forks","keys_url":"https://api.github.com/repos/yiisoft/yii2/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yiisoft/yii2/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yiisoft/yii2/teams","hooks_url":"https://api.github.com/repos/yiisoft/yii2/hooks","issue_events_url":"https://api.github.com/repos/yiisoft/yii2/issues/events{/number}","events_url":"https://api.github.com/repos/yiisoft/yii2/events","assignees_url":"https://api.github.com/repos/yiisoft/yii2/assignees{/user}","branches_url":"https://api.github.com/repos/yiisoft/yii2/branches{/branch}","tags_url":"https://api.github.com/repos/yiisoft/yii2/tags","blobs_url":"https://api.github.com/repos/yiisoft/yii2/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yiisoft/yii2/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yiisoft/yii2/git/refs{/sha}","trees_url":"https://api.github.com/repos/yiisoft/yii2/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yiisoft/yii2/statuses/{sha}","languages_url":"https://api.github.com/repos/yiisoft/yii2/languages","stargazers_url":"https://api.github.com/repos/yiisoft/yii2/stargazers","contributors_url":"https://api.github.com/repos/yiisoft/yii2/contributors","subscribers_url":"https://api.github.com/repos/yiisoft/yii2/subscribers","subscription_url":"https://api.github.com/repos/yiisoft/yii2/subscription","commits_url":"https://api.github.com/repos/yiisoft/yii2/commits{/sha}","git_commits_url":"https://api.github.com/repos/yiisoft/yii2/git/commits{/sha}","comments_url":"https://api.github.com/repos/yiisoft/yii2/comments{/number}","issue_comment_url":"https://api.github.com/repos/yiisoft/yii2/issues/comments{/number}","contents_url":"https://api.github.com/repos/yiisoft/yii2/contents/{+path}","compare_url":"https://api.github.com/repos/yiisoft/yii2/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yiisoft/yii2/merges","archive_url":"https://api.github.com/repos/yiisoft/yii2/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yiisoft/yii2/downloads","issues_url":"https://api.github.com/repos/yiisoft/yii2/issues{/number}","pulls_url":"https://api.github.com/repos/yiisoft/yii2/pulls{/number}","milestones_url":"https://api.github.com/repos/yiisoft/yii2/milestones{/number}","notifications_url":"https://api.github.com/repos/yiisoft/yii2/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yiisoft/yii2/labels{/name}","releases_url":"https://api.github.com/repos/yiisoft/yii2/releases{/id}","deployments_url":"https://api.github.com/repos/yiisoft/yii2/deployments","created_at":"2012-02-13T15:32:36Z","updated_at":"2016-11-13T07:02:02Z","pushed_at":"2016-11-13T07:25:35Z","git_url":"git://github.com/yiisoft/yii2.git","ssh_url":"git@github.com:yiisoft/yii2.git","clone_url":"https://github.com/yiisoft/yii2.git","svn_url":"https://github.com/yiisoft/yii2","homepage":"http://www.yiiframework.com","size":65804,"stargazers_count":9080,"watchers_count":9080,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5267,"mirror_url":null,"open_issues_count":782,"forks":5267,"open_issues":782,"watchers":9080,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/12936"},"html":{"href":"https://github.com/yiisoft/yii2/pull/12936"},"issue":{"href":"https://api.github.com/repos/yiisoft/yii2/issues/12936"},"comments":{"href":"https://api.github.com/repos/yiisoft/yii2/issues/12936/comments"},"review_comments":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/12936/comments"},"review_comment":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/12936/commits"},"statuses":{"href":"https://api.github.com/repos/yiisoft/yii2/statuses/c0b31c744e8021a0f46dbc6e248a969db4225b15"}}}}
{"actor":{"display_login":"arogachev"}}