Class: CommitLive::Test

Inherits:
Object
  • Object
show all
Defined in:
lib/commit-live/tests/runner.rb

Constant Summary collapse

REPO_BELONGS_TO_US =
[
  'commit-live-students'
]

Instance Method Summary collapse

Constructor Details

#initializeTest

Returns a new instance of Test.



12
13
14
15
# File 'lib/commit-live/tests/runner.rb', line 12

def initialize()
  check_lesson_dir
  die if !strategy
end

Instance Method Details

#check_lesson_dirObject



25
26
27
28
29
30
31
32
33
# File 'lib/commit-live/tests/runner.rb', line 25

def check_lesson_dir
  git = set_git
  netrc = CommitLive::NetrcInteractor.new()
  netrc.read(machine: 'ga-extra')
  username = netrc.
  if git.remote.url.match(/#{username}/i).nil? && git.remote.url.match(/#{REPO_BELONGS_TO_US.join('|').gsub('-','\-')}/i).nil?
    put_error_msg
  end
end

#put_error_msgObject



35
36
37
38
39
# File 'lib/commit-live/tests/runner.rb', line 35

def put_error_msg
  puts "It doesn't look like you're in a lesson directory."
  puts 'Please cd into an appropriate directory and try again.'
  exit 1
end

#runObject



41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/commit-live/tests/runner.rb', line 41

def run
  strategy.check_dependencies
  strategy.configure
  results = strategy.run
  puts 'Updating lesson status...'
  lessonName = File.basename(Dir.getwd)
  if results
    # test case passed
    CommitLive::Status.new().update('test_case_pass', lessonName)
  else
    # test case failed
    CommitLive::Status.new().update('test_case_fail', lessonName)
  end
end

#set_gitObject



17
18
19
20
21
22
23
# File 'lib/commit-live/tests/runner.rb', line 17

def set_git
  begin
    Git.open(FileUtils.pwd)
  rescue => e
    put_error_msg
  end
end

#strategyObject



56
57
58
# File 'lib/commit-live/tests/runner.rb', line 56

def strategy
  @strategy ||= strategies.map{ |s| s.new() }.detect(&:detect)
end