class CommitLive::Test
Constants
- HOME_DIR
- REPO_BELONGS_TO_US
Attributes
git[R]
lesson[R]
rootDir[R]
sentry[R]
track_slug[R]
Public Class Methods
new(trackSlug)
click to toggle source
# File lib/commit-live/tests/runner.rb, line 20 def initialize(trackSlug) @track_slug = trackSlug check_lesson_dir check_if_practice_lesson check_if_user_in_right_folder die if !strategy @sentry = CommitLive::Sentry.new() if File.exists?("#{HOME_DIR}/.ga-config") @rootDir = YAML.load(File.read("#{HOME_DIR}/.ga-config"))[:workspace] end end
Public Instance Methods
check_lesson_dir()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 40 def check_lesson_dir @git = set_git netrc = CommitLive::NetrcInteractor.new() netrc.read(machine: 'ga-extra') username = netrc.login 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
clear_changes_in_tests()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 95 def clear_changes_in_tests system("git checkout HEAD -- #{test_case_dir_path}") end
dir_path()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 99 def dir_path filePath = "#{title_slug}/" filePath += "#{test_slug}/" if is_project_assignment return filePath end
is_practice()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 130 def is_practice lessonType = lesson.getValue('type') !lessonType.nil? && lessonType == "PRACTICE" end
is_project()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 125 def is_project isProject = lesson.getValue('isProject') !isProject.nil? && isProject == 1 end
is_project_assignment()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 120 def is_project_assignment isProjectAssignment = lesson.getValue('isProjectAssignment') !isProjectAssignment.nil? && isProjectAssignment == 1 end
lesson_name()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 55 def lesson_name repo_name(remote: 'origin') end
put_error_msg()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 59 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
repo_name(remote: remote_name)
click to toggle source
# File lib/commit-live/tests/runner.rb, line 50 def repo_name(remote: remote_name) url = git.remote(remote).url url.match(/^.+[\w-]+\/(.*?)(?:\.git)?$/)[1] end
run(updateStatus = true)
click to toggle source
# File lib/commit-live/tests/runner.rb, line 65 def run(updateStatus = true) clear_changes_in_tests puts 'Testing lesson...' strategy.check_dependencies strategy.configure results = strategy.run(test_case_dir_path) if strategy.results strategy.print_results end file_path = "#{rootDir}/#{dir_path}/build.py" if updateStatus && strategy.results if results # test case passed puts 'Great! You have passed all the test cases.' puts 'Use `clive submit` to push your changes.' CommitLive::Status.new().update('testCasesPassed', track_slug, true, strategy.results, file_path) else # test case failed puts 'Oops! You still have to pass all the test cases.' CommitLive::Status.new().update('testCasesFailed', track_slug, true, strategy.results, file_path) end end strategy.cleanup return results end
set_git()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 32 def set_git begin Git.open(FileUtils.pwd) rescue => e put_error_msg end end
strategy()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 91 def strategy @strategy ||= strategies.map{ |s| s.new() }.detect(&:detect) end
test_case_dir_path()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 105 def test_case_dir_path filePath = "" filePath += "#{test_slug}/" if is_project_assignment filePath += "tests/" return filePath end
test_slug()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 112 def test_slug lesson.getValue('testCase') end
title_slug()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 116 def title_slug lesson.getValue('titleSlug') end
Private Instance Methods
check_if_practice_lesson()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 137 def check_if_practice_lesson @lesson = CommitLive::Current.new lesson.getCurrentLesson(track_slug) if is_project || is_practice puts 'This is a Project. Go to individual assignments and follow intructions given on how to pass test cases for them.' if is_project puts 'This is a Practice Lesson. No need to run tests on it.' if is_practice exit 1 end end
check_if_user_in_right_folder()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 147 def check_if_user_in_right_folder dirname = File.basename(Dir.getwd) if dirname != title_slug table = Terminal::Table.new do |t| t.rows = [["cd ~/Workspace/code/#{title_slug}/"]] end puts "It seems that you are in the wrong directory." puts "Use the following command to go there" puts table puts "Then use the `clive test <track-slug>` command" exit 1 end end
die()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 167 def die puts "This directory doesn't appear to have any specs in it." exit end
strategies()
click to toggle source
# File lib/commit-live/tests/runner.rb, line 161 def strategies [ CommitLive::Strategies::PythonUnittest ] end