def setUpClass(cls): cls.git = GitRunner(make_default_options()) cls.base_temp_dir = tempfile.mkdtemp(prefix='git_test') cls.git_dir = os.path.join(cls.base_temp_dir, UPSTREAM_USER, TEST_REPO_NAME) os.makedirs(cls.git_dir) git_dir = cls.git_dir gitify = lambda args: 'git -C "{dir}" {args}'.format(dir=git_dir, args=args) check_subprocess_sequence([ gitify('init'), 'touch "{dir}/base_file"'.format(dir=git_dir), gitify('add "{dir}/base_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added file"'), gitify( 'tag {base_version} HEAD'.format(base_version=VERSION_BASE)), gitify( 'checkout -b {base_branch}'.format(base_branch=BRANCH_BASE)), gitify('checkout -b {a_branch}'.format(a_branch=BRANCH_A)), 'touch "{dir}/a_file"'.format(dir=git_dir), gitify('add "{dir}/a_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added a_file"'), gitify('tag {a_version} HEAD'.format(a_version=VERSION_A)), gitify('checkout -b {b_branch}'.format(b_branch=BRANCH_B)), 'touch "{dir}/b_file"'.format(dir=git_dir), gitify('add "{dir}/b_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added b_file"'), gitify('tag {b_version} HEAD'.format(b_version=VERSION_B)) ])
def setUpClass(cls): cls.base_temp_dir = tempfile.mkdtemp(prefix='scm_test') origin_root = os.path.join(cls.base_temp_dir, 'test-githost') cls.ORIGIN_URLS = { 'RepoOne': os.path.join(origin_root, SCM_USER, 'RepoOne'), 'RepoTwo': os.path.join(origin_root, SCM_USER, 'RepoTwo'), 'RepoTest': os.path.join(origin_root, TEST_USER, 'RepoTest'), } for repo_name, repo_origin in cls.ORIGIN_URLS.items(): os.makedirs(repo_origin) base_file = os.path.join(repo_origin, '{name}-base.txt'.format(name=repo_name)) unique_file = os.path.join( repo_origin, '{name}-unique.txt'.format(name=repo_name)) untagged_file = os.path.join( repo_origin, '{name}-untagged.txt'.format(name=repo_name)) logging.debug('Initializing repository %s', repo_origin) git_prefix = 'git -C "{dir}" '.format(dir=repo_origin) run_git = lambda cmd: git_prefix + cmd check_subprocess_sequence([ # BASE_VERSION 'touch "{file}"'.format(file=base_file), run_git(' init'), run_git( 'add "{file}"'.format(file=os.path.basename(base_file))), run_git('commit -a -m "feat(first): first commit"'), run_git('tag {base_version} HEAD'.format( base_version=BASE_VERSION)), # Add Unique branch name per repo run_git('checkout -b {name}-branch'.format(name=repo_name)), 'touch "{file}"'.format(file=unique_file), run_git( 'add "{file}"'.format(file=os.path.basename(unique_file))), run_git('commit -a -m "chore(uniq): unique commit"'), # Add a common branch name, but without a tag on HEAD run_git('checkout master'), run_git('checkout -b {branch}'.format(branch=UNTAGGED_BRANCH)), 'touch "{file}"'.format(file=untagged_file), run_git('add "{file}"'.format( file=os.path.basename(untagged_file))), run_git('commit -a -m "feat(uniq): untagged commit"'), run_git('checkout master') ])
def make_standard_git_repo(git_dir): """Initialize local standard test repos. These are used by tests that interact with a git repository. """ branch_commits = {'ORIGIN': git_dir} repo_name = os.path.basename(git_dir) run_git = lambda cmd: 'git %s' % cmd os.makedirs(git_dir) logging.debug('Initializing git repository in "%s"', git_dir) check_subprocess_sequence( [ 'touch %s-basefile.txt' % repo_name, run_git('init'), run_git('add %s-basefile.txt' % repo_name), run_git('commit -a -m "feat(first): first commit"'), run_git('tag %s HEAD' % BASE_VERSION_TAG), ], cwd=git_dir) branch_commits['master'] = check_subprocess('git rev-parse HEAD', cwd=git_dir) check_subprocess_sequence( [ run_git('checkout -b ' + PATCH_BRANCH), 'touch %s-patchfile.txt' % repo_name, run_git('add %s-patchfile.txt' % repo_name), run_git('commit -a -m "fix(patch): added patch change"') ], cwd=git_dir) branch_commits[PATCH_BRANCH] = check_subprocess( 'git rev-parse HEAD', cwd=git_dir) check_subprocess_sequence( [ run_git('checkout master'), run_git('checkout -b %s-branch' % repo_name), 'touch %s-unique.txt' % repo_name, run_git('add %s-unique.txt' % repo_name), run_git('commit -a -m "chore(uniq): unique commit"') ], cwd=git_dir) branch_commits['%s-branch' % repo_name] = check_subprocess( 'git rev-parse HEAD', cwd=git_dir) check_subprocess_sequence( [ run_git('checkout master'), run_git('checkout -b %s' % UNTAGGED_BRANCH), 'touch %s-untagged.txt' % repo_name, run_git('add %s-untagged.txt' % repo_name), run_git('commit -a -m "chore(uniq): untagged commit"'), ], cwd=git_dir) branch_commits[UNTAGGED_BRANCH] = check_subprocess( 'git rev-parse HEAD', cwd=git_dir) return branch_commits
def setUpClass(cls): cls.git = GitRunner(make_default_options()) cls.base_temp_dir = tempfile.mkdtemp(prefix='git_test') cls.git_dir = os.path.join(cls.base_temp_dir, 'commit_message_test') os.makedirs(cls.git_dir) git_dir = cls.git_dir gitify = lambda args: 'git -C "{dir}" {args}'.format(dir=git_dir, args=args) check_subprocess_sequence([ gitify('init'), 'touch "{dir}/base_file"'.format(dir=git_dir), gitify('add "{dir}/base_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added file"'), gitify( 'tag {base_version} HEAD'.format(base_version=VERSION_BASE)), gitify('checkout -b {patch_branch}'.format( patch_branch=cls.PATCH_BRANCH)), 'touch "{dir}/patch_file"'.format(dir=git_dir), gitify('add "{dir}/patch_file"'.format(dir=git_dir)), gitify('commit -a -m "fix(testA): added patch_file"'), gitify('checkout -b {minor_branch}'.format( minor_branch=cls.MINOR_BRANCH)), 'touch "{dir}/minor_file"'.format(dir=git_dir), gitify('add "{dir}/minor_file"'.format(dir=git_dir)), gitify('commit -a -m "chore(testB): added minor_file"'), gitify('checkout -b {major_branch}'.format( major_branch=cls.MAJOR_BRANCH)), 'touch "{dir}/major_file"'.format(dir=git_dir), gitify('add "{dir}/major_file"'.format(dir=git_dir)), gitify('commit -a -m' ' "feat(testC): added major_file\n' '\nInterestingly enough, this is a BREAKING CHANGE.' '"'), gitify('checkout -b {merged_branch}'.format( merged_branch=cls.MERGED_BRANCH)), gitify('reset --hard HEAD~3'), gitify('merge --squash HEAD@{1}') ]) env = dict(os.environ) if os.path.exists('/bin/true'): env['EDITOR'] = '/bin/true' elif os.path.exists('/usr/bin/true'): env['EDITOR'] = '/usr/bin/true' else: raise NotImplementedError('platform not supported for this test') check_subprocess('git -C "{dir}" commit'.format(dir=git_dir), env=env)
def make_standard_git_repo(git_dir): """Initialize local standard test repos. These are used by tests that interact with a git repository. """ branch_commits = {'ORIGIN': git_dir} repo_name = os.path.basename(git_dir) run_git = lambda cmd: 'git %s' % cmd os.makedirs(git_dir) logging.debug('Initializing git repository in "%s"', git_dir) check_subprocess_sequence([ 'touch %s-basefile.txt' % repo_name, run_git('init'), run_git('add %s-basefile.txt' % repo_name), run_git('commit -a -m "feat(first): first commit"'), run_git('tag %s HEAD' % BASE_VERSION_TAG), ], cwd=git_dir) branch_commits['master'] = check_subprocess('git rev-parse HEAD', cwd=git_dir) check_subprocess_sequence([ run_git('checkout -b ' + PATCH_BRANCH), 'touch %s-patchfile.txt' % repo_name, run_git('add %s-patchfile.txt' % repo_name), run_git('commit -a -m "fix(patch): added patch change"') ], cwd=git_dir) branch_commits[PATCH_BRANCH] = check_subprocess('git rev-parse HEAD', cwd=git_dir) check_subprocess_sequence([ run_git('checkout master'), run_git('checkout -b %s-branch' % repo_name), 'touch %s-unique.txt' % repo_name, run_git('add %s-unique.txt' % repo_name), run_git('commit -a -m "chore(uniq): unique commit"') ], cwd=git_dir) branch_commits['%s-branch' % repo_name] = check_subprocess( 'git rev-parse HEAD', cwd=git_dir) check_subprocess_sequence([ run_git('checkout master'), run_git('checkout -b %s' % UNTAGGED_BRANCH), 'touch %s-untagged.txt' % repo_name, run_git('add %s-untagged.txt' % repo_name), run_git('commit -a -m "chore(uniq): untagged commit"'), ], cwd=git_dir) branch_commits[UNTAGGED_BRANCH] = check_subprocess('git rev-parse HEAD', cwd=git_dir) return branch_commits
def setUpClass(cls): cls.git = GitRunner(make_default_options()) cls.base_temp_dir = tempfile.mkdtemp(prefix='git_test') cls.git_dir = os.path.join(cls.base_temp_dir, UPSTREAM_USER, TEST_REPO_NAME) os.makedirs(cls.git_dir) git_dir = cls.git_dir gitify = lambda args: 'git -C "{dir}" {args}'.format(dir=git_dir, args=args) check_subprocess_sequence([ gitify('init'), 'touch "{dir}/base_file"'.format(dir=git_dir), gitify('add "{dir}/base_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added file"'), gitify('tag {base_version} HEAD'.format(base_version=VERSION_BASE)), gitify('checkout -b {base_branch}'.format(base_branch=BRANCH_BASE)), gitify('checkout -b {a_branch}'.format(a_branch=BRANCH_A)), 'touch "{dir}/a_file"'.format(dir=git_dir), gitify('add "{dir}/a_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added a_file"'), gitify('tag {a_version} HEAD'.format(a_version=VERSION_A)), gitify('checkout master'), gitify('checkout -b {b_branch}'.format(b_branch=BRANCH_B)), 'touch "{dir}/b_file"'.format(dir=git_dir), gitify('add "{dir}/b_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added b_file"'), gitify('tag {b_version} HEAD'.format(b_version=VERSION_B)), gitify('checkout master'), 'touch "{dir}/master_file"'.format(dir=git_dir), gitify('add "{dir}/master_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added master_file"'), gitify('checkout -b {c_branch}'.format(c_branch=BRANCH_C)), 'touch "{dir}/c_file"'.format(dir=git_dir), gitify('add "{dir}/c_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added c_file"'), gitify('checkout master'), 'touch "{dir}/extra_file"'.format(dir=git_dir), gitify('add "{dir}/extra_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added extra_file"'), gitify('tag version-9.9.9 HEAD')])
def setUpClass(cls): cls.git = GitRunner(make_default_options()) cls.base_temp_dir = tempfile.mkdtemp(prefix='git_test') cls.git_dir = os.path.join(cls.base_temp_dir, 'commit_message_test') os.makedirs(cls.git_dir) git_dir = cls.git_dir gitify = lambda args: 'git -C "{dir}" {args}'.format(dir=git_dir, args=args) check_subprocess_sequence([ gitify('init'), 'touch "{dir}/base_file"'.format(dir=git_dir), gitify('add "{dir}/base_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): added file"'), gitify('tag {base_version} HEAD'.format(base_version=VERSION_BASE)), # For testing patches gitify('checkout -b {patch_branch}'.format( patch_branch=cls.PATCH_BRANCH)), 'touch "{dir}/patch_file"'.format(dir=git_dir), gitify('add "{dir}/patch_file"'.format(dir=git_dir)), gitify('commit -a -m "fix(testA): added patch_file"'), # For testing minor versions gitify('checkout -b {minor_branch}'.format( minor_branch=cls.MINOR_BRANCH)), 'touch "{dir}/minor_file"'.format(dir=git_dir), gitify('add "{dir}/minor_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(testB): added minor_file"'), # For testing major versions gitify('checkout -b {major_branch}'.format( major_branch=cls.MAJOR_BRANCH)), 'touch "{dir}/major_file"'.format(dir=git_dir), gitify('add "{dir}/major_file"'.format(dir=git_dir)), gitify('commit -a -m' ' "feat(testC): added major_file\n' '\nInterestingly enough, this is a BREAKING CHANGE.' '"'), # For testing composite commits from a merge of commits gitify('checkout -b {merged_branch}'.format( merged_branch=cls.MERGED_BRANCH)), gitify('reset --hard HEAD~3'), gitify('merge --squash HEAD@{1}'), ]) env = dict(os.environ) if os.path.exists('/bin/true'): env['EDITOR'] = '/bin/true' elif os.path.exists('/usr/bin/true'): env['EDITOR'] = '/usr/bin/true' else: raise NotImplementedError('platform not supported for this test') check_subprocess('git -C "{dir}" commit'.format(dir=git_dir), env=env) # For testing changelog from a commit check_subprocess_sequence([ gitify('checkout {minor_branch}'.format( minor_branch=cls.MINOR_BRANCH)), gitify('checkout -b {x_branch}'.format( x_branch=cls.PATCH_MINOR_BRANCH)), 'touch "{dir}/xbefore_file"'.format(dir=git_dir), gitify('add "{dir}/xbefore_file"'.format(dir=git_dir)), gitify('commit -a -m "feat(test): COMMIT AT TAG"'), gitify('tag {x_marker} HEAD'.format(x_marker=cls.PATCH_MINOR_X)), 'touch "{dir}/x_first"'.format(dir=git_dir), gitify('add "{dir}/x_first"'.format(dir=git_dir)), gitify('commit -a -m "fix(test): First Fix"'), 'rm "{dir}/x_first"'.format(dir=git_dir), gitify('commit -a -m "fix(test): Second Fix"'), ])