Class: LearnTest::Jasmine::Runner
- Inherits:
-
Object
- Object
- LearnTest::Jasmine::Runner
- Defined in:
- lib/learn_test/jasmine/runner.rb
Instance Attribute Summary collapse
-
#browser ⇒ Object
readonly
Returns the value of attribute browser.
-
#color_opt ⇒ Object
readonly
Returns the value of attribute color_opt.
-
#conn ⇒ Object
readonly
Returns the value of attribute conn.
-
#json_results ⇒ Object
Returns the value of attribute json_results.
-
#local ⇒ Object
readonly
Returns the value of attribute local.
-
#no_color ⇒ Object
readonly
Returns the value of attribute no_color.
-
#out ⇒ Object
readonly
Returns the value of attribute out.
Class Method Summary collapse
Instance Method Summary collapse
- #clean_up ⇒ Object
-
#initialize(username, user_id, repo_name, options) ⇒ Runner
constructor
A new instance of Runner.
- #make_json ⇒ Object
- #make_runner_html ⇒ Object
- #push_to_flatiron ⇒ Object
- #run ⇒ Object
- #run_jasmine ⇒ Object
- #set_passing_test_count ⇒ Object
- #test_xml_files ⇒ Object
- #write_json_output ⇒ Object
Constructor Details
#initialize(username, user_id, repo_name, options) ⇒ Runner
Returns a new instance of Runner.
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/learn_test/jasmine/runner.rb', line 16 def initialize(username, user_id, repo_name, ) @current_test_path = FileUtils.pwd @no_color = !![:color] @color_opt = !no_color ? "" : "NoColor" @local = !![:local] @browser = !![:browser] @out = [:out] @json_results = { username: username, github_user_id:user_id, repo_name: repo_name, build: { test_suite: [{ framework: 'jasmine', formatted_output: [], duration: 0.0 }] }, tests: 0, errors: 0, failures: 0 } @conn = Faraday.new(url: SERVICE_URL) do |faraday| faraday.adapter Faraday.default_adapter end end |
Instance Attribute Details
#browser ⇒ Object (readonly)
Returns the value of attribute browser.
9 10 11 |
# File 'lib/learn_test/jasmine/runner.rb', line 9 def browser @browser end |
#color_opt ⇒ Object (readonly)
Returns the value of attribute color_opt.
9 10 11 |
# File 'lib/learn_test/jasmine/runner.rb', line 9 def color_opt @color_opt end |
#conn ⇒ Object (readonly)
Returns the value of attribute conn.
9 10 11 |
# File 'lib/learn_test/jasmine/runner.rb', line 9 def conn @conn end |
#json_results ⇒ Object
Returns the value of attribute json_results.
10 11 12 |
# File 'lib/learn_test/jasmine/runner.rb', line 10 def json_results @json_results end |
#local ⇒ Object (readonly)
Returns the value of attribute local.
9 10 11 |
# File 'lib/learn_test/jasmine/runner.rb', line 9 def local @local end |
#no_color ⇒ Object (readonly)
Returns the value of attribute no_color.
9 10 11 |
# File 'lib/learn_test/jasmine/runner.rb', line 9 def no_color @no_color end |
#out ⇒ Object (readonly)
Returns the value of attribute out.
9 10 11 |
# File 'lib/learn_test/jasmine/runner.rb', line 9 def out @out end |
Class Method Details
.run(username, user_id, repo_name, options) ⇒ Object
12 13 14 |
# File 'lib/learn_test/jasmine/runner.rb', line 12 def self.run(username, user_id, repo_name, ) new(username, user_id, repo_name, ).run end |
Instance Method Details
#clean_up ⇒ Object
121 122 123 124 125 |
# File 'lib/learn_test/jasmine/runner.rb', line 121 def clean_up test_xml_files.each do |file| FileUtils.rm(file) end end |
#make_json ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/learn_test/jasmine/runner.rb', line 62 def make_json if local || !browser test_xml_files.each do |f| parsed = JSON.parse(Crack::XML.parse(File.read(f)).to_json)["testsuites"]["testsuite"] json_results[:build][:test_suite][0][:formatted_output] << parsed["testcase"] json_results[:build][:test_suite][0][:formatted_output].flatten! json_results[:tests] += parsed["tests"].to_i json_results[:errors] += parsed["errors"].to_i json_results[:failures] += parsed["failures"].to_i json_results[:build][:test_suite][0][:duration] += parsed["time"].to_f end set_passing_test_count end if out write_json_output end end |
#make_runner_html ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/learn_test/jasmine/runner.rb', line 99 def make_runner_html template = ERB.new(File.read("#{LearnTest::FileFinder.location_to_dir('jasmine/templates')}/SpecRunnerTemplate#{color_opt}.html.erb")) yaml = YAML.load(File.read('requires.yml'))["javascripts"] required_files = yaml["files"] required_specs = yaml["specs"] @javascripts = [] @javascripts << (required_files && required_files.map {|f| "#{@current_test_path}/#{f}"}) @javascripts << (required_specs && required_specs.map {|f| "#{@current_test_path}/#{f}"} ) @javascripts.flatten!.compact! File.open("#{LearnTest::FileFinder.location_to_dir('jasmine/runners')}/SpecRunner#{color_opt}.html", 'w+') do |f| f << template.result(binding) end end |
#push_to_flatiron ⇒ Object
91 92 93 94 95 96 97 |
# File 'lib/learn_test/jasmine/runner.rb', line 91 def push_to_flatiron conn.post do |req| req.url SERVICE_ENDPOINT req.headers['Content-Type'] = 'application/json' req.body = json_results.to_json end end |
#run ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/learn_test/jasmine/runner.rb', line 43 def run make_runner_html run_jasmine make_json push_to_flatiron unless local || browser clean_up end |
#run_jasmine ⇒ Object
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/learn_test/jasmine/runner.rb', line 51 def run_jasmine if browser # system("open #{LearnTest::FileFinder.location_to_dir('jasmine/runners')}/SpecRunner#{color_opt}.html --args allow-file-access-from-files") chrome_with_file_access_command = "\"/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome\" \"#{LearnTest::FileFinder.location_to_dir('jasmine/runners')}/SpecRunner#{color_opt}.html\" --allow-file-access-from-files" # This should give me back to the prompt - u can use & but a flag to send it to the background would be better. system(chrome_with_file_access_command) else system("phantomjs #{LearnTest::FileFinder.location_to_dir('jasmine/runners')}/run-jasmine.js #{LearnTest::FileFinder.location_to_dir('jasmine/runners')}/SpecRunner#{color_opt}.html") end end |
#set_passing_test_count ⇒ Object
81 82 83 |
# File 'lib/learn_test/jasmine/runner.rb', line 81 def set_passing_test_count json_results[:passing_count] = json_results[:tests] - json_results[:failures] - json_results[:errors] end |
#test_xml_files ⇒ Object
117 118 119 |
# File 'lib/learn_test/jasmine/runner.rb', line 117 def test_xml_files Dir.entries(@current_test_path).keep_if { |f| f.match(/TEST/) } end |
#write_json_output ⇒ Object
85 86 87 88 89 |
# File 'lib/learn_test/jasmine/runner.rb', line 85 def write_json_output File.open(out, 'w+') do |f| f.write(json_results.to_json) end end |