Commit 0ff6b946 authored by Ayush Tiwari's avatar Ayush Tiwari

gitclone: Add new test for update

parent 5b60b88e
......@@ -16,7 +16,7 @@ optionflags = (doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE)
GIT_REPOSITORY = 'https://lab.nexedi.com/nexedi/slapos.recipe.build.git'
BAD_GIT_REPOSITORY = 'http://git.erp5.org/repos/nowhere'
GIT_REPOSITORY_WITH_SUBMODULES = 'https://lab.nexedi.com/tiwariayush/test_erp5'
GIT_REPOSITORY_WITH_SUBMODULES = 'https://lab.nexedi.com/tiwariayush/test_erp5.git'
GIT_SUBMODULE_REPOSITORY = 'https://lab.nexedi.com/tiwariayush/test_erp5_submodule'
REVISION = '2566127'
......@@ -145,7 +145,7 @@ class GitCloneNonInformativeTests(unittest.TestCase):
def test_ignore_cloning_submodules(self):
self.test_clone_submodules_by_default(ignore_cloning_submodules=True)
def test_fetch_submodules_with_main_repo(self):
def fetch_submodules_with_main_repo(self):
"""
Test to check the fetch of submodules while fetching main repo. Updating
should udpate the main repo as well as submodule repo if the reference of
......@@ -191,6 +191,93 @@ class GitCloneNonInformativeTests(unittest.TestCase):
self.assertNotEqual(head_commit_after_udpate_before_checkout, head_commit)
self.assertEqual(head_commit_after_update_after_checkout, head_commit)
def test_udpate_for_submodule(self):
"""
STEP I:
Repositories status: Main repo(M1) and Submodule repo (S1)
Main repo (M1) ---references---> Submodule(S1)
Install should be M1+S1
STEP II:
Repositories status: Main repo(M2) and Submodule repo (S2)
Main repo (M2) ---references---> Submodule(S1)
Install should be M2+S1
STEP III:
Repositories status: Main repo(M3) and Submodule repo (S2)
Main repo (M3) ---references---> Submodule(S2)
Install should be M3+S2
"""
# STEP I: Clone repositories in status M1 and S1 (M1---->S1)
recipe = self.makeGitCloneRecipe(
{
'repository': GIT_REPOSITORY_WITH_SUBMODULES,
'revision': '9db24704b3dece16d8bc0fbd20653018b754c0c3'
}
)
recipe.install()
main_repo_path = os.path.join(self.parts_directory_path, "test")
self.assertTrue(os.path.exists(main_repo_path))
submodule_repo_path = os.path.join(main_repo_path, 'dir2', 'test_erp5_submodule')
# Check if the submodule is not empty
self.assertTrue(os.listdir(submodule_repo_path))
# Get the head commit of the submodule repo
head_commit_submodule_after_clone = check_output(['git', 'rev-parse',
'HEAD'], cwd=submodule_repo_path).strip()
# STEP II: Clone repositories in status M2 and S2 (M2---->S1)
# Update the recipe with new revision which still point to the submodule
# old revision
recipe = self.makeGitCloneRecipe(
{
'repository': GIT_REPOSITORY_WITH_SUBMODULES,
'revision': '69ebe9c81f7d87812b87d6fd6de45721b27520dc'
}
)
recipe.update()
self.assertTrue(os.path.exists(main_repo_path))
submodule_repo_path = os.path.join(main_repo_path, 'dir2', 'test_erp5_submodule')
# Check if the submodule is not empty
self.assertTrue(os.listdir(submodule_repo_path))
# Get the head commit of the submodule repo
head_commit_submodule_after_first_update = check_output(['git', 'rev-parse',
'HEAD'], cwd=submodule_repo_path).strip()
# STEP II: Clone repositories in status M3 and S2 (M3---->S2)
# Update the recipe with new revision which points to submodule new revision
recipe = self.makeGitCloneRecipe(
{
'repository': GIT_REPOSITORY_WITH_SUBMODULES,
'revision': '05a26f99b2d366830e50088e90f94708fdd69f61'
}
)
recipe.update()
self.assertTrue(os.path.exists(main_repo_path))
submodule_repo_path = os.path.join(main_repo_path, 'dir2', 'test_erp5_submodule')
# Check if the submodule is not empty
self.assertTrue(os.listdir(submodule_repo_path))
# Get the head commit of the submodule repo
head_commit_submodule_after_second_update = check_output(['git', 'rev-parse',
'HEAD'], cwd=submodule_repo_path).strip()
# Make another git clone of submodule and check the HEAD of the repo.
submodule_recipe = self.makeGitCloneRecipe(
{'repository': GIT_SUBMODULE_REPOSITORY}
)
submodule_recipe.install()
# Check the HEAD of the submodule
head_commit = check_output(['git', 'rev-parse', 'HEAD'],
cwd=main_repo_path).strip()
self.assertEqual(head_commit_submodule_after_clone,
head_commit_submodule_after_first_update)
self.assertNotEqual(head_commit_submodule_after_first_update,
head_commit_submodule_after_second_update)
self.assertNotEqual(head_commit_submodule_after_second_update,
head_commit)
def test_suite():
suite = unittest.TestSuite((
doctest.DocFileSuite(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment