html-proofer 2.5.1 → 2.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. checksums.yaml +4 -4
  2. data/bin/htmlproof +11 -1
  3. data/lib/html/proofer.rb +1 -0
  4. data/lib/html/proofer/check_runner.rb +1 -1
  5. data/lib/html/proofer/checkable.rb +2 -2
  6. data/lib/html/proofer/checks/links.rb +2 -0
  7. data/lib/html/proofer/url_validator.rb +14 -3
  8. data/lib/html/proofer/version.rb +1 -1
  9. metadata +4 -344
  10. data/.gitignore +0 -26
  11. data/.travis.yml +0 -14
  12. data/Gemfile +0 -3
  13. data/LICENSE.txt +0 -22
  14. data/README.md +0 -276
  15. data/Rakefile +0 -21
  16. data/html-proofer.gemspec +0 -32
  17. data/script/bootstrap +0 -5
  18. data/spec/html/proofer/checkable_spec.rb +0 -47
  19. data/spec/html/proofer/command_spec.rb +0 -88
  20. data/spec/html/proofer/favicon_spec.rb +0 -47
  21. data/spec/html/proofer/fixtures/favicon/favicon_absent.html +0 -4
  22. data/spec/html/proofer/fixtures/favicon/favicon_absent_apple.html +0 -7
  23. data/spec/html/proofer/fixtures/favicon/favicon_broken.html +0 -7
  24. data/spec/html/proofer/fixtures/favicon/favicon_broken_but_ignored.html +0 -7
  25. data/spec/html/proofer/fixtures/favicon/favicon_present.html +0 -7
  26. data/spec/html/proofer/fixtures/favicon/favicon_present_shortcut.html +0 -7
  27. data/spec/html/proofer/fixtures/html/div_inside_head.html +0 -6
  28. data/spec/html/proofer/fixtures/html/html5_tags.html +0 -9
  29. data/spec/html/proofer/fixtures/html/ignore_script_embeds.html +0 -3
  30. data/spec/html/proofer/fixtures/html/invalid_tag.html +0 -3
  31. data/spec/html/proofer/fixtures/html/missing_closing_quotes.html +0 -5
  32. data/spec/html/proofer/fixtures/html/opening_and_ending_tag_mismatch.html +0 -7
  33. data/spec/html/proofer/fixtures/html/svg_elements.html +0 -729
  34. data/spec/html/proofer/fixtures/html/unescaped_ampersand_in_attribute.html +0 -4
  35. data/spec/html/proofer/fixtures/html/unmatched_end_tag.html +0 -5
  36. data/spec/html/proofer/fixtures/images/emptyImageAltText.html +0 -10
  37. data/spec/html/proofer/fixtures/images/existingImageExternal.html +0 -9
  38. data/spec/html/proofer/fixtures/images/gpl.png +0 -0
  39. data/spec/html/proofer/fixtures/images/ignorableAltViaOptions.html +0 -13
  40. data/spec/html/proofer/fixtures/images/ignorableImages.html +0 -10
  41. data/spec/html/proofer/fixtures/images/ignoreAltButNotLink.html +0 -13
  42. data/spec/html/proofer/fixtures/images/image_missing_protocol_invalid.html +0 -9
  43. data/spec/html/proofer/fixtures/images/image_missing_protocol_valid.html +0 -9
  44. data/spec/html/proofer/fixtures/images/missingImageAlt.html +0 -9
  45. data/spec/html/proofer/fixtures/images/missingImageAltText.html +0 -9
  46. data/spec/html/proofer/fixtures/images/missingImageExternal.html +0 -9
  47. data/spec/html/proofer/fixtures/images/missingImageInternal.html +0 -9
  48. data/spec/html/proofer/fixtures/images/missingImageSrc.html +0 -9
  49. data/spec/html/proofer/fixtures/images/relativeToSelf.html +0 -2
  50. data/spec/html/proofer/fixtures/images/rootRelativeImages.html +0 -2
  51. data/spec/html/proofer/fixtures/images/srcSetCheck.html +0 -7
  52. data/spec/html/proofer/fixtures/images/srcSetIgnorable.html +0 -13
  53. data/spec/html/proofer/fixtures/images/srcSetMissingAlt.html +0 -7
  54. data/spec/html/proofer/fixtures/images/srcSetMissingImage.html +0 -7
  55. data/spec/html/proofer/fixtures/images/terribleImageName.html +0 -9
  56. data/spec/html/proofer/fixtures/images/workingDataURIImage.html +0 -3
  57. data/spec/html/proofer/fixtures/links/_site/folder.html/index.html +0 -1
  58. data/spec/html/proofer/fixtures/links/anchors_in_pre.html +0 -12
  59. data/spec/html/proofer/fixtures/links/attributeWithDash.html +0 -8
  60. data/spec/html/proofer/fixtures/links/blank_mailto_link.html +0 -9
  61. data/spec/html/proofer/fixtures/links/blank_tel_link.html +0 -9
  62. data/spec/html/proofer/fixtures/links/brokenHashExternal.html +0 -11
  63. data/spec/html/proofer/fixtures/links/brokenHashInternal.html +0 -14
  64. data/spec/html/proofer/fixtures/links/brokenHashOnTheWeb.html +0 -2
  65. data/spec/html/proofer/fixtures/links/brokenInternalLink.html +0 -0
  66. data/spec/html/proofer/fixtures/links/brokenLinkExternal.html +0 -11
  67. data/spec/html/proofer/fixtures/links/brokenLinkInternal.html +0 -10
  68. data/spec/html/proofer/fixtures/links/brokenLinkWithNumber.html +0 -8
  69. data/spec/html/proofer/fixtures/links/brokenUnixLinks.html +0 -5
  70. data/spec/html/proofer/fixtures/links/broken_hash_with_query.html +0 -9
  71. data/spec/html/proofer/fixtures/links/checkSSLLinks.html +0 -1
  72. data/spec/html/proofer/fixtures/links/check_just_once.html +0 -8
  73. data/spec/html/proofer/fixtures/links/ensure_typhoeus_options.html +0 -1
  74. data/spec/html/proofer/fixtures/links/erstiebegr%C3%BC%C3%9Fung.html +0 -0
  75. data/spec/html/proofer/fixtures/links/erstiebegr/303/274/303/237ung.html +0 -0
  76. data/spec/html/proofer/fixtures/links/escape_pipes.html +0 -9
  77. data/spec/html/proofer/fixtures/links/file.foo +0 -11
  78. data/spec/html/proofer/fixtures/links/folder-php/index.php +0 -2
  79. data/spec/html/proofer/fixtures/links/folder/anchorLink.html +0 -0
  80. data/spec/html/proofer/fixtures/links/folder/assets/barrel.png +0 -0
  81. data/spec/html/proofer/fixtures/links/folder/index.html +0 -0
  82. data/spec/html/proofer/fixtures/links/folder/multiples/catalog/file.html +0 -8
  83. data/spec/html/proofer/fixtures/links/folder/multiples/javadoc/file.html +0 -8
  84. data/spec/html/proofer/fixtures/links/folder/relativeImage.html +0 -2
  85. data/spec/html/proofer/fixtures/links/githubHash.html +0 -1
  86. data/spec/html/proofer/fixtures/links/gpl.png +0 -0
  87. data/spec/html/proofer/fixtures/links/hashReferringToSelf.html +0 -44
  88. data/spec/html/proofer/fixtures/links/head_link_href.html +0 -7
  89. data/spec/html/proofer/fixtures/links/head_link_href_absent.html +0 -7
  90. data/spec/html/proofer/fixtures/links/head_link_href_empty.html +0 -7
  91. data/spec/html/proofer/fixtures/links/ignorableLinks.html +0 -13
  92. data/spec/html/proofer/fixtures/links/ignorableLinksViaOptions.html +0 -13
  93. data/spec/html/proofer/fixtures/links/ignores_cases.html +0 -3
  94. data/spec/html/proofer/fixtures/links/invalid_mailto_link.html +0 -9
  95. data/spec/html/proofer/fixtures/links/javascript_link.html +0 -9
  96. data/spec/html/proofer/fixtures/links/linkToFolder.html +0 -9
  97. data/spec/html/proofer/fixtures/links/linkTranslatedViaHrefSwap.html +0 -9
  98. data/spec/html/proofer/fixtures/links/linkWithHttps.html +0 -9
  99. data/spec/html/proofer/fixtures/links/linkWithRedirect.html +0 -14
  100. data/spec/html/proofer/fixtures/links/link_directory_without_slash.html +0 -1
  101. data/spec/html/proofer/fixtures/links/link_missing_protocol_invalid.html +0 -9
  102. data/spec/html/proofer/fixtures/links/link_missing_protocol_valid.html +0 -9
  103. data/spec/html/proofer/fixtures/links/link_pointing_to_directory.html +0 -1
  104. data/spec/html/proofer/fixtures/links/links_in_pre.html +0 -13
  105. data/spec/html/proofer/fixtures/links/mailto_link.html +0 -9
  106. data/spec/html/proofer/fixtures/links/missingLinkHref.html +0 -9
  107. data/spec/html/proofer/fixtures/links/multipleProblems.html +0 -11
  108. data/spec/html/proofer/fixtures/links/nodupe.html +0 -1
  109. data/spec/html/proofer/fixtures/links/non_standard_characters.html +0 -10
  110. data/spec/html/proofer/fixtures/links/notarealhash.html +0 -0
  111. data/spec/html/proofer/fixtures/links/other_protocols.html +0 -4
  112. data/spec/html/proofer/fixtures/links/placeholder_with_empty_id.html +0 -1
  113. data/spec/html/proofer/fixtures/links/placeholder_with_id.html +0 -1
  114. data/spec/html/proofer/fixtures/links/placeholder_with_name.html +0 -1
  115. data/spec/html/proofer/fixtures/links/redirected_error.html +0 -1
  116. data/spec/html/proofer/fixtures/links/relativeLinks.html +0 -4
  117. data/spec/html/proofer/fixtures/links/rootLink/folder/index.html +0 -1
  118. data/spec/html/proofer/fixtures/links/rootLink/index.html +0 -1
  119. data/spec/html/proofer/fixtures/links/rootLink/rootLink.html +0 -9
  120. data/spec/html/proofer/fixtures/links/tel_link.html +0 -9
  121. data/spec/html/proofer/fixtures/links/urlencoded-href.html +0 -2
  122. data/spec/html/proofer/fixtures/links/utf8Link.html +0 -2
  123. data/spec/html/proofer/fixtures/resources/Screen Shot 2012-08-09 at 7.51.18 AM.png +0 -0
  124. data/spec/html/proofer/fixtures/resources/books/assets/getting-good-with-git.jpg +0 -0
  125. data/spec/html/proofer/fixtures/resources/books/assets/pro-git.jpg +0 -0
  126. data/spec/html/proofer/fixtures/resources/books/assets/version-control-with-git.jpg +0 -0
  127. data/spec/html/proofer/fixtures/resources/books/nestedRelativeImages.html +0 -5
  128. data/spec/html/proofer/fixtures/resources/gpl.png +0 -0
  129. data/spec/html/proofer/fixtures/scripts/ignorableLinksViaOptions.html +0 -4
  130. data/spec/html/proofer/fixtures/scripts/script.js +0 -1
  131. data/spec/html/proofer/fixtures/scripts/script_broken_external.html +0 -9
  132. data/spec/html/proofer/fixtures/scripts/script_content.html +0 -9
  133. data/spec/html/proofer/fixtures/scripts/script_content_absent.html +0 -9
  134. data/spec/html/proofer/fixtures/scripts/script_in_pre.html +0 -5
  135. data/spec/html/proofer/fixtures/scripts/script_missing_internal.html +0 -9
  136. data/spec/html/proofer/fixtures/scripts/script_valid_internal.html +0 -9
  137. data/spec/html/proofer/fixtures/sorting/issue/broken_image_one.html +0 -1
  138. data/spec/html/proofer/fixtures/sorting/issue/broken_image_two.html +0 -4
  139. data/spec/html/proofer/fixtures/sorting/path/multiple_issues.html +0 -11
  140. data/spec/html/proofer/fixtures/sorting/path/single_issue.html +0 -1
  141. data/spec/html/proofer/fixtures/sorting/status/a_404.html +0 -1
  142. data/spec/html/proofer/fixtures/sorting/status/broken_link.html +0 -3
  143. data/spec/html/proofer/fixtures/sorting/status/missing_redirect.html +0 -1
  144. data/spec/html/proofer/fixtures/utils/lang-jp.html +0 -1
  145. data/spec/html/proofer/fixtures/vcr_cassettes/images/existingImageExternal_html.yml +0 -62
  146. data/spec/html/proofer/fixtures/vcr_cassettes/images/ignoreAltButNotLink_html_alt_ignore_/_/_.yml +0 -45
  147. data/spec/html/proofer/fixtures/vcr_cassettes/images/image_missing_protocol_invalid_html.yml +0 -117
  148. data/spec/html/proofer/fixtures/vcr_cassettes/images/image_missing_protocol_valid_html.yml +0 -62
  149. data/spec/html/proofer/fixtures/vcr_cassettes/images/missingImageExternal_html.yml +0 -45
  150. data/spec/html/proofer/fixtures/vcr_cassettes/links/attributeWithDash_html.yml +0 -73
  151. data/spec/html/proofer/fixtures/vcr_cassettes/links/brokenHashOnTheWeb_html.yml +0 -56
  152. data/spec/html/proofer/fixtures/vcr_cassettes/links/brokenHashOnTheWeb_html_check_external_hash_true_.yml +0 -719
  153. data/spec/html/proofer/fixtures/vcr_cassettes/links/brokenHashOnTheWeb_html_only_4xx_true_.yml +0 -56
  154. data/spec/html/proofer/fixtures/vcr_cassettes/links/brokenLinkExternal_html.yml +0 -96
  155. data/spec/html/proofer/fixtures/vcr_cassettes/links/brokenUnixLinks_html.yml +0 -156
  156. data/spec/html/proofer/fixtures/vcr_cassettes/links/checkSSLLinks_html.yml +0 -50
  157. data/spec/html/proofer/fixtures/vcr_cassettes/links/check_just_once_html.yml +0 -87
  158. data/spec/html/proofer/fixtures/vcr_cassettes/links/ensure_typhoeus_options_html_typhoeus_ssl_verifypeer_false_.yml +0 -40
  159. data/spec/html/proofer/fixtures/vcr_cassettes/links/escape_pipes_html.yml +0 -52
  160. data/spec/html/proofer/fixtures/vcr_cassettes/links/file_foo_ext_foo_.yml +0 -96
  161. data/spec/html/proofer/fixtures/vcr_cassettes/links/githubHash_html.yml +0 -73
  162. data/spec/html/proofer/fixtures/vcr_cassettes/links/linkWithHttps_html.yml +0 -73
  163. data/spec/html/proofer/fixtures/vcr_cassettes/links/linkWithRedirect_html.yml +0 -236
  164. data/spec/html/proofer/fixtures/vcr_cassettes/links/linkWithRedirect_html_only_4xx_true_typhoeus_followlocation_false_.yml +0 -318
  165. data/spec/html/proofer/fixtures/vcr_cassettes/links/linkWithRedirect_html_typhoeus_followlocation_false_.yml +0 -318
  166. data/spec/html/proofer/fixtures/vcr_cassettes/links/link_missing_protocol_invalid_html.yml +0 -45
  167. data/spec/html/proofer/fixtures/vcr_cassettes/links/link_missing_protocol_valid_html.yml +0 -73
  168. data/spec/html/proofer/fixtures/vcr_cassettes/links/nodupe_html.yml +0 -182
  169. data/spec/html/proofer/fixtures/vcr_cassettes/links/non_standard_characters_html.yml +0 -113
  170. data/spec/html/proofer/fixtures/vcr_cassettes/links/redirected_error_html.yml +0 -1044
  171. data/spec/html/proofer/fixtures/vcr_cassettes/links/utf8Link_html.yml +0 -113
  172. data/spec/html/proofer/fixtures/vcr_cassettes/scripts/script_broken_external_html.yml +0 -45
  173. data/spec/html/proofer/fixtures/vcr_cassettes/sorting/status_typhoeus_followlocation_false_error_sort_status_.yml +0 -244
  174. data/spec/html/proofer/fixtures/vcr_cassettes/sorting/status_verbosity_info_typhoeus_followlocation_false_error_sort_status_.yml +0 -244
  175. data/spec/html/proofer/fixtures/vcr_cassettes/www_garbalarba_com_href_swap_/garbalarba/_github_.yml +0 -73
  176. data/spec/html/proofer/fixtures/vcr_cassettes/www_github_com_foofoofoo_biz.yml +0 -115
  177. data/spec/html/proofer/html_spec.rb +0 -64
  178. data/spec/html/proofer/images_spec.rb +0 -147
  179. data/spec/html/proofer/links_spec.rb +0 -376
  180. data/spec/html/proofer/scripts_spec.rb +0 -46
  181. data/spec/html/proofer/utils_spec.rb +0 -14
  182. data/spec/html/proofer_spec.rb +0 -122
  183. data/spec/spec_helper.rb +0 -75
@@ -1,73 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: head
5
- uri: www.github.com
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- User-Agent:
11
- - Mozilla/5.0 (compatible; HTML Proofer/2.3.0; +https://github.com/gjtorikian/html-proofer)
12
- response:
13
- status:
14
- code: 200
15
- message: OK
16
- headers:
17
- Server:
18
- - GitHub.com
19
- Date:
20
- - Mon, 06 Jul 2015 05:10:25 GMT
21
- Content-Type:
22
- - text/html; charset=utf-8
23
- Status:
24
- - 200 OK
25
- Content-Security-Policy:
26
- - 'default-src *; script-src assets-cdn.github.com collector-cdn.github.com;
27
- object-src assets-cdn.github.com; style-src ''self'' ''unsafe-inline'' ''unsafe-eval''
28
- assets-cdn.github.com; img-src ''self'' data: assets-cdn.github.com identicons.github.com
29
- www.google-analytics.com collector.githubapp.com *.githubusercontent.com *.gravatar.com
30
- *.wp.com; media-src ''none''; frame-src ''self'' render.githubusercontent.com
31
- gist.github.com www.youtube.com player.vimeo.com checkout.paypal.com; font-src
32
- assets-cdn.github.com; connect-src ''self'' live.github.com wss://live.github.com
33
- uploads.github.com status.github.com api.github.com www.google-analytics.com
34
- github-cloud.s3.amazonaws.com'
35
- Public-Key-Pins:
36
- - max-age=300; pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="JbQbUG5JMJUoI6brnx0x3vZF6jilxsapbXGVfjhN8Fg=";
37
- includeSubDomains
38
- Cache-Control:
39
- - no-cache
40
- Vary:
41
- - X-PJAX
42
- - Accept-Encoding
43
- X-UA-Compatible:
44
- - IE=Edge,chrome=1
45
- Set-Cookie:
46
- - logged_in=no; domain=.github.com; path=/; expires=Fri, 06 Jul 2035 05:10:25
47
- -0000; secure; HttpOnly
48
- - _gh_sess=eyJzZXNzaW9uX2lkIjoiNzA3ZmQzMmVhNGE1NDQ4YzUxOGFkMjZkMjk4YThiMjkiLCJfY3NyZl90b2tlbiI6IklTYjRZRUh5dWhra3M3SXRKU0RMVVNTTzYwOXc0MEhSQS85bnJmWCtwT2M9In0%3D--598600b6d119d1c5da32745e013cf915e81b53bf;
49
- path=/; secure; HttpOnly
50
- X-Request-Id:
51
- - 223cae55bc9682cb3b30c3a559c5d2aa
52
- X-Runtime:
53
- - '0.009497'
54
- X-GitHub-Request-Id:
55
- - 490F8465:506F:2609878:559A0DC0
56
- Strict-Transport-Security:
57
- - max-age=31536000; includeSubdomains; preload
58
- X-Content-Type-Options:
59
- - nosniff
60
- X-XSS-Protection:
61
- - 1; mode=block
62
- X-Frame-Options:
63
- - deny
64
- X-Served-By:
65
- - a0387c52951b3c2853740ef9cede1dec
66
- body:
67
- encoding: UTF-8
68
- string: ''
69
- http_version: '1.1'
70
- adapter_metadata:
71
- effective_url: https://github.com/
72
- recorded_at: Mon, 06 Jul 2015 05:10:25 GMT
73
- recorded_with: VCR 2.9.3
@@ -1,115 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: head
5
- uri: foofoofoo.biz
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- User-Agent:
11
- - Mozilla/5.0 (compatible; HTML Proofer/2.3.0; +https://github.com/gjtorikian/html-proofer)
12
- response:
13
- status:
14
- code: 0
15
- message:
16
- headers: {}
17
- body:
18
- encoding: UTF-8
19
- string: ''
20
- http_version:
21
- adapter_metadata:
22
- effective_url: HTTP://foofoofoo.biz/
23
- recorded_at: Mon, 06 Jul 2015 05:10:19 GMT
24
- - request:
25
- method: get
26
- uri: foofoofoo.biz
27
- body:
28
- encoding: US-ASCII
29
- string: ''
30
- headers:
31
- User-Agent:
32
- - Mozilla/5.0 (compatible; HTML Proofer/2.3.0; +https://github.com/gjtorikian/html-proofer)
33
- response:
34
- status:
35
- code: 0
36
- message:
37
- headers: {}
38
- body:
39
- encoding: UTF-8
40
- string: ''
41
- http_version:
42
- adapter_metadata:
43
- effective_url: HTTP://foofoofoo.biz/
44
- recorded_at: Mon, 06 Jul 2015 05:10:19 GMT
45
- - request:
46
- method: head
47
- uri: www.github.com
48
- body:
49
- encoding: US-ASCII
50
- string: ''
51
- headers:
52
- User-Agent:
53
- - Mozilla/5.0 (compatible; HTML Proofer/2.3.0; +https://github.com/gjtorikian/html-proofer)
54
- response:
55
- status:
56
- code: 200
57
- message: OK
58
- headers:
59
- Server:
60
- - GitHub.com
61
- Date:
62
- - Mon, 06 Jul 2015 05:10:21 GMT
63
- Content-Type:
64
- - text/html; charset=utf-8
65
- Status:
66
- - 200 OK
67
- Content-Security-Policy:
68
- - 'default-src *; script-src assets-cdn.github.com collector-cdn.github.com;
69
- object-src assets-cdn.github.com; style-src ''self'' ''unsafe-inline'' ''unsafe-eval''
70
- assets-cdn.github.com; img-src ''self'' data: assets-cdn.github.com identicons.github.com
71
- www.google-analytics.com collector.githubapp.com *.githubusercontent.com *.gravatar.com
72
- *.wp.com; media-src ''none''; frame-src ''self'' render.githubusercontent.com
73
- gist.github.com www.youtube.com player.vimeo.com checkout.paypal.com; font-src
74
- assets-cdn.github.com; connect-src ''self'' live.github.com wss://live.github.com
75
- uploads.github.com status.github.com api.github.com www.google-analytics.com
76
- github-cloud.s3.amazonaws.com'
77
- Public-Key-Pins:
78
- - max-age=300; pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="JbQbUG5JMJUoI6brnx0x3vZF6jilxsapbXGVfjhN8Fg=";
79
- includeSubDomains
80
- Cache-Control:
81
- - no-cache
82
- Vary:
83
- - X-PJAX
84
- - Accept-Encoding
85
- X-UA-Compatible:
86
- - IE=Edge,chrome=1
87
- Set-Cookie:
88
- - logged_in=no; domain=.github.com; path=/; expires=Fri, 06 Jul 2035 05:10:21
89
- -0000; secure; HttpOnly
90
- - _gh_sess=eyJzZXNzaW9uX2lkIjoiYjVmM2Q3ZjFhODQxMWIxNjdhODIyNWQ5ZGI1ZDNlMDkiLCJfY3NyZl90b2tlbiI6IlE5R1lsT3pFWW9Fb2VJWndZVGJUQ1ZodzJCeXZsclBzYmVEc1JvdVU1VE09In0%3D--afddd987025ba23ca6db5388811d74e15126663a;
91
- path=/; secure; HttpOnly
92
- X-Request-Id:
93
- - cfa6252fd906896bc99fa744471f06af
94
- X-Runtime:
95
- - '0.009622'
96
- X-GitHub-Request-Id:
97
- - 490F8465:506E:3EED418:559A0DBD
98
- Strict-Transport-Security:
99
- - max-age=31536000; includeSubdomains; preload
100
- X-Content-Type-Options:
101
- - nosniff
102
- X-XSS-Protection:
103
- - 1; mode=block
104
- X-Frame-Options:
105
- - deny
106
- X-Served-By:
107
- - a22dbcbd09a98eacdd14ac7804a635dd
108
- body:
109
- encoding: UTF-8
110
- string: ''
111
- http_version: '1.1'
112
- adapter_metadata:
113
- effective_url: https://github.com/
114
- recorded_at: Mon, 06 Jul 2015 05:10:21 GMT
115
- recorded_with: VCR 2.9.3
@@ -1,64 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'Html test' do
4
- it 'ignores an invalid tag by default' do
5
- html = "#{FIXTURES_DIR}/html/invalid_tag.html"
6
- proofer = run_proofer(html)
7
- expect(proofer.failed_tests).to eq []
8
- end
9
-
10
- it "doesn't fail for html5 tags" do
11
- html = "#{FIXTURES_DIR}/html/html5_tags.html"
12
- proofer = run_proofer(html, { :check_html => true })
13
- expect(proofer.failed_tests).to eq []
14
- end
15
-
16
- it "doesn't fail for svg elements" do
17
- html = "#{FIXTURES_DIR}/html/svg_elements.html"
18
- proofer = run_proofer(html, { :check_html => true })
19
- expect(proofer.failed_tests).to eq []
20
- end
21
-
22
- it 'fails for an invalid tag' do
23
- html = "#{FIXTURES_DIR}/html/invalid_tag.html"
24
- proofer = run_proofer(html, { :check_html => true })
25
- expect(proofer.failed_tests.first).to match(/Tag myfancytag invalid \(line 2\)/)
26
- end
27
-
28
- it 'fails for an unmatched end tag' do
29
- html = "#{FIXTURES_DIR}/html/unmatched_end_tag.html"
30
- proofer = run_proofer(html, { :check_html => true })
31
- expect(proofer.failed_tests.first).to match(/Unexpected end tag : div \(line 3\)/)
32
- end
33
-
34
- it 'fails for an unescaped ampersand in attribute' do
35
- html = "#{FIXTURES_DIR}/html/unescaped_ampersand_in_attribute.html"
36
- proofer = run_proofer(html, { :check_html => true })
37
- expect(proofer.failed_tests.first).to match(/htmlParseEntityRef: expecting ';' \(line 2\)/)
38
- end
39
-
40
- it 'fails for mismatch between opening and ending tag' do
41
- html = "#{FIXTURES_DIR}/html/opening_and_ending_tag_mismatch.html"
42
- proofer = run_proofer(html, { :check_html => true })
43
- expect(proofer.failed_tests.first).to match(/Opening and ending tag mismatch: p and strong/)
44
- end
45
-
46
- it 'fails for div inside head' do
47
- html = "#{FIXTURES_DIR}/html/div_inside_head.html"
48
- proofer = run_proofer(html, { :check_html => true })
49
- expect(proofer.failed_tests.first).to match(/Unexpected end tag : head \(line 5\)/)
50
- end
51
-
52
- it 'fails for missing closing quotation mark in href' do
53
- html = "#{FIXTURES_DIR}/html/missing_closing_quotes.html"
54
- proofer = run_proofer(html, { :check_html => true })
55
- expect(proofer.failed_tests.to_s).to match(/Couldn't find end of Start Tag a \(line 6\)/)
56
- end
57
-
58
- it 'ignores embeded scripts when asked' do
59
- opts = { :check_html => true, :validation => { :ignore_script_embeds => true } }
60
- ignorableScript = "#{FIXTURES_DIR}/html/ignore_script_embeds.html"
61
- proofer = run_proofer(ignorableScript, opts)
62
- expect(proofer.failed_tests).to eq []
63
- end
64
- end
@@ -1,147 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'Images test' do
4
- it 'passes for existing external images' do
5
- externalImageFilepath = "#{FIXTURES_DIR}/images/existingImageExternal.html"
6
- proofer = run_proofer(externalImageFilepath)
7
- expect(proofer.failed_tests).to eq []
8
- end
9
-
10
- it 'fails for image without alt attribute' do
11
- missingAltFilepath = "#{FIXTURES_DIR}/images/missingImageAlt.html"
12
- proofer = run_proofer(missingAltFilepath)
13
- expect(proofer.failed_tests.first).to match(/gpl.png does not have an alt attribute/)
14
- end
15
-
16
- it 'fails for image with an empty alt attribute' do
17
- missingAltFilepath = "#{FIXTURES_DIR}/images/missingImageAltText.html"
18
- proofer = run_proofer(missingAltFilepath)
19
- expect(proofer.failed_tests.first).to match(/gpl.png does not have an alt attribute/)
20
- end
21
-
22
- it 'fails for image with nothing but spaces in alt attribute' do
23
- emptyAltFilepath = "#{FIXTURES_DIR}/images/emptyImageAltText.html"
24
- proofer = run_proofer(emptyAltFilepath)
25
- expect(proofer.failed_tests.first).to match(/gpl.png does not have an alt attribute/)
26
- expect(proofer.failed_tests.length).to equal(3)
27
- end
28
-
29
- it 'passes when ignoring image with nothing but spaces in alt attribute' do
30
- emptyAltFilepath = "#{FIXTURES_DIR}/images/emptyImageAltText.html"
31
- proofer = run_proofer(emptyAltFilepath, {:alt_ignore => [/.+/]})
32
- expect(proofer.failed_tests).to eq []
33
- end
34
-
35
- it 'fails for missing external images' do
36
- externalImageFilepath = "#{FIXTURES_DIR}/images/missingImageExternal.html"
37
- proofer = run_proofer(externalImageFilepath)
38
- expect(proofer.failed_tests.first).to match(/failed: 0/)
39
- end
40
-
41
- it 'fails for missing internal images' do
42
- internalImageFilepath = "#{FIXTURES_DIR}/images/missingImageInternal.html"
43
- proofer = run_proofer(internalImageFilepath)
44
- expect(proofer.failed_tests.first).to match(/doesnotexist.png does not exist/)
45
- end
46
-
47
- it 'fails for image with no src' do
48
- imageSrcFilepath = "#{FIXTURES_DIR}/images/missingImageSrc.html"
49
- proofer = run_proofer(imageSrcFilepath)
50
- expect(proofer.failed_tests.first).to match(/image has no src or srcset attribute/)
51
- end
52
-
53
- it 'fails for image with default mac filename' do
54
- terribleImageName = "#{FIXTURES_DIR}/images/terribleImageName.html"
55
- proofer = run_proofer(terribleImageName)
56
- expect(proofer.failed_tests.first).to match(/image has a terrible filename/)
57
- end
58
-
59
- it 'ignores images marked as ignore data-proofer-ignore' do
60
- ignorableImages = "#{FIXTURES_DIR}/images/ignorableImages.html"
61
- proofer = run_proofer(ignorableImages)
62
- expect(proofer.failed_tests).to eq []
63
- end
64
-
65
- it 'properly checks relative images' do
66
- relativeImages = "#{FIXTURES_DIR}/images/rootRelativeImages.html"
67
- proofer = run_proofer(relativeImages)
68
- expect(proofer.failed_tests).to eq []
69
-
70
- relativeImages = "#{FIXTURES_DIR}/resources/books/nestedRelativeImages.html"
71
- proofer = run_proofer(relativeImages)
72
- expect(proofer.failed_tests).to eq []
73
- end
74
-
75
- it 'properly ignores data URI images' do
76
- dataURIImage = "#{FIXTURES_DIR}/images/workingDataURIImage.html"
77
- proofer = run_proofer(dataURIImage)
78
- expect(proofer.failed_tests).to eq []
79
- end
80
-
81
- it 'works for valid images missing the protocol' do
82
- missingProtocolLink = "#{FIXTURES_DIR}/images/image_missing_protocol_valid.html"
83
- proofer = run_proofer(missingProtocolLink)
84
- expect(proofer.failed_tests).to eq []
85
- end
86
-
87
- it 'fails for invalid images missing the protocol' do
88
- missingProtocolLink = "#{FIXTURES_DIR}/images/image_missing_protocol_invalid.html"
89
- proofer = run_proofer(missingProtocolLink)
90
- expect(proofer.failed_tests.first).to match(/failed: 404/)
91
- end
92
-
93
- it 'properly checks relative links' do
94
- relativeLinks = "#{FIXTURES_DIR}/images/relativeToSelf.html"
95
- proofer = run_proofer(relativeLinks)
96
- expect(proofer.failed_tests).to eq []
97
- end
98
-
99
- it 'properly ignores missing alt tags when asked' do
100
- ignorableLinks = "#{FIXTURES_DIR}/images/ignorableAltViaOptions.html"
101
- proofer = run_proofer(ignorableLinks, {:alt_ignore => [/wikimedia/, "gpl.png"]})
102
- expect(proofer.failed_tests).to eq []
103
- end
104
-
105
- it 'properly ignores missing alt tags, but not all URLs, when asked' do
106
- ignorableLinks = "#{FIXTURES_DIR}/images/ignoreAltButNotLink.html"
107
- proofer = run_proofer(ignorableLinks, {:alt_ignore => [/.*/]})
108
- expect(proofer.failed_tests.first).to match(/failed: 0/)
109
- expect(proofer.failed_tests.first).to_not match /does not have an alt attribute/
110
- end
111
-
112
- it 'properly ignores empty alt attribute when empty_alt_ignore set' do
113
- missingAltFilepath = "#{FIXTURES_DIR}/images/emptyImageAltText.html"
114
- proofer = run_proofer(missingAltFilepath, {:empty_alt_ignore => true})
115
- expect(proofer.failed_tests).to eq []
116
- end
117
-
118
- it 'properly ignores empty alt attributes, but not missing alt attributes, when empty_alt_ignore set' do
119
- missingAltFilepath = "#{FIXTURES_DIR}/images/missingImageAlt.html"
120
- proofer = run_proofer(missingAltFilepath, {:empty_alt_ignore => true})
121
- expect(proofer.failed_tests.first).to match(/gpl.png does not have an alt attribute/)
122
- end
123
-
124
- it 'works for images with a srcset' do
125
- srcSetCheck = "#{FIXTURES_DIR}/images/srcSetCheck.html"
126
- proofer = run_proofer(srcSetCheck)
127
- expect(proofer.failed_tests).to eq []
128
- end
129
-
130
- it 'fails for images with a srcset but missing alt' do
131
- srcSetMissingAlt = "#{FIXTURES_DIR}/images/srcSetMissingAlt.html"
132
- proofer = run_proofer(srcSetMissingAlt)
133
- expect(proofer.failed_tests.first).to match(/image gpl.png does not have an alt attribute/)
134
- end
135
-
136
- it 'fails for images with an alt but missing src or srcset' do
137
- srcSetMissingAlt = "#{FIXTURES_DIR}/images/srcSetMissingImage.html"
138
- proofer = run_proofer(srcSetMissingAlt)
139
- expect(proofer.failed_tests.first).to match(/internal image notreal.png does not exist/)
140
- end
141
-
142
- it 'properly ignores missing alt tags when asked for srcset' do
143
- ignorableLinks = "#{FIXTURES_DIR}/images/srcSetIgnorable.html"
144
- proofer = run_proofer(ignorableLinks, {:alt_ignore => [/wikimedia/, "gpl.png"]})
145
- expect(proofer.failed_tests).to eq []
146
- end
147
- end
@@ -1,376 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'Links test' do
4
-
5
- it 'fails for broken internal hash (even if the file exists)' do
6
- brokenHashExternalFilepath = "#{FIXTURES_DIR}/links/brokenHashExternal.html"
7
- proofer = run_proofer(brokenHashExternalFilepath)
8
- expect(proofer.failed_tests.last).to match(%r{linking to ../images/missingImageAlt.html#asdfasfdkafl, but asdfasfdkafl does not exist})
9
- end
10
-
11
- it 'fails for broken hashes on the web when asked (even if the file exists)' do
12
- brokenHashOnTheWeb = "#{FIXTURES_DIR}/links/brokenHashOnTheWeb.html"
13
- proofer = run_proofer(brokenHashOnTheWeb, { :check_external_hash => true} )
14
- expect(proofer.failed_tests.first).to match(/but the hash 'no' does not/)
15
- end
16
-
17
- it 'passes for broken hashes on the web when ignored (even if the file exists)' do
18
- brokenHashOnTheWeb = "#{FIXTURES_DIR}/links/brokenHashOnTheWeb.html"
19
- proofer = run_proofer(brokenHashOnTheWeb)
20
- expect(proofer.failed_tests).to eq []
21
- end
22
-
23
- it 'passes for GitHub hashes on the web when asked' do
24
- githubHash = "#{FIXTURES_DIR}/links/githubHash.html"
25
- proofer = run_proofer(githubHash)
26
- expect(proofer.failed_tests).to eq []
27
- end
28
-
29
- it 'passes for broken hashes on the web (when we look only for 4xx)' do
30
- options = { :only_4xx => true }
31
- brokenHashOnTheWeb = "#{FIXTURES_DIR}/links/brokenHashOnTheWeb.html"
32
- proofer = run_proofer(brokenHashOnTheWeb, options)
33
- expect(proofer.failed_tests).to eq []
34
- end
35
-
36
- it 'fails for broken internal hash' do
37
- brokenHashInternalFilepath = "#{FIXTURES_DIR}/links/brokenHashInternal.html"
38
- proofer = run_proofer(brokenHashInternalFilepath)
39
- expect(proofer.failed_tests.first).to match(/linking to internal hash #noHash that does not exist/)
40
- end
41
-
42
- it 'fails for broken external links' do
43
- brokenLinkExternalFilepath = "#{FIXTURES_DIR}/links/brokenLinkExternal.html"
44
- proofer = run_proofer(brokenLinkExternalFilepath)
45
- expect(proofer.failed_tests.first).to match(/failed: 0/)
46
- end
47
-
48
- it 'passes for different filename without option' do
49
- brokenLinkExternalFilepath = "#{FIXTURES_DIR}/links/file.foo"
50
- proofer = run_proofer(brokenLinkExternalFilepath)
51
- expect(proofer.failed_tests).to eq []
52
- end
53
-
54
- it 'fails for different filenames' do
55
- options = { :ext => '.foo' }
56
- brokenLinkExternalFilepath = "#{FIXTURES_DIR}/links/file.foo"
57
- proofer = run_proofer(brokenLinkExternalFilepath, options)
58
- expect(proofer.failed_tests.first).to match(/failed: 0/)
59
- end
60
-
61
- it 'fails for broken internal links' do
62
- brokenLinkInternalFilepath = "#{FIXTURES_DIR}/links/brokenLinkInternal.html"
63
- proofer = run_proofer(brokenLinkInternalFilepath)
64
- expect(proofer.failed_tests.first).to match(/internally linking to .\/notreal.html, which does not exist/)
65
- end
66
-
67
- it 'fails for link with no href' do
68
- missingLinkHrefFilepath = "#{FIXTURES_DIR}/links/missingLinkHref.html"
69
- proofer = run_proofer(missingLinkHrefFilepath)
70
- expect(proofer.failed_tests.first).to match(/anchor has no href attribute/)
71
- end
72
-
73
- it 'should follow redirects' do
74
- linkWithRedirectFilepath = "#{FIXTURES_DIR}/links/linkWithRedirect.html"
75
- proofer = run_proofer(linkWithRedirectFilepath)
76
- expect(proofer.failed_tests).to eq []
77
- end
78
-
79
- it 'fails on redirects if not following' do
80
- linkWithRedirectFilepath = "#{FIXTURES_DIR}/links/linkWithRedirect.html"
81
- proofer = run_proofer(linkWithRedirectFilepath, :typhoeus => { :followlocation => false })
82
- expect(proofer.failed_tests.first).to match(/failed: 301/)
83
- end
84
-
85
- it "does not fail on redirects we're not following" do
86
- # this test should emit a 301--see above--but we're intentionally supressing it
87
- linkWithRedirectFilepath = "#{FIXTURES_DIR}/links/linkWithRedirect.html"
88
- proofer = run_proofer(linkWithRedirectFilepath, { :only_4xx => true, :typhoeus => { :followlocation => false } })
89
- expect(proofer.failed_tests).to eq []
90
- end
91
-
92
- it 'should understand https' do
93
- linkWithHttpsFilepath = "#{FIXTURES_DIR}/links/linkWithHttps.html"
94
- proofer = run_proofer(linkWithHttpsFilepath)
95
- expect(proofer.failed_tests).to eq []
96
- end
97
-
98
- it 'fails for broken hash links with status code numbers' do
99
- brokenLinkWithNumberFilepath = "#{FIXTURES_DIR}/links/brokenLinkWithNumber.html"
100
- proofer = run_proofer(brokenLinkWithNumberFilepath)
101
- expect(proofer.failed_tests.first).to match(/linking to internal hash #25-method-not-allowed that does not exist/)
102
- end
103
-
104
- it 'properly resolves implicit /index.html in link paths' do
105
- linkToFolder = "#{FIXTURES_DIR}/links/linkToFolder.html"
106
- proofer = run_proofer(linkToFolder)
107
- expect(proofer.failed_tests).to eq []
108
- end
109
-
110
- it 'properly checks links to root' do
111
- rootLink = "#{FIXTURES_DIR}/links/rootLink/rootLink.html"
112
- proofer = run_proofer(rootLink)
113
- expect(proofer.failed_tests).to eq []
114
- end
115
-
116
- it 'properly checks relative links' do
117
- relativeLinks = "#{FIXTURES_DIR}/links/relativeLinks.html"
118
- proofer = run_proofer(relativeLinks)
119
- expect(proofer.failed_tests).to eq []
120
- end
121
-
122
- it 'properly checks ssl links' do
123
- checkSSLLinks = "#{FIXTURES_DIR}/links/checkSSLLinks.html"
124
- proofer = run_proofer(checkSSLLinks)
125
- expect(proofer.failed_tests).to eq []
126
- end
127
-
128
- it 'ignores links marked as ignore data-proofer-ignore' do
129
- ignorableLinks = "#{FIXTURES_DIR}/links/ignorableLinks.html"
130
- proofer = run_proofer(ignorableLinks)
131
- expect(proofer.failed_tests).to eq []
132
- end
133
-
134
- it 'ignores links via href_ignore' do
135
- ignorableLinks = "#{FIXTURES_DIR}/links/ignorableLinksViaOptions.html"
136
- proofer = run_proofer(ignorableLinks, { :href_ignore => [%r{^http://}, /sdadsad/, '../whaadadt.html'] })
137
- expect(proofer.failed_tests).to eq []
138
- end
139
-
140
- it 'translates links via href_swap' do
141
- translatedLink = "#{FIXTURES_DIR}/links/linkTranslatedViaHrefSwap.html"
142
- proofer = run_proofer(translatedLink, { :href_swap => { %r{\A/articles/([\w-]+)} => "\\1.html" } })
143
- expect(proofer.failed_tests).to eq []
144
- end
145
-
146
- it 'translates links via href_swap for list of links' do
147
- proofer = run_proofer(['www.garbalarba.com'], { :href_swap => { /garbalarba/ => 'github' } })
148
- expect(proofer.failed_tests).to eq []
149
- end
150
-
151
- it 'finds a mix of broken and unbroken links' do
152
- multipleProblems = "#{FIXTURES_DIR}/links/multipleProblems.html"
153
- proofer = run_proofer(multipleProblems)
154
- expect(proofer.failed_tests.first).to match(/linking to internal hash #anadaasdadsadschor that does not exist/)
155
- end
156
-
157
- it 'ignores valid mailto links' do
158
- ignorableLinks = "#{FIXTURES_DIR}/links/mailto_link.html"
159
- proofer = run_proofer(ignorableLinks)
160
- expect(proofer.failed_tests).to eq []
161
- end
162
-
163
- it 'fails for blank mailto links' do
164
- blankMailToLink = "#{FIXTURES_DIR}/links/blank_mailto_link.html"
165
- proofer = run_proofer(blankMailToLink)
166
- expect(proofer.failed_tests.first).to match(/mailto: contains no email address/)
167
- end
168
-
169
- it 'fails for invalid mailto links' do
170
- invalidMailToLink = "#{FIXTURES_DIR}/links/invalid_mailto_link.html"
171
- proofer = run_proofer(invalidMailToLink)
172
- expect(proofer.failed_tests.first).to match(/mailto:octocat contains an invalid email address/)
173
- end
174
-
175
- it 'ignores valid tel links' do
176
- ignorableLinks = "#{FIXTURES_DIR}/links/tel_link.html"
177
- proofer = run_proofer(ignorableLinks)
178
- expect(proofer.failed_tests).to eq []
179
- end
180
-
181
- it 'fails for blank tel links' do
182
- blankTelLink = "#{FIXTURES_DIR}/links/blank_tel_link.html"
183
- proofer = run_proofer(blankTelLink)
184
- expect(proofer.failed_tests.first).to match(/tel: contains no phone number/)
185
- end
186
-
187
- it 'ignores javascript links' do
188
- javascriptLink = "#{FIXTURES_DIR}/links/javascript_link.html"
189
- proofer = run_proofer(javascriptLink)
190
- expect(proofer.failed_tests).to eq []
191
- end
192
-
193
- it 'works for valid links missing the protocol' do
194
- missingProtocolLink = "#{FIXTURES_DIR}/links/link_missing_protocol_valid.html"
195
- proofer = run_proofer(missingProtocolLink)
196
- expect(proofer.failed_tests).to eq []
197
- end
198
-
199
- it 'fails for invalid links missing the protocol' do
200
- missingProtocolLink = "#{FIXTURES_DIR}/links/link_missing_protocol_invalid.html"
201
- proofer = run_proofer(missingProtocolLink)
202
- expect(proofer.failed_tests.first).to match(/failed: 0/)
203
- end
204
-
205
- it 'works for valid href within link elements' do
206
- head_link = "#{FIXTURES_DIR}/links/head_link_href.html"
207
- proofer = run_proofer(head_link)
208
- expect(proofer.failed_tests).to eq []
209
- end
210
-
211
- it 'fails for empty href within link elements' do
212
- head_link = "#{FIXTURES_DIR}/links/head_link_href_empty.html"
213
- proofer = run_proofer(head_link)
214
- expect(proofer.failed_tests.first).to match(/anchor has no href attribute/)
215
- end
216
-
217
- it 'fails for absent href within link elements' do
218
- head_link = "#{FIXTURES_DIR}/links/head_link_href_absent.html"
219
- proofer = run_proofer(head_link)
220
- expect(proofer.failed_tests.first).to match(/anchor has no href attribute/)
221
- end
222
-
223
- it 'fails for internal linking to a directory without trailing slash' do
224
- options = { :typhoeus => { :followlocation => false } }
225
- internal = "#{FIXTURES_DIR}/links/link_directory_without_slash.html"
226
- proofer = run_proofer(internal, options)
227
- expect(proofer.failed_tests.first).to match(/without trailing slash/)
228
- end
229
-
230
- it 'ignores external links when asked' do
231
- options = { :disable_external => true }
232
- external = "#{FIXTURES_DIR}/links/brokenLinkExternal.html"
233
- proofer = run_proofer(external, options)
234
- expect(proofer.failed_tests).to eq []
235
- end
236
-
237
- it 'works for array of links' do
238
- proofer = run_proofer(['www.github.com', 'foofoofoo.biz'])
239
- expect(proofer.failed_tests.first).to match(/failed: 0/)
240
- end
241
-
242
- it 'works for broken anchors within pre' do
243
- anchor_pre = "#{FIXTURES_DIR}/links/anchors_in_pre.html"
244
- proofer = run_proofer(anchor_pre)
245
- expect(proofer.failed_tests).to eq []
246
- end
247
-
248
- it 'works for broken link within pre' do
249
- link_pre = "#{FIXTURES_DIR}/links/links_in_pre.html"
250
- proofer = run_proofer(link_pre)
251
- expect(proofer.failed_tests).to eq []
252
- end
253
-
254
- it 'works for pipes in the URL' do
255
- escape_pipes = "#{FIXTURES_DIR}/links/escape_pipes.html"
256
- proofer = run_proofer(escape_pipes)
257
- expect(proofer.failed_tests).to eq []
258
- end
259
-
260
- it 'fails for broken hash with query' do
261
- broken_hash = "#{FIXTURES_DIR}/links/broken_hash_with_query.html"
262
- proofer = run_proofer(broken_hash)
263
- expect(proofer.failed_tests.first).to match(/linking to internal hash #example that does not exist/)
264
- end
265
-
266
- it 'works for directory index file' do
267
- options = { :directory_index_file => "index.php" }
268
- link_pointing_to_directory = "#{FIXTURES_DIR}/links/link_pointing_to_directory.html"
269
- proofer = run_proofer(link_pointing_to_directory, options)
270
- expect(proofer.failed_tests).to eq []
271
- end
272
-
273
- it "fails if directory index file doesn't exist" do
274
- options = { :directory_index_file => "README.md" }
275
- link_pointing_to_directory = "#{FIXTURES_DIR}/links/link_pointing_to_directory.html"
276
- proofer = run_proofer(link_pointing_to_directory, options)
277
- expect(proofer.failed_tests.first).to match "internally linking to folder-php/, which does not exist"
278
- end
279
-
280
- it 'ensures Typhoeus options are passed' do
281
- options = { :typhoeus => { :ssl_verifypeer => false } }
282
- typhoeus_options_link = "#{FIXTURES_DIR}/links/ensure_typhoeus_options.html"
283
- proofer = run_proofer(typhoeus_options_link, options)
284
- expect(proofer.failed_tests).to eq []
285
- end
286
-
287
- it 'works if subdirectory ends with .html' do
288
- with_subdirectory_html = "#{FIXTURES_DIR}/links/_site"
289
- proofer = run_proofer(with_subdirectory_html)
290
- expect(proofer.failed_tests).to eq []
291
- end
292
-
293
- it 'works for hash referring to itself' do
294
- hashReferringToSelf = "#{FIXTURES_DIR}/links/hashReferringToSelf.html"
295
- proofer = run_proofer(hashReferringToSelf)
296
- expect(proofer.failed_tests).to eq []
297
- end
298
-
299
- it 'ignores placeholder with name' do
300
- placeholder_with_name = "#{FIXTURES_DIR}/links/placeholder_with_name.html"
301
- proofer = run_proofer(placeholder_with_name)
302
- expect(proofer.failed_tests).to eq []
303
- end
304
-
305
- it 'ignores placeholder with id' do
306
- placeholder_with_id = "#{FIXTURES_DIR}/links/placeholder_with_id.html"
307
- proofer = run_proofer(placeholder_with_id)
308
- expect(proofer.failed_tests).to eq []
309
- end
310
-
311
- it 'fails for placeholder with empty id' do
312
- empty_id = "#{FIXTURES_DIR}/links/placeholder_with_empty_id.html"
313
- proofer = run_proofer(empty_id)
314
- expect(proofer.failed_tests.first).to match(/anchor has no href attribute/)
315
- end
316
-
317
- it 'ignores non-http(s) protocols' do
318
- other_protocols = "#{FIXTURES_DIR}/links/other_protocols.html"
319
- proofer = run_proofer(other_protocols)
320
- expect(proofer.failed_tests).to eq []
321
- end
322
-
323
- it 'passes non-standard characters' do
324
- fixture = "#{FIXTURES_DIR}/links/non_standard_characters.html"
325
- proofer = run_proofer(fixture)
326
- expect(proofer.failed_tests).to eq []
327
- end
328
-
329
- it 'does not dupe errors' do
330
- fixture = "#{FIXTURES_DIR}/links/nodupe.html"
331
- proofer = run_proofer(fixture)
332
- expect(proofer.failed_tests.length).to eq 1
333
- end
334
-
335
- it 'passes for broken *nix links' do
336
- fixture = "#{FIXTURES_DIR}/links/brokenUnixLinks.html"
337
- proofer = run_proofer(fixture)
338
- expect(proofer.failed_tests).to eq []
339
- end
340
-
341
- it 'passes for external UTF-8 links' do
342
- fixture = "#{FIXTURES_DIR}/links/utf8Link.html"
343
- proofer = run_proofer(fixture)
344
- expect(proofer.failed_tests).to eq []
345
- end
346
-
347
- it 'passes for urlencoded href' do
348
- fixture = "#{FIXTURES_DIR}/links/urlencoded-href.html"
349
- proofer = run_proofer(fixture)
350
- expect(proofer.failed_tests).to eq []
351
- end
352
-
353
- it 'reports failures for the original link, not the redirection' do
354
- fixture = "#{FIXTURES_DIR}/links/redirected_error.html"
355
- proofer = run_proofer(fixture)
356
- expect(proofer.failed_tests.first).to match(/failed: 404/)
357
- end
358
-
359
- it 'does not complain for files with attributes containing dashes' do
360
- fixture = "#{FIXTURES_DIR}/links/attributeWithDash.html"
361
- proofer = run_proofer(fixture)
362
- expect(proofer.failed_tests).to eq []
363
- end
364
-
365
- it 'does not complain for internal links with mismatched cases' do
366
- fixture = "#{FIXTURES_DIR}/links/ignores_cases.html"
367
- proofer = run_proofer(fixture)
368
- expect(proofer.failed_tests).to eq []
369
- end
370
-
371
- it 'does not check links with parameters multiple times' do
372
- fixture = "#{FIXTURES_DIR}/links/check_just_once.html"
373
- proofer = run_proofer(fixture)
374
- expect(proofer.iterable_external_urls.length).to eq 2
375
- end
376
- end