keeptesting 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.md +70 -0
- data/Rakefile +7 -0
- data/bin/keeptesting +40 -0
- data/keeptesting.gemspec +33 -0
- data/lib/keeptesting.rb +8 -0
- data/lib/keeptesting/browser_console.rb +61 -0
- data/lib/keeptesting/cli.rb +38 -0
- data/lib/keeptesting/common.rb +11 -0
- data/lib/keeptesting/version.rb +3 -0
- data/public/css/keeptesting.css +0 -0
- data/public/js/keeptesting.js +0 -0
- data/test/test_helper.rb +7 -0
- data/test/test_keeptesting.rb +9 -0
- data/views/index.erb +8 -0
- data/views/latest_test.erb +0 -0
- data/views/layout.erb +15 -0
- data/webconsole.rb +15 -0
- metadata +153 -0
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,70 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            DESCRIPTION:
         | 
| 3 | 
            +
            ===========
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            The simplest way to autotest your code - no matter what language or
         | 
| 6 | 
            +
            framework you use.
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            Run it from the command line. Specify 1) how tests are launched and 2)
         | 
| 9 | 
            +
            how a failed test looks in the terminal.
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            The tests will run on every file change in your project - results are
         | 
| 12 | 
            +
            fed back through a pretty html console.
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            USAGE:
         | 
| 15 | 
            +
            ======
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            `keeptesting [options] -f REGEX_MATCHING_TEST_FAILURE -t TEST_COMMAND`
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            By default, launch it in the root of your project.
         | 
| 20 | 
            +
             | 
| 21 | 
            +
             | 
| 22 | 
            +
            EXAMPLES:
         | 
| 23 | 
            +
            ======
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            In ruby:
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            `keeptesting -f 'Failure|Error' -t 'rake test'`
         | 
| 28 | 
            +
             | 
| 29 | 
            +
             | 
| 30 | 
            +
            PREREQUISITES:
         | 
| 31 | 
            +
            ==============
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            You must have some version of Ruby and RubyGems installed first. That's it.
         | 
| 34 | 
            +
             | 
| 35 | 
            +
             | 
| 36 | 
            +
            INSTALL:
         | 
| 37 | 
            +
            ========
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            `gem install keeptesting`
         | 
| 40 | 
            +
             | 
| 41 | 
            +
             | 
| 42 | 
            +
            TODO:
         | 
| 43 | 
            +
            =====
         | 
| 44 | 
            +
             | 
| 45 | 
            +
             | 
| 46 | 
            +
            LICENSE:
         | 
| 47 | 
            +
            ========
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            (The MIT License)
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            Copyright (c) 2012 Thomas Kjeldahl Nilsson
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            Permission is hereby granted, free of charge, to any person obtaining
         | 
| 54 | 
            +
            a copy of this software and associated documentation files (the
         | 
| 55 | 
            +
            'Software'), to deal in the Software without restriction, including
         | 
| 56 | 
            +
            without limitation the rights to use, copy, modify, merge, publish,
         | 
| 57 | 
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         | 
| 58 | 
            +
            permit persons to whom the Software is furnished to do so, subject to
         | 
| 59 | 
            +
            the following conditions:
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            The above copyright notice and this permission notice shall be
         | 
| 62 | 
            +
            included in all copies or substantial portions of the Software.
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
         | 
| 65 | 
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         | 
| 66 | 
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
         | 
| 67 | 
            +
            IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
         | 
| 68 | 
            +
            CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
         | 
| 69 | 
            +
            TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
         | 
| 70 | 
            +
            SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
    
        data/Rakefile
    ADDED
    
    
    
        data/bin/keeptesting
    ADDED
    
    | @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "keeptesting"
         | 
| 4 | 
            +
            require "optparse"
         | 
| 5 | 
            +
            require 'fssm'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            def parse_options
         | 
| 8 | 
            +
              options = {}
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              OptionParser.new do |o|
         | 
| 11 | 
            +
                o.banner = "Usage: keeptesting [options] -f 'FAILURE-MATCHING-REGEX' -t 'TEST-COMMAND'\n\n"
         | 
| 12 | 
            +
                
         | 
| 13 | 
            +
                o.on("-f F", "--failure-matching-regex", "A regex that matches failing tests") { |f| options[:failure_regex] = f } 
         | 
