Module: Maxitest::Testrbl
- Defined in:
- lib/maxitest/vendor/testrbl.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 =
/\\\#\\\{.*?\\\}/
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 $
67 68 69 70 |
# File 'lib/maxitest/vendor/testrbl.rb', line 67 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
45 46 47 |
# File 'lib/maxitest/vendor/testrbl.rb', line 45 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
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/maxitest/vendor/testrbl.rb', line 50 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
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 42 |
# File 'lib/maxitest/vendor/testrbl.rb', line 15 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 |