Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/bindings/swig/ruby/test/test_client.rb view on Meta::CPAN
ctx.propset(Svn::Core::PROP_IGNORE, file, dir_path)
ctx.commit(@wc_path)
File.open(path, "w") {|f| f.print(src)}
ctx.add(dir_path, true, true, false)
ctx.commit(@wc_path)
assert_raise(Svn::Error::FS_NOT_FOUND) do
ctx.cat(uri)
end
ctx.add(dir_path, true, true, true)
ctx.commit(@wc_path)
assert_equal(src, ctx.cat(uri))
end
end
def test_mkdir
log = "sample log"
dir = "dir"
deep_dir = ["d", "e", "e", "p"]
dir2 = "dir2"
dir_uri = "#{@repos_uri}/#{dir}"
deep_dir_uri = "#{@repos_uri}/#{deep_dir.join('/')}"
dir2_uri = "#{@repos_uri}/#{dir2}"
dir_path = File.join(@wc_path, dir)
deep_dir_path = File.join(@wc_path, *deep_dir)
dir2_path = File.join(@wc_path, dir2)
make_context(log) do |ctx|
assert(!File.exist?(dir_path))
ctx.mkdir(dir_path)
assert(File.exist?(dir_path))
assert_raises(Svn::Error::EntryExists) do
ctx.add(dir_path)
end
old_rev = ctx.commit(@wc_path).revision
new_rev = ctx.mkdir(dir2_uri).revision
assert_equal(old_rev + 1, new_rev)
assert_raises(Svn::Error::FsAlreadyExists) do
ctx.mkdir(dir2_uri)
end
assert(!File.exist?(dir2_path))
ctx.update(@wc_path)
assert(File.exist?(dir2_path))
assert_raises(Svn::Error::SvnError) do
ctx.mkdir(deep_dir_path)
end
end
end
def assert_mkdir_with_multiple_paths
log = "sample log"
dir = "dir"
dir2 = "dir2"
dirs = [dir, dir2]
dirs_path = dirs.collect {|d| Pathname.new(@wc_path) + d}
dirs_full_path = dirs_path.collect {|path| path.expand_path}
make_context(log) do |ctx|
infos = []
ctx.set_notify_func do |notify|
infos << [notify.path, notify]
end
assert_equal([false, false], dirs_path.collect {|path| path.exist?})
yield(ctx, dirs_path.collect {|path| path.to_s})
assert_equal(dirs_path.collect {|path| path.to_s}.sort,
infos.collect{|path, notify| path}.sort)
assert_equal([true] * dirs_path.size,
infos.collect{|path, notify| notify.add?})
assert_equal([true, true], dirs_path.collect {|path| path.exist?})
infos.clear
ctx.commit(@wc_path)
assert_equal(dirs_full_path.collect {|path| path.to_s}.sort,
infos.collect{|path, notify| path}.sort)
assert_equal([true] * dirs_path.size,
infos.collect{|path, notify| notify.commit_added?})
end
end
def test_mkdir_with_multiple_paths
assert_mkdir_with_multiple_paths do |ctx, dirs|
ctx.mkdir(*dirs)
end
end
def test_mkdir_with_multiple_paths_as_array
assert_mkdir_with_multiple_paths do |ctx, dirs|
ctx.mkdir(dirs)
end
end
def test_mkdir_p
log = "sample log"
dir = "parent"
child_dir = "parent/child"
dir_path = Pathname.new(@wc_path) + dir
child_dir_path = dir_path + "child"
full_paths = [dir_path, child_dir_path].collect {|path| path.expand_path}
make_context(log) do |ctx|
infos = []
ctx.set_notify_func do |notify|
infos << [notify.path, notify]
end
assert_equal([false, false], [dir_path.exist?, child_dir_path.exist?])
ctx.mkdir_p(child_dir_path.to_s)
assert_equal(full_paths.collect {|path| path.to_s}.sort,
infos.collect{|path, notify| path}.sort)
assert_equal([true, true],
infos.collect{|path, notify| notify.add?})
assert_equal([true, true], [dir_path.exist?, child_dir_path.exist?])
infos.clear
ctx.commit(@wc_path)
assert_equal(full_paths.collect {|path| path.to_s}.sort,
infos.collect{|path, notify| path}.sort)
assert_equal([true, true],
infos.collect{|path, notify| notify.commit_added?})
end
end
def test_delete
log = "sample log"
src = "sample source\n"
file = "file.txt"
dir = "dir"
path = File.join(@wc_path, file)
dir_path = File.join(@wc_path, dir)
make_context(log) do |ctx|
File.open(path, "w") {|f| f.print(src)}
ctx.add(path)
ctx.mkdir(dir_path)
ctx.commit(@wc_path)
ctx.delete([path, dir_path])
ctx.commit(@wc_path)
assert(!File.exist?(path))
assert(!File.exist?(dir_path))
File.open(path, "w") {|f| f.print(src)}
ctx.add(path)
ctx.commit(@wc_path)
File.open(path, "w") {|f| f.print(src * 2)}
assert_raises(Svn::Error::ClientModified) do
ctx.delete(path)
end
assert_nothing_raised do
ctx.delete(path, true)
ctx.commit(@wc_path)
end
assert(!File.exist?(path))
end
src/subversion/subversion/bindings/swig/ruby/test/test_client.rb view on Meta::CPAN
end
ctx.relocate(@wc_path, @repos_uri, @repos_svnserve_uri)
make_context(log) do |ctx|
assert_raises(Svn::Error::AuthnNoProvider) do
ctx.cat(path)
end
end
end
end
def test_resolved
log = "sample log"
file = "sample.txt"
dir = "dir"
src1 = "before\n"
src2 = "after\n"
dir_path = File.join(@wc_path, dir)
path = File.join(dir_path, file)
make_context(log) do |ctx|
ctx.mkdir(dir_path)
File.open(path, "w") {}
ctx.add(path)
rev1 = ctx.ci(@wc_path).revision
File.open(path, "w") {|f| f.print(src1)}
rev2 = ctx.ci(@wc_path).revision
ctx.up(@wc_path, rev1)
File.open(path, "w") {|f| f.print(src2)}
ctx.up(@wc_path)
assert_raises(Svn::Error::WcFoundConflict) do
ctx.ci(@wc_path)
end
ctx.resolved(dir_path, false)
assert_raises(Svn::Error::WcFoundConflict) do
ctx.ci(@wc_path)
end
ctx.resolved(dir_path)
info = nil
assert_nothing_raised do
info = ctx.ci(@wc_path)
end
assert_not_nil(info)
assert_equal(rev2 + 1, info.revision)
end
end
def test_copy
log = "sample log"
src = "source\n"
file1 = "sample1.txt"
file2 = "sample2.txt"
path1 = Pathname.new(@wc_path) + file1
path2 = Pathname.new(@wc_path) + file2
full_path2 = path2.expand_path
make_context(log) do |ctx|
File.open(path1, "w") {|f| f.print(src)}
ctx.add(path1.to_s)
ctx.ci(@wc_path)
ctx.cp(path1.to_s, path2.to_s)
infos = []
ctx.set_notify_func do |notify|
infos << [notify.path, notify]
end
ctx.ci(@wc_path)
assert_equal([full_path2.to_s].sort,
infos.collect{|path, notify| path}.sort)
path2_notify = infos.assoc(full_path2.to_s)[1]
assert(path2_notify.commit_added?)
assert_equal(File.open(path1) {|f| f.read},
File.open(path2) {|f| f.read})
end
end
def test_move
log = "sample log"
src = "source\n"
file1 = "sample1.txt"
file2 = "sample2.txt"
path1 = File.join(@wc_path, file1)
path2 = File.join(@wc_path, file2)
make_context(log) do |ctx|
File.open(path1, "w") {|f| f.print(src)}
ctx.add(path1)
ctx.ci(@wc_path)
ctx.mv(path1, path2)
infos = []
ctx.set_notify_func do |notify|
infos << [notify.path, notify]
end
ctx.ci(@wc_path)
assert_equal([path1, path2].sort.collect{|p|File.expand_path(p)},
infos.collect{|path, notify| path}.sort)
path1_notify = infos.assoc(File.expand_path(path1))[1]
assert(path1_notify.commit_deleted?)
path2_notify = infos.assoc(File.expand_path(path2))[1]
assert(path2_notify.commit_added?)
assert_equal(src, File.open(path2) {|f| f.read})
end
end
def test_move_force
log = "sample log"
src1 = "source1\n"
src2 = "source2\n"
file1 = "sample1.txt"
file2 = "sample2.txt"
path1 = File.join(@wc_path, file1)
path2 = File.join(@wc_path, file2)
make_context(log) do |ctx|
File.open(path1, "w") {|f| f.print(src1)}
ctx.add(path1)
ctx.ci(@wc_path)
File.open(path1, "w") {|f| f.print(src2)}
assert_nothing_raised do
ctx.mv(path1, path2)
end
ctx.revert([path1, path2])
File.open(path1, "w") {|f| f.print(src2)}
assert_nothing_raised do
ctx.mv_f(path1, path2)
end
notifies = []
ctx.set_notify_func do |notify|
notifies << notify
end
ctx.ci(@wc_path)
paths = notifies.collect do |notify|
notify.path
end
assert_equal([path1, path2, path2].sort.collect{|p|File.expand_path(p)},
paths.sort)
deleted_paths = notifies.find_all do |notify|
notify.commit_deleted?
end.collect do |notify|
notify.path
end
assert_equal([path1].sort.collect{|p|File.expand_path(p)},
deleted_paths.sort)
added_paths = notifies.find_all do |notify|
notify.commit_added?
end.collect do |notify|
notify.path
end
assert_equal([path2].sort.collect{|p|File.expand_path(p)},
added_paths.sort)
postfix_txdelta_paths = notifies.find_all do |notify|
notify.commit_postfix_txdelta?
end.collect do |notify|
notify.path
end
assert_equal([path2].sort.collect{|p|File.expand_path(p)},
postfix_txdelta_paths.sort)
assert_equal(src2, File.open(path2) {|f| f.read})
end
end
def test_prop
log = "sample log"
dir = "dir"
file = "sample.txt"
dir_path = File.join(@wc_path, dir)
dir_uri = "#{@repos_uri}/#{dir}"
path = File.join(dir_path, file)
uri = "#{dir_uri}/#{file}"
prop_name = "sample-prop"
prop_value = "sample value"
invalid_mime_type_prop_value = "image"
make_context(log) do |ctx|
ctx.mkdir(dir_path)
File.open(path, "w") {}
ctx.add(path)
ctx.commit(@wc_path)
assert_equal({}, ctx.prop_get(prop_name, path))
ctx.prop_set(prop_name, prop_value, path)
ctx.commit(@wc_path)
assert_equal({uri => prop_value}, ctx.pget(prop_name, path))
ctx.prop_del(prop_name, path)
ctx.commit(@wc_path)
assert_equal({}, ctx.pg(prop_name, path))
ctx.ps(prop_name, prop_value, path)
ctx.commit(@wc_path)
assert_equal({uri => prop_value}, ctx.pg(prop_name, path))
ctx.ps(prop_name, nil, path)
ctx.commit(@wc_path)
assert_equal({}, ctx.pg(prop_name, path))
ctx.up(@wc_path)
ctx.ps(prop_name, prop_value, dir_path)
ctx.ci(@wc_path)
assert_equal({
dir_uri => prop_value,
uri => prop_value,
},
ctx.pg(prop_name, dir_path))
ctx.up(@wc_path)
ctx.pdel(prop_name, dir_path, false)
ctx.ci(@wc_path)
assert_equal({uri => prop_value}, ctx.pg(prop_name, dir_path))
ctx.up(@wc_path)
ctx.pd(prop_name, dir_path)
ctx.ci(@wc_path)
src/subversion/subversion/bindings/swig/ruby/test/test_client.rb view on Meta::CPAN
recurse_and_depth_choices.each do |rd_for_prop|
recurse_and_depth_choices.each do |rd_for_depth|
expected = {}
expected_paths = expected_props[rd_for_depth]
expected_paths &= expected_props[rd_for_prop]
expected_paths.each do |path|
expected[@greek.uri(path)] = rd_for_prop.to_s
end
assert_equal(expected,
ctx.prop_get(rd_for_prop.to_s, @greek.path(:b),
nil, nil, rd_for_depth),
"prop_get '#{rd_for_prop}' with Depth '#{rd_for_depth}'")
end
end
recurse_and_depth_choices.each do |rd|
props = ctx.prop_list(@greek.path(:b), nil, nil, rd)
assert_equal(expected_props[rd].collect {|path| @greek.uri(path)}.sort,
props.collect {|item| item.node_name}.sort,
"prop_list (node_name) with Depth '#{rd}'")
end
end
end
def test_cat
log = "sample log"
src1 = "source1\n"
src2 = "source2\n"
file = "sample.txt"
path = File.join(@wc_path, file)
File.open(path, "w") {|f| f.print(src1)}
make_context(log) do |ctx|
ctx.add(path)
commit_info = ctx.commit(@wc_path)
rev1 = commit_info.revision
assert_equal(normalize_line_break(src1), ctx.cat(path, rev1))
assert_equal(normalize_line_break(src1), ctx.cat(path))
File.open(path, "w") {|f| f.print(src2)}
commit_info = ctx.commit(@wc_path)
rev2 = commit_info.revision
assert_equal(normalize_line_break(src1), ctx.cat(path, rev1))
assert_equal(normalize_line_break(src2), ctx.cat(path, rev2))
assert_equal(normalize_line_break(src2), ctx.cat(path))
end
end
def test_lock
log = "sample log"
src = "source\n"
file = "sample.txt"
path = File.join(@wc_path, file)
absolute_path = File.expand_path(path)
File.open(path, "w") {|f| f.print(src)}
make_context(log) do |ctx|
ctx.add(path)
ctx.commit(@wc_path)
infos = []
ctx.set_notify_func do |notify|
infos << [notify.path, notify]
end
ctx.lock(path)
assert_equal([absolute_path], infos.collect{|_path, notify| _path})
file_notify = infos.assoc(absolute_path)[1]
assert(file_notify.locked?)
end
end
def test_unlock
log = "sample log"
src = "source\n"
file = "sample.txt"
path = File.join(@wc_path, file)
absolute_path = File.expand_path(path)
File.open(path, "w") {|f| f.print(src)}
make_context(log) do |ctx|
ctx.add(path)
ctx.commit(@wc_path)
ctx.lock(path)
infos = []
ctx.set_notify_func do |notify|
infos << [notify.path, notify]
end
ctx.unlock(path)
assert_equal([absolute_path], infos.collect{|_path, notify| _path})
file_notify = infos.assoc(absolute_path)[1]
assert(file_notify.unlocked?)
end
end
def test_info
log = "sample log"
make_context(log) do |ctx|
repos_base = File.basename(@repos_path)
infos = []
ctx.info(@wc_path) do |path, info|
infos << [path, info]
end
assert_equal([repos_base],
infos.collect{|path, info| path})
top_info = infos.assoc(repos_base)[1]
assert_equal(@repos_uri, top_info.url)
end
end
def test_info_with_depth
setup_greek_tree
log = "sample log"
make_context(log) do |ctx|
recurse_and_depth_choices.each do |rd|
ctx.info(@greek.path(:mu),nil,nil,rd) do |path, info|
assert_equal @greek.uri(:mu), info.URL
end
end
expected_info_by_depth = {
true => [:beta, :b, :lambda, :e, :f, :alpha],
false => [:b],
'empty' => [:b],
'files' => [:b, :lambda],
'immediates' => [:b, :lambda, :e, :f],
'infinity' => [:beta, :b, :lambda, :e, :f, :alpha],
}
recurse_and_depth_choices.each do |rd|
urls = []
src/subversion/subversion/bindings/swig/ruby/test/test_client.rb view on Meta::CPAN
assert_raise(Svn::Error::Cancelled) do
ctx.commit(@wc_path)
end
end
end
def test_set_config
log = "sample log"
make_context(log) do |ctx|
options = {
"groups" => {"collabnet" => "svn.collab.net"},
"collabnet" => {
"http-proxy-host" => "proxy",
"http-proxy-port" => "8080",
},
}
servers_config_file = File.join(@config_path,
Svn::Core::CONFIG_CATEGORY_SERVERS)
File.open(servers_config_file, "w") do |file|
options.each do |section, values|
file.puts("[#{section}]")
values.each do |key, value|
file.puts("#{key} = #{value}")
end
end
end
config = Svn::Core::Config.config(@config_path)
assert_equal(options, config[Svn::Core::CONFIG_CATEGORY_SERVERS].to_hash)
ctx.config = config
assert_equal(options,
ctx.config[Svn::Core::CONFIG_CATEGORY_SERVERS].to_hash)
end
end
def test_context_mimetypes_map
Svn::Client::Context.new do |context|
assert_nil(context.mimetypes_map)
context.mimetypes_map = {"txt" => "text/plain"}
assert_equal({"txt" => "text/plain"}, context.mimetypes_map)
end
end
def assert_changelists
log = "sample log"
file1 = "hello1.txt"
file2 = "hello2.txt"
src = "Hello"
changelist1 = "XXX"
changelist2 = "YYY"
path1 = File.join(@wc_path, file1)
path2 = File.join(@wc_path, file2)
make_context(log) do |ctx|
File.open(path1, "w") {|f| f.print(src)}
File.open(path2, "w") {|f| f.print(src)}
ctx.add(path1)
ctx.add(path2)
ctx.commit(@wc_path)
assert_equal({}, yield(ctx, changelist1))
assert_equal({nil=>[@wc_path,path1,path2].map{|f| File.expand_path(f)}}, yield(ctx, nil))
assert_equal({}, yield(ctx, []))
assert_equal({}, yield(ctx, [changelist1]))
assert_equal({}, yield(ctx, [changelist2]))
ctx.add_to_changelist(changelist1, path1)
assert_equal({changelist1=>[path1].map{|f| File.expand_path(f)}}, yield(ctx, changelist1))
assert_equal({changelist1=>[path1].map{|f| File.expand_path(f)},nil=>[@wc_path,path2].map{|f| File.expand_path(f)}}, yield(ctx, nil))
assert_equal({}, yield(ctx, []))
assert_equal({changelist1=>[path1].map{|f| File.expand_path(f)}}, yield(ctx, [changelist1]))
assert_equal({}, yield(ctx, [changelist2]))
assert_equal({}, yield(ctx, changelist2))
ctx.add_to_changelist(changelist2, [path1, path2])
assert_equal({changelist2=>[path1, path2].map{|f| File.expand_path(f)}}, yield(ctx, changelist2))
assert_equal({}, yield(ctx, changelist1))
ctx.add_to_changelist(changelist1, [path1, path2])
assert_equal({changelist1=>[path1, path2].map{|f| File.expand_path(f)}}, yield(ctx, changelist1))
assert_equal({}, yield(ctx, changelist2))
ctx.remove_from_changelists(changelist1, path1)
assert_equal({changelist1=>[path2].map{|f| File.expand_path(f)}}, yield(ctx, changelist1))
ctx.remove_from_changelists(changelist1, [path2])
assert_equal({}, yield(ctx, changelist1))
ctx.add_to_changelist(changelist1, path1)
ctx.add_to_changelist(changelist2, path2)
assert_equal({changelist1=>[path1].map{|f| File.expand_path(f)}}, yield(ctx, changelist1))
assert_equal({changelist2=>[path2].map{|f| File.expand_path(f)}}, yield(ctx, changelist2))
assert_equal({changelist1=>[path1].map{|f| File.expand_path(f)}}, yield(ctx, changelist1))
assert_equal({changelist2=>[path2].map{|f| File.expand_path(f)}}, yield(ctx, changelist2))
assert_equal({changelist1=>[path1].map{|f| File.expand_path(f)}}, yield(ctx, [changelist1]))
assert_equal({changelist2=>[path2].map{|f| File.expand_path(f)}}, yield(ctx, [changelist2]))
assert_equal({changelist1=>[path1].map{|f| File.expand_path(f)},changelist2=>[path2].map{|f| File.expand_path(f)},nil=>[@wc_path].map{|f| File.expand_path(f)}},
yield(ctx, nil))
assert_equal({}, yield(ctx, []))
assert_equal({changelist1=>[path1].map{|f| File.expand_path(f)},changelist2=>[path2].map{|f| File.expand_path(f)}},
yield(ctx, [changelist1,changelist2]))
ctx.remove_from_changelists(nil, [path1, path2])
assert_equal({}, yield(ctx, changelist1))
assert_equal({}, yield(ctx, changelist2))
end
end
def test_changelists_get_without_block
assert_changelists do |ctx, changelist_name|
changelists = ctx.changelists(changelist_name, @wc_path)
changelists.each_value { |v| v.sort! }
changelists
end
end
def test_changelists_get_with_block
assert_changelists do |ctx, changelist_name|
changelists = Hash.new{|h,k| h[k]=[]}
ctx.changelists(changelist_name, @wc_path) do |path,cl_name|
changelists[cl_name] << path
end
changelists.each_value { |v| v.sort! }
changelists
end
end
def test_set_revision_by_date
log = "sample log"
file = "hello.txt"
src = "Hello"
src_after = "Hello World"
path = File.join(@wc_path, file)
uri = "#{@repos_uri}/#{file}"
make_context(log) do |ctx|
File.open(path, "w") {|f| f.print(src)}
ctx.add(path)
ctx.commit(@wc_path)
first_commit_time = Time.now
sleep(1)
File.open(path, "w") {|f| f.print(src_after)}
ctx.commit(@wc_path)
assert_equal(src, ctx.cat(uri, first_commit_time))
end
end
def assert_resolve(choice)
log = "sample log"
file = "sample.txt"
srcs = ["before\n","after\n"]
dir = "dir"
dir_path = File.join(@wc_path, dir)
path = File.join(dir_path, file)
make_context(log) do |ctx|
ctx.mkdir(dir_path)
( run in 0.618 second using v1.01-cache-2.11-cpan-5b529ec07f3 )