Last active
June 18, 2020 01:27
-
-
Save holman/4bd27ba3950ee2ee79c3 to your computer and use it in GitHub Desktop.
Revisions
-
holman revised this gist
Jan 17, 2015 . No changes.There are no files selected for viewing
-
holman created this gist
Jan 17, 2015 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,14 @@ require_relative "test_helper" require "open-uri" require "net/http" class EmojiTest < Blog::Test def test_no_emoji posts.each do |post| content = File.read(post) refute_match /:[a-zA-Z0-9_]+:/, content, "You have emoji in your post, which we try to avoid" end end end This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,65 @@ require_relative "test_helper" require "open-uri" require "net/http" class ImagesTest < Blog::Test def setup @images = posts.map do |post| content = File.read(post) md = Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, tables: true) html = md.render(content) doc = Nokogiri::HTML(html) doc.css("img").map do |img| url = img.attribute("src").value uri = URI(url) response = Net::HTTP.get_response(uri) { :url => url, :response => response, :element => img } end end.flatten end def test_images_arent_too_big large_images = @images.select { |img| img[:response].body.size.to_i > 1_000_000 } error_message = large_images.map do |img| " #{img[:response].body.size} bytes: #{img[:url]}" end.join("\n") assert large_images.empty?, "The following images are over a megabyte in size... consider shrinking them:\n\n#{error_message}" end def test_images_have_alt_tags @images.select do |img| alt = img[:element].attribute("alt").value no_alt_tags = (alt.strip == "" || (alt =~ /^screen shot /)) refute no_alt_tags, "Images need an alt tag for accessibility. Your image should have a short, one or two word description of the image in the ![] parts of your post." end end def test_images_are_dotcom_hosted @images.select do |img| url = img[:url] assert_match /^https:\/\/cloud\.githubusercontent\.com/, url, "Images should be hosted on GitHub. Try dragging an image into an issue comment, uploading it, and using that URL." end end def test_image_proportions @images.select do |img| width, height = FastImage.size(img[:url]) assert width >= 1354, "Screenshots should be retina-quality — meaning at least 1354 pixels across — so they look good on higher-resolution screens. If you're taking a shot of a small interface element, consider zooming the page with cmd+plus and taking a screenshot that way; the blog will scale it down for you." assert (width/height.to_f) > 1.2, "Screenshots should be roughly panoramic (more than a 1.2 width:height ratio). Try taking a wider, shorter screenshot so it reduces the amount of scoll necessary to view the content of the blog post." end end end This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,71 @@ require "fileutils" require "rubygems" require "bundler/setup" require "minitest/autorun" require "fastimage" require "nokogiri" require "redcarpet" cat = <<-'cat' .--. `. \ \ \ . \ : . | . | : | | ..._ ___ | | `."".`''''""--..___ | | ,-\ \ ""-...__ _____________/ | / ` " ' `"""""""" . \ L (> \ / \ \_ ___..---. L `--' '. \ . \_ _/`. `.._ .' -. `. / __.-Y /''''''-...___,...--------.._ | / _." | / ' . \ '---..._ | / / / / _,. ' ,/ | | \_,' _.' / /'' _,-' _| | ' / `-----'' / | `...-' !_____) cat puts cat puts " Hello you lovely GitHub blog author person human! This is test output from your blog post you just wrote. Unlike most tests in life (and code!), it's *totally cool* to fail these tests. They're just here to catch anything you might have missed while writing your draft. Consider them suggestions rather than things you *need* to do before publishing your post. Happy shipping! " module Blog class Test < MiniTest::Test # All the posts we're interested in checking. This means we're looking at # files that have changed on this particular branch we're on. # # Returns an Array of String filenames. def posts diffable_files = `git diff --name-only --diff-filter=ACMRTUXB origin/master... | grep .md`.split("\n") posts = diffable_files.select do |filename| File.ctime(filename) > Time.new(2014,9,3) end posts end end end This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,15 @@ require_relative "test_helper" class TodayTest < Blog::Test def test_doesnt_start_with_today posts.each do |post| content = File.read(post) body_text = content.split("\n").delete_if do |line| line[0] == "#" || line.strip == "" end refute body_text.first =~ /Today/, "Posts usually shouldn't start with \"Today\"" end end end