| 14 | 
            +
                o.on("-t T", "--test-command", "Command to start your test(s)") { |t| options[:test_command] = t }
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                o.on("-c", "--command-line-mode", "Get test feedback in terminal") { options[:cli_mode] = true}
         | 
| 17 | 
            +
                
         | 
| 18 | 
            +
                o.on("-h", "--help", "Help page") { puts o; exit }
         | 
| 19 | 
            +
                o.on("-v", "--version", "Print version number") { |b| puts Keeptesting::VERSION; exit }
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                o.parse!
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              return options
         | 
| 25 | 
            +
            end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
             | 
| 28 | 
            +
            options = parse_options
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            if !options[:failure_regex] || !options[:test_command]
         | 
| 31 | 
            +
              puts "ERROR: missing args!" # TODO do this in optionsparse step above
         | 
| 32 | 
            +
            end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            if options[:cli_mode]
         | 
| 35 | 
            +
              Keeptesting::CLI::start_test_loop(options)
         | 
| 36 | 
            +
            else
         | 
| 37 | 
            +
              Keeptesting::BrowserConsole.new(options)
         | 
| 38 | 
            +
            end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
             | 
    
        data/keeptesting.gemspec
    ADDED
    
    | @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            $:.push File.expand_path("../lib", __FILE__)
         | 
| 3 | 
            +
            require "keeptesting/version"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Gem::Specification.new do |s|
         | 
| 6 | 
            +
              s.name        = "keeptesting"
         | 
| 7 | 
            +
              s.version     = Keeptesting::VERSION
         | 
| 8 | 
            +
              s.authors     = ["Thomas Kjeldahl Nilsson"]
         | 
| 9 | 
            +
              s.email       = ["thomas@kjeldahlnilsson.net"]
         | 
| 10 | 
            +
              s.homepage    = "https://github.com/thomanil/keeptesting"
         | 
| 11 | 
            +
              s.summary     = %q{A stripped down CLI utility for reading tweets}
         | 
| 12 | 
            +
              s.description = %q{Usage: keeptesting [options] TESTCOMMAND}
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              s.rubyforge_project = "keeptesting"
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              s.files         = `git ls-files`.split("\n")
         | 
| 17 | 
            +
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         | 
| 18 | 
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| 19 | 
            +
              s.require_paths = ["lib"]
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              # specify any dependencies here; for example:
         | 
| 22 | 
            +
              # s.add_development_dependency "rspec"
         | 
| 23 | 
            +
              s.add_runtime_dependency "OptionParser"
         | 
| 24 | 
            +
              s.add_runtime_dependency "fssm"
         | 
| 25 | 
            +
              s.add_runtime_dependency "sinatra"
         | 
| 26 | 
            +
              s.add_runtime_dependency "foreman"
         | 
| 27 | 
            +
              
         | 
| 28 | 
            +
              s.add_development_dependency "mocha"
         | 
| 29 | 
            +
              s.add_development_dependency "shoulda"
         | 
| 30 | 
            +
              s.add_development_dependency "minitest"
         | 
| 31 | 
            +
              s.add_development_dependency "shoulda-context"
         | 
| 32 | 
            +
              
         | 
| 33 | 
            +
            end
         | 
    
        data/lib/keeptesting.rb
    ADDED
    
    
| @@ -0,0 +1,61 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Keeptesting
         | 
| 4 | 
            +
              
         | 
| 5 | 
            +
              require "fileutils"
         | 
| 6 | 
            +
              require "rubygems"
         | 
| 7 | 
            +
              require "yaml"
         | 
| 8 | 
            +
              
         | 
| 9 | 
            +
              class BrowserConsole
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def initialize(options={})
         | 
| 12 | 
            +
                  #watch_tests_in_other_thread(options)
         | 
| 13 | 
            +
                  start_console
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
                
         | 
| 16 | 
            +
                RESULT_FILE_PATH = "/tmp/keeptesting-state.txt"
         | 
| 17 | 
            +
                
         | 
| 18 | 
            +
                def store_last_test_summary(result, output)
         | 
| 19 | 
            +
                  File.open RESULT_FILE_PATH, "w" do |filebody|
         | 
| 20 | 
            +
                    filebody.write("#{result.to_s}\n")
         | 
| 21 | 
            +
                    filebody.write(output)
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def retrieve_last_test_summary
         | 
| 26 | 
            +
                  result = false
         | 
| 27 | 
            +
                  output = ""
         | 
| 28 | 
            +
                  File.open RESULT_FILE_PATH, "r" do |filebody|
         | 
