Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

initial commit

  • Loading branch information...
commit 63f2fc8b86e2961de58a8657d862771d9c74a3c3 0 parents
Aaron Patterson authored
8 .autotest
@@ -0,0 +1,8 @@
+# -*- ruby -*-
+
+require 'autotest/restart'
+
+Autotest.add_hook :initialize do |at|
+ at.testlib = 'minitest/autorun'
+ at.find_directories = ARGV unless ARGV.empty?
+end
6 CHANGELOG.rdoc
@@ -0,0 +1,6 @@
+=== 1.0.0 / 2011-06-02
+
+* 1 major enhancement
+
+ * Birthday!
+
7 Manifest.txt
@@ -0,0 +1,7 @@
+History.txt
+Manifest.txt
+README.txt
+Rakefile
+bin/purdytest
+lib/purdytest.rb
+test/test_purdytest.rb
104 README.rdoc
@@ -0,0 +1,104 @@
+= purdytest
+
+* http://github.com/tenderlove/purdytest
+
+== DESCRIPTION:
+
+Purdytest extends minitest with pretty colors. Simply require minitest, then
+require purdytest, and you have colorific output on your terminal!
+
+For colorized diff output, make sure you have `colordiff` installed.
+
+== FEATURES/PROBLEMS:
+
+* It works! (I think)
+* If you want colored diffs, make sure you have
+ [colordiff](http://colordiff.sourceforge.net/) installed. You can usually
+ install colordiff via `brew install colordiff` or `port install colordiff`.
+
+* [HERE IS A VIDEO]
+
+== SYNOPSIS:
+
+ require 'minitest/autorun' # from minitest
+ require 'purdytest'
+
+ describe 'my amazing test' do
+ # generate many green dots!
+ 50.times do |i|
+ it "must #{i}" do
+ 100.must_equal 100
+ end
+ end
+
+ # generate some red Fs!
+ 2.times do |i|
+ it "compares #{i} to #{i + 1}" do
+ i.must_equal i + 1
+ end
+ end
+
+ it 'does stuff and shows a diff' do
+ [1,2,3,4,5].must_equal %w{ a quick brown fox jumped over something! }
+ end
+
+ it 'does stuff and shows yellow' do
+ skip "don't care!"
+ end
+ end
+
+Output color can be somewhat configured via +Purdytest.configure+:
+
+ require 'minitest/autorun' # from minitest
+ require 'purdytest'
+
+ Purdytest.configure do |io|
+ io.pass = :blue
+ end
+
+ describe 'my amazing test' do
+ # generate many green dots!
+ 50.times do |i|
+ it "must #{i}" do
+ 100.must_equal 100
+ end
+ end
+ end
+
+For a list of possible configuration options, just check out the purdytest
+source code.
+
+== REQUIREMENTS:
+
+* minitest
+* [colordiff](http://colordiff.sourceforge.net/)
+
+== INSTALL:
+
+* gem install purdytest
+* brew install colordiff
+
+== LICENSE:
+
+(The MIT License)
+
+Copyright (c) 2011 Aaron Patterson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 Rakefile
@@ -0,0 +1,20 @@
+# -*- ruby -*-
+
+require 'rubygems'
+require 'hoe'
+
+Hoe.plugins.delete :rubyforge
+Hoe.plugin :minitest
+Hoe.plugin :gemspec # `gem install hoe-gemspec`
+Hoe.plugin :git # `gem install hoe-git`
+
+Hoe.spec 'purdytest' do
+ developer('Aaron Patterson', 'aaron@tenderlovemaking.com')
+ self.readme_file = 'README.rdoc'
+ self.history_file = 'CHANGELOG.rdoc'
+ self.extra_rdoc_files = FileList['*.rdoc']
+ self.extra_deps << ['minitest', '~> 2.2']
+ self.testlib = :minitest
+end
+
+# vim: syntax=ruby
57 lib/purdytest.rb
@@ -0,0 +1,57 @@
+module Purdytest
+ VERSION = '1.0.0'
+
+ class IO
+ attr_reader :io
+ attr_accessor :pass, :fail, :skip, :error
+
+ # Colors stolen from /System/Library/Perl/5.10.0/Term/ANSIColor.pm
+ COLORS = {
+ :black => 30, :on_black => 40,
+ :red => 31, :on_red => 41,
+ :green => 32, :on_green => 42,
+ :yellow => 33, :on_yellow => 43,
+ :blue => 34, :on_blue => 44,
+ :magenta => 35, :on_magenta => 45,
+ :cyan => 36, :on_cyan => 46,
+ :white => 37, :on_white => 47
+ }
+
+ def initialize io
+ @io = io
+ @pass = :green
+ @fail = :red
+ @error = :red
+ @skip = :yellow
+ end
+
+ def print o
+ case o
+ when '.' then io.print "\e[#{COLORS[pass]}m.\e[0m"
+ when 'E' then io.print "\e[#{COLORS[error]}mE\e[0m"
+ when 'F' then io.print "\e[#{COLORS[self.fail]}mF\e[0m"
+ when 'S' then io.print "\e[#{COLORS[skip]}mS\e[0m"
+ else
+ io.print o
+ end
+ end
+
+ def method_missing msg, *args
+ return super unless io.respond_to?(msg)
+ io.send(msg, *args)
+ end
+ end
+
+ ###
+ # Yields the current minitest output, which *should* be an instance
+ # of Purdytest::IO (hopefully).
+ def self.configure
+ yield MiniTest::Unit.output
+ end
+end
+
+MiniTest::Unit.output = Purdytest::IO.new(MiniTest::Unit.output)
+
+if system("colordiff", __FILE__, __FILE__)
+ MiniTest::Assertions.diff = 'colordiff -u'
+end
31 test/test_purdytest.rb
@@ -0,0 +1,31 @@
+require 'minitest/autorun' # from minitest
+require 'purdytest'
+
+Purdytest.configure do |io|
+ io.pass = :blue
+ io.fail = :green
+end
+
+describe 'my amazing test' do
+ # generate many green dots!
+ 50.times do |i|
+ it "must #{i}" do
+ 100.must_equal 100
+ end
+ end
+
+ # generate some red Fs!
+ 2.times do |i|
+ it "compares #{i} to #{i + 1}" do
+ i.must_equal i + 1
+ end
+ end
+
+ it 'does stuff and shows a diff' do
+ [1,2,3,4,5].must_equal %w{ a quick brown fox jumped over something! }
+ end
+
+ it 'does stuff and shows yellow' do
+ skip "don't care!"
+ end
+end
Please sign in to comment.
Something went wrong with that request. Please try again.