def test_status(self): repos_url = self.make_client("repos", "checkout") self.build_tree({"checkout/bar": "text"}) self.client_add('checkout/bar') adm = wc.WorkingCopy(None, "checkout") self.assertEqual(wc.STATUS_ADDED, adm.status('bar').status) self.client_commit("checkout", "foo") adm = wc.WorkingCopy(None, "checkout") self.assertEqual(wc.STATUS_NORMAL, adm.status('bar').status)
def test_add_recursive(self): self.build_tree({"dc/trunk/foo": b'bla', "dc/trunk": None}) self.client.add("dc/trunk") if getattr(wc, "WorkingCopy", None) is None: raise SkipTest( "subversion 1.7 API not supported for WorkingCopy yet") adm = wc.WorkingCopy(None, os.path.join(os.getcwd(), "dc")) e = adm.entry(os.path.join(os.getcwd(), "dc", "trunk")) self.assertEqual(e.kind, NODE_DIR) adm2 = wc.WorkingCopy(None, os.path.join(os.getcwd(), "dc", "trunk")) e = adm2.entry(os.path.join(os.getcwd(), "dc", "trunk", "foo")) self.assertEqual(e.kind, NODE_FILE) self.assertEqual(e.revision, 0)
def test_entry(self): repos_url = self.make_client("repos", "checkout") self.build_tree({"checkout/bar": "\x00\x01"}) self.client_add('checkout/bar') adm = wc.WorkingCopy(None, "checkout") entry = adm.entry("checkout/bar") self.assertEqual("bar", entry.name) self.assertEqual(NODE_FILE, entry.kind) self.assertEqual(0, entry.revision) self.client_commit("checkout", "msg") adm = wc.WorkingCopy(None, "checkout") entry = adm.entry("checkout/bar") self.assertEqual("bar", entry.name) self.assertEqual(NODE_FILE, entry.kind) self.assertEqual(1, entry.revision)
def test_is_wc_root(self): repos_url = self.make_client("repos", ".") self.build_tree({"bar": None}) self.client_add('bar') adm = wc.WorkingCopy(None, ".") self.assertTrue(adm.is_wc_root(self.test_dir)) self.assertFalse(adm.is_wc_root(os.path.join(self.test_dir, "bar")))
def test_remove_from_revision_control(self): repos_url = self.make_client("repos", "checkout") self.build_tree({"checkout/bar": "\x00\x01"}) self.client_add('checkout/bar') adm = wc.WorkingCopy(None, "checkout", True) adm.remove_from_revision_control("bar") self.assertTrue(os.path.exists("checkout/bar"))
def test_committed_queue(self): if getattr(wc, "CommittedQueue", None) is None: raise SkipTest("CommittedQueue not available") cq = wc.CommittedQueue() repos_url = self.make_client("repos", "checkout") adm = wc.WorkingCopy(None, "checkout", True) adm.process_committed_queue(cq, 1, "2010-05-31T08:49:22.430000Z", "jelmer")
def test_mark_missing_deleted(self): repos_url = self.make_client("repos", "checkout") self.build_tree({"checkout/bar": "\x00\x01"}) self.client_add('checkout/bar') adm = wc.WorkingCopy(None, "checkout", True) os.remove("checkout/bar") adm.mark_missing_deleted("checkout/bar") self.assertFalse(os.path.exists("checkout/bar"))
def test_get_ancestry(self): repos_url = self.make_client("repos", "checkout") self.build_tree({"checkout/bar": "\x00\x01"}) self.client_add('checkout/bar') adm = wc.WorkingCopy(None, "checkout") path = os.path.join(self.test_dir, "checkout/bar") self.assertEqual(("%s/bar" % repos_url, 0), adm.get_ancestry("checkout/bar")) adm.close()
def test_has_binary_prop(self): repos_url = self.make_client("repos", "checkout") self.build_tree({"checkout/bar": "\x00\x01"}) self.client_add('checkout/bar') adm = wc.WorkingCopy(None, "checkout") path = os.path.join(self.test_dir, "checkout/bar") self.assertFalse(adm.has_binary_prop(path)) adm.close()
def test_prop_set(self): repos_url = self.make_client("repos", "checkout") self.build_tree({"checkout/bar": "file"}) self.client_add('checkout/bar') adm = wc.WorkingCopy(None, "checkout", True) adm.prop_set("aprop", "avalue", "checkout/bar") self.assertEqual(adm.prop_get("aprop", "checkout/bar"), "avalue") adm.prop_set("aprop", None, "checkout/bar") self.assertEqual(adm.prop_get("aprop", "checkout/bar"), None)
def test_probe_try(self): repos_url = self.make_client("repos", "checkout") self.build_tree({"checkout/bar": "la"}) self.client_add('checkout/bar') adm = wc.WorkingCopy(None, "checkout", True) try: self.assertIs(None, adm.probe_try(self.test_dir)) except subvertpy.SubversionException, (msg, num): if num != subvertpy.ERR_WC_NOT_WORKING_COPY: raise
def test_translated_stream(self): repos_url = self.make_client("repos", "checkout") self.build_tree({"checkout/bar": "My id: $Id$"}) self.client_add('checkout/bar') self.client_set_prop("checkout/bar", "svn:keywords", "Id\n") self.client_commit("checkout", "foo") adm = wc.WorkingCopy(None, "checkout", True) path = os.path.join(self.test_dir, "checkout/bar") stream = adm.translated_stream(path, path, wc.TRANSLATE_TO_NF) self.assertTrue(stream.read().startswith("My id: $Id: "))
def test_props_modified(self): repos_url = self.make_client("repos", "checkout") self.build_tree({"checkout/bar": "My id: $Id$"}) self.client_add('checkout/bar') self.client_set_prop("checkout/bar", "svn:keywords", "Id\n") self.client_commit("checkout", "foo") adm = wc.WorkingCopy(None, "checkout", True) self.assertFalse(adm.props_modified("checkout/bar")) adm.prop_set("aprop", "avalue", "checkout/bar") self.assertTrue(adm.props_modified("checkout/bar"))
def test_process_committed_queue(self): repos_url = self.make_client("repos", "checkout") self.build_tree({"checkout/bar": "la"}) self.client_add('checkout/bar') adm = wc.WorkingCopy(None, "checkout", True) cq = wc.CommittedQueue() cq.queue(os.path.join(self.test_dir, "checkout/bar"), adm) adm.process_committed_queue(cq, 1, "2010-05-31T08:49:22.430000Z", "jelmer") bar = adm.entry("checkout/bar") self.assertEqual("bar", bar.name) self.assertEqual(NODE_FILE, bar.kind) self.assertEqual(wc.SCHEDULE_ADD, bar.schedule)
def test_transmit_text_deltas(self): repos_url = self.make_client("repos", ".") self.build_tree({"bar": "blala"}) self.client_add('bar') adm = wc.WorkingCopy(None, ".", True) class Editor(object): """Editor""" def __init__(self): self._windows = [] def apply_textdelta(self, checksum): def window_handler(window): self._windows.append(window) return window_handler def close(self): pass editor = Editor() (tmpfile, digest) = adm.transmit_text_deltas("bar", True, editor) self.assertEqual(editor._windows, [(0L, 0, 5, 0, [(2, 0, 5)], 'blala'), None]) self.assertIsInstance(tmpfile, str) self.assertEqual(16, len(digest)) bar = adm.entry("bar") self.assertEqual(-1, bar.cmt_rev) self.assertEqual(0, bar.revision) cq = wc.CommittedQueue() cq.queue("bar", adm) adm.process_committed_queue(cq, 1, "2010-05-31T08:49:22.430000Z", "jelmer") bar = adm.entry("bar") self.assertEqual("bar", bar.name) self.assertEqual(NODE_FILE, bar.kind) self.assertEqual(wc.SCHEDULE_NORMAL, bar.schedule) self.assertIs(None, bar.checksum) self.assertEqual(1, bar.cmt_rev) self.assertEqual(1, bar.revision)
def test_entry_not_found(self): repos_url = self.make_client("repos", "checkout") adm = wc.WorkingCopy(None, "checkout") self.assertRaises(KeyError, adm.entry, "bar")
#!/usr/bin/python # Demonstrates how to do access the working tree using subvertpy import os from subvertpy import client, repos, wc from subvertpy.ra import Auth, get_username_provider # Create a repository repos.create("tmprepo") c = client.Client(auth=Auth([get_username_provider()])) c.checkout("file://" + os.getcwd() + "/tmprepo", "tmpco", "HEAD") w = wc.WorkingCopy(None, "tmpco") print(w) entry = w.entry("tmpco") print(entry.revision) print(entry.url)
def test_add_repos_file(self): repos_url = self.make_client("repos", "checkout") adm = wc.WorkingCopy(None, "checkout", True) adm.add_repos_file("checkout/bar", StringIO("basecontents"), StringIO("contents"), {}, {}) self.assertEqual("basecontents", wc.get_pristine_contents("checkout/bar").read())
def test_relocate(self): repos_url = self.make_client("repos", "checkout") adm = wc.WorkingCopy(None, "checkout", True) adm.relocate("checkout", "file://", "http://")
def test_maybe_set_repos_root(self): repos_url = self.make_client("repos", "checkout") adm = wc.WorkingCopy(None, "checkout") adm.maybe_set_repos_root(os.path.join(self.test_dir, "checkout"), repos_url) adm.close()