| 29 | 
            +
                    result = filebody.lines.first
         | 
| 30 | 
            +
                    output = filebody.to_s
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
                  return result, output
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
                
         | 
| 35 | 
            +
                def testrun(options)
         | 
| 36 | 
            +
                  cmd = options[:test_command]
         | 
| 37 | 
            +
                  test_output = `#{cmd}`
         | 
| 38 | 
            +
                  test_succeeded = Keeptesting::Common::test_success?(test_output, options[:failure_regex])
         | 
| 39 | 
            +
                  store_last_test_summary(test_succeeded, test_output)
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                def watch_tests_in_other_thread(options)
         | 
| 43 | 
            +
                  puts "Starting test loop"
         | 
| 44 | 
            +
                  #Thread.new do
         | 
| 45 | 
            +
                  console = self
         | 
| 46 | 
            +
                  FSSM.monitor('.', '**/*') do
         | 
| 47 | 
            +
                    update {|base, relative| console.testrun(options)}
         | 
| 48 | 
            +
                    delete {|base, relative| console.testrun(options)}
         | 
| 49 | 
            +
                    create {|base, relative| console.testrun(options)}
         | 
| 50 | 
            +
                  end
         | 
| 51 | 
            +
                  #end
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                def start_console
         | 
| 55 | 
            +
                  puts "keeptesting web console starting - goto http://localhost:5000"
         | 
| 56 | 
            +
                  puts "---"
         | 
| 57 | 
            +
                  puts `ruby -Ilib webconsole.rb -p 5000`
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
               
         | 
| 60 | 
            +
              end
         | 
| 61 | 
            +
            end
         | 
| @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Keeptesting
         | 
| 4 | 
            +
              module CLI
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                GREEN_TEXT="\033[32m"
         | 
| 7 | 
            +
                YELLOW_TEXT="\033[33m"
         | 
| 8 | 
            +
                RED_TEXT="\033[31m"
         | 
| 9 | 
            +
                RESET_TEXT="\033[0m"
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                
         | 
| 12 | 
            +
                def self.testrun(options)
         | 
| 13 | 
            +
                  puts `clear`
         | 
| 14 | 
            +
                  puts "#{YELLOW_TEXT}RUNNING TESTS...#{RESET_TEXT}"
         | 
| 15 | 
            +
                  
         | 
| 16 | 
            +
                  cmd = options[:test_command]
         | 
| 17 | 
            +
                  test_output = `#{cmd}`
         | 
| 18 | 
            +
                  test_succeded = Keeptesting::Common::test_success?(test_output, options[:failure_regex])
         | 
| 19 | 
            +
                  puts `clear`
         | 
| 20 | 
            +
                  if test_succeded
         | 
| 21 | 
            +
                    puts "#{GREEN_TEXT}SUCCESS!#{RESET_TEXT}\n\n\n"
         | 
| 22 | 
            +
                  else
         | 
| 23 | 
            +
                    puts "#{RED_TEXT}FAILURE!#{RESET_TEXT}\n\n\n"
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  puts test_output
         | 
| 27 | 
            +
                end 
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                def self.start_test_loop(options)
         | 
| 30 | 
            +
                  Keeptesting::CLI::testrun(options)
         | 
| 31 | 
            +
                  FSSM.monitor('.', '**/*') do
         | 
| 32 | 
            +
                    update {|base, relative| Keeptesting::CLI::testrun(options)}
         | 
| 33 | 
            +
                    delete {|base, relative| Keeptesting::CLI::testrun(options)}
         | 
| 34 | 
            +
                    create {|base, relative| Keeptesting::CLI::testrun(options)}
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
            end
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
    
        data/test/test_helper.rb
    ADDED
    
    
    
        data/views/index.erb
    ADDED
    
    
| 
            File without changes
         | 
    
        data/views/layout.erb
    ADDED
    
    | @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            <!DOCTYPE html>
         | 
| 2 | 
            +
            <html lang="en">
         | 
| 3 | 
            +
              <head>
         | 
| 4 | 
            +
                <meta charset="utf-8">
         | 
| 5 | 
            +
                  <link href="/css/keeptesting.css" media="screen" rel="stylesheet" type="text/css" /> 
         | 
| 6 | 
            +
                  <title>Tweetskim</title>
         | 
| 7 | 
            +
              </head>
         | 
