{"action":"closed","number":17,"pull_request":{"url":"https://api.github.com/repos/mikeizbicki/gitlearn/pulls/17","id":32085232,"html_url":"https://github.com/mikeizbicki/gitlearn/pull/17","diff_url":"https://github.com/mikeizbicki/gitlearn/pull/17.diff","patch_url":"https://github.com/mikeizbicki/gitlearn/pull/17.patch","issue_url":"https://api.github.com/repos/mikeizbicki/gitlearn/issues/17","number":17,"state":"closed","locked":false,"title":"added cs100-runtests","user":{"login":"M-Evans","id":5473466,"avatar_url":"https://avatars.githubusercontent.com/u/5473466?v=3","gravatar_id":"","url":"https://api.github.com/users/M-Evans","html_url":"https://github.com/M-Evans","followers_url":"https://api.github.com/users/M-Evans/followers","following_url":"https://api.github.com/users/M-Evans/following{/other_user}","gists_url":"https://api.github.com/users/M-Evans/gists{/gist_id}","starred_url":"https://api.github.com/users/M-Evans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/M-Evans/subscriptions","organizations_url":"https://api.github.com/users/M-Evans/orgs","repos_url":"https://api.github.com/users/M-Evans/repos","events_url":"https://api.github.com/users/M-Evans/events{/privacy}","received_events_url":"https://api.github.com/users/M-Evans/received_events","type":"User","site_admin":false},"body":"It's mostly finished. spent some time fixing lots of bugs.\r\nThis took a lot longer than I intended it to. Unlike yesterday and today, however, I'll have all of tomorrow to spend on finishing this up.\r\nI still have to documentation to finish, but it's easy to use.\r\n\r\nI *just* tested it in hammer. there are some version differences that made everything a bit dicey, but I think I've sorted it out now.\r\nTo get started, run ``cs100-runtests.sh`` with (optionally) a test case file.\r\nYou should start focused on a control window. Type ``help`` or ``h`` or ``h?`` or ``?`` or ``?h`` to bring up help.\r\n\r\n### controlling test case runs\r\n* ``n`` or ``next`` goes to the next test case\r\n* ``p`` or ``previous`` or ``b`` or ``back`` goes to the previous test case\r\n* ``l`` or ``load`` and then a filename loads a test case file (mutilating the currently loaded one)\r\n\r\n##### special features:\r\n* If the upper right pane doesn't have a subprocess, ``rshell`` is started again \r\n    * this allows for multiple exit commands in the same test file (one file needed)\r\n    * the grader is notified when ``rshell`` is restarted (useful for when ``rshell`` crashes unexpectedly) \r\n* if the process in the upper right pane is suspended (``rshell``), then the controller will attempt to make it continue\r\n    * rshell is never supposed to suspend. Never the less, if rshell is suspended, it is brought back and the grader is notified\r\n\r\n### controlling grading\r\n* ``g`` or ``grade`` and ``<line>`` ``<amt>`` puts ``<amt>`` as a grade on ``<line>``. If ``<line>`` isn't a properly-formatted grade line, nothing happens\r\n* ``f`` ``<line>`` puts a full score on ``<line>``. If ``<line>`` isn't a properly-formatted grade line, nothing happens.\r\n* ``zero`` makes all scores ``0``\r\n* ``full`` makes all scores maximum\r\n\r\n##### special features:\r\n* after every update, the total is adjusted\r\n\r\n### controlling the controller\r\n* ``h`` or others (see above) print a short help message\r\n* ``c`` or ``clear`` clears the controller screen\r\n* ``e`` or ``exit`` or ``q`` or ``quit`` terminate the ``tmux`` session (closes everything)\r\n\r\n##### special features\r\n* upon receiving ``SIGINT``, ``SIGQUIT``, ``SIGTERM``, or ``SIGTSTP``, the controller terminates the session\r\n* If the user presses ``C-d`` on a blank input line of the controller, the session terminates\r\n* focus can be shifted from the controller to either the vim instance or the rshell instance for manual manipulation.\r\n* pressing enter without entering a command runs the previous command (useful for speeding through test cases)\r\n* displays the previous command in the prompt","created_at":"2015-03-27T05:59:18Z","updated_at":"2015-03-27T08:50:00Z","closed_at":"2015-03-27T08:50:00Z","merged_at":null,"merge_commit_sha":"5bbe10429df3984c9a6220d97697ba9745f8411a","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/mikeizbicki/gitlearn/pulls/17/commits","review_comments_url":"https://api.github.com/repos/mikeizbicki/gitlearn/pulls/17/comments","review_comment_url":"https://api.github.com/repos/mikeizbicki/gitlearn/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mikeizbicki/gitlearn/issues/17/comments","statuses_url":"https://api.github.com/repos/mikeizbicki/gitlearn/statuses/323a502a8d40863e80c1ec3a959a69412248a5a8","head":{"label":"M-Evans:master","ref":"master","sha":"323a502a8d40863e80c1ec3a959a69412248a5a8","user":{"login":"M-Evans","id":5473466,"avatar_url":"https://avatars.githubusercontent.com/u/5473466?v=3","gravatar_id":"","url":"https://api.github.com/users/M-Evans","html_url":"https://github.com/M-Evans","followers_url":"https://api.github.com/users/M-Evans/followers","following_url":"https://api.github.com/users/M-Evans/following{/other_user}","gists_url":"https://api.github.com/users/M-Evans/gists{/gist_id}","starred_url":"https://api.github.com/users/M-Evans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/M-Evans/subscriptions","organizations_url":"https://api.github.com/users/M-Evans/orgs","repos_url":"https://api.github.com/users/M-Evans/repos","events_url":"https://api.github.com/users/M-Evans/events{/privacy}","received_events_url":"https://api.github.com/users/M-Evans/received_events","type":"User","site_admin":false},"repo":{"id":31921063,"name":"gitlearn","full_name":"M-Evans/gitlearn","owner":{"login":"M-Evans","id":5473466,"avatar_url":"https://avatars.githubusercontent.com/u/5473466?v=3","gravatar_id":"","url":"https://api.github.com/users/M-Evans","html_url":"https://github.com/M-Evans","followers_url":"https://api.github.com/users/M-Evans/followers","following_url":"https://api.github.com/users/M-Evans/following{/other_user}","gists_url":"https://api.github.com/users/M-Evans/gists{/gist_id}","starred_url":"https://api.github.com/users/M-Evans/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/M-Evans/subscriptions","organizations_url":"https://api.github.com/users/M-Evans/orgs","repos_url":"https://api.github.com/users/M-Evans/repos","events_url":"https://api.github.com/users/M-Evans/events{/privacy}","received_events_url":"https://api.github.com/users/M-Evans/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/M-Evans/gitlearn","description":"a course management system (similar to ilearn) based on git","fork":true,"url":"https://api.github.com/repos/M-Evans/gitlearn","forks_url":"https://api.github.com/repos/M-Evans/gitlearn/forks","keys_url":"https://api.github.com/repos/M-Evans/gitlearn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/M-Evans/gitlearn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/M-Evans/gitlearn/teams","hooks_url":"https://api.github.com/repos/M-Evans/gitlearn/hooks","issue_events_url":"https://api.github.com/repos/M-Evans/gitlearn/issues/events{/number}","events_url":"https://api.github.com/repos/M-Evans/gitlearn/events","assignees_url":"https://api.github.com/repos/M-Evans/gitlearn/assignees{/user}","branches_url":"https://api.github.com/repos/M-Evans/gitlearn/branches{/branch}","tags_url":"https://api.github.com/repos/M-Evans/gitlearn/tags","blobs_url":"https://api.github.com/repos/M-Evans/gitlearn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/M-Evans/gitlearn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/M-Evans/gitlearn/git/refs{/sha}","trees_url":"https://api.github.com/repos/M-Evans/gitlearn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/M-Evans/gitlearn/statuses/{sha}","languages_url":"https://api.github.com/repos/M-Evans/gitlearn/languages","stargazers_url":"https://api.github.com/repos/M-Evans/gitlearn/stargazers","contributors_url":"https://api.github.com/repos/M-Evans/gitlearn/contributors","subscribers_url":"https://api.github.com/repos/M-Evans/gitlearn/subscribers","subscription_url":"https://api.github.com/repos/M-Evans/gitlearn/subscription","commits_url":"https://api.github.com/repos/M-Evans/gitlearn/commits{/sha}","git_commits_url":"https://api.github.com/repos/M-Evans/gitlearn/git/commits{/sha}","comments_url":"https://api.github.com/repos/M-Evans/gitlearn/comments{/number}","issue_comment_url":"https://api.github.com/repos/M-Evans/gitlearn/issues/comments{/number}","contents_url":"https://api.github.com/repos/M-Evans/gitlearn/contents/{+path}","compare_url":"https://api.github.com/repos/M-Evans/gitlearn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/M-Evans/gitlearn/merges","archive_url":"https://api.github.com/repos/M-Evans/gitlearn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/M-Evans/gitlearn/downloads","issues_url":"https://api.github.com/repos/M-Evans/gitlearn/issues{/number}","pulls_url":"https://api.github.com/repos/M-Evans/gitlearn/pulls{/number}","milestones_url":"https://api.github.com/repos/M-Evans/gitlearn/milestones{/number}","notifications_url":"https://api.github.com/repos/M-Evans/gitlearn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/M-Evans/gitlearn/labels{/name}","releases_url":"https://api.github.com/repos/M-Evans/gitlearn/releases{/id}","created_at":"2015-03-09T20:32:47Z","updated_at":"2015-03-27T05:26:28Z","pushed_at":"2015-03-27T05:26:28Z","git_url":"git://github.com/M-Evans/gitlearn.git","ssh_url":"git@github.com:M-Evans/gitlearn.git","clone_url":"https://github.com/M-Evans/gitlearn.git","svn_url":"https://github.com/M-Evans/gitlearn","homepage":"","size":148,"stargazers_count":0,"watchers_count":0,"language":"Shell","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":"mikeizbicki:master","ref":"master","sha":"69cefb07d95c8c66727a1f3555aeb4de3819aec8","user":{"login":"mikeizbicki","id":1052630,"avatar_url":"https://avatars.githubusercontent.com/u/1052630?v=3","gravatar_id":"","url":"https://api.github.com/users/mikeizbicki","html_url":"https://github.com/mikeizbicki","followers_url":"https://api.github.com/users/mikeizbicki/followers","following_url":"https://api.github.com/users/mikeizbicki/following{/other_user}","gists_url":"https://api.github.com/users/mikeizbicki/gists{/gist_id}","starred_url":"https://api.github.com/users/mikeizbicki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikeizbicki/subscriptions","organizations_url":"https://api.github.com/users/mikeizbicki/orgs","repos_url":"https://api.github.com/users/mikeizbicki/repos","events_url":"https://api.github.com/users/mikeizbicki/events{/privacy}","received_events_url":"https://api.github.com/users/mikeizbicki/received_events","type":"User","site_admin":false},"repo":{"id":28671888,"name":"gitlearn","full_name":"mikeizbicki/gitlearn","owner":{"login":"mikeizbicki","id":1052630,"avatar_url":"https://avatars.githubusercontent.com/u/1052630?v=3","gravatar_id":"","url":"https://api.github.com/users/mikeizbicki","html_url":"https://github.com/mikeizbicki","followers_url":"https://api.github.com/users/mikeizbicki/followers","following_url":"https://api.github.com/users/mikeizbicki/following{/other_user}","gists_url":"https://api.github.com/users/mikeizbicki/gists{/gist_id}","starred_url":"https://api.github.com/users/mikeizbicki/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikeizbicki/subscriptions","organizations_url":"https://api.github.com/users/mikeizbicki/orgs","repos_url":"https://api.github.com/users/mikeizbicki/repos","events_url":"https://api.github.com/users/mikeizbicki/events{/privacy}","received_events_url":"https://api.github.com/users/mikeizbicki/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mikeizbicki/gitlearn","description":"a course management system (similar to ilearn) based on git","fork":false,"url":"https://api.github.com/repos/mikeizbicki/gitlearn","forks_url":"https://api.github.com/repos/mikeizbicki/gitlearn/forks","keys_url":"https://api.github.com/repos/mikeizbicki/gitlearn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mikeizbicki/gitlearn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mikeizbicki/gitlearn/teams","hooks_url":"https://api.github.com/repos/mikeizbicki/gitlearn/hooks","issue_events_url":"https://api.github.com/repos/mikeizbicki/gitlearn/issues/events{/number}","events_url":"https://api.github.com/repos/mikeizbicki/gitlearn/events","assignees_url":"https://api.github.com/repos/mikeizbicki/gitlearn/assignees{/user}","branches_url":"https://api.github.com/repos/mikeizbicki/gitlearn/branches{/branch}","tags_url":"https://api.github.com/repos/mikeizbicki/gitlearn/tags","blobs_url":"https://api.github.com/repos/mikeizbicki/gitlearn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mikeizbicki/gitlearn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mikeizbicki/gitlearn/git/refs{/sha}","trees_url":"https://api.github.com/repos/mikeizbicki/gitlearn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mikeizbicki/gitlearn/statuses/{sha}","languages_url":"https://api.github.com/repos/mikeizbicki/gitlearn/languages","stargazers_url":"https://api.github.com/repos/mikeizbicki/gitlearn/stargazers","contributors_url":"https://api.github.com/repos/mikeizbicki/gitlearn/contributors","subscribers_url":"https://api.github.com/repos/mikeizbicki/gitlearn/subscribers","subscription_url":"https://api.github.com/repos/mikeizbicki/gitlearn/subscription","commits_url":"https://api.github.com/repos/mikeizbicki/gitlearn/commits{/sha}","git_commits_url":"https://api.github.com/repos/mikeizbicki/gitlearn/git/commits{/sha}","comments_url":"https://api.github.com/repos/mikeizbicki/gitlearn/comments{/number}","issue_comment_url":"https://api.github.com/repos/mikeizbicki/gitlearn/issues/comments{/number}","contents_url":"https://api.github.com/repos/mikeizbicki/gitlearn/contents/{+path}","compare_url":"https://api.github.com/repos/mikeizbicki/gitlearn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mikeizbicki/gitlearn/merges","archive_url":"https://api.github.com/repos/mikeizbicki/gitlearn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mikeizbicki/gitlearn/downloads","issues_url":"https://api.github.com/repos/mikeizbicki/gitlearn/issues{/number}","pulls_url":"https://api.github.com/repos/mikeizbicki/gitlearn/pulls{/number}","milestones_url":"https://api.github.com/repos/mikeizbicki/gitlearn/milestones{/number}","notifications_url":"https://api.github.com/repos/mikeizbicki/gitlearn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mikeizbicki/gitlearn/labels{/name}","releases_url":"https://api.github.com/repos/mikeizbicki/gitlearn/releases{/id}","created_at":"2014-12-31T18:05:34Z","updated_at":"2015-03-24T01:10:33Z","pushed_at":"2015-03-27T05:59:18Z","git_url":"git://github.com/mikeizbicki/gitlearn.git","ssh_url":"git@github.com:mikeizbicki/gitlearn.git","clone_url":"https://github.com/mikeizbicki/gitlearn.git","svn_url":"https://github.com/mikeizbicki/gitlearn","homepage":"","size":809,"stargazers_count":7,"watchers_count":7,"language":"Shell","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":13,"mirror_url":null,"open_issues_count":1,"forks":13,"open_issues":1,"watchers":7,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mikeizbicki/gitlearn/pulls/17"},"html":{"href":"https://github.com/mikeizbicki/gitlearn/pull/17"},"issue":{"href":"https://api.github.com/repos/mikeizbicki/gitlearn/issues/17"},"comments":{"href":"https://api.github.com/repos/mikeizbicki/gitlearn/issues/17/comments"},"review_comments":{"href":"https://api.github.com/repos/mikeizbicki/gitlearn/pulls/17/comments"},"review_comment":{"href":"https://api.github.com/repos/mikeizbicki/gitlearn/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mikeizbicki/gitlearn/pulls/17/commits"},"statuses":{"href":"https://api.github.com/repos/mikeizbicki/gitlearn/statuses/323a502a8d40863e80c1ec3a959a69412248a5a8"}},"merged":false,"mergeable":true,"mergeable_state":"clean","merged_by":null,"comments":1,"review_comments":0,"commits":1,"additions":538,"deletions":0,"changed_files":7}}