예제 #1
0
    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))
        ])
예제 #2
0
    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')
            ])
예제 #3
0
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
예제 #4
0
    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)
예제 #5
0
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
예제 #6
0
  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')])
예제 #7
0
  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"'),
    ])