| 8 | 
            +
              <body>
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                <h1>Test status</h1>
         | 
| 11 | 
            +
                
         | 
| 12 | 
            +
                <%= yield  %>
         | 
| 13 | 
            +
                 
         | 
| 14 | 
            +
              </body>
         | 
| 15 | 
            +
            </html>
         | 
    
        data/webconsole.rb
    ADDED
    
    | @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*-
         | 
| 2 | 
            +
            require 'rubygems'
         | 
| 3 | 
            +
            require 'sinatra'
         | 
| 4 | 
            +
            require 'keeptesting'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            get '/' do
         | 
| 7 | 
            +
              console = Keeptesting::BrowserConsole.new
         | 
| 8 | 
            +
              @result, @output = console.retrieve_last_test_summary
         | 
| 9 | 
            +
              
         | 
| 10 | 
            +
              erb :index
         | 
| 11 | 
            +
            end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            get '/latest-test' do
         | 
| 14 | 
            +
              erb :latest_test, :layout => false
         | 
| 15 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,153 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: keeptesting
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 | 
            +
              prerelease: 
         | 
| 6 | 
            +
            platform: ruby
         | 
| 7 | 
            +
            authors:
         | 
| 8 | 
            +
            - Thomas Kjeldahl Nilsson
         | 
| 9 | 
            +
            autorequire: 
         | 
| 10 | 
            +
            bindir: bin
         | 
| 11 | 
            +
            cert_chain: []
         | 
| 12 | 
            +
            date: 2012-04-02 00:00:00.000000000Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 15 | 
            +
              name: OptionParser
         | 
| 16 | 
            +
              requirement: &9076720 !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                none: false
         | 
| 18 | 
            +
                requirements:
         | 
| 19 | 
            +
                - - ! '>='
         | 
| 20 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            +
                    version: '0'
         | 
| 22 | 
            +
              type: :runtime
         | 
| 23 | 
            +
              prerelease: false
         | 
| 24 | 
            +
              version_requirements: *9076720
         | 
| 25 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 26 | 
            +
              name: fssm
         | 
| 27 | 
            +
              requirement: &9076300 !ruby/object:Gem::Requirement
         | 
| 28 | 
            +
                none: false
         | 
| 29 | 
            +
                requirements:
         | 
| 30 | 
            +
                - - ! '>='
         | 
| 31 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            +
                    version: '0'
         | 
| 33 | 
            +
              type: :runtime
         | 
| 34 | 
            +
              prerelease: false
         | 
| 35 | 
            +
              version_requirements: *9076300
         | 
| 36 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 37 | 
            +
              name: sinatra
         | 
| 38 | 
            +
              requirement: &9075880 !ruby/object:Gem::Requirement
         | 
| 39 | 
            +
                none: false
         | 
| 40 | 
            +
                requirements:
         | 
| 41 | 
            +
                - - ! '>='
         | 
| 42 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 43 | 
            +
                    version: '0'
         | 
| 44 | 
            +
              type: :runtime
         | 
| 45 | 
            +
              prerelease: false
         | 
| 46 | 
            +
              version_requirements: *9075880
         | 
| 47 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 48 | 
            +
              name: foreman
         | 
| 49 | 
            +
              requirement: &9075460 !ruby/object:Gem::Requirement
         | 
| 50 | 
            +
                none: false
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ! '>='
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '0'
         | 
| 55 | 
            +
              type: :runtime
         | 
| 56 | 
            +
              prerelease: false
         | 
| 57 | 
            +
              version_requirements: *9075460
         | 
| 58 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 59 | 
            +
              name: mocha
         | 
| 60 | 
            +
              requirement: &9075040 !ruby/object:Gem::Requirement
         | 
| 61 | 
            +
                none: false
         | 
| 62 | 
            +
                requirements:
         | 
| 63 | 
            +
                - - ! '>='
         | 
| 64 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 65 | 
            +
                    version: '0'
         | 
| 66 | 
            +
              type: :development
         | 
| 67 | 
            +
              prerelease: false
         | 
| 68 | 
            +
              version_requirements: *9075040
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: shoulda
         | 
| 71 | 
            +
              requirement: &9074620 !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                none: false
         | 
| 73 | 
            +
                requirements:
         | 
| 74 | 
            +
                - - ! '>='
         | 
| 75 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 76 | 
            +
                    version: '0'
         | 
| 77 | 
            +
              type: :development
         | 
