Module: Testrbl
- Defined in:
- lib/testrbl.rb,
lib/testrbl/version.rb
Constant Summary collapse
- PATTERNS =
[ /^(\s+)(should|test|it)(\s+|\s*\(\s*)['"](.*)['"](\s*\))?\s+do\s*(?:#.*)?$/, /^(\s+)(context|describe)(\s+|\s*\(\s*)['"]?(.*?)['"]?(\s*\))?\s+do\s*(?:#.*)?$/, /^(\s+)def(\s+)(test_)([a-z_\d]+)\s*(?:#.*)?$/ ]
- OPTION_WITH_ARGUMENT =
["-I", "-r", "-n", "--name", "-e", "--exclude", "-s", "--seed"]
- INTERPOLATION =
/\\\#\\\{.*?\\\}/
- VERSION =
'1.0.0'
Class Method Summary collapse
-
.filter_duplicate_final(patterns) ⇒ Object
only keep 1 pattern that stops matching via $.
-
.line_pattern_option(file, line) ⇒ Object
overwritten by maxitest to just return line.
-
.pattern_from_file(lines, line) ⇒ Object
usable via external tools like zeus.
- .run_from_cli(argv) ⇒ Object
Class Method Details
.filter_duplicate_final(patterns) ⇒ Object
only keep 1 pattern that stops matching via $
66 67 68 69 |
# File 'lib/testrbl.rb', line 66 def filter_duplicate_final(patterns) found_final = 0 patterns.reject { |p| p.end_with?("$") and (found_final += 1) > 1 } end |
.line_pattern_option(file, line) ⇒ Object
overwritten by maxitest to just return line
44 45 46 |
# File 'lib/testrbl.rb', line 44 def line_pattern_option(file, line) [file, "-n", "/#{pattern_from_file(File.readlines(file), line)}/"] end |
.pattern_from_file(lines, line) ⇒ Object
usable via external tools like zeus
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/testrbl.rb', line 49 def pattern_from_file(lines, line) possible_lines = lines[0..(line.to_i-1)].reverse found = possible_lines.map { |line| test_pattern_from_line(line) || block_start_from_line(line) }.compact # pattern and the groups it is nested under (like describe - describe - it) last_spaces = " " * 100 patterns = found.select do |spaces, name| last_spaces = spaces if spaces.size < last_spaces.size end.map(&:last).compact return filter_duplicate_final(patterns).reverse.join(".*") if found.size > 0 raise "no test found before line #{line}" end |
.run_from_cli(argv) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/testrbl.rb', line 14 def run_from_cli(argv) files, = partition_argv(argv) files.concat(changed_files) if .delete("--changed") files = ["test"] if files.empty? files = files.map { |f| localize(f) } , = () if files.size == 1 and files.first =~ /^(\S+):(\d+)$/ file = $1 line = $2 run(ruby + + line_pattern_option(file, line) + ) else if files.size == 1 and File.file?(files.first) run(ruby + + files + ) elsif .none? { |arg| arg =~ /^-n/ } seed = if seed = .index("--seed") ["--"] + .slice!(seed, 2) else [] end files = files.map { |f| File.directory?(f) ? all_test_files_in(f) : f }.flatten run(ruby + + files.map { |f| "-r#{f}" } + + ["-e", ""] + seed) else # pass though # no bundle exec: projects with mini and unit-test do not run well via bundle exec testrb run ["testrb"] + argv end end end |