diff options
-rw-r--r-- | lib/gitlab_projects.rb | 30 | ||||
-rw-r--r-- | spec/gitlab_projects_spec.rb | 68 |
2 files changed, 98 insertions, 0 deletions
diff --git a/lib/gitlab_projects.rb b/lib/gitlab_projects.rb index 8c280ea..c933296 100644 --- a/lib/gitlab_projects.rb +++ b/lib/gitlab_projects.rb @@ -26,6 +26,10 @@ class GitlabProjects def exec case @command + when 'create-branch'; create_branch + when 'rm-branch'; rm_branch + when 'create-tag'; create_tag + when 'rm-tag'; rm_tag when 'add-project'; add_project when 'rm-project'; rm_project when 'mv-project'; mv_project @@ -41,6 +45,32 @@ class GitlabProjects protected + def create_branch + branch_name = ARGV.shift + ref = ARGV.shift || "HEAD" + cmd = "cd #{full_path} && git branch #{branch_name} #{ref}" + system(cmd) + end + + def rm_branch + branch_name = ARGV.shift + cmd = "cd #{full_path} && git branch -D #{branch_name}" + system(cmd) + end + + def create_tag + tag_name = ARGV.shift + ref = ARGV.shift || "HEAD" + cmd = "cd #{full_path} && git tag #{tag_name} #{ref}" + system(cmd) + end + + def rm_tag + tag_name = ARGV.shift + cmd = "cd #{full_path} && git tag -d #{tag_name}" + system(cmd) + end + def add_project $logger.info "Adding project #{@project_name} at <#{full_path}>." FileUtils.mkdir_p(full_path, mode: 0770) diff --git a/spec/gitlab_projects_spec.rb b/spec/gitlab_projects_spec.rb index ba8187e..1c02430 100644 --- a/spec/gitlab_projects_spec.rb +++ b/spec/gitlab_projects_spec.rb @@ -22,6 +22,74 @@ describe GitlabProjects do it { @gl_projects.instance_variable_get(:@full_path).should == "#{GitlabConfig.new.repos_path}/gitlab-ci.git" } end + describe :create_branch do + let(:gl_projects_create) { + build_gitlab_projects('import-project', repo_name, 'https://github.com/randx/six.git') + } + let(:gl_projects) { build_gitlab_projects('create-branch', repo_name, 'test_branch', 'master') } + + it "should create a branch" do + gl_projects_create.exec + gl_projects.exec + branch_ref = `cd #{tmp_repo_path} && git rev-parse test_branch`.strip + master_ref = `cd #{tmp_repo_path} && git rev-parse master`.strip + branch_ref.should == master_ref + end + end + + describe :rm_branch do + let(:gl_projects_create) { + build_gitlab_projects('import-project', repo_name, 'https://github.com/randx/six.git') + } + let(:gl_projects_create_branch) { + build_gitlab_projects('create-branch', repo_name, 'test_branch', 'master') + } + let(:gl_projects) { build_gitlab_projects('rm-branch', repo_name, 'test_branch') } + + it "should remove a branch" do + gl_projects_create.exec + gl_projects_create_branch.exec + branch_ref = `cd #{tmp_repo_path} && git rev-parse test_branch`.strip + gl_projects.exec + branch_del = `cd #{tmp_repo_path} && git rev-parse test_branch`.strip + branch_del.should_not == branch_ref + end + end + + describe :create_tag do + let(:gl_projects_create) { + build_gitlab_projects('import-project', repo_name, 'https://github.com/randx/six.git') + } + let(:gl_projects) { build_gitlab_projects('create-tag', repo_name, 'test_tag', 'master') } + + it "should create a tag" do + gl_projects_create.exec + gl_projects.exec + tag_ref = `cd #{tmp_repo_path} && git rev-parse test_tag`.strip + master_ref = `cd #{tmp_repo_path} && git rev-parse master`.strip + tag_ref.should == master_ref + end + end + + describe :rm_tag do + let(:gl_projects_create) { + build_gitlab_projects('import-project', repo_name, 'https://github.com/randx/six.git') + } + let(:gl_projects_create_tag) { + build_gitlab_projects('create-tag', repo_name, 'test_tag', 'master') + } + let(:gl_projects) { build_gitlab_projects('rm-tag', repo_name, 'test_tag') } + + it "should remove a branch" do + gl_projects_create.exec + gl_projects_create_tag.exec + branch_ref = `cd #{tmp_repo_path} && git rev-parse test_tag`.strip + gl_projects.exec + branch_del = `cd #{tmp_repo_path} && git rev-parse test_tag`.strip + branch_del.should_not == branch_ref + end + end + describe :add_project do let(:gl_projects) { build_gitlab_projects('add-project', repo_name) } |