update test for absolute/relative paths

This commit is contained in:
2014-12-03 13:58:27 +01:00
parent 1ce4508a80
commit fe3c51401a

View File

@@ -104,6 +104,8 @@ if 1:
# We could do something a bit nicer here, # We could do something a bit nicer here,
# but for now just use a basic exception. # but for now just use a basic exception.
import argparse import argparse
def argparse_fake_exit(self, status, message): def argparse_fake_exit(self, status, message):
sys.__stdout__.write(message) sys.__stdout__.write(message)
raise Exception(message) raise Exception(message)
@@ -692,10 +694,10 @@ class BamInitTest(BamSessionTestCase):
super().__init__(*args) super().__init__(*args)
def test_init(self): def test_init(self):
self.init_repo() proj_path = self.init_repo()
url_full, user_name, url = self.get_url() url_full, user_name, url = self.get_url()
with open(os.path.join(self.path_local_store, self.proj_name, ".bam", "config")) as f: with open(os.path.join(proj_path, ".bam", "config")) as f:
cfg = json.load(f) cfg = json.load(f)
self.assertEqual(url, cfg["url"]) self.assertEqual(url, cfg["url"])
self.assertEqual(user_name, cfg["user"]) self.assertEqual(user_name, cfg["user"])
@@ -1038,7 +1040,7 @@ class BamRelativeAbsoluteTest(BamSessionTestCase):
- ./maps/special.blend - ./maps/special.blend
- ./_maps/generic.blend - ./_maps/generic.blend
""" """
# NOTE: test_absolute_relative_from_subdir() test calls this one.
blendfile = "shots/01/shot_01.blend" blendfile = "shots/01/shot_01.blend"
blend_shot = "shots/01/shot_01.blend" blend_shot = "shots/01/shot_01.blend"
@@ -1074,8 +1076,8 @@ class BamRelativeAbsoluteTest(BamSessionTestCase):
- ./maps/generic.blend - ./maps/generic.blend
Now add a file to these directory, Now add a file to these directory,
- ./_maps_more/rel.txt - ./maps_more/rel.txt
- ./maps_more/abs.txt - ./_maps_more/abs.txt
Maps to... Maps to...
- ./shots/01/maps_more/rel.txt - ./shots/01/maps_more/rel.txt
@@ -1094,8 +1096,8 @@ class BamRelativeAbsoluteTest(BamSessionTestCase):
session_path = os.path.join(proj_path, "new_out") session_path = os.path.join(proj_path, "new_out")
# create these new # create these new
file_quick_write(session_path, os.path.join("_maps_more", "rel.txt")) file_quick_write(session_path, os.path.join("maps_more", "rel.txt"))
file_quick_write(session_path, os.path.join("maps_more", "abs.txt")) file_quick_write(session_path, os.path.join("_maps_more", "abs.txt"))
stdout, stderr = bam_run(["commit", "-m", "new abs and rel files"], session_path) stdout, stderr = bam_run(["commit", "-m", "new abs and rel files"], session_path)
self.assertEqual("", stderr) self.assertEqual("", stderr)
@@ -1108,6 +1110,104 @@ class BamRelativeAbsoluteTest(BamSessionTestCase):
ret = bam_run_as_json(["ls", "maps_more", "--json"], proj_path) ret = bam_run_as_json(["ls", "maps_more", "--json"], proj_path)
self.assertIn(["abs.txt", "file"], ret) self.assertIn(["abs.txt", "file"], ret)
def test_absolute_relative_from_blendfiles(self):
"""
This uses 3x blend files to test multi-level commit, checkout.
- ./subdir/house_lib_user.blend
- ./subdir/rel/path/house_rel.blend
- ./abs/path/house_abs.blend
Maps to...
- ./house_lib_user.blend
- ./rel/path/house_rel.blend
- ./_abs/path/house_abs.blend
"""
session_name = "mysession"
blendfile = os.path.join("subdir", "house_lib_user.blend")
proj_path, session_path = self.init_session(session_name)
if 1:
import shutil
for d in ("abs", "subdir"):
# path cant already exist, ugh
shutil.copytree(
os.path.join(CURRENT_DIR, "blends", "multi_level", d),
os.path.join(session_path, d),
)
stdout, stderr = bam_run(["commit", "-m", "test message"], session_path)
self.assertEqual("", stderr)
# ret = bam_run_as_json(["ls", "--json"], proj_path)
# self.assertEqual(2, len(ret))
shutil.rmtree(session_path)
# ---- make a new checkout
stdout, stderr = bam_run(["checkout", blendfile, "--output", session_path], proj_path)
self.assertEqual("", stderr)
ret = bam_run_as_json(["deps", os.path.join(session_path, os.path.basename(blendfile)), "--json"], proj_path)
ret.sort()
self.assertEqual(ret[0][1], "//" + os.path.join("_abs", "path", "house_abs.blend"))
self.assertEqual(ret[0][3], "OK")
self.assertEqual(ret[1][1], "//" + os.path.join("rel", "path", "house_rel.blend"))
self.assertEqual(ret[1][3], "OK")
def test_absolute_relative_from_blendfiles_partial(self):
"""Same as test_absolute_relative_from_blendfiles(),
but start from a single file commit
"""
import shutil
session_name = "mysession"
proj_path, session_path = self.init_session(session_name)
blendfile = os.path.join("subdir", "house_lib_user.blend")
blendfile_abs = os.path.join(session_path, blendfile)
# --------------------------------------------------------------------
# now do the same test, on a checkout which already _has_ 'subdir/house_lib_user.blend'
# to begin with, then add in the linked libs afterwards.
if not blendfile_template_create(blendfile_abs, session_path, "create_blank", None, []):
self.fail("blend file couldn't be created")
return
self.assertTrue(os.path.exists(blendfile))
stdout, stderr = bam_run(["commit", "-m", "test message"], session_path)
self.assertEqual("", stderr)
shutil.rmtree(session_path)
stdout, stderr = bam_run(["checkout", blendfile, "--output", session_path], proj_path)
self.assertEqual("", stderr)
# Now write the relative paths into the current checkout,
# they must now map back to the correct paths.
if 1:
import shutil
shutil.copytree(
os.path.join(CURRENT_DIR, "blends", "multi_level", "abs", "path"),
os.path.join(session_path, "_abs", "path"),
)
shutil.copytree(
os.path.join(CURRENT_DIR, "blends", "multi_level", "subdir", "rel", "path"),
os.path.join(session_path, "rel", "path"),
)
stdout, stderr = bam_run(["commit", "-m", "new house to remap"], session_path)
self.assertEqual("", stderr)
ret = bam_run_as_json(["ls", "abs/path", "--json"], proj_path)
self.assertEqual(ret[0], ["house_abs.blend", "file"])
ret = bam_run_as_json(["ls", "subdir/rel/path", "--json"], proj_path)
self.assertEqual(ret[0], ["house_rel.blend", "file"])
class BamIgnoreTest(BamSessionTestCase): class BamIgnoreTest(BamSessionTestCase):
"""Checks out a project, creates a .bamignore file with a few rules """Checks out a project, creates a .bamignore file with a few rules