tests: add convenience function to run bam and get json output
This commit is contained in:
@@ -270,21 +270,44 @@ def bam_run(argv, cwd=None):
|
|||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def file_quick_write(path, filepart=None, data=None):
|
def bam_run_as_json(argv, cwd=None):
|
||||||
|
stdout, stderr = bam_run(argv, cwd=cwd)
|
||||||
|
if stderr:
|
||||||
|
raise Exception(stderr)
|
||||||
|
return None
|
||||||
|
|
||||||
|
ret = None
|
||||||
|
|
||||||
|
import json
|
||||||
|
try:
|
||||||
|
ret = json.loads(stdout)
|
||||||
|
except Exception as e:
|
||||||
|
print("---- JSON BEGIN (invalid) ----")
|
||||||
|
print(stdout)
|
||||||
|
print("---- JSON END ----")
|
||||||
|
raise e
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def file_quick_write(path, filepart=None, data=None, append=False):
|
||||||
"""Quick file creation utility.
|
"""Quick file creation utility.
|
||||||
"""
|
"""
|
||||||
if data is None:
|
if data is None:
|
||||||
data = b''
|
data = b''
|
||||||
elif type(data) is bytes:
|
|
||||||
mode = 'wb'
|
mode = 'a' if append else 'w'
|
||||||
|
if type(data) is bytes:
|
||||||
|
mode = mode + 'b'
|
||||||
elif type(data) is str:
|
elif type(data) is str:
|
||||||
mode = 'w'
|
pass
|
||||||
else:
|
else:
|
||||||
raise Exception("type %r not known" % type(data))
|
raise Exception("type %r not known" % type(data))
|
||||||
|
|
||||||
if filepart is not None:
|
if filepart is not None:
|
||||||
path = os.path.join(path, filepart)
|
path = os.path.join(path, filepart)
|
||||||
|
|
||||||
|
os.makedirs(os.path.dirname(path), exist_ok=True)
|
||||||
with open(path, mode) as f:
|
with open(path, mode) as f:
|
||||||
f.write(data)
|
f.write(data)
|
||||||
|
|
||||||
@@ -414,10 +437,8 @@ def blendfile_template_create_from_files(proj_path, session_path, blendfile_pair
|
|||||||
|
|
||||||
# not essential but we need to be sure what we made has correct deps
|
# not essential but we need to be sure what we made has correct deps
|
||||||
# otherwise further tests will fail
|
# otherwise further tests will fail
|
||||||
stdout, stderr = bam_run(["deps", blendfile_abs, "--json"], proj_path)
|
ret = bam_run_as_json(["deps", blendfile_abs, "--json"], proj_path)
|
||||||
|
|
||||||
import json
|
|
||||||
ret = json.loads(stdout)
|
|
||||||
# not real test since we don't use static method,
|
# not real test since we don't use static method,
|
||||||
# just check we at least account for all deps
|
# just check we at least account for all deps
|
||||||
assert(len(ret) == len(images))
|
assert(len(ret) == len(images))
|
||||||
@@ -444,10 +465,8 @@ def blendfile_template_create_from_file_liblinks(proj_path, session_path, blendf
|
|||||||
|
|
||||||
# not essential but we need to be sure what we made has correct deps
|
# not essential but we need to be sure what we made has correct deps
|
||||||
# otherwise further tests will fail
|
# otherwise further tests will fail
|
||||||
stdout, stderr = bam_run(["deps", blendfile_abs, "--json"], proj_path)
|
ret = bam_run_as_json(["deps", blendfile_abs, "--json"], proj_path)
|
||||||
|
|
||||||
import json
|
|
||||||
ret = json.loads(stdout)
|
|
||||||
# not real test since we don't use static method,
|
# not real test since we don't use static method,
|
||||||
# just check we at least account for all deps
|
# just check we at least account for all deps
|
||||||
# assert(len(ret) == len(links))
|
# assert(len(ret) == len(links))
|
||||||
@@ -693,12 +712,8 @@ class BamListTest(BamSessionTestCase):
|
|||||||
def test_ls(self):
|
def test_ls(self):
|
||||||
proj_path = self.init_repo()
|
proj_path = self.init_repo()
|
||||||
|
|
||||||
stdout, stderr = bam_run(["ls", "--json"], proj_path)
|
ret = bam_run_as_json(["ls", "--json"], proj_path)
|
||||||
|
|
||||||
self.assertEqual("", stderr)
|
|
||||||
|
|
||||||
import json
|
|
||||||
ret = json.loads(stdout)
|
|
||||||
self.assertEqual(2, len(ret))
|
self.assertEqual(2, len(ret))
|
||||||
|
|
||||||
|
|
||||||
@@ -849,13 +864,10 @@ class BamDeleteTest(BamSessionTestCase):
|
|||||||
self.assertEqual("", stderr)
|
self.assertEqual("", stderr)
|
||||||
# check if deletion of the file has happened
|
# check if deletion of the file has happened
|
||||||
|
|
||||||
stdout, stderr = bam_run(["ls", "--json"], session_path)
|
listing = bam_run_as_json(["ls", "--json"], session_path)
|
||||||
# check for errors in the response
|
|
||||||
self.assertEqual("", stderr)
|
|
||||||
|
|
||||||
# parse the response searching for the file. If it fails it means the file has
|
# parse the response searching for the file. If it fails it means the file has
|
||||||
# not been removed
|
# not been removed
|
||||||
listing = json.loads(stdout)
|
|
||||||
for e in listing:
|
for e in listing:
|
||||||
self.assertNotEqual(e[0], file_name)
|
self.assertNotEqual(e[0], file_name)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user