| 78 | 
            +
              prerelease: false
         | 
| 79 | 
            +
              version_requirements: *9074620
         | 
| 80 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 81 | 
            +
              name: minitest
         | 
| 82 | 
            +
              requirement: &9074200 !ruby/object:Gem::Requirement
         | 
| 83 | 
            +
                none: false
         | 
| 84 | 
            +
                requirements:
         | 
| 85 | 
            +
                - - ! '>='
         | 
| 86 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 87 | 
            +
                    version: '0'
         | 
| 88 | 
            +
              type: :development
         | 
| 89 | 
            +
              prerelease: false
         | 
| 90 | 
            +
              version_requirements: *9074200
         | 
| 91 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 92 | 
            +
              name: shoulda-context
         | 
| 93 | 
            +
              requirement: &9073780 !ruby/object:Gem::Requirement
         | 
| 94 | 
            +
                none: false
         | 
| 95 | 
            +
                requirements:
         | 
| 96 | 
            +
                - - ! '>='
         | 
| 97 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 98 | 
            +
                    version: '0'
         | 
| 99 | 
            +
              type: :development
         | 
| 100 | 
            +
              prerelease: false
         | 
| 101 | 
            +
              version_requirements: *9073780
         | 
| 102 | 
            +
            description: ! 'Usage: keeptesting [options] TESTCOMMAND'
         | 
| 103 | 
            +
            email:
         | 
| 104 | 
            +
            - thomas@kjeldahlnilsson.net
         | 
| 105 | 
            +
            executables:
         | 
| 106 | 
            +
            - keeptesting
         | 
| 107 | 
            +
            extensions: []
         | 
| 108 | 
            +
            extra_rdoc_files: []
         | 
| 109 | 
            +
            files:
         | 
| 110 | 
            +
            - .gitignore
         | 
| 111 | 
            +
            - Gemfile
         | 
| 112 | 
            +
            - README.md
         | 
| 113 | 
            +
            - Rakefile
         | 
| 114 | 
            +
            - bin/keeptesting
         | 
| 115 | 
            +
            - keeptesting.gemspec
         | 
| 116 | 
            +
            - lib/keeptesting.rb
         | 
| 117 | 
            +
            - lib/keeptesting/browser_console.rb
         | 
| 118 | 
            +
            - lib/keeptesting/cli.rb
         | 
| 119 | 
            +
            - lib/keeptesting/common.rb
         | 
| 120 | 
            +
            - lib/keeptesting/version.rb
         | 
| 121 | 
            +
            - public/css/keeptesting.css
         | 
| 122 | 
            +
            - public/js/keeptesting.js
         | 
| 123 | 
            +
            - test/test_helper.rb
         | 
| 124 | 
            +
            - test/test_keeptesting.rb
         | 
| 125 | 
            +
            - views/index.erb
         | 
| 126 | 
            +
            - views/latest_test.erb
         | 
| 127 | 
            +
            - views/layout.erb
         | 
| 128 | 
            +
            - webconsole.rb
         | 
| 129 | 
            +
            homepage: https://github.com/thomanil/keeptesting
         | 
| 130 | 
            +
            licenses: []
         | 
| 131 | 
            +
            post_install_message: 
         | 
| 132 | 
            +
            rdoc_options: []
         | 
| 133 | 
            +
            require_paths:
         | 
| 134 | 
            +
            - lib
         | 
| 135 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 136 | 
            +
              none: false
         | 
| 137 | 
            +
              requirements:
         | 
| 138 | 
            +
              - - ! '>='
         | 
| 139 | 
            +
                - !ruby/object:Gem::Version
         | 
| 140 | 
            +
                  version: '0'
         | 
| 141 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 142 | 
            +
              none: false
         | 
| 143 | 
            +
              requirements:
         | 
| 144 | 
            +
              - - ! '>='
         | 
| 145 | 
            +
                - !ruby/object:Gem::Version
         | 
| 146 | 
            +
                  version: '0'
         | 
| 147 | 
            +
            requirements: []
         | 
| 148 | 
            +
            rubyforge_project: keeptesting
         | 
| 149 | 
            +
            rubygems_version: 1.8.15
         | 
| 150 | 
            +
            signing_key: 
         | 
| 151 | 
            +
            specification_version: 3
         | 
| 152 | 
            +
            summary: A stripped down CLI utility for reading tweets
         | 
| 153 | 
            +
            test_files: []
         |