class Oktest::MainApp
Constants
- HELP_MESSAGE
- SKELETON
Public Class Methods
main(argv=nil)
click to toggle source
# File lib/oktest.rb, line 2471 def self.main(argv=nil) #; [!tb6sx] returns 0 when no errors raised. #; [!d5mql] returns 1 when a certain error raised. argv ||= ARGV begin status = self.new.run(*argv) or raise "** internal error" return status #; [!jr49p] reports error when unknown option specified. #; [!uqomj] reports error when required argument is missing. #; [!8i755] reports error when argument is invalid. rescue OptionParser::ParseError => exc case exc when OptionParser::InvalidOption ; s = "unknown option." when OptionParser::InvalidArgument ; s = "invalid argument." when OptionParser::MissingArgument ; s = "argument required." else ; s = nil end msg = s ? "#{exc.args.join(' ')}: #{s}" : exc.message $stderr.puts("#{File.basename($0)}: #{msg}") return 1 end end
Public Instance Methods
run(*args)
click to toggle source
# File lib/oktest.rb, line 2494 def run(*args) color_enabled = nil opts = Options.new parser = option_parser(opts) filenames = parser.parse(args) #; [!9973n] '-h' or '--help' option prints help message. if opts.help puts help_message() return 0 end #; [!qqizl] '--version' option prints version number. if opts.version puts VERSION return 0 end #; [!dk8eg] '-C' or '--create' option prints test code skeleton. if opts.create print SKELETON return 0 end #; [!uxh5e] '-G' or '--generate' option prints test code. #; [!wmxu5] '--generate=unaryop' option prints test code with unary op. if opts.generate print generate(filenames, opts.generate) return 0 end #; [!65vdx] prints help message if no arguments specified. if filenames.empty? && !THE_GLOBAL_SCOPE.has_child? puts help_message() return 0 end #; [!6ro7j] '--color=on' option enables output coloring forcedly. #; [!vmw0q] '--color=off' option disables output coloring forcedly. if opts.color color_enabled = Config.color_enabled Config.color_enabled = (opts.color == 'on') end #; [!qs8ab] '--faster' chanages 'Config.ok_location' to false. if opts.faster Config.ok_location = false # will make 'ok{}' faster end # $LOADED_FEATURES << __FILE__ unless $LOADED_FEATURES.include?(__FILE__) # avoid loading twice #; [!hiu5b] finds test scripts in directory and runs them. load_files(filenames) #; [!yz7g5] '-F topic=...' option filters topics. #; [!ww2mp] '-F spec=...' option filters specs. #; [!8uvib] '-F tag=...' option filters by tag name. #; [!m0iwm] '-F sid=...' option filters by spec id. #; [!noi8i] '-F' option supports negative filter. if opts.filter filter_obj = FILTER_CLASS.create_from(opts.filter) Oktest.filter(filter_obj) end #; [!bim36] changes auto-running to off. Config.auto_run = false #; [!18qpe] runs test scripts. #; [!0qd92] '-s verbose' or '-sv' option prints test results in verbose mode. #; [!zfdr5] '-s simple' or '-ss' option prints test results in simple mode. #; [!ef5v7] '-s compact' or '-sc' option prints test results in compact mode. #; [!244te] '-s plain' or '-sp' option prints test results in plain mode. #; [!ai61w] '-s quiet' or '-sq' option prints test results in quiet mode. n_errors = Oktest.run(:style=>opts.style) #; [!dsrae] reports if 'ok()' called but assertion not performed. AssertionObject.report_not_yet() #; [!bzgiw] returns total number of failures and errors. return n_errors ensure #; [!937kw] recovers 'Config.color_enabled' value. Config.color_enabled = color_enabled if color_enabled != nil end
Private Instance Methods
generate(filenames, styleoption)
click to toggle source
# File lib/oktest.rb, line 2648 def generate(filenames, styleoption) buf = [] filenames.each do |fname| generator = TestGenerator.new(styleoption) File.open(fname) do |f| buf << generator.generate(f) end end return buf.join() end
help_message(command=nil)
click to toggle source
# File lib/oktest.rb, line 2605 def help_message(command=nil) command ||= File.basename($0) return HELP_MESSAGE % {command: command} end
load_dir(dir, pattern=/^(test_.*|.*_test)\.rb$/)
click to toggle source
# File lib/oktest.rb, line 2641 def load_dir(dir, pattern=/^(test_.*|.*_test)\.rb$/) Dir.glob("#{dir}/**/*").sort.each do |path| next unless File.file?(path) load(path) if File.basename(path) =~ pattern end end
load_files(filenames)
click to toggle source
# File lib/oktest.rb, line 2631 def load_files(filenames) filenames.each do |fname| File.exist?(fname) or raise OptionParser::InvalidOption, "#{fname}: not found." end filenames.each do |fname| File.directory?(fname) ? load_dir(fname) : load(fname) end end
option_parser(opts)
click to toggle source
# File lib/oktest.rb, line 2572 def option_parser(opts) require 'optparse' unless defined?(OptionParser) parser = OptionParser.new parser.on('-h', '--help') { opts.help = true } parser.on( '--version') { opts.version = true } parser.on('-s STYLE') {|val| REPORTER_CLASSES.key?(val) or raise OptionParser::InvalidArgument, val opts.style = val } parser.on('-F PATTERN') {|val| #; [!71h2x] '-F ...' option will be error. val =~ /\A(topic|spec|tag|sid)(=|!=)/ or raise OptionParser::InvalidArgument, val opts.filter = val } parser.on( '--color[={on|off}]') {|val| #; [!9nr94] '--color=true' option raises error. val.nil? || val == 'on' || val == 'off' or raise OptionParser::InvalidArgument, val #; [!dptgn] '--color' is same as '--color=on'. opts.color = val || 'on' } parser.on('-C', '--create') { opts.create = true } parser.on('-G', '--generate[=styleoption]') {|val| val.nil? || val == 'unaryop' or raise OptionParser::InvalidArgument, val opts.generate = val || true } parser.on( '--faster') { opts.faster = true } return parser end