Module: Capybara::Screenshot::Diff::Vcs
- Defined in:
- lib/capybara/screenshot/diff/vcs.rb
Constant Summary collapse
- SILENCE_ERRORS =
Os::ON_WINDOWS ? "2>nul" : "2>/dev/null"
Class Method Summary collapse
- .checkout_vcs(screenshot_path, checkout_path) ⇒ Object
- .restore_git_revision(screenshot_path, checkout_path) ⇒ Object
- .restore_svn_revision(screenshot_path, checkout_path) ⇒ Object
- .svn? ⇒ Boolean
Class Method Details
.checkout_vcs(screenshot_path, checkout_path) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/capybara/screenshot/diff/vcs.rb', line 34 def self.checkout_vcs(screenshot_path, checkout_path) if svn? restore_svn_revision(screenshot_path, checkout_path) else restore_git_revision(screenshot_path, checkout_path) end end |
.restore_git_revision(screenshot_path, checkout_path) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/capybara/screenshot/diff/vcs.rb', line 11 def self.restore_git_revision(screenshot_path, checkout_path) vcs_file_path = screenshot_path.relative_path_from(Screenshot.root) redirect_target = "#{checkout_path} #{SILENCE_ERRORS}" show_command = "git show HEAD~0:./#{vcs_file_path}" if Screenshot.use_lfs `#{show_command} > #{checkout_path}.tmp #{SILENCE_ERRORS}` if $CHILD_STATUS == 0 `git lfs smudge < #{checkout_path}.tmp > #{redirect_target}` end File.delete "#{checkout_path}.tmp" else `#{show_command} > #{redirect_target}` end if $CHILD_STATUS != 0 FileUtils.rm_f(checkout_path) false else true end end |
.restore_svn_revision(screenshot_path, checkout_path) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/capybara/screenshot/diff/vcs.rb', line 42 def self.restore_svn_revision(screenshot_path, checkout_path) committed_file_name = screenshot_path + "../.svn/text-base/" + "#{screenshot_path.basename}.svn-base" if committed_file_name.exist? FileUtils.cp(committed_file_name, checkout_path) return true end svn_info = `svn info #{screenshot_path} #{SILENCE_ERRORS}` if svn_info.present? wc_root = svn_info.slice(/(?<=Working Copy Root Path: ).*$/) checksum = svn_info.slice(/(?<=Checksum: ).*$/) if checksum committed_file_name = "#{wc_root}/.svn/pristine/#{checksum[0..1]}/#{checksum}.svn-base" FileUtils.cp(committed_file_name, checkout_path) return true end end false end |
.svn? ⇒ Boolean
64 65 66 |
# File 'lib/capybara/screenshot/diff/vcs.rb', line 64 def self.svn? (Screenshot.screenshot_area_abs / ".svn").exist? end |