class LearnTest::Strategies::Karma

Public Instance Methods

check_dependencies() click to toggle source
# File lib/learn_test/strategies/karma.rb, line 14
def check_dependencies
  Dependencies::NodeJS.new.execute
  Dependencies::Karma.new.execute
end
cleanup() click to toggle source
# File lib/learn_test/strategies/karma.rb, line 53
def cleanup
  FileUtils.rm('.results.json') if File.exist?('.results.json')
end
detect() click to toggle source
# File lib/learn_test/strategies/karma.rb, line 10
def detect
  runner.files.include?('karma.conf.js')
end
output() click to toggle source
# File lib/learn_test/strategies/karma.rb, line 30
def output
  @output ||= File.exists?('.results.json') ? Oj.load(File.read('.results.json'), symbol_keys: true) : nil
end
results() click to toggle source
# File lib/learn_test/strategies/karma.rb, line 34
def results
  @results ||= {
    username: username,
    github_user_id: user_id,
    learn_oauth_token: learn_oauth_token,
    repo_name: runner.repo,
    build: {
      test_suite: [{
        framework: 'karma',
        formatted_output: output,
        duration: 0.0
      }]
    },
    examples: output[:summary][:success] + output[:summary][:failed],
    passing_count: output[:summary][:success],
    failure_count: output[:summary][:failed]
  }
end
run() click to toggle source
# File lib/learn_test/strategies/karma.rb, line 19
def run
  run_karma

  return unless @missing_karma

  puts 'Installing local karma dependencies...'.green
  run_install('npm install')

  run_karma
end
service_endpoint() click to toggle source
# File lib/learn_test/strategies/karma.rb, line 6
def service_endpoint
  '/e/flatiron_karma'
end

Private Instance Methods

die_missing_local_karma() click to toggle source
# File lib/learn_test/strategies/karma.rb, line 76
def die_missing_local_karma
  die("You appear to be missing karma in your local node modules. Try running `npm install`.\nIf the issue persists, make sure karma is specified as a dependency in the package.json")
end
run_karma() click to toggle source
# File lib/learn_test/strategies/karma.rb, line 59
def run_karma
  karma_config = LearnTest::FileFinder.location_to_dir('strategies/karma/karma.conf.js')
  Open3.popen3("karma start #{karma_config}") do |stdin, stdout, stderr, wait_thr|
    while out = stdout.gets do
      puts out
    end

    while err = stderr.gets do
      if err.include?('Cannot find local Karma!')
        die_missing_local_karma if @missing_karma
        @missing_karma = true
      end
      puts err
    end
  end
end