{"action":"created","comment":{"url":"https://api.github.com/repos/unexpectedjs/unexpected/pulls/comments/33989954","id":33989954,"diff_hunk":"@@ -1684,6 +1684,104 @@ describe('unexpected', function () {\n         });\n     });\n \n+    describe('to begin with assertion', function () {\n+        it('asserts equality with a string', function () {\n+            expect('hello', 'to begin with', 'hello');\n+            expect('hello world', 'to begin with', 'hello');\n+        });\n+\n+        it('should support searching for a non-string inside a string', function () {\n+            expect('null modem', 'to begin with', null);\n+            expect('123456', 'to begin with', 123);\n+            expect('falsehood', 'to begin with', false);\n+            expect('Infinity man!', 'to begin with', Infinity);\n+        });\n+\n+        it('asserts inequality when not flag is turned on', function () {\n+            expect('hello', 'not to begin with', 'world');\n+            expect('hello world', 'not to begin with', 'world');\n+        });\n+\n+        it('throws when the assertion fails', function () {\n+            expect(function () {\n+                expect(null, 'to begin with', 'world');\n+            }, 'to throw',\n+                   \"expected null to begin with 'world'\\n\" +\n+                   \"  The assertion 'to begin with' is not defined for the type 'null',\\n\" +\n+                   \"  but it is defined for the type 'string'\");\n+\n+            expect(function () {\n+                expect('hello world', 'to begin with', 'foo');\n+            }, 'to throw exception',\n+                   \"expected 'hello world' to begin with 'foo'\\n\" +\n+                   \"\\n\" +\n+                   \"-hel\\n\" +\n+                   \"+foo\");\n+\n+            expect(function () {\n+                expect(1, 'to begin with', 1);\n+            }, 'to throw exception',\n+                   \"expected 1 to begin with 1\\n\" +\n+                   \"  The assertion 'to begin with' is not defined for the type 'number',\\n\" +\n+                   \"  but it is defined for the type 'string'\");\n+        });\n+\n+        it('produces a diff when the string case fails and the not flag is on', function () {\n+            expect(function () {\n+                expect('foobarquuxfoo', 'not to begin with', 'foo');\n+            }, 'to throw', \"expected 'foobarquuxfoo' not to begin with 'foo'\");\n+        });\n+    });\n+\n+    describe('to end with assertion', function () {\n+        it('asserts equality with a string', function () {\n+            expect('hello', 'to end with', 'hello');\n+            expect('hello world', 'to end with', 'world');\n+        });\n+\n+        it('should support searching for a non-string inside a string', function () {\n+            expect('maybe null', 'to end with', null);\n+            expect('0123', 'to end with', 123);\n+            expect('unfalse', 'to end with', false);\n+            expect('to Infinity', 'to end with', Infinity);\n+        });\n+\n+        it('asserts inequality when not flag is turned on', function () {\n+            expect('hello', 'not to end with', 'world');\n+            expect('hello worldly', 'not to end with', 'world');\n+        });\n+\n+        it('throws when the assertion fails', function () {\n+            expect(function () {\n+                expect(null, 'to end with', 'world');\n+            }, 'to throw',\n+                   \"expected null to end with 'world'\\n\" +\n+                   \"  The assertion 'to end with' is not defined for the type 'null',\\n\" +\n+                   \"  but it is defined for the type 'string'\");\n+\n+            expect(function () {\n+                expect('hello world', 'to end with', 'foo');\n+            }, 'to throw exception',\n+                   \"expected 'hello world' to end with 'foo'\\n\" +\n+                   \"\\n\" +\n+                   \"-rld\\n\" +\n+                   \"+foo\");\n+\n+            expect(function () {\n+                expect(1, 'to end with', 1);\n+            }, 'to throw exception',\n+                   \"expected 1 to end with 1\\n\" +\n+                   \"  The assertion 'to end with' is not defined for the type 'number',\\n\" +\n+                   \"  but it is defined for the type 'string'\");\n+        });\n+\n+        it('produces a diff when the string case fails and the not flag is on', function () {","path":"test/unexpected.spec.js","position":95,"original_position":95,"commit_id":"d1a0644c5f85d7b86b12952f100474ef4282207f","original_commit_id":"d1a0644c5f85d7b86b12952f100474ef4282207f","user":{"login":"papandreou","id":373545,"avatar_url":"https://avatars.githubusercontent.com/u/373545?v=3","gravatar_id":"","url":"https://api.github.com/users/papandreou","html_url":"https://github.com/papandreou","followers_url":"https://api.github.com/users/papandreou/followers","following_url":"https://api.github.com/users/papandreou/following{/other_user}","gists_url":"https://api.github.com/users/papandreou/gists{/gist_id}","starred_url":"https://api.github.com/users/papandreou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/papandreou/subscriptions","organizations_url":"https://api.github.com/users/papandreou/orgs","repos_url":"https://api.github.com/users/papandreou/repos","events_url":"https://api.github.com/users/papandreou/events{/privacy}","received_events_url":"https://api.github.com/users/papandreou/received_events","type":"User","site_admin":false},"body":"But there's no diff :)","created_at":"2015-07-06T22:31:22Z","updated_at":"2015-07-06T22:31:22Z","html_url":"https://github.com/unexpectedjs/unexpected/pull/183#discussion_r33989954","pull_request_url":"https://api.github.com/repos/unexpectedjs/unexpected/pulls/183","_links":{"self":{"href":"https://api.github.com/repos/unexpectedjs/unexpected/pulls/comments/33989954"},"html":{"href":"https://github.com/unexpectedjs/unexpected/pull/183#discussion_r33989954"},"pull_request":{"href":"https://api.github.com/repos/unexpectedjs/unexpected/pulls/183"}}},"pull_request":{"url":"https://api.github.com/repos/unexpectedjs/unexpected/pulls/183","id":39129834,"html_url":"https://github.com/unexpectedjs/unexpected/pull/183","diff_url":"https://github.com/unexpectedjs/unexpected/pull/183.diff","patch_url":"https://github.com/unexpectedjs/unexpected/pull/183.patch","issue_url":"https://api.github.com/repos/unexpectedjs/unexpected/issues/183","number":183,"state":"open","locked":false,"title":"String assertions 'to begin with' + 'to end with'","user":{"login":"Munter","id":331790,"avatar_url":"https://avatars.githubusercontent.com/u/331790?v=3","gravatar_id":"","url":"https://api.github.com/users/Munter","html_url":"https://github.com/Munter","followers_url":"https://api.github.com/users/Munter/followers","following_url":"https://api.github.com/users/Munter/following{/other_user}","gists_url":"https://api.github.com/users/Munter/gists{/gist_id}","starred_url":"https://api.github.com/users/Munter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Munter/subscriptions","organizations_url":"https://api.github.com/users/Munter/orgs","repos_url":"https://api.github.com/users/Munter/repos","events_url":"https://api.github.com/users/Munter/events{/privacy}","received_events_url":"https://api.github.com/users/Munter/received_events","type":"User","site_admin":false},"body":"I needed these for some tests I was running in Tolk","created_at":"2015-07-02T21:56:28Z","updated_at":"2015-07-06T22:31:22Z","closed_at":null,"merged_at":null,"merge_commit_sha":"59bd22def629b5fc6c1f1f427ec117cc57701748","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/unexpectedjs/unexpected/pulls/183/commits","review_comments_url":"https://api.github.com/repos/unexpectedjs/unexpected/pulls/183/comments","review_comment_url":"https://api.github.com/repos/unexpectedjs/unexpected/pulls/comments{/number}","comments_url":"https://api.github.com/repos/unexpectedjs/unexpected/issues/183/comments","statuses_url":"https://api.github.com/repos/unexpectedjs/unexpected/statuses/d1a0644c5f85d7b86b12952f100474ef4282207f","head":{"label":"Munter:string-begin-end","ref":"string-begin-end","sha":"d1a0644c5f85d7b86b12952f100474ef4282207f","user":{"login":"Munter","id":331790,"avatar_url":"https://avatars.githubusercontent.com/u/331790?v=3","gravatar_id":"","url":"https://api.github.com/users/Munter","html_url":"https://github.com/Munter","followers_url":"https://api.github.com/users/Munter/followers","following_url":"https://api.github.com/users/Munter/following{/other_user}","gists_url":"https://api.github.com/users/Munter/gists{/gist_id}","starred_url":"https://api.github.com/users/Munter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Munter/subscriptions","organizations_url":"https://api.github.com/users/Munter/orgs","repos_url":"https://api.github.com/users/Munter/repos","events_url":"https://api.github.com/users/Munter/events{/privacy}","received_events_url":"https://api.github.com/users/Munter/received_events","type":"User","site_admin":false},"repo":{"id":28625684,"name":"unexpected","full_name":"Munter/unexpected","owner":{"login":"Munter","id":331790,"avatar_url":"https://avatars.githubusercontent.com/u/331790?v=3","gravatar_id":"","url":"https://api.github.com/users/Munter","html_url":"https://github.com/Munter","followers_url":"https://api.github.com/users/Munter/followers","following_url":"https://api.github.com/users/Munter/following{/other_user}","gists_url":"https://api.github.com/users/Munter/gists{/gist_id}","starred_url":"https://api.github.com/users/Munter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Munter/subscriptions","organizations_url":"https://api.github.com/users/Munter/orgs","repos_url":"https://api.github.com/users/Munter/repos","events_url":"https://api.github.com/users/Munter/events{/privacy}","received_events_url":"https://api.github.com/users/Munter/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Munter/unexpected","description":"Minimalistic BDD assertion toolkit","fork":true,"url":"https://api.github.com/repos/Munter/unexpected","forks_url":"https://api.github.com/repos/Munter/unexpected/forks","keys_url":"https://api.github.com/repos/Munter/unexpected/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Munter/unexpected/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Munter/unexpected/teams","hooks_url":"https://api.github.com/repos/Munter/unexpected/hooks","issue_events_url":"https://api.github.com/repos/Munter/unexpected/issues/events{/number}","events_url":"https://api.github.com/repos/Munter/unexpected/events","assignees_url":"https://api.github.com/repos/Munter/unexpected/assignees{/user}","branches_url":"https://api.github.com/repos/Munter/unexpected/branches{/branch}","tags_url":"https://api.github.com/repos/Munter/unexpected/tags","blobs_url":"https://api.github.com/repos/Munter/unexpected/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Munter/unexpected/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Munter/unexpected/git/refs{/sha}","trees_url":"https://api.github.com/repos/Munter/unexpected/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Munter/unexpected/statuses/{sha}","languages_url":"https://api.github.com/repos/Munter/unexpected/languages","stargazers_url":"https://api.github.com/repos/Munter/unexpected/stargazers","contributors_url":"https://api.github.com/repos/Munter/unexpected/contributors","subscribers_url":"https://api.github.com/repos/Munter/unexpected/subscribers","subscription_url":"https://api.github.com/repos/Munter/unexpected/subscription","commits_url":"https://api.github.com/repos/Munter/unexpected/commits{/sha}","git_commits_url":"https://api.github.com/repos/Munter/unexpected/git/commits{/sha}","comments_url":"https://api.github.com/repos/Munter/unexpected/comments{/number}","issue_comment_url":"https://api.github.com/repos/Munter/unexpected/issues/comments{/number}","contents_url":"https://api.github.com/repos/Munter/unexpected/contents/{+path}","compare_url":"https://api.github.com/repos/Munter/unexpected/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Munter/unexpected/merges","archive_url":"https://api.github.com/repos/Munter/unexpected/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Munter/unexpected/downloads","issues_url":"https://api.github.com/repos/Munter/unexpected/issues{/number}","pulls_url":"https://api.github.com/repos/Munter/unexpected/pulls{/number}","milestones_url":"https://api.github.com/repos/Munter/unexpected/milestones{/number}","notifications_url":"https://api.github.com/repos/Munter/unexpected/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Munter/unexpected/labels{/name}","releases_url":"https://api.github.com/repos/Munter/unexpected/releases{/id}","created_at":"2014-12-30T09:48:45Z","updated_at":"2014-12-30T09:48:46Z","pushed_at":"2015-07-02T21:45:09Z","git_url":"git://github.com/Munter/unexpected.git","ssh_url":"git@github.com:Munter/unexpected.git","clone_url":"https://github.com/Munter/unexpected.git","svn_url":"https://github.com/Munter/unexpected","homepage":null,"size":2125,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"unexpectedjs:master","ref":"master","sha":"54f0fb9683b11b355b11f7054c688303d55c7d33","user":{"login":"unexpectedjs","id":11270290,"avatar_url":"https://avatars.githubusercontent.com/u/11270290?v=3","gravatar_id":"","url":"https://api.github.com/users/unexpectedjs","html_url":"https://github.com/unexpectedjs","followers_url":"https://api.github.com/users/unexpectedjs/followers","following_url":"https://api.github.com/users/unexpectedjs/following{/other_user}","gists_url":"https://api.github.com/users/unexpectedjs/gists{/gist_id}","starred_url":"https://api.github.com/users/unexpectedjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/unexpectedjs/subscriptions","organizations_url":"https://api.github.com/users/unexpectedjs/orgs","repos_url":"https://api.github.com/users/unexpectedjs/repos","events_url":"https://api.github.com/users/unexpectedjs/events{/privacy}","received_events_url":"https://api.github.com/users/unexpectedjs/received_events","type":"Organization","site_admin":false},"repo":{"id":9507628,"name":"unexpected","full_name":"unexpectedjs/unexpected","owner":{"login":"unexpectedjs","id":11270290,"avatar_url":"https://avatars.githubusercontent.com/u/11270290?v=3","gravatar_id":"","url":"https://api.github.com/users/unexpectedjs","html_url":"https://github.com/unexpectedjs","followers_url":"https://api.github.com/users/unexpectedjs/followers","following_url":"https://api.github.com/users/unexpectedjs/following{/other_user}","gists_url":"https://api.github.com/users/unexpectedjs/gists{/gist_id}","starred_url":"https://api.github.com/users/unexpectedjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/unexpectedjs/subscriptions","organizations_url":"https://api.github.com/users/unexpectedjs/orgs","repos_url":"https://api.github.com/users/unexpectedjs/repos","events_url":"https://api.github.com/users/unexpectedjs/events{/privacy}","received_events_url":"https://api.github.com/users/unexpectedjs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/unexpectedjs/unexpected","description":"The extensible BDD assertion toolkit","fork":false,"url":"https://api.github.com/repos/unexpectedjs/unexpected","forks_url":"https://api.github.com/repos/unexpectedjs/unexpected/forks","keys_url":"https://api.github.com/repos/unexpectedjs/unexpected/keys{/key_id}","collaborators_url":"https://api.github.com/repos/unexpectedjs/unexpected/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/unexpectedjs/unexpected/teams","hooks_url":"https://api.github.com/repos/unexpectedjs/unexpected/hooks","issue_events_url":"https://api.github.com/repos/unexpectedjs/unexpected/issues/events{/number}","events_url":"https://api.github.com/repos/unexpectedjs/unexpected/events","assignees_url":"https://api.github.com/repos/unexpectedjs/unexpected/assignees{/user}","branches_url":"https://api.github.com/repos/unexpectedjs/unexpected/branches{/branch}","tags_url":"https://api.github.com/repos/unexpectedjs/unexpected/tags","blobs_url":"https://api.github.com/repos/unexpectedjs/unexpected/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/unexpectedjs/unexpected/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/unexpectedjs/unexpected/git/refs{/sha}","trees_url":"https://api.github.com/repos/unexpectedjs/unexpected/git/trees{/sha}","statuses_url":"https://api.github.com/repos/unexpectedjs/unexpected/statuses/{sha}","languages_url":"https://api.github.com/repos/unexpectedjs/unexpected/languages","stargazers_url":"https://api.github.com/repos/unexpectedjs/unexpected/stargazers","contributors_url":"https://api.github.com/repos/unexpectedjs/unexpected/contributors","subscribers_url":"https://api.github.com/repos/unexpectedjs/unexpected/subscribers","subscription_url":"https://api.github.com/repos/unexpectedjs/unexpected/subscription","commits_url":"https://api.github.com/repos/unexpectedjs/unexpected/commits{/sha}","git_commits_url":"https://api.github.com/repos/unexpectedjs/unexpected/git/commits{/sha}","comments_url":"https://api.github.com/repos/unexpectedjs/unexpected/comments{/number}","issue_comment_url":"https://api.github.com/repos/unexpectedjs/unexpected/issues/comments{/number}","contents_url":"https://api.github.com/repos/unexpectedjs/unexpected/contents/{+path}","compare_url":"https://api.github.com/repos/unexpectedjs/unexpected/compare/{base}...{head}","merges_url":"https://api.github.com/repos/unexpectedjs/unexpected/merges","archive_url":"https://api.github.com/repos/unexpectedjs/unexpected/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/unexpectedjs/unexpected/downloads","issues_url":"https://api.github.com/repos/unexpectedjs/unexpected/issues{/number}","pulls_url":"https://api.github.com/repos/unexpectedjs/unexpected/pulls{/number}","milestones_url":"https://api.github.com/repos/unexpectedjs/unexpected/milestones{/number}","notifications_url":"https://api.github.com/repos/unexpectedjs/unexpected/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/unexpectedjs/unexpected/labels{/name}","releases_url":"https://api.github.com/repos/unexpectedjs/unexpected/releases{/id}","created_at":"2013-04-17T21:08:28Z","updated_at":"2015-06-28T17:04:21Z","pushed_at":"2015-07-06T20:07:13Z","git_url":"git://github.com/unexpectedjs/unexpected.git","ssh_url":"git@github.com:unexpectedjs/unexpected.git","clone_url":"https://github.com/unexpectedjs/unexpected.git","svn_url":"https://github.com/unexpectedjs/unexpected","homepage":"http://unexpectedjs.github.io/","size":8442,"stargazers_count":58,"watchers_count":58,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":19,"forks":3,"open_issues":19,"watchers":58,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/unexpectedjs/unexpected/pulls/183"},"html":{"href":"https://github.com/unexpectedjs/unexpected/pull/183"},"issue":{"href":"https://api.github.com/repos/unexpectedjs/unexpected/issues/183"},"comments":{"href":"https://api.github.com/repos/unexpectedjs/unexpected/issues/183/comments"},"review_comments":{"href":"https://api.github.com/repos/unexpectedjs/unexpected/pulls/183/comments"},"review_comment":{"href":"https://api.github.com/repos/unexpectedjs/unexpected/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/unexpectedjs/unexpected/pulls/183/commits"},"statuses":{"href":"https://api.github.com/repos/unexpectedjs/unexpected/statuses/d1a0644c5f85d7b86b12952f100474ef4282207f"}}}}