⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_info.rb

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 RB
字号:
require "util"require "svn/info"class SvnInfoTest < Test::Unit::TestCase  include SvnTestUtil    def setup    setup_basic  end  def teardown    teardown_basic  end    def test_info    file = "hello.txt"    path = File.join(@wc_path, file)    log = "test commit\nnew line"    FileUtils.touch(path)    ctx = make_context(log)    ctx.add(path)    commit_info = ctx.commit([@wc_path])    info = make_info(commit_info.revision)    assert_equal(@author, info.author)    assert_equal(commit_info.date, info.date)    assert_equal(commit_info.revision, info.revision)    assert_equal(log, info.log)  end  def test_dirs_changed    dir = "new_dir"    file = "new.txt"    dir_path = File.join(@wc_path, dir)    file_path = File.join(dir_path, file)    log = "added dir"        ctx = make_context(log)    ctx.mkdir(dir_path)    FileUtils.touch(file_path)    ctx.add(file_path)    commit_info = ctx.commit(@wc_path)    info = make_info(commit_info.revision)    assert_equal(["/", "#{dir}/"], info.changed_dirs)    assert_equal(commit_info.revision, info.revision)    assert_equal(log, info.log)  end  def test_changed    dir = "changed_dir"    tmp_dir = "changed_tmp_dir"    dir_path = File.join(@wc_path, dir)    tmp_dir_path = File.join(@wc_path, tmp_dir)    dir_svn_path = dir    tmp_dir_svn_path = tmp_dir    log = "added 2 dirs\nanded 5 files"    ctx = make_context(log)    ctx.mkdir([dir_path, tmp_dir_path])    file1 = "changed1.txt"    file2 = "changed2.txt"    file3 = "changed3.txt"    file4 = "changed4.txt"    file5 = "changed5.txt"    file1_path = File.join(@wc_path, file1)    file2_path = File.join(dir_path, file2)    file3_path = File.join(@wc_path, file3)    file4_path = File.join(dir_path, file4)    file5_path = File.join(@wc_path, file5)    file1_svn_path = file1    file2_svn_path = [dir_svn_path, file2].join("/")    file3_svn_path = file3    file4_svn_path = [dir_svn_path, file4].join("/")    file5_svn_path = file5    FileUtils.touch(file1_path)    FileUtils.touch(file2_path)    FileUtils.touch(file3_path)    FileUtils.touch(file4_path)    FileUtils.touch(file5_path)    ctx.add(file1_path)    ctx.add(file2_path)    ctx.add(file3_path)    ctx.add(file4_path)    ctx.add(file5_path)    commit_info = ctx.commit(@wc_path)    first_rev = commit_info.revision    info = make_info(commit_info.revision)    assert_equal([].sort, info.updated_dirs)    assert_equal([].sort, info.deleted_dirs)    assert_equal(["#{dir_svn_path}/", "#{tmp_dir_svn_path}/"].sort,                 info.added_dirs)        file6 = "changed6.txt"    file7 = "changed7.txt"    file8 = "changed8.txt"    file9 = "changed9.txt"    file6_path = File.join(dir_path, file6)    file7_path = File.join(@wc_path, file7)    file8_path = File.join(dir_path, file8)    file9_path = File.join(dir_path, file9)    file6_svn_path = [dir_svn_path, file6].join("/")    file7_svn_path = file7    file8_svn_path = [dir_svn_path, file8].join("/")    file9_svn_path = [dir_svn_path, file9].join("/")    File.open(file1_path, "w") {|f| f.puts "changed"}    File.open(file2_path, "w") {|f| f.puts "changed"}    File.open(file3_path, "w") {|f| f.puts "changed"}    log = "changed 3 files\ndeleted 2 files\nadded 3 files"    ctx = make_context(log)    ctx.rm_f([file4_path, file5_path])    FileUtils.touch(file6_path)    FileUtils.touch(file7_path)    FileUtils.touch(file8_path)    ctx.add(file6_path)    ctx.add(file7_path)    ctx.add(file8_path)    ctx.cp(file1_path, file9_path)    ctx.rm(tmp_dir_path)    commit_info = ctx.commit(@wc_path)    second_rev = commit_info.revision    info = make_info(commit_info.revision)    assert_equal([file1_svn_path, file2_svn_path, file3_svn_path].sort,                 info.updated_files)    assert_equal([file4_svn_path, file5_svn_path].sort,                 info.deleted_files)    assert_equal([file6_svn_path, file7_svn_path, file8_svn_path].sort,                 info.added_files)    assert_equal([].sort, info.updated_dirs)    assert_equal([                   [file9_svn_path, file1_svn_path, first_rev]                 ].sort_by{|x| x[0]},                 info.copied_files)    assert_equal([], info.copied_dirs)    assert_equal(["#{tmp_dir_svn_path}/"].sort, info.deleted_dirs)    assert_equal([].sort, info.added_dirs)  end  def test_diff    log = "diff"    ctx = make_context(log)    file1 = "diff1.txt"    file2 = "diff2.txt"    file3 = "diff3.txt"    file1_path = File.join(@wc_path, "diff1.txt")    file2_path = File.join(@wc_path, "diff2.txt")    file3_path = File.join(@wc_path, "diff3.txt")    file1_prop_key = "AAA"    file1_prop_value = "BBB"    FileUtils.touch(file1_path)    File.open(file2_path, "w") {|f| f.puts "changed"}    FileUtils.touch(file3_path)    ctx.add(file1_path)    ctx.add(file2_path)    ctx.add(file3_path)    ctx.propset(file1_prop_key, file1_prop_value, file1_path)    ctx.commit(@wc_path)    file4 = "diff4.txt"    file5 = "diff5.txt"    file4_path = File.join(@wc_path, file4)    file5_path = File.join(@wc_path, file5)    file4_prop_key = "XXX"    file4_prop_value = "YYY"    File.open(file1_path, "w") {|f| f.puts "changed"}    File.open(file2_path, "w") {|f| f.puts "removed\nadded"}    FileUtils.touch(file4_path)    ctx.add(file4_path)    ctx.propdel(file1_prop_key, file1_path)    ctx.propset(file4_prop_key, file4_prop_value, file4_path)    ctx.cp(file3_path, file5_path)        commit_info = ctx.commit(@wc_path)        info = make_info(commit_info.revision)    keys = info.diffs.keys.sort    file5_key = keys.last    assert_equal(4, info.diffs.size)    assert_equal([file1, file2, file4].sort, keys[0..-2])    assert_match(/\A#{file5}/, file5_key)    assert(info.diffs[file1].has_key?(:modified))    assert(info.diffs[file1].has_key?(:property_changed))    assert(info.diffs[file2].has_key?(:modified))    assert(info.diffs[file4].has_key?(:added))    assert(info.diffs[file4].has_key?(:property_changed))    assert(info.diffs[file5_key].has_key?(:copied))    assert_equal(1, info.diffs[file1][:modified].added_line)    assert_equal(0, info.diffs[file1][:modified].deleted_line)    assert_equal(2, info.diffs[file2][:modified].added_line)    assert_equal(1, info.diffs[file2][:modified].deleted_line)    assert_equal(0, info.diffs[file4][:added].added_line)    assert_equal(0, info.diffs[file4][:added].deleted_line)    assert_equal(0, info.diffs[file5_key][:copied].added_line)    assert_equal(0, info.diffs[file5_key][:copied].deleted_line)    assert_equal("Name: #{file1_prop_key}\n   - #{file1_prop_value}\n",                 info.diffs[file1][:property_changed].body)    assert_equal("Name: #{file4_prop_key}\n   + #{file4_prop_value}\n",                 info.diffs[file4][:property_changed].body)    assert_equal(commit_info.revision, info.revision)    assert_equal(log, info.log)  end  def test_diff_path    log = "diff path"    ctx = make_context(log)    parent_dir = "parent_dir"    child_dir = "child_dir"    parent_dir_path = File.join(@wc_path, parent_dir)    child_dir_path = File.join(parent_dir_path, child_dir)    parent_dir_svn_path = parent_dir    child_dir_svn_path = [parent_dir, child_dir].join("/")    ctx.mkdir([parent_dir_path, child_dir_path])    file1 = "diff1.txt"    file2 = "diff2.txt"    file1_path = File.join(@wc_path, file1)    file2_path = File.join(child_dir_path, file2)    file1_svn_path = file1    file2_svn_path = [child_dir_svn_path, file2].join("/")    File.open(file1_path, "w") {|f| f.puts "new"}    File.open(file2_path, "w") {|f| f.puts "deep"}    ctx.add(file1_path)    ctx.add(file2_path)    commit_info = ctx.commit(@wc_path)        info = make_info(commit_info.revision)    assert_equal(2, info.diffs.size)    assert(info.diffs.has_key?(file1_svn_path))    assert(info.diffs.has_key?(file2_svn_path))    assert(info.diffs[file1_svn_path].has_key?(:added))    assert(info.diffs[file2_svn_path].has_key?(:added))    assert_equal(1, info.diffs[file1_svn_path][:added].added_line)    assert_equal(0, info.diffs[file1_svn_path][:added].deleted_line)    assert_equal(1, info.diffs[file2_svn_path][:added].added_line)    assert_equal(0, info.diffs[file2_svn_path][:added].deleted_line)    file3 = "diff3.txt"    file4 = "diff4.txt"    file3_path = File.join(parent_dir_path, file3)    file4_path = File.join(child_dir_path, file4)    file3_svn_path = [parent_dir_svn_path, file3].join("/")    file4_svn_path = [child_dir_svn_path, file4].join("/")        ctx.mv(file2_path, file3_path)    ctx.mv(file1_path, file4_path)    commit_info = ctx.commit(@wc_path)        info = make_info(commit_info.revision)    assert_equal([                   file1_svn_path,                   file2_svn_path,                   file3_svn_path,                   file4_svn_path,                 ].sort,                 info.diffs.keys.sort)    assert(info.diffs[file1_svn_path].has_key?(:deleted))    assert(info.diffs[file2_svn_path].has_key?(:deleted))    assert(info.diffs[file3_svn_path].has_key?(:copied))    assert(info.diffs[file4_svn_path].has_key?(:copied))  end    def test_sha256    log = "sha256"    ctx = make_context(log)        file1 = "diff1.txt"    file2 = "diff2.txt"    file3 = "diff3.txt"    file1_path = File.join(@wc_path, "diff1.txt")    file2_path = File.join(@wc_path, "diff2.txt")    file3_path = File.join(@wc_path, "diff3.txt")    file1_content = file1    file2_content = file2    file3_content = file3    all_content = [file1, file2, file3].sort.join("")    File.open(file1_path, "w") {|f| f.print file1_content}    File.open(file2_path, "w") {|f| f.print file2_content}    File.open(file3_path, "w") {|f| f.print file3_content}    ctx.add(file1_path)    ctx.add(file2_path)    ctx.add(file3_path)        commit_info = ctx.commit(@wc_path)    info = make_info(commit_info.revision)    assert_equal(3, info.sha256.size)    assert_equal(Digest::SHA256.hexdigest(file1_content),                 info.sha256[file1][:sha256])    assert_equal(Digest::SHA256.hexdigest(file2_content),                 info.sha256[file2][:sha256])    assert_equal(Digest::SHA256.hexdigest(file3_content),                 info.sha256[file3][:sha256])    assert_equal(Digest::SHA256.hexdigest(all_content),                 info.entire_sha256)    assert_equal(commit_info.revision, info.revision)    assert_equal(log, info.log)  end    def make_info(rev=nil)    Svn::Info.new(@repos_path, rev || @fs.youngest_rev)  endend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -