From 128dfbe33a8e1e6b5ea52c8e55224576c07e9d44 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 03 2015 14:35:42 +0000 Subject: Move the tests to run on bare repo since that's what we use in prod --- diff --git a/tests/__init__.py b/tests/__init__.py index d04ebf2..6c41a5a 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -288,10 +288,13 @@ def add_content_git_repo(folder): """ Create some content for the specified git repo. """ if not os.path.exists(folder): os.makedirs(folder) - repo = pygit2.init_repository(folder) + brepo = pygit2.init_repository(folder, bare=True) + + newfolder = tempfile.mkdtemp(prefix='pagure-tests') + repo = pygit2.clone_repository(folder, newfolder) # Create a file in that git repo - with open(os.path.join(folder, 'sources'), 'w') as stream: + with open(os.path.join(newfolder, 'sources'), 'w') as stream: stream.write('foo\n bar') repo.index.add('sources') repo.index.write() @@ -332,10 +335,10 @@ def add_content_git_repo(folder): parents = [commit.oid.hex] subfolder = os.path.join('folder1', 'folder2') - if not os.path.exists(os.path.join(folder, subfolder)): - os.makedirs(os.path.join(folder, subfolder)) + if not os.path.exists(os.path.join(newfolder, subfolder)): + os.makedirs(os.path.join(newfolder, subfolder)) # Create a file in that git repo - with open(os.path.join(folder, subfolder, 'file'), 'w') as stream: + with open(os.path.join(newfolder, subfolder, 'file'), 'w') as stream: stream.write('foo\n bar\nbaz') repo.index.add(os.path.join(subfolder, 'file')) repo.index.write() @@ -357,12 +360,24 @@ def add_content_git_repo(folder): parents ) + # Push to origin + ori_remote = repo.remotes[0] + master_ref = repo.lookup_reference('HEAD').resolve() + refname = '%s:%s' % (master_ref.name, master_ref.name) + + ori_remote.push(refname) + + shutil.rmtree(newfolder) + def add_readme_git_repo(folder): """ Create a README file for the specified git repo. """ if not os.path.exists(folder): os.makedirs(folder) - repo = pygit2.init_repository(folder) + brepo = pygit2.init_repository(folder, bare=True) + + newfolder = tempfile.mkdtemp(prefix='pagure-tests') + repo = pygit2.clone_repository(folder, newfolder) content = """Pagure ====== @@ -392,7 +407,7 @@ Dev instance: http://209.132.184.222/ (/!\\ May change unexpectedly, it's a dev parents = [commit.oid.hex] # Create a file in that git repo - with open(os.path.join(folder, 'README.rst'), 'w') as stream: + with open(os.path.join(newfolder, 'README.rst'), 'w') as stream: stream.write(content) repo.index.add('README.rst') repo.index.write() @@ -414,16 +429,28 @@ Dev instance: http://209.132.184.222/ (/!\\ May change unexpectedly, it's a dev parents ) + # Push to origin + ori_remote = repo.remotes[0] + master_ref = repo.lookup_reference('HEAD').resolve() + refname = '%s:%s' % (master_ref.name, master_ref.name) + + ori_remote.push(refname) + + shutil.rmtree(newfolder) + def add_commit_git_repo(folder, ncommits=10): """ Create some more commits for the specified git repo. """ if not os.path.exists(folder): os.makedirs(folder) - repo = pygit2.init_repository(folder) + brepo = pygit2.init_repository(folder, bare=True) + + newfolder = tempfile.mkdtemp(prefix='pagure-tests') + repo = pygit2.clone_repository(folder, newfolder) for index in range(ncommits): # Create a file in that git repo - with open(os.path.join(folder, 'sources'), 'a') as stream: + with open(os.path.join(newfolder, 'sources'), 'a') as stream: stream.write('Row %s\n' % index) repo.index.add('sources') repo.index.write() @@ -454,12 +481,24 @@ def add_commit_git_repo(folder, ncommits=10): parents, ) + # Push to origin + ori_remote = repo.remotes[0] + master_ref = repo.lookup_reference('HEAD').resolve() + refname = '%s:%s' % (master_ref.name, master_ref.name) + + ori_remote.push(refname) + + shutil.rmtree(newfolder) + def add_binary_git_repo(folder, filename): """ Create a fake image file for the specified git repo. """ if not os.path.exists(folder): os.makedirs(folder) - repo = pygit2.init_repository(folder) + brepo = pygit2.init_repository(folder, bare=True) + + newfolder = tempfile.mkdtemp(prefix='pagure-tests') + repo = pygit2.clone_repository(folder, newfolder) content = """<89>PNG^M ^Z @@ -487,7 +526,7 @@ C7Pí^DQeee<84>ÃaÜn·î<98><9e><9e>^^¶oß®<95>ݦM^^T©®®¦®®<8e>©©)� parents = [commit.oid.hex] # Create a file in that git repo - with open(os.path.join(folder, filename), 'w') as stream: + with open(os.path.join(newfolder, filename), 'w') as stream: stream.write(content) repo.index.add(filename) repo.index.write() @@ -509,6 +548,15 @@ C7Pí^DQeee<84>ÃaÜn·î<98><9e><9e>^^¶oß®<95>ݦM^^T©®®¦®®<8e>©©)� parents ) + # Push to origin + ori_remote = repo.remotes[0] + master_ref = repo.lookup_reference('HEAD').resolve() + refname = '%s:%s' % (master_ref.name, master_ref.name) + + ori_remote.push(refname) + + shutil.rmtree(newfolder) + if __name__ == '__main__': SUITE = unittest.TestLoader().loadTestsFromTestCase(Modeltests) diff --git a/tests/test_progit_flask_ui_repo.py b/tests/test_progit_flask_ui_repo.py index 5e0bce4..1c0d372 100644 --- a/tests/test_progit_flask_ui_repo.py +++ b/tests/test_progit_flask_ui_repo.py @@ -442,7 +442,7 @@ class PagureFlaskRepotests(tests.Modeltests): # No git repo associated self.assertEqual(output.status_code, 404) - tests.create_projects_git(tests.HERE) + tests.create_projects_git(tests.HERE, bare=True) output = self.app.get('/test') self.assertEqual(output.status_code, 200) @@ -569,7 +569,7 @@ class PagureFlaskRepotests(tests.Modeltests): # No git repo associated self.assertEqual(output.status_code, 404) - tests.create_projects_git(tests.HERE) + tests.create_projects_git(tests.HERE, bare=True) output = self.app.get('/test/branch/master') self.assertEqual(output.status_code, 404) @@ -649,7 +649,7 @@ class PagureFlaskRepotests(tests.Modeltests): # No git repo associated self.assertEqual(output.status_code, 404) - tests.create_projects_git(tests.HERE) + tests.create_projects_git(tests.HERE, bare=True) output = self.app.get('/test/commits') self.assertEqual(output.status_code, 200) @@ -742,7 +742,7 @@ class PagureFlaskRepotests(tests.Modeltests): # No git repo associated self.assertEqual(output.status_code, 404) - tests.create_projects_git(tests.HERE) + tests.create_projects_git(tests.HERE, bare=True) output = self.app.get('/test/blob/foo/f/sources') self.assertEqual(output.status_code, 404) @@ -776,7 +776,7 @@ class PagureFlaskRepotests(tests.Modeltests): 'Binary files cannot be rendered.
' in output.data) # View by commit id - repo = pygit2.init_repository(os.path.join(tests.HERE, 'test.git')) + repo = pygit2.Repository(os.path.join(tests.HERE, 'test.git')) commit = repo.revparse_single('HEAD') output = self.app.get('/test/blob/%s/f/test.jpg' % commit.oid.hex) @@ -855,7 +855,7 @@ class PagureFlaskRepotests(tests.Modeltests): # No git repo associated self.assertEqual(output.status_code, 404) - tests.create_projects_git(tests.HERE) + tests.create_projects_git(tests.HERE, bare=True) output = self.app.get('/test/raw/foo/sources') self.assertEqual(output.status_code, 404) @@ -889,7 +889,7 @@ class PagureFlaskRepotests(tests.Modeltests): self.assertTrue(output.data.startswith('<89>PNG^M')) # View by commit id - repo = pygit2.init_repository(os.path.join(tests.HERE, 'test.git')) + repo = pygit2.Repository(os.path.join(tests.HERE, 'test.git')) commit = repo.revparse_single('HEAD') output = self.app.get('/test/raw/%s/f/test.jpg' % commit.oid.hex) @@ -964,14 +964,14 @@ class PagureFlaskRepotests(tests.Modeltests): # No git repo associated self.assertEqual(output.status_code, 404) - tests.create_projects_git(tests.HERE) + tests.create_projects_git(tests.HERE, bare=True) output = self.app.get('/test/bar') self.assertEqual(output.status_code, 404) # Add a README to the git repo - First commit tests.add_readme_git_repo(os.path.join(tests.HERE, 'test.git')) - repo = pygit2.init_repository(os.path.join(tests.HERE, 'test.git')) + repo = pygit2.Repository(os.path.join(tests.HERE, 'test.git')) commit = repo.revparse_single('HEAD') # View first commit @@ -988,7 +988,7 @@ class PagureFlaskRepotests(tests.Modeltests): # Add some content to the git repo tests.add_content_git_repo(os.path.join(tests.HERE, 'test.git')) - repo = pygit2.init_repository(os.path.join(tests.HERE, 'test.git')) + repo = pygit2.Repository(os.path.join(tests.HERE, 'test.git')) commit = repo.revparse_single('HEAD') # View another commit @@ -1013,12 +1013,13 @@ class PagureFlaskRepotests(tests.Modeltests): ) self.session.add(item) self.session.commit() - forkedgit = os.path.join(tests.HERE, 'forks', 'pingou', 'test3.git') + forkedgit = os.path.join( + tests.HERE, 'forks', 'pingou', 'test3.git') tests.add_content_git_repo(forkedgit) tests.add_readme_git_repo(forkedgit) - repo = pygit2.init_repository(forkedgit) + repo = pygit2.Repository(forkedgit) commit = repo.revparse_single('HEAD') # Commit does not exist in anothe repo :) @@ -1048,14 +1049,14 @@ class PagureFlaskRepotests(tests.Modeltests): # No git repo associated self.assertEqual(output.status_code, 404) - tests.create_projects_git(tests.HERE) + tests.create_projects_git(tests.HERE, bare=True) output = self.app.get('/test/bar.patch') self.assertEqual(output.status_code, 404) # Add a README to the git repo - First commit tests.add_readme_git_repo(os.path.join(tests.HERE, 'test.git')) - repo = pygit2.init_repository(os.path.join(tests.HERE, 'test.git')) + repo = pygit2.Repository(os.path.join(tests.HERE, 'test.git')) commit = repo.revparse_single('HEAD') # View first commit @@ -1089,7 +1090,7 @@ index 0000000..fb7093d # Add some content to the git repo tests.add_content_git_repo(os.path.join(tests.HERE, 'test.git')) - repo = pygit2.init_repository(os.path.join(tests.HERE, 'test.git')) + repo = pygit2.Repository(os.path.join(tests.HERE, 'test.git')) commit = repo.revparse_single('HEAD') # View another commit @@ -1125,7 +1126,7 @@ index 0000000..11980b1 tests.add_content_git_repo(forkedgit) tests.add_readme_git_repo(forkedgit) - repo = pygit2.init_repository(forkedgit) + repo = pygit2.Repository(forkedgit) commit = repo.revparse_single('HEAD') # Commit does not exist in anothe repo :) @@ -1171,7 +1172,7 @@ index 0000000..fb7093d # No git repo associated self.assertEqual(output.status_code, 404) - tests.create_projects_git(tests.HERE) + tests.create_projects_git(tests.HERE, bare=True) output = self.app.get('/test/tree/') self.assertEqual(output.status_code, 200) @@ -1182,7 +1183,7 @@ index 0000000..fb7093d # Add a README to the git repo - First commit tests.add_readme_git_repo(os.path.join(tests.HERE, 'test.git')) - repo = pygit2.init_repository(os.path.join(tests.HERE, 'test.git')) + repo = pygit2.Repository(os.path.join(tests.HERE, 'test.git')) commit = repo.revparse_single('HEAD') # View first commit @@ -1555,7 +1556,7 @@ index 0000000..fb7093d # No git repo associated self.assertEqual(output.status_code, 404) - tests.create_projects_git(tests.HERE) + tests.create_projects_git(tests.HERE, bare=True) output = self.app.get('/test/tags') self.assertEqual(output.status_code, 200) @@ -1563,7 +1564,7 @@ index 0000000..fb7093d # Add a README to the git repo - First commit tests.add_readme_git_repo(os.path.join(tests.HERE, 'test.git')) - repo = pygit2.init_repository(os.path.join(tests.HERE, 'test.git')) + repo = pygit2.Repository(os.path.join(tests.HERE, 'test.git')) first_commit = repo.revparse_single('HEAD') tagger = pygit2.Signature('Alice Doe', 'adoe@example.com', 12347, 0) repo.create_tag(