Class: PhpTestHook

Inherits:
PhpFileHook
  • Object
show all
Defined in:
lib/test_hook.rb

Constant Summary collapse

TEST_NAME =
'AAAMumukiTestCaseAAA'
PASSED_REGEXP =
/[✔☢] ([^\n]+)/
FAILED_REGEXP =
/✘ ([^\n]+)\n *\│\n *│ ([^イ]+│ \n   )/

Instance Method Summary collapse

Methods inherited from PhpFileHook

#tempfile_extension

Instance Method Details

#command_line(filename) ⇒ Object



8
9
10
# File 'lib/test_hook.rb', line 8

def command_line(filename)
  "phpunit --testdox #{filename}"
end

#compile_file_content(req) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/test_hook.rb', line 25

def compile_file_content(req)
  "<?php\ndeclare(strict_types=1);\n\n\#{req.extra}\n\#{req.content}\n\nuse PHPUnit\\\\Framework\\\\TestCase;\n\nfinal class \#{TEST_NAME}Test extends TestCase {\n\#{req.test.lines.map {|it| '  ' + it}.join}\n}\n"
end

#post_process_file(file, result, status) ⇒ Object



12
13
14
15
16
# File 'lib/test_hook.rb', line 12

def post_process_file(file, result, status)
  return [result.strip, :errored] unless result.include? TEST_NAME

  super file, result, status
end

#to_structured_result(result) ⇒ Object



18
19
20
21
22
23
# File 'lib/test_hook.rb', line 18

def to_structured_result(result)
  passed_tests = result.scan(PASSED_REGEXP).map { |it| to_passed_result it }
  failed_tests = result.scan(FAILED_REGEXP).map { |it| to_failed_result it }.uniq { |it| it.first }

  passed_tests.concat(failed_tests)
end