diff --git a/tests/osc b/tests/osc
new file mode 120000
index 00000000..b2faf3e0
--- /dev/null
+++ b/tests/osc
@@ -0,0 +1 @@
+../osc
\ No newline at end of file
diff --git a/tests/test_update.py b/tests/test_update.py
new file mode 100644
index 00000000..90d6b6bf
--- /dev/null
+++ b/tests/test_update.py
@@ -0,0 +1,256 @@
+import unittest
+import urllib2
+import osc.core
+import osc.oscerr
+import StringIO
+import shutil
+import tempfile
+import os
+import sys
+from xml.etree import cElementTree as ET
+FIXTURES_DIR = os.path.join(os.getcwd(), 'update_fixtures')
+EXPECTED_REQUESTS = []
+
+class RequestWrongOrder(Exception):
+ """issued if an unexpected request is issued to urllib2"""
+ def __init__(self, url, exp_url, method, exp_method):
+ Exception.__init__(self)
+ self.url = url
+ self.exp_url = exp_url
+ self.method = method
+ self.exp_method = exp_method
+
+ def __str__(self):
+ return '%s, %s, %s, %s' % (self.url, self.exp_url, self.method, self.exp_method)
+
+def get_response(url, **kwargs):
+ f = None
+ if not kwargs.has_key('text') and kwargs.has_key('file'):
+ f = StringIO.StringIO(open(os.path.join(FIXTURES_DIR, kwargs['file']), 'r').read())
+ elif kwargs.has_key('text') and not kwargs.has_key('file'):
+ f = StringIO.StringIO(kwargs['text'])
+ else:
+ raise RuntimeError('either specify text or file')
+ resp = urllib2.addinfourl(f, '', url)
+ resp.code = 200
+ resp.msg = ''
+ return resp
+
+def mock_GET(fullurl, **kwargs):
+ return get_response(fullurl, **kwargs)
+
+class MyHTTPHandler(urllib2.HTTPHandler):
+ def __init__(self, exp_requests):
+ self.exp_requests = exp_requests
+
+ def http_open(self, req):
+ r = self.exp_requests.pop(0)
+ if req.get_full_url() != r[1] and req.get_method() == r[0]:
+ raise RequestWrongOrder(req.get_full_url(), r[1], req.get_method(), r[0])
+ if req.get_method() == 'GET':
+ return mock_GET(r[1], **r[2])
+
+def GET(fullurl, **kwargs):
+ def decorate(test_method):
+ def wrapped_test_method(*args):
+ addExpectedRequest('GET', fullurl, **kwargs)
+ test_method(*args)
+ return wrapped_test_method
+ return decorate
+
+def addExpectedRequest(method, url, **kwargs):
+ global EXPECTED_REQUESTS
+ EXPECTED_REQUESTS.append((method, url, kwargs))
+
+class TestUpdate(unittest.TestCase):
+ def setUp(self):
+ osc.core.conf.get_config(override_conffile=os.path.join(FIXTURES_DIR, 'oscrc'))
+ self.tmpdir = tempfile.mkdtemp(prefix='osc_test')
+ shutil.copytree(os.path.join(FIXTURES_DIR, 'osctest'), os.path.join(self.tmpdir, 'osctest'))
+ global EXPECTED_REQUESTS
+ EXPECTED_REQUESTS = []
+ urllib2.install_opener(urllib2.build_opener(MyHTTPHandler(EXPECTED_REQUESTS)))
+ self.stdout = sys.stdout
+ sys.stdout = StringIO.StringIO()
+
+ def tearDown(self):
+ sys.stdout = self.stdout
+ try:
+ shutil.rmtree(self.tmpdir)
+ except:
+ pass
+
+ @GET('http://localhost/source/osctest/simple?rev=latest', file='testUpdateNoChanges_files')
+ @GET('http://localhost/source/osctest/simple/_meta', file='meta.xml')
+ def testUpdateNoChanges(self):
+ """update without any changes (the wc is the most recent version)"""
+ self.__change_to_pkg('simple')
+ osc.core.Package('.').update()
+ self.assertTrue(len(EXPECTED_REQUESTS) == 0)
+ self.assertEqual(sys.stdout.getvalue(), 'At revision 1.\n')
+
+ @GET('http://localhost/source/osctest/simple?rev=2', file='testUpdateNewFile_files')
+ @GET('http://localhost/source/osctest/simple/upstream_added?rev=2', file='testUpdateNewFile_upstream_added')
+ @GET('http://localhost/source/osctest/simple/_meta', file='meta.xml')
+ def testUpdateNewFile(self):
+ """a new file was added to the remote package"""
+ self.__change_to_pkg('simple')
+ osc.core.Package('.').update(rev=2)
+ self.assertTrue(len(EXPECTED_REQUESTS) == 0)
+ exp = 'A upstream_added\nAt revision 2.\n'
+ self.assertEqual(sys.stdout.getvalue(), exp)
+ self.__check_digests('testUpdateNewFile_files')
+
+ @GET('http://localhost/source/osctest/simple?rev=2', file='testUpdateNewFileLocalExists_files')
+ def testUpdateNewFileLocalExists(self):
+ """
+ a new file was added to the remote package but the same (unversioned)
+ file exists locally
+ """
+ self.__change_to_pkg('simple')
+ self.assertRaises(osc.oscerr.PackageFileConflict, osc.core.Package('.').update, rev=2)
+ self.assertTrue(len(EXPECTED_REQUESTS) == 0)
+
+ @GET('http://localhost/source/osctest/simple?rev=2', file='testUpdateDeletedFile_files')
+ @GET('http://localhost/source/osctest/simple/_meta', file='meta.xml')
+ def testUpdateDeletedFile(self):
+ """a file was deleted from the remote package"""
+ self.__change_to_pkg('simple')
+ osc.core.Package('.').update(rev=2)
+ self.assertTrue(len(EXPECTED_REQUESTS) == 0)
+ exp = 'D foo\nAt revision 2.\n'
+ self.assertEqual(sys.stdout.getvalue(), exp)
+ self.__check_digests('testUpdateDeletedFile_files')
+ self.assertFalse(os.path.exists('foo'))
+ self.assertFalse(os.path.exists(os.path.join('.osc', 'foo')))
+
+ @GET('http://localhost/source/osctest/simple?rev=2', file='testUpdateUpstreamModifiedFile_files')
+ @GET('http://localhost/source/osctest/simple/foo?rev=2', file='testUpdateUpstreamModifiedFile_foo')
+ @GET('http://localhost/source/osctest/simple/_meta', file='meta.xml')
+ def testUpdateUpstreamModifiedFile(self):
+ """a file was modified in the remote package (local file isn't modified)"""
+
+ self.__change_to_pkg('simple')
+ osc.core.Package('.').update(rev=2)
+ self.assertTrue(len(EXPECTED_REQUESTS) == 0)
+ exp = 'U foo\nAt revision 2.\n'
+ self.assertEqual(sys.stdout.getvalue(), exp)
+ self.__check_digests('testUpdateUpstreamModifiedFile_files')
+
+ @GET('http://localhost/source/osctest/conflict?rev=2', file='testUpdateConflict_files')
+ @GET('http://localhost/source/osctest/conflict/merge?rev=2', file='testUpdateConflict_merge')
+ @GET('http://localhost/source/osctest/conflict/_meta', file='meta.xml')
+ def testUpdateConflict(self):
+ """
+ a file was modified in the remote package (local file is also modified
+ and a merge isn't possible)
+ """
+ self.__change_to_pkg('conflict')
+ osc.core.Package('.').update(rev=2)
+ self.assertTrue(len(EXPECTED_REQUESTS) == 0)
+ exp = 'C merge\nAt revision 2.\n'
+ self.__check_digests('testUpdateConflict_files')
+ self.assertEqual(sys.stdout.getvalue(), exp)
+ self.assertEqual(open(os.path.join('.osc', '_in_conflict'), 'r').read(), 'merge\n')
+
+ @GET('http://localhost/source/osctest/already_in_conflict?rev=2', file='testUpdateAlreadyInConflict_files')
+ @GET('http://localhost/source/osctest/already_in_conflict/merge?rev=2', file='testUpdateAlreadyInConflict_merge')
+ @GET('http://localhost/source/osctest/already_in_conflict/_meta', file='meta.xml')
+ def testUpdateAlreadyInConflict(self):
+ """
+ a file was modified in the remote package (the local file is already in conflict)
+ """
+ self.__change_to_pkg('already_in_conflict')
+ osc.core.Package('.').update(rev=2)
+ self.assertTrue(len(EXPECTED_REQUESTS) == 0)
+ exp = 'skipping \'merge\' (this is due to conflicts)\nAt revision 2.\n'
+ self.assertEqual(sys.stdout.getvalue(), exp)
+ self.__check_digests('testUpdateAlreadyInConflict_files')
+
+ @GET('http://localhost/source/osctest/deleted?rev=2', file='testUpdateLocalDeletions_files')
+ @GET('http://localhost/source/osctest/deleted/foo?rev=2', file='testUpdateLocalDeletions_foo')
+ @GET('http://localhost/source/osctest/deleted/merge?rev=2', file='testUpdateLocalDeletions_merge')
+ @GET('http://localhost/source/osctest/deleted/_meta', file='meta.xml')
+ def testUpdateLocalDeletions(self):
+ """
+ the files 'foo' and 'merge' were modified in the remote package
+ and marked for deletion in the local wc. Additionally the file
+ 'merge' was modified in the wc before deletion so the local file
+ still exists (and a merge with the remote file is not possible)
+ """
+ self.__change_to_pkg('deleted')
+ osc.core.Package('.').update(rev=2)
+ self.assertTrue(len(EXPECTED_REQUESTS) == 0)
+ exp = 'U foo\nC merge\nAt revision 2.\n'
+ self.assertEqual(sys.stdout.getvalue(), exp)
+ self.assertEqual(open(os.path.join('.osc', '_to_be_deleted'), 'r').read(), 'foo\n')
+ self.assertEqual(open(os.path.join('.osc', '_in_conflict'), 'r').read(), 'merge\n')
+ self.assertEqual(open('foo', 'r').read(), open(os.path.join('.osc', 'foo'), 'r').read())
+ self.__check_digests('testUpdateLocalDeletions_files')
+
+ @GET('http://localhost/source/osctest/restore?rev=latest', file='testUpdateRestore_files')
+ @GET('http://localhost/source/osctest/restore/foo', file='testUpdateRestore_foo')
+ @GET('http://localhost/source/osctest/restore/_meta', file='meta.xml')
+ def testUpdateRestore(self):
+ """local file 'foo' was deleted with a non osc command and will be restored"""
+ self.__change_to_pkg('restore')
+ osc.core.Package('.').update()
+ self.assertTrue(len(EXPECTED_REQUESTS) == 0)
+ exp = 'Restored \'foo\'\nAt revision 1.\n'
+ self.assertEqual(sys.stdout.getvalue(), exp)
+ self.__check_digests('testUpdateRestore_files')
+
+ # tests to recover from an aborted/broken update
+
+ @GET('http://localhost/source/osctest/simple/foo?rev=2', file='testUpdateResume_foo')
+ @GET('http://localhost/source/osctest/simple/merge?rev=2', file='testUpdateResume_merge')
+ @GET('http://localhost/source/osctest/simple/_meta', file='meta.xml')
+ @GET('http://localhost/source/osctest/simple?rev=2', file='testUpdateResume_files')
+ @GET('http://localhost/source/osctest/simple/_meta', file='meta.xml')
+ def testUpdateResume(self):
+ """resume an aborted update"""
+ self.__change_to_pkg('resume')
+ osc.core.Package('.').update(rev=2)
+ self.assertTrue(len(EXPECTED_REQUESTS) == 0)
+ exp = 'resuming broken update...\nU foo\nU merge\nAt revision 2.\nAt revision 2.\n'
+ self.assertEqual(sys.stdout.getvalue(), exp)
+ self.assertFalse(os.path.exists(os.path.join('.osc', '_in_update')))
+ self.__check_digests('testUpdateResume_files')
+
+ @GET('http://localhost/source/osctest/simple/foo?rev=1', file='testUpdateResumeDeletedFile_foo')
+ @GET('http://localhost/source/osctest/simple/merge?rev=1', file='testUpdateResumeDeletedFile_merge')
+ @GET('http://localhost/source/osctest/simple/_meta', file='meta.xml')
+ @GET('http://localhost/source/osctest/simple?rev=1', file='testUpdateResumeDeletedFile_files')
+ @GET('http://localhost/source/osctest/simple/_meta', file='meta.xml')
+ def testUpdateResumeDeletedFile(self):
+ """
+ resume an aborted update (the file 'added' was already deleted in the first update
+ run). It's marked as deleted again (this is due to an expected issue with the update
+ code)
+ """
+ self.__change_to_pkg('resume_deleted')
+ osc.core.Package('.').update(rev=1)
+ self.assertTrue(len(EXPECTED_REQUESTS) == 0)
+ exp = 'resuming broken update...\nD added\nU foo\nU merge\nAt revision 1.\nAt revision 1.\n'
+ self.assertEqual(sys.stdout.getvalue(), exp)
+ self.assertFalse(os.path.exists(os.path.join('.osc', '_in_update')))
+ self.__check_digests('testUpdateResumeDeletedFile_files')
+
+ def __expected_requests(self, *args):
+ self.assertTrue(len(self.exp_requests) == 0)
+ for i in args:
+ self.exp_requests.append(i)
+
+ def __change_to_pkg(self, name):
+ os.chdir(os.path.join(self.tmpdir, 'osctest', name))
+
+ def __check_digests(self, fname):
+ fname = os.path.join(FIXTURES_DIR, fname)
+ self.assertEqual(open(os.path.join('.osc', '_files'), 'r').read(), open(fname, 'r').read())
+ root = ET.parse(fname).getroot()
+ for i in root.findall('entry'):
+ self.assertTrue(os.path.exists(os.path.join('.osc', i.get('name'))))
+ self.assertEqual(osc.core.dgst(os.path.join('.osc', i.get('name'))), i.get('md5'))
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/tests/update_fixtures/meta.xml b/tests/update_fixtures/meta.xml
new file mode 100644
index 00000000..abd3720b
--- /dev/null
+++ b/tests/update_fixtures/meta.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/oscrc b/tests/update_fixtures/oscrc
new file mode 100644
index 00000000..04b2b0ab
--- /dev/null
+++ b/tests/update_fixtures/oscrc
@@ -0,0 +1,104 @@
+[general]
+# URL to access API server, e.g. https://api.opensuse.org
+# you also need a section [https://api.opensuse.org] with the credentials
+apiurl = http://localhost
+# Downloaded packages are cached here. Must be writable by you.
+#packagecachedir = /var/tmp/osbuild-packagecache
+# Wrapper to call build as root (sudo, su -, ...)
+#su-wrapper = su -c
+# rootdir to setup the chroot environment
+# can contain %(repo)s, %(arch)s, %(project)s and %(package)s for replacement, e.g.
+# /srv/oscbuild/%(repo)s-%(arch)s or
+# /srv/oscbuild/%(repo)s-%(arch)s-%(project)s-%(package)s
+#build-root = /var/tmp/build-root
+# compile with N jobs (default: "getconf _NPROCESSORS_ONLN")
+#build-jobs = N
+# build-type to use - values can be (depending on the capabilities of the 'build' script)
+# empty - chroot build
+# kvm - kvm VM build (needs build-device, build-swap, build-memory)
+# xen - xen VM build (needs build-device, build-swap, build-memory)
+# experimental:
+# qemu - qemu VM build
+# lxc - lxc build
+#build-type =
+# build-device is the disk-image file to use as root for VM builds
+# e.g. /var/tmp/FILE.root
+#build-device = /var/tmp/FILE.root
+# build-swap is the disk-image to use as swap for VM builds
+# e.g. /var/tmp/FILE.swap
+#build-swap = /var/tmp/FILE.swap
+# build-memory is the amount of memory used in the VM
+# value in MB - e.g. 512
+#build-memory = 512
+# build-vmdisk-rootsize is the size of the disk-image used as root in a VM build
+# values in MB - e.g. 4096
+#build-vmdisk-rootsize = 4096
+# build-vmdisk-swapsize is the size of the disk-image used as swap in a VM build
+# values in MB - e.g. 1024
+#build-vmdisk-swapsize = 1024
+# Numeric uid:gid to assign to the "abuild" user in the build-root
+# or "caller" to use the current users uid:gid
+# This is convenient when sharing the buildroot with ordinary userids
+# on the host.
+# This should not be 0
+# build-uid =
+# extra packages to install when building packages locally (osc build)
+# this corresponds to osc build's -x option and can be overridden with that
+# -x '' can also be given on the command line to override this setting, or
+# you can have an empty setting here.
+#extra-pkgs = vim gdb strace
+# build platform is used if the platform argument is omitted to osc build
+#build_repository = openSUSE_Factory
+# default project for getpac or bco
+#getpac_default_project = openSUSE:Factory
+# alternate filesystem layout: have multiple subdirs, where colons were.
+#checkout_no_colon = 0
+# local files to ignore with status, addremove, ....
+#exclude_glob = .osc CVS .svn .* _linkerror *~ #*# *.orig *.bak *.changes.*
+# keep passwords in plaintext. If you see this comment, your osc
+# already uses the encrypted password, and only keeps them in plain text
+# for backwards compatibility. Default will change to 0 in future releases.
+# You can remove the plaintext password without harm, if you do not need
+# backwards compatibility.
+#plaintext_passwd = 1
+# limit the age of requests shown with 'osc req list'.
+# this is a default only, can be overridden by 'osc req list -D NNN'
+# Use 0 for unlimted.
+#request_list_days = 0
+# show info useful for debugging
+#debug = 1
+# show HTTP traffic useful for debugging
+#http_debug = 1
+# Skip signature verification of packages used for build.
+#no_verify = 1
+# jump into the debugger in case of errors
+#post_mortem = 1
+# print call traces in case of errors
+#traceback = 1
+# use KDE/Gnome/MacOS/Windows keyring for credentials if available
+#use_keyring = 1
+# check for unversioned/removed files before commit
+#check_filelist = 1
+# check for pending requests after executing an action (e.g. checkout, update, commit)
+#check_for_request_on_action = 0
+# what to do with the source package if the submitrequest has been accepted. If
+# nothing is specified the API default is used
+#submitrequest_on_accept_action = cleanup|update|noupdate
+#review requests interactively (default: off)
+#request_show_review = 1
+# Directory with executables to validate sources, esp before committing
+#source_validator_directory = /usr/lib/osc/source_validators
+
+[http://localhost]
+user = Admin
+pass = opensuse
+passx = QlpoOTFBWSZTWeTSblkAAAGBgAIBygAgADDACGNEHxaYXckU4UJDk0m5ZA==
+# set aliases for this apiurl
+# aliases = foo, bar
+# email used in .changes, unless the one from osc meta prj will be used
+# email =
+# additional headers to pass to a request, e.g. for special authentication
+#http_headers = Host: foofoobar,
+# User: mumblegack
+# Force using of keyring for this API
+#keyring = 1
diff --git a/tests/update_fixtures/osctest/.osc/_apiurl b/tests/update_fixtures/osctest/.osc/_apiurl
new file mode 100644
index 00000000..0afeace7
--- /dev/null
+++ b/tests/update_fixtures/osctest/.osc/_apiurl
@@ -0,0 +1 @@
+http://localhost
diff --git a/tests/update_fixtures/osctest/.osc/_packages b/tests/update_fixtures/osctest/.osc/_packages
new file mode 100644
index 00000000..04e56f00
--- /dev/null
+++ b/tests/update_fixtures/osctest/.osc/_packages
@@ -0,0 +1 @@
+
diff --git a/tests/update_fixtures/osctest/.osc/_project b/tests/update_fixtures/osctest/.osc/_project
new file mode 100644
index 00000000..b83ffd3c
--- /dev/null
+++ b/tests/update_fixtures/osctest/.osc/_project
@@ -0,0 +1 @@
+osctest
diff --git a/tests/update_fixtures/osctest/already_in_conflict/.osc/_apiurl b/tests/update_fixtures/osctest/already_in_conflict/.osc/_apiurl
new file mode 100644
index 00000000..0afeace7
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/.osc/_apiurl
@@ -0,0 +1 @@
+http://localhost
diff --git a/tests/update_fixtures/osctest/already_in_conflict/.osc/_files b/tests/update_fixtures/osctest/already_in_conflict/.osc/_files
new file mode 100644
index 00000000..2ad59544
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/.osc/_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/already_in_conflict/.osc/_in_conflict b/tests/update_fixtures/osctest/already_in_conflict/.osc/_in_conflict
new file mode 100644
index 00000000..a00af07a
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/.osc/_in_conflict
@@ -0,0 +1 @@
+merge
diff --git a/tests/update_fixtures/osctest/already_in_conflict/.osc/_meta b/tests/update_fixtures/osctest/already_in_conflict/.osc/_meta
new file mode 100644
index 00000000..0150d609
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/.osc/_meta
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/already_in_conflict/.osc/_osclib_version b/tests/update_fixtures/osctest/already_in_conflict/.osc/_osclib_version
new file mode 100644
index 00000000..d3827e75
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/.osc/_osclib_version
@@ -0,0 +1 @@
+1.0
diff --git a/tests/update_fixtures/osctest/already_in_conflict/.osc/_package b/tests/update_fixtures/osctest/already_in_conflict/.osc/_package
new file mode 100644
index 00000000..c2cae8d9
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/.osc/_package
@@ -0,0 +1 @@
+already_in_conflict
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/already_in_conflict/.osc/_project b/tests/update_fixtures/osctest/already_in_conflict/.osc/_project
new file mode 100644
index 00000000..cea3bc84
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/.osc/_project
@@ -0,0 +1 @@
+osctest
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/already_in_conflict/.osc/foo b/tests/update_fixtures/osctest/already_in_conflict/.osc/foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/.osc/foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/osctest/already_in_conflict/.osc/merge b/tests/update_fixtures/osctest/already_in_conflict/.osc/merge
new file mode 100644
index 00000000..0b4685d5
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/.osc/merge
@@ -0,0 +1,4 @@
+Is it
+possible to
+merge this file?
+I hope so...
diff --git a/tests/update_fixtures/osctest/already_in_conflict/.osc/nochange b/tests/update_fixtures/osctest/already_in_conflict/.osc/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/.osc/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/already_in_conflict/foo b/tests/update_fixtures/osctest/already_in_conflict/foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/osctest/already_in_conflict/merge b/tests/update_fixtures/osctest/already_in_conflict/merge
new file mode 100644
index 00000000..7469d510
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/merge
@@ -0,0 +1,2 @@
+Is it
+I hope so...
diff --git a/tests/update_fixtures/osctest/already_in_conflict/nochange b/tests/update_fixtures/osctest/already_in_conflict/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/already_in_conflict/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/conflict/.osc/_apiurl b/tests/update_fixtures/osctest/conflict/.osc/_apiurl
new file mode 100644
index 00000000..0afeace7
--- /dev/null
+++ b/tests/update_fixtures/osctest/conflict/.osc/_apiurl
@@ -0,0 +1 @@
+http://localhost
diff --git a/tests/update_fixtures/osctest/conflict/.osc/_files b/tests/update_fixtures/osctest/conflict/.osc/_files
new file mode 100644
index 00000000..a67ff429
--- /dev/null
+++ b/tests/update_fixtures/osctest/conflict/.osc/_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/conflict/.osc/_osclib_version b/tests/update_fixtures/osctest/conflict/.osc/_osclib_version
new file mode 100644
index 00000000..d3827e75
--- /dev/null
+++ b/tests/update_fixtures/osctest/conflict/.osc/_osclib_version
@@ -0,0 +1 @@
+1.0
diff --git a/tests/update_fixtures/osctest/conflict/.osc/_package b/tests/update_fixtures/osctest/conflict/.osc/_package
new file mode 100644
index 00000000..783a0ef7
--- /dev/null
+++ b/tests/update_fixtures/osctest/conflict/.osc/_package
@@ -0,0 +1 @@
+conflict
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/conflict/.osc/_project b/tests/update_fixtures/osctest/conflict/.osc/_project
new file mode 100644
index 00000000..cea3bc84
--- /dev/null
+++ b/tests/update_fixtures/osctest/conflict/.osc/_project
@@ -0,0 +1 @@
+osctest
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/conflict/.osc/foo b/tests/update_fixtures/osctest/conflict/.osc/foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/osctest/conflict/.osc/foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/osctest/conflict/.osc/merge b/tests/update_fixtures/osctest/conflict/.osc/merge
new file mode 100644
index 00000000..0b4685d5
--- /dev/null
+++ b/tests/update_fixtures/osctest/conflict/.osc/merge
@@ -0,0 +1,4 @@
+Is it
+possible to
+merge this file?
+I hope so...
diff --git a/tests/update_fixtures/osctest/conflict/.osc/nochange b/tests/update_fixtures/osctest/conflict/.osc/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/conflict/.osc/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/conflict/foo b/tests/update_fixtures/osctest/conflict/foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/osctest/conflict/foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/osctest/conflict/merge b/tests/update_fixtures/osctest/conflict/merge
new file mode 100644
index 00000000..f4ff1649
--- /dev/null
+++ b/tests/update_fixtures/osctest/conflict/merge
@@ -0,0 +1,4 @@
+Is it possible
+to
+merge this file?
+I hope so...
diff --git a/tests/update_fixtures/osctest/conflict/nochange b/tests/update_fixtures/osctest/conflict/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/conflict/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/deleted/.osc/_apiurl b/tests/update_fixtures/osctest/deleted/.osc/_apiurl
new file mode 100644
index 00000000..0afeace7
--- /dev/null
+++ b/tests/update_fixtures/osctest/deleted/.osc/_apiurl
@@ -0,0 +1 @@
+http://localhost
diff --git a/tests/update_fixtures/osctest/deleted/.osc/_files b/tests/update_fixtures/osctest/deleted/.osc/_files
new file mode 100644
index 00000000..d9a54512
--- /dev/null
+++ b/tests/update_fixtures/osctest/deleted/.osc/_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/deleted/.osc/_osclib_version b/tests/update_fixtures/osctest/deleted/.osc/_osclib_version
new file mode 100644
index 00000000..d3827e75
--- /dev/null
+++ b/tests/update_fixtures/osctest/deleted/.osc/_osclib_version
@@ -0,0 +1 @@
+1.0
diff --git a/tests/update_fixtures/osctest/deleted/.osc/_package b/tests/update_fixtures/osctest/deleted/.osc/_package
new file mode 100644
index 00000000..3c22137e
--- /dev/null
+++ b/tests/update_fixtures/osctest/deleted/.osc/_package
@@ -0,0 +1 @@
+deleted
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/deleted/.osc/_project b/tests/update_fixtures/osctest/deleted/.osc/_project
new file mode 100644
index 00000000..cea3bc84
--- /dev/null
+++ b/tests/update_fixtures/osctest/deleted/.osc/_project
@@ -0,0 +1 @@
+osctest
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/deleted/.osc/_to_be_deleted b/tests/update_fixtures/osctest/deleted/.osc/_to_be_deleted
new file mode 100644
index 00000000..fa7a1f7d
--- /dev/null
+++ b/tests/update_fixtures/osctest/deleted/.osc/_to_be_deleted
@@ -0,0 +1,2 @@
+merge
+foo
diff --git a/tests/update_fixtures/osctest/deleted/.osc/foo b/tests/update_fixtures/osctest/deleted/.osc/foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/osctest/deleted/.osc/foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/osctest/deleted/.osc/merge b/tests/update_fixtures/osctest/deleted/.osc/merge
new file mode 100644
index 00000000..0b4685d5
--- /dev/null
+++ b/tests/update_fixtures/osctest/deleted/.osc/merge
@@ -0,0 +1,4 @@
+Is it
+possible to
+merge this file?
+I hope so...
diff --git a/tests/update_fixtures/osctest/deleted/.osc/nochange b/tests/update_fixtures/osctest/deleted/.osc/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/deleted/.osc/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/deleted/merge b/tests/update_fixtures/osctest/deleted/merge
new file mode 100644
index 00000000..c229519b
--- /dev/null
+++ b/tests/update_fixtures/osctest/deleted/merge
@@ -0,0 +1,3 @@
+Is it possible to,
+merge this file?
+I hope so...
diff --git a/tests/update_fixtures/osctest/deleted/nochange b/tests/update_fixtures/osctest/deleted/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/deleted/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/restore/.osc/_apiurl b/tests/update_fixtures/osctest/restore/.osc/_apiurl
new file mode 100644
index 00000000..0afeace7
--- /dev/null
+++ b/tests/update_fixtures/osctest/restore/.osc/_apiurl
@@ -0,0 +1 @@
+http://localhost
diff --git a/tests/update_fixtures/osctest/restore/.osc/_files b/tests/update_fixtures/osctest/restore/.osc/_files
new file mode 100644
index 00000000..a6b0cc63
--- /dev/null
+++ b/tests/update_fixtures/osctest/restore/.osc/_files
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/tests/update_fixtures/osctest/restore/.osc/_osclib_version b/tests/update_fixtures/osctest/restore/.osc/_osclib_version
new file mode 100644
index 00000000..d3827e75
--- /dev/null
+++ b/tests/update_fixtures/osctest/restore/.osc/_osclib_version
@@ -0,0 +1 @@
+1.0
diff --git a/tests/update_fixtures/osctest/restore/.osc/_package b/tests/update_fixtures/osctest/restore/.osc/_package
new file mode 100644
index 00000000..a9db91d1
--- /dev/null
+++ b/tests/update_fixtures/osctest/restore/.osc/_package
@@ -0,0 +1 @@
+restore
diff --git a/tests/update_fixtures/osctest/restore/.osc/_project b/tests/update_fixtures/osctest/restore/.osc/_project
new file mode 100644
index 00000000..cea3bc84
--- /dev/null
+++ b/tests/update_fixtures/osctest/restore/.osc/_project
@@ -0,0 +1 @@
+osctest
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/restore/.osc/foo b/tests/update_fixtures/osctest/restore/.osc/foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/osctest/restore/.osc/foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/osctest/restore/.osc/merge b/tests/update_fixtures/osctest/restore/.osc/merge
new file mode 100644
index 00000000..0b4685d5
--- /dev/null
+++ b/tests/update_fixtures/osctest/restore/.osc/merge
@@ -0,0 +1,4 @@
+Is it
+possible to
+merge this file?
+I hope so...
diff --git a/tests/update_fixtures/osctest/restore/.osc/nochange b/tests/update_fixtures/osctest/restore/.osc/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/restore/.osc/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/restore/exists b/tests/update_fixtures/osctest/restore/exists
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/update_fixtures/osctest/restore/merge b/tests/update_fixtures/osctest/restore/merge
new file mode 100644
index 00000000..0b4685d5
--- /dev/null
+++ b/tests/update_fixtures/osctest/restore/merge
@@ -0,0 +1,4 @@
+Is it
+possible to
+merge this file?
+I hope so...
diff --git a/tests/update_fixtures/osctest/restore/nochange b/tests/update_fixtures/osctest/restore/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/restore/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/resume/.osc/_apiurl b/tests/update_fixtures/osctest/resume/.osc/_apiurl
new file mode 100644
index 00000000..0afeace7
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/.osc/_apiurl
@@ -0,0 +1 @@
+http://localhost
diff --git a/tests/update_fixtures/osctest/resume/.osc/_files b/tests/update_fixtures/osctest/resume/.osc/_files
new file mode 100644
index 00000000..f0dac1f4
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/.osc/_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/resume/.osc/_in_update/_files b/tests/update_fixtures/osctest/resume/.osc/_in_update/_files
new file mode 100644
index 00000000..0b0a0c88
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/.osc/_in_update/_files
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/tests/update_fixtures/osctest/resume/.osc/_in_update/foo b/tests/update_fixtures/osctest/resume/.osc/_in_update/foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/.osc/_in_update/foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/osctest/resume/.osc/_meta b/tests/update_fixtures/osctest/resume/.osc/_meta
new file mode 100644
index 00000000..abd3720b
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/.osc/_meta
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/resume/.osc/_osclib_version b/tests/update_fixtures/osctest/resume/.osc/_osclib_version
new file mode 100644
index 00000000..d3827e75
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/.osc/_osclib_version
@@ -0,0 +1 @@
+1.0
diff --git a/tests/update_fixtures/osctest/resume/.osc/_package b/tests/update_fixtures/osctest/resume/.osc/_package
new file mode 100644
index 00000000..8fd32466
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/.osc/_package
@@ -0,0 +1 @@
+simple
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/resume/.osc/_project b/tests/update_fixtures/osctest/resume/.osc/_project
new file mode 100644
index 00000000..cea3bc84
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/.osc/_project
@@ -0,0 +1 @@
+osctest
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/resume/.osc/added b/tests/update_fixtures/osctest/resume/.osc/added
new file mode 100644
index 00000000..0527e6bd
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/.osc/added
@@ -0,0 +1 @@
+This is a test
diff --git a/tests/update_fixtures/osctest/resume/.osc/foo b/tests/update_fixtures/osctest/resume/.osc/foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/.osc/foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/osctest/resume/.osc/merge b/tests/update_fixtures/osctest/resume/.osc/merge
new file mode 100644
index 00000000..0b4685d5
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/.osc/merge
@@ -0,0 +1,4 @@
+Is it
+possible to
+merge this file?
+I hope so...
diff --git a/tests/update_fixtures/osctest/resume/.osc/nochange b/tests/update_fixtures/osctest/resume/.osc/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/.osc/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/resume/added b/tests/update_fixtures/osctest/resume/added
new file mode 100644
index 00000000..0527e6bd
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/added
@@ -0,0 +1 @@
+This is a test
diff --git a/tests/update_fixtures/osctest/resume/exists b/tests/update_fixtures/osctest/resume/exists
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/update_fixtures/osctest/resume/foo b/tests/update_fixtures/osctest/resume/foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/osctest/resume/merge b/tests/update_fixtures/osctest/resume/merge
new file mode 100644
index 00000000..0b4685d5
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/merge
@@ -0,0 +1,4 @@
+Is it
+possible to
+merge this file?
+I hope so...
diff --git a/tests/update_fixtures/osctest/resume/nochange b/tests/update_fixtures/osctest/resume/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/resume_deleted/.osc/_apiurl b/tests/update_fixtures/osctest/resume_deleted/.osc/_apiurl
new file mode 100644
index 00000000..0afeace7
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/.osc/_apiurl
@@ -0,0 +1 @@
+http://localhost
diff --git a/tests/update_fixtures/osctest/resume_deleted/.osc/_files b/tests/update_fixtures/osctest/resume_deleted/.osc/_files
new file mode 100644
index 00000000..a2744729
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/.osc/_files
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/resume_deleted/.osc/_in_update/_files b/tests/update_fixtures/osctest/resume_deleted/.osc/_in_update/_files
new file mode 100644
index 00000000..f0dac1f4
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/.osc/_in_update/_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/resume_deleted/.osc/_in_update/foo b/tests/update_fixtures/osctest/resume_deleted/.osc/_in_update/foo
new file mode 100644
index 00000000..323fae03
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/.osc/_in_update/foo
@@ -0,0 +1 @@
+foobar
diff --git a/tests/update_fixtures/osctest/resume_deleted/.osc/_meta b/tests/update_fixtures/osctest/resume_deleted/.osc/_meta
new file mode 100644
index 00000000..abd3720b
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/.osc/_meta
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/resume_deleted/.osc/_osclib_version b/tests/update_fixtures/osctest/resume_deleted/.osc/_osclib_version
new file mode 100644
index 00000000..d3827e75
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/.osc/_osclib_version
@@ -0,0 +1 @@
+1.0
diff --git a/tests/update_fixtures/osctest/resume_deleted/.osc/_package b/tests/update_fixtures/osctest/resume_deleted/.osc/_package
new file mode 100644
index 00000000..8fd32466
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/.osc/_package
@@ -0,0 +1 @@
+simple
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/resume_deleted/.osc/_project b/tests/update_fixtures/osctest/resume_deleted/.osc/_project
new file mode 100644
index 00000000..cea3bc84
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/.osc/_project
@@ -0,0 +1 @@
+osctest
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/resume_deleted/.osc/foo b/tests/update_fixtures/osctest/resume_deleted/.osc/foo
new file mode 100644
index 00000000..323fae03
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/.osc/foo
@@ -0,0 +1 @@
+foobar
diff --git a/tests/update_fixtures/osctest/resume_deleted/.osc/merge b/tests/update_fixtures/osctest/resume_deleted/.osc/merge
new file mode 100644
index 00000000..2563d892
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/.osc/merge
@@ -0,0 +1,5 @@
+xxx
+xxx
+yyy
+zzz
+zzz
diff --git a/tests/update_fixtures/osctest/resume_deleted/.osc/nochange b/tests/update_fixtures/osctest/resume_deleted/.osc/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/.osc/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/resume_deleted/exists b/tests/update_fixtures/osctest/resume_deleted/exists
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/update_fixtures/osctest/resume_deleted/f b/tests/update_fixtures/osctest/resume_deleted/f
new file mode 100644
index 00000000..0527e6bd
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/f
@@ -0,0 +1 @@
+This is a test
diff --git a/tests/update_fixtures/osctest/resume_deleted/foo b/tests/update_fixtures/osctest/resume_deleted/foo
new file mode 100644
index 00000000..323fae03
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/foo
@@ -0,0 +1 @@
+foobar
diff --git a/tests/update_fixtures/osctest/resume_deleted/merge b/tests/update_fixtures/osctest/resume_deleted/merge
new file mode 100644
index 00000000..2563d892
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/merge
@@ -0,0 +1,5 @@
+xxx
+xxx
+yyy
+zzz
+zzz
diff --git a/tests/update_fixtures/osctest/resume_deleted/nochange b/tests/update_fixtures/osctest/resume_deleted/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/resume_deleted/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/simple/.osc/_apiurl b/tests/update_fixtures/osctest/simple/.osc/_apiurl
new file mode 100644
index 00000000..0afeace7
--- /dev/null
+++ b/tests/update_fixtures/osctest/simple/.osc/_apiurl
@@ -0,0 +1 @@
+http://localhost
diff --git a/tests/update_fixtures/osctest/simple/.osc/_files b/tests/update_fixtures/osctest/simple/.osc/_files
new file mode 100644
index 00000000..f0dac1f4
--- /dev/null
+++ b/tests/update_fixtures/osctest/simple/.osc/_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/simple/.osc/_osclib_version b/tests/update_fixtures/osctest/simple/.osc/_osclib_version
new file mode 100644
index 00000000..d3827e75
--- /dev/null
+++ b/tests/update_fixtures/osctest/simple/.osc/_osclib_version
@@ -0,0 +1 @@
+1.0
diff --git a/tests/update_fixtures/osctest/simple/.osc/_package b/tests/update_fixtures/osctest/simple/.osc/_package
new file mode 100644
index 00000000..8fd32466
--- /dev/null
+++ b/tests/update_fixtures/osctest/simple/.osc/_package
@@ -0,0 +1 @@
+simple
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/simple/.osc/_project b/tests/update_fixtures/osctest/simple/.osc/_project
new file mode 100644
index 00000000..cea3bc84
--- /dev/null
+++ b/tests/update_fixtures/osctest/simple/.osc/_project
@@ -0,0 +1 @@
+osctest
\ No newline at end of file
diff --git a/tests/update_fixtures/osctest/simple/.osc/foo b/tests/update_fixtures/osctest/simple/.osc/foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/osctest/simple/.osc/foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/osctest/simple/.osc/merge b/tests/update_fixtures/osctest/simple/.osc/merge
new file mode 100644
index 00000000..0b4685d5
--- /dev/null
+++ b/tests/update_fixtures/osctest/simple/.osc/merge
@@ -0,0 +1,4 @@
+Is it
+possible to
+merge this file?
+I hope so...
diff --git a/tests/update_fixtures/osctest/simple/.osc/nochange b/tests/update_fixtures/osctest/simple/.osc/nochange
new file mode 100644
index 00000000..0569b03f
--- /dev/null
+++ b/tests/update_fixtures/osctest/simple/.osc/nochange
@@ -0,0 +1 @@
+This file didn't change.
diff --git a/tests/update_fixtures/osctest/simple/exists b/tests/update_fixtures/osctest/simple/exists
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/update_fixtures/osctest/simple/foo b/tests/update_fixtures/osctest/simple/foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/osctest/simple/foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/osctest/simple/merge b/tests/update_fixtures/osctest/simple/merge
new file mode 100644
index 00000000..0b4685d5
--- /dev/null
+++ b/tests/update_fixtures/osctest/simple/merge
@@ -0,0 +1,4 @@
+Is it
+possible to
+merge this file?
+I hope so...
diff --git a/tests/update_fixtures/osctest/simple/nochange b/tests/update_fixtures/osctest/simple/nochange
new file mode 100644
index 00000000..3a48a293
--- /dev/null
+++ b/tests/update_fixtures/osctest/simple/nochange
@@ -0,0 +1,2 @@
+This file didn't change but
+is modified.
diff --git a/tests/update_fixtures/testUpdateAlreadyInConflict_files b/tests/update_fixtures/testUpdateAlreadyInConflict_files
new file mode 100644
index 00000000..a3784432
--- /dev/null
+++ b/tests/update_fixtures/testUpdateAlreadyInConflict_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/testUpdateAlreadyInConflict_merge b/tests/update_fixtures/testUpdateAlreadyInConflict_merge
new file mode 100644
index 00000000..323fae03
--- /dev/null
+++ b/tests/update_fixtures/testUpdateAlreadyInConflict_merge
@@ -0,0 +1 @@
+foobar
diff --git a/tests/update_fixtures/testUpdateConflict_files b/tests/update_fixtures/testUpdateConflict_files
new file mode 100644
index 00000000..860ea529
--- /dev/null
+++ b/tests/update_fixtures/testUpdateConflict_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/testUpdateConflict_merge b/tests/update_fixtures/testUpdateConflict_merge
new file mode 100644
index 00000000..f9f1e5a0
--- /dev/null
+++ b/tests/update_fixtures/testUpdateConflict_merge
@@ -0,0 +1,4 @@
+Is
+it possible to
+merge this file?
+We'll see.
diff --git a/tests/update_fixtures/testUpdateDeletedFile_files b/tests/update_fixtures/testUpdateDeletedFile_files
new file mode 100644
index 00000000..fe3326e6
--- /dev/null
+++ b/tests/update_fixtures/testUpdateDeletedFile_files
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/testUpdateLocalDeletions_files b/tests/update_fixtures/testUpdateLocalDeletions_files
new file mode 100644
index 00000000..16865323
--- /dev/null
+++ b/tests/update_fixtures/testUpdateLocalDeletions_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/testUpdateLocalDeletions_foo b/tests/update_fixtures/testUpdateLocalDeletions_foo
new file mode 100644
index 00000000..0319af9c
--- /dev/null
+++ b/tests/update_fixtures/testUpdateLocalDeletions_foo
@@ -0,0 +1,2 @@
+This is a simple test.
+And an update
diff --git a/tests/update_fixtures/testUpdateLocalDeletions_merge b/tests/update_fixtures/testUpdateLocalDeletions_merge
new file mode 100644
index 00000000..df2934de
--- /dev/null
+++ b/tests/update_fixtures/testUpdateLocalDeletions_merge
@@ -0,0 +1,4 @@
+Is
+it possible to
+merge this file?
+We'll see. Foo
diff --git a/tests/update_fixtures/testUpdateNewFileLocalExists_exists b/tests/update_fixtures/testUpdateNewFileLocalExists_exists
new file mode 100644
index 00000000..9ca11f86
--- /dev/null
+++ b/tests/update_fixtures/testUpdateNewFileLocalExists_exists
@@ -0,0 +1 @@
+exists
diff --git a/tests/update_fixtures/testUpdateNewFileLocalExists_files b/tests/update_fixtures/testUpdateNewFileLocalExists_files
new file mode 100644
index 00000000..1bea7620
--- /dev/null
+++ b/tests/update_fixtures/testUpdateNewFileLocalExists_files
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/testUpdateNewFile_files b/tests/update_fixtures/testUpdateNewFile_files
new file mode 100644
index 00000000..fadf3498
--- /dev/null
+++ b/tests/update_fixtures/testUpdateNewFile_files
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/testUpdateNewFile_upstream_added b/tests/update_fixtures/testUpdateNewFile_upstream_added
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/testUpdateNewFile_upstream_added
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/testUpdateNoChanges_files b/tests/update_fixtures/testUpdateNoChanges_files
new file mode 100644
index 00000000..f0dac1f4
--- /dev/null
+++ b/tests/update_fixtures/testUpdateNoChanges_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/testUpdateRestore_files b/tests/update_fixtures/testUpdateRestore_files
new file mode 100644
index 00000000..f0dac1f4
--- /dev/null
+++ b/tests/update_fixtures/testUpdateRestore_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/testUpdateRestore_foo b/tests/update_fixtures/testUpdateRestore_foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/testUpdateRestore_foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/testUpdateResumeDeletedFile_files b/tests/update_fixtures/testUpdateResumeDeletedFile_files
new file mode 100644
index 00000000..f0dac1f4
--- /dev/null
+++ b/tests/update_fixtures/testUpdateResumeDeletedFile_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/testUpdateResumeDeletedFile_foo b/tests/update_fixtures/testUpdateResumeDeletedFile_foo
new file mode 100644
index 00000000..3bb34cf8
--- /dev/null
+++ b/tests/update_fixtures/testUpdateResumeDeletedFile_foo
@@ -0,0 +1 @@
+This is a simple test.
diff --git a/tests/update_fixtures/testUpdateResumeDeletedFile_merge b/tests/update_fixtures/testUpdateResumeDeletedFile_merge
new file mode 100644
index 00000000..0b4685d5
--- /dev/null
+++ b/tests/update_fixtures/testUpdateResumeDeletedFile_merge
@@ -0,0 +1,4 @@
+Is it
+possible to
+merge this file?
+I hope so...
diff --git a/tests/update_fixtures/testUpdateResume_files b/tests/update_fixtures/testUpdateResume_files
new file mode 100644
index 00000000..15e7e139
--- /dev/null
+++ b/tests/update_fixtures/testUpdateResume_files
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/testUpdateResume_foo b/tests/update_fixtures/testUpdateResume_foo
new file mode 100644
index 00000000..323fae03
--- /dev/null
+++ b/tests/update_fixtures/testUpdateResume_foo
@@ -0,0 +1 @@
+foobar
diff --git a/tests/update_fixtures/testUpdateResume_merge b/tests/update_fixtures/testUpdateResume_merge
new file mode 100644
index 00000000..2563d892
--- /dev/null
+++ b/tests/update_fixtures/testUpdateResume_merge
@@ -0,0 +1,5 @@
+xxx
+xxx
+yyy
+zzz
+zzz
diff --git a/tests/update_fixtures/testUpdateUpstreamModifiedFile_files b/tests/update_fixtures/testUpdateUpstreamModifiedFile_files
new file mode 100644
index 00000000..404adb93
--- /dev/null
+++ b/tests/update_fixtures/testUpdateUpstreamModifiedFile_files
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/update_fixtures/testUpdateUpstreamModifiedFile_foo b/tests/update_fixtures/testUpdateUpstreamModifiedFile_foo
new file mode 100644
index 00000000..4083ca8f
--- /dev/null
+++ b/tests/update_fixtures/testUpdateUpstreamModifiedFile_foo
@@ -0,0 +1,3 @@
+
+This is a simple test.
+