modulesync 2.1.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +29 -9
- data/.github/workflows/release.yml +7 -7
- data/.gitignore +1 -0
- data/.rubocop.yml +14 -8
- data/.rubocop_todo.yml +25 -17
- data/.simplecov +46 -0
- data/CHANGELOG.md +58 -0
- data/Gemfile +5 -3
- data/LICENSE +173 -12
- data/README.md +30 -0
- data/bin/msync +17 -1
- data/features/cli.feature +12 -6
- data/features/execute.feature +51 -0
- data/features/hook.feature +5 -8
- data/features/push.feature +46 -0
- data/features/reset.feature +57 -0
- data/features/step_definitions/git_steps.rb +29 -1
- data/features/support/env.rb +9 -0
- data/features/update/bump_version.feature +8 -12
- data/features/update/dot_sync.feature +52 -0
- data/features/update/pull_request.feature +180 -0
- data/features/update.feature +74 -103
- data/lib/modulesync/cli/thor.rb +12 -0
- data/lib/modulesync/cli.rb +122 -28
- data/lib/modulesync/git_service/base.rb +63 -0
- data/lib/modulesync/git_service/factory.rb +28 -0
- data/lib/modulesync/{pr → git_service}/github.rb +23 -21
- data/lib/modulesync/git_service/gitlab.rb +62 -0
- data/lib/modulesync/git_service.rb +96 -0
- data/lib/modulesync/hook.rb +11 -13
- data/lib/modulesync/renderer.rb +3 -6
- data/lib/modulesync/repository.rb +78 -28
- data/lib/modulesync/settings.rb +0 -1
- data/lib/modulesync/source_code.rb +28 -2
- data/lib/modulesync/util.rb +4 -4
- data/lib/modulesync.rb +104 -66
- data/modulesync.gemspec +9 -5
- data/spec/helpers/faker/puppet_module_remote_repo.rb +16 -1
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/modulesync/git_service/factory_spec.rb +16 -0
- data/spec/unit/modulesync/git_service/github_spec.rb +81 -0
- data/spec/unit/modulesync/git_service/gitlab_spec.rb +90 -0
- data/spec/unit/modulesync/git_service_spec.rb +201 -0
- data/spec/unit/modulesync/source_code_spec.rb +22 -0
- data/spec/unit/modulesync_spec.rb +0 -12
- metadata +96 -14
- data/lib/modulesync/pr/gitlab.rb +0 -54
- data/spec/unit/modulesync/pr/github_spec.rb +0 -49
- data/spec/unit/modulesync/pr/gitlab_spec.rb +0 -81
@@ -0,0 +1,51 @@
|
|
1
|
+
Feature: execute
|
2
|
+
Use ModuleSync to execute a custom script on each repositories
|
3
|
+
|
4
|
+
Scenario: Cloning sourcecodes before running command when modules/ dir is empty
|
5
|
+
Given a basic setup with a puppet module "puppet-test" from "awesome"
|
6
|
+
Then the file "modules/awesome/puppet-test/metadata.json" should not exist
|
7
|
+
When I successfully run `msync exec --verbose -- /bin/true`
|
8
|
+
Then the stdout should contain "Cloning from 'file://"
|
9
|
+
And the file "modules/awesome/puppet-test/metadata.json" should exist
|
10
|
+
|
11
|
+
@no-clobber
|
12
|
+
Scenario: No clones before running command when sourcecode have already been cloned
|
13
|
+
Then the file "modules/awesome/puppet-test/metadata.json" should exist
|
14
|
+
When I successfully run `msync exec --verbose /bin/true`
|
15
|
+
Then the stdout should not contain "Cloning from 'file://"
|
16
|
+
|
17
|
+
@no-clobber
|
18
|
+
Scenario: When command run fails, fail fast if option defined
|
19
|
+
When I run `msync exec --verbose --fail-fast -- /bin/false`
|
20
|
+
Then the exit status should be 1
|
21
|
+
And the stderr should contain:
|
22
|
+
"""
|
23
|
+
Command execution failed
|
24
|
+
"""
|
25
|
+
|
26
|
+
@no-clobber
|
27
|
+
Scenario: When command run fails, run all and summarize errors if option fail-fast is not set
|
28
|
+
When I run `msync exec --verbose --no-fail-fast -- /bin/false`
|
29
|
+
Then the exit status should be 1
|
30
|
+
And the stderr should contain:
|
31
|
+
"""
|
32
|
+
Error(s) during `execute` command:
|
33
|
+
*
|
34
|
+
"""
|
35
|
+
|
36
|
+
Scenario: Show fail-fast default value in help
|
37
|
+
When I successfully run `msync help exec`
|
38
|
+
Then the stdout should contain:
|
39
|
+
"""
|
40
|
+
[--fail-fast], [--no-fail-fast] # Abort the run after a command execution failure
|
41
|
+
# Default: true
|
42
|
+
"""
|
43
|
+
|
44
|
+
Scenario: Override fail-fast default value using config file
|
45
|
+
Given the global option "fail_fast" sets to "false"
|
46
|
+
When I successfully run `msync help exec`
|
47
|
+
Then the stdout should contain:
|
48
|
+
"""
|
49
|
+
[--fail-fast], [--no-fail-fast] # Abort the run after a command execution failure
|
50
|
+
"""
|
51
|
+
# NOTE: It seems there is a Thor bug here: default value is missing in help when sets to 'false'
|
data/features/hook.feature
CHANGED
@@ -3,24 +3,21 @@ Feature: hook
|
|
3
3
|
|
4
4
|
Scenario: Activating a hook
|
5
5
|
Given a directory named ".git/hooks"
|
6
|
-
When I run `msync hook activate`
|
7
|
-
Then the
|
8
|
-
And the file named ".git/hooks/pre-push" should contain "bash"
|
6
|
+
When I successfully run `msync hook activate`
|
7
|
+
Then the file named ".git/hooks/pre-push" should contain "bash"
|
9
8
|
|
10
9
|
Scenario: Deactivating a hook
|
11
10
|
Given a file named ".git/hooks/pre-push" with:
|
12
11
|
"""
|
13
12
|
git hook
|
14
13
|
"""
|
15
|
-
When I run `msync hook deactivate`
|
16
|
-
Then the exit status should be 0
|
14
|
+
When I successfully run `msync hook deactivate`
|
17
15
|
Then the file ".git/hooks/pre-push" should not exist
|
18
16
|
|
19
17
|
Scenario: Activating a hook with arguments
|
20
18
|
Given a directory named ".git/hooks"
|
21
|
-
When I run `msync hook activate -a '--foo bar --baz quux' -b master`
|
22
|
-
Then the
|
23
|
-
And the file named ".git/hooks/pre-push" should contain:
|
19
|
+
When I successfully run `msync hook activate -a '--foo bar --baz quux' -b master`
|
20
|
+
Then the file named ".git/hooks/pre-push" should contain:
|
24
21
|
"""
|
25
22
|
"$message" -n puppetlabs -b master --foo bar --baz quux
|
26
23
|
"""
|
@@ -0,0 +1,46 @@
|
|
1
|
+
Feature: push
|
2
|
+
Push commits to remote
|
3
|
+
|
4
|
+
Scenario: Push available commits to remote
|
5
|
+
Given a mocked git configuration
|
6
|
+
And a puppet module "puppet-test" from "awesome"
|
7
|
+
And a file named "managed_modules.yml" with:
|
8
|
+
"""
|
9
|
+
---
|
10
|
+
puppet-test:
|
11
|
+
namespace: awesome
|
12
|
+
"""
|
13
|
+
And a file named "modulesync.yml" with:
|
14
|
+
"""
|
15
|
+
---
|
16
|
+
branch: modulesync
|
17
|
+
"""
|
18
|
+
And a git_base option appended to "modulesync.yml" for local tests
|
19
|
+
And I successfully run `msync reset`
|
20
|
+
And I cd to "modules/awesome/puppet-test"
|
21
|
+
And I run `touch hello`
|
22
|
+
And I run `git add hello`
|
23
|
+
And I run `git commit -m'Hello!'`
|
24
|
+
And I cd to "~"
|
25
|
+
Then the puppet module "puppet-test" from "awesome" should have no commits made by "Aruba"
|
26
|
+
When I successfully run `msync push --verbose`
|
27
|
+
Then the puppet module "puppet-test" from "awesome" should have 1 commit made by "Aruba" in branch "modulesync"
|
28
|
+
|
29
|
+
Scenario: Push command without a branch sets
|
30
|
+
Given a basic setup with a puppet module "puppet-test" from "awesome"
|
31
|
+
When I run `msync push --verbose`
|
32
|
+
Then the exit status should be 1
|
33
|
+
And the stderr should contain:
|
34
|
+
"""
|
35
|
+
Error: 'branch' option is missing, please set it in configuration or in command line.
|
36
|
+
"""
|
37
|
+
|
38
|
+
Scenario: Report the need to clone repositories if sourcecode was not cloned before
|
39
|
+
Given a basic setup with a puppet module "puppet-test" from "awesome"
|
40
|
+
And the global option "branch" sets to "modulesync"
|
41
|
+
When I run `msync push --verbose`
|
42
|
+
Then the exit status should be 1
|
43
|
+
And the stderr should contain:
|
44
|
+
"""
|
45
|
+
puppet-test: Repository must be locally available before trying to push
|
46
|
+
"""
|
@@ -0,0 +1,57 @@
|
|
1
|
+
Feature: reset
|
2
|
+
Reset all repositories
|
3
|
+
|
4
|
+
Scenario: Running first reset to clone repositories
|
5
|
+
Given a basic setup with a puppet module "puppet-test" from "awesome"
|
6
|
+
And the global option "branch" sets to "modulesync"
|
7
|
+
When I successfully run `msync reset --verbose`
|
8
|
+
Then the output should contain "Cloning from 'file://"
|
9
|
+
And the output should not contain "Hard-resetting any local changes to repository in"
|
10
|
+
|
11
|
+
@no-clobber
|
12
|
+
Scenario: Reset when sourcecodes have already been cloned
|
13
|
+
Given the file "modules/awesome/puppet-test/metadata.json" should exist
|
14
|
+
And the global option "branch" sets to "modulesync"
|
15
|
+
When I successfully run `msync reset --verbose`
|
16
|
+
Then the output should not contain "Cloning from 'file://"
|
17
|
+
And the output should contain "Hard-resetting any local changes to repository in 'modules/awesome/puppet-test' from branch 'origin/master'"
|
18
|
+
|
19
|
+
Scenario: Reset after an upstream file addition
|
20
|
+
Given a basic setup with a puppet module "puppet-test" from "awesome"
|
21
|
+
And the global option "branch" sets to "modulesync"
|
22
|
+
And I successfully run `msync reset`
|
23
|
+
Then the file "modules/awesome/puppet-test/hello" should not exist
|
24
|
+
When the puppet module "puppet-test" from "awesome" has a file named "hello" with:
|
25
|
+
"""
|
26
|
+
Hello
|
27
|
+
"""
|
28
|
+
When I successfully run `msync reset --verbose`
|
29
|
+
Then the output should contain "Hard-resetting any local changes to repository in 'modules/awesome/puppet-test' from branch 'origin/master'"
|
30
|
+
And the file "modules/awesome/puppet-test/hello" should exist
|
31
|
+
|
32
|
+
Scenario: Reset after an upstream file addition in offline mode
|
33
|
+
Given a basic setup with a puppet module "puppet-test" from "awesome"
|
34
|
+
And the global option "branch" sets to "modulesync"
|
35
|
+
And I successfully run `msync reset`
|
36
|
+
Then the file "modules/awesome/puppet-test/hello" should not exist
|
37
|
+
When the puppet module "puppet-test" from "awesome" has a branch named "execute"
|
38
|
+
And the puppet module "puppet-test" from "awesome" has, in branch "execute", a file named "hello" with:
|
39
|
+
"""
|
40
|
+
Hello
|
41
|
+
"""
|
42
|
+
When I successfully run `msync reset --offline`
|
43
|
+
Then the file "modules/awesome/puppet-test/hello" should not exist
|
44
|
+
|
45
|
+
Scenario: Reset to a specified branch
|
46
|
+
Given a basic setup with a puppet module "puppet-test" from "awesome"
|
47
|
+
And the global option "branch" sets to "modulesync"
|
48
|
+
When the puppet module "puppet-test" from "awesome" has a branch named "other-branch"
|
49
|
+
And the puppet module "puppet-test" from "awesome" has, in branch "other-branch", a file named "hello" with:
|
50
|
+
"""
|
51
|
+
Hello
|
52
|
+
"""
|
53
|
+
And I successfully run `msync reset`
|
54
|
+
Then the file "modules/awesome/puppet-test/hello" should not exist
|
55
|
+
When I successfully run `msync reset --verbose --source-branch origin/other-branch`
|
56
|
+
And the output should contain "Hard-resetting any local changes to repository in 'modules/awesome/puppet-test' from branch 'origin/other-branch'"
|
57
|
+
Then the file "modules/awesome/puppet-test/hello" should exist
|
@@ -32,7 +32,20 @@ Given 'a puppet module {string} from {string}' do |name, namespace|
|
|
32
32
|
end
|
33
33
|
|
34
34
|
Given 'a git_base option appended to "modulesync.yml" for local tests' do
|
35
|
-
|
35
|
+
step "the global option 'git_base' sets to '#{ModuleSync::Faker::PuppetModuleRemoteRepo.git_base}'"
|
36
|
+
end
|
37
|
+
|
38
|
+
Given 'the file {string} appended with:' do |filename, content|
|
39
|
+
File.write filename, "\n#{content}", mode: 'a'
|
40
|
+
end
|
41
|
+
|
42
|
+
Given 'the global option {string} sets to {string}' do |key, value|
|
43
|
+
steps %(
|
44
|
+
Given the file "#{Aruba.config.working_directory}/modulesync.yml" appended with:
|
45
|
+
"""
|
46
|
+
#{key}: #{value}
|
47
|
+
"""
|
48
|
+
)
|
36
49
|
end
|
37
50
|
|
38
51
|
Given 'the puppet module {string} from {string} is read-only' do |name, namespace|
|
@@ -64,6 +77,16 @@ Given 'the puppet module {string} from {string} has a file named {string} with:'
|
|
64
77
|
pmrr.add_file(filename, content)
|
65
78
|
end
|
66
79
|
|
80
|
+
Given 'the puppet module {string} from {string} has, in branch {string}, a file named {string} with:' do |name, namespace, branch, filename, content|
|
81
|
+
pmrr = ModuleSync::Faker::PuppetModuleRemoteRepo.new(name, namespace)
|
82
|
+
pmrr.add_file(filename, content, branch)
|
83
|
+
end
|
84
|
+
|
85
|
+
Given 'the puppet module {string} from {string} has a branch named {string}' do |name, namespace, branch|
|
86
|
+
pmrr = ModuleSync::Faker::PuppetModuleRemoteRepo.new(name, namespace)
|
87
|
+
pmrr.create_branch(branch)
|
88
|
+
end
|
89
|
+
|
67
90
|
Then 'the puppet module {string} from {string} should have a branch {string} with a file named {string} which contains:' do |name, namespace, branch, filename, content|
|
68
91
|
pmrr = ModuleSync::Faker::PuppetModuleRemoteRepo.new(name, namespace)
|
69
92
|
expect(pmrr.read_file(filename, branch)).to include(content)
|
@@ -83,3 +106,8 @@ Then('the puppet module {string} from {string} should not have a tag named {stri
|
|
83
106
|
pmrr = ModuleSync::Faker::PuppetModuleRemoteRepo.new(name, namespace)
|
84
107
|
expect(pmrr.tags).not_to include(tag)
|
85
108
|
end
|
109
|
+
|
110
|
+
Given 'the branch {string} of the puppet module {string} from {string} is deleted' do |branch, name, namespace|
|
111
|
+
pmrr = ModuleSync::Faker::PuppetModuleRemoteRepo.new(name, namespace)
|
112
|
+
pmrr.delete_branch(branch)
|
113
|
+
end
|
data/features/support/env.rb
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
|
3
|
+
SimpleCov.command_name 'Cucumber'
|
4
|
+
|
1
5
|
require 'aruba/cucumber'
|
2
6
|
|
3
7
|
require_relative '../../spec/helpers/faker'
|
@@ -6,4 +10,9 @@ ModuleSync::Faker.working_directory = File.expand_path('faker', Aruba.config.wor
|
|
6
10
|
|
7
11
|
Before do
|
8
12
|
@aruba_timeout_seconds = 5
|
13
|
+
|
14
|
+
# This enables coverage when aruba runs `msync` executable (cf. `bin/msync`)
|
15
|
+
set_environment_variable('COVERAGE', '1')
|
16
|
+
|
17
|
+
aruba.config.activate_announcer_on_command_failure = %i[stdout stderr]
|
9
18
|
end
|
@@ -16,9 +16,8 @@ Feature: Bump a new version after an update
|
|
16
16
|
"""
|
17
17
|
<%= @configs['content'] %>
|
18
18
|
"""
|
19
|
-
When I run `msync update --message "Add new-file" --bump --changelog --tag`
|
20
|
-
Then the
|
21
|
-
And the file named "modules/fakenamespace/puppet-test/new-file" should contain "aruba"
|
19
|
+
When I successfully run `msync update --verbose --message "Add new-file" --bump --changelog --tag`
|
20
|
+
Then the file named "modules/fakenamespace/puppet-test/new-file" should contain "aruba"
|
22
21
|
And the stdout should contain:
|
23
22
|
"""
|
24
23
|
Bumped to version 0.4.3
|
@@ -44,9 +43,8 @@ Feature: Bump a new version after an update
|
|
44
43
|
"""
|
45
44
|
<%= @configs['content'] %>
|
46
45
|
"""
|
47
|
-
When I run `msync update --message "Add new-file" --bump`
|
48
|
-
Then the
|
49
|
-
And the file named "modules/fakenamespace/puppet-test/new-file" should contain "aruba"
|
46
|
+
When I successfully run `msync update --message "Add new-file" --bump`
|
47
|
+
Then the file named "modules/fakenamespace/puppet-test/new-file" should contain "aruba"
|
50
48
|
And the stdout should contain:
|
51
49
|
"""
|
52
50
|
Bumped to version 0.4.3
|
@@ -67,9 +65,8 @@ Feature: Bump a new version after an update
|
|
67
65
|
"""
|
68
66
|
<%= @configs['content'] %>
|
69
67
|
"""
|
70
|
-
When I run `msync update --message "Add new-file" --bump --changelog`
|
71
|
-
Then the
|
72
|
-
And the file named "modules/fakenamespace/puppet-test/new-file" should contain "aruba"
|
68
|
+
When I successfully run `msync update --message "Add new-file" --bump --changelog`
|
69
|
+
Then the file named "modules/fakenamespace/puppet-test/new-file" should contain "aruba"
|
73
70
|
And the stdout should contain:
|
74
71
|
"""
|
75
72
|
Bumped to version 0.4.3
|
@@ -81,7 +78,6 @@ Feature: Bump a new version after an update
|
|
81
78
|
Scenario: Dont bump the module version after an update that produces no changes
|
82
79
|
Given a basic setup with a puppet module "puppet-test" from "fakenamespace"
|
83
80
|
And a directory named "moduleroot"
|
84
|
-
When I run `msync update --message "Add new-file" --bump --tag`
|
85
|
-
Then the
|
86
|
-
And the puppet module "puppet-test" from "fakenamespace" should have no commits made by "Aruba"
|
81
|
+
When I successfully run `msync update --message "Add new-file" --bump --tag`
|
82
|
+
Then the puppet module "puppet-test" from "fakenamespace" should have no commits made by "Aruba"
|
87
83
|
And the puppet module "puppet-test" from "fakenamespace" should not have a tag named "0.4.3"
|
@@ -0,0 +1,52 @@
|
|
1
|
+
Feature: Update using a `.sync.yml` file
|
2
|
+
ModuleSync needs to apply templates according to `.sync.yml` content
|
3
|
+
|
4
|
+
Scenario: Updating a module with a .sync.yml file
|
5
|
+
Given a basic setup with a puppet module "puppet-test" from "fakenamespace"
|
6
|
+
And a file named "config_defaults.yml" with:
|
7
|
+
"""
|
8
|
+
---
|
9
|
+
:global:
|
10
|
+
variable: 'global'
|
11
|
+
template_with_specific_config:
|
12
|
+
variable: 'specific'
|
13
|
+
"""
|
14
|
+
And a file named "moduleroot/template_with_specific_config.erb" with:
|
15
|
+
"""
|
16
|
+
---
|
17
|
+
<%= @configs['variable'] %>
|
18
|
+
"""
|
19
|
+
And a file named "moduleroot/template_with_only_global_config.erb" with:
|
20
|
+
"""
|
21
|
+
---
|
22
|
+
<%= @configs['variable'] %>
|
23
|
+
"""
|
24
|
+
And the puppet module "puppet-test" from "fakenamespace" has a branch named "target"
|
25
|
+
And the puppet module "puppet-test" from "fakenamespace" has, in branch "target", a file named ".sync.yml" with:
|
26
|
+
"""
|
27
|
+
---
|
28
|
+
:global:
|
29
|
+
variable: 'overwritten by globally defined value in .sync.yml'
|
30
|
+
template_with_specific_config:
|
31
|
+
variable: 'overwritten by file-specific defined value in .sync.yml'
|
32
|
+
"""
|
33
|
+
When I successfully run `msync update --message 'Apply ModuleSync templates to target source code' --branch 'target'`
|
34
|
+
Then the file named "modules/fakenamespace/puppet-test/template_with_specific_config" should contain:
|
35
|
+
"""
|
36
|
+
overwritten by file-specific defined value in .sync.yml
|
37
|
+
"""
|
38
|
+
And the puppet module "puppet-test" from "fakenamespace" should have 1 commit made by "Aruba"
|
39
|
+
When the puppet module "puppet-test" from "fakenamespace" has, in branch "target", a file named ".sync.yml" with:
|
40
|
+
"""
|
41
|
+
---
|
42
|
+
:global:
|
43
|
+
variable: 'overwritten by globally defined value in .sync.yml'
|
44
|
+
template_with_specific_config:
|
45
|
+
variable: 'overwritten by newly file-specific defined value in .sync.yml'
|
46
|
+
"""
|
47
|
+
And I successfully run `msync update --message 'Apply ModuleSync templates to target source code' --branch 'target'`
|
48
|
+
Then the file named "modules/fakenamespace/puppet-test/template_with_specific_config" should contain:
|
49
|
+
"""
|
50
|
+
overwritten by newly file-specific defined value in .sync.yml
|
51
|
+
"""
|
52
|
+
And the puppet module "puppet-test" from "fakenamespace" should have 2 commits made by "Aruba"
|
@@ -0,0 +1,180 @@
|
|
1
|
+
Feature: Create a pull-request/merge-request after update
|
2
|
+
|
3
|
+
Scenario: Run update in no-op mode and ask for GitHub PR
|
4
|
+
Given a basic setup with a puppet module "puppet-test" from "fakenamespace"
|
5
|
+
And a file named "managed_modules.yml" with:
|
6
|
+
"""
|
7
|
+
---
|
8
|
+
puppet-test:
|
9
|
+
github: {}
|
10
|
+
"""
|
11
|
+
And I set the environment variables to:
|
12
|
+
| variable | value |
|
13
|
+
| GITHUB_TOKEN | foobar |
|
14
|
+
| GITHUB_BASE_URL | https://github.example.com |
|
15
|
+
And a file named "config_defaults.yml" with:
|
16
|
+
"""
|
17
|
+
---
|
18
|
+
test:
|
19
|
+
name: aruba
|
20
|
+
"""
|
21
|
+
And a file named "moduleroot/test.erb" with:
|
22
|
+
"""
|
23
|
+
<%= @configs['name'] %>
|
24
|
+
"""
|
25
|
+
When I successfully run `msync update --noop --branch managed_update --pr`
|
26
|
+
Then the output should contain "Would submit PR "
|
27
|
+
And the puppet module "puppet-test" from "fakenamespace" should have no commits made by "Aruba"
|
28
|
+
|
29
|
+
Scenario: Run update in no-op mode and ask for GitLab MR
|
30
|
+
Given a basic setup with a puppet module "puppet-test" from "fakenamespace"
|
31
|
+
And a file named "managed_modules.yml" with:
|
32
|
+
"""
|
33
|
+
---
|
34
|
+
puppet-test:
|
35
|
+
gitlab: {
|
36
|
+
base_url: 'https://gitlab.example.com'
|
37
|
+
}
|
38
|
+
"""
|
39
|
+
And I set the environment variables to:
|
40
|
+
| variable | value |
|
41
|
+
| GITLAB_TOKEN | foobar |
|
42
|
+
And a file named "config_defaults.yml" with:
|
43
|
+
"""
|
44
|
+
---
|
45
|
+
test:
|
46
|
+
name: aruba
|
47
|
+
"""
|
48
|
+
And a file named "moduleroot/test.erb" with:
|
49
|
+
"""
|
50
|
+
<%= @configs['name'] %>
|
51
|
+
"""
|
52
|
+
When I successfully run `msync update --noop --branch managed_update --pr`
|
53
|
+
Then the output should contain "Would submit MR "
|
54
|
+
And the puppet module "puppet-test" from "fakenamespace" should have no commits made by "Aruba"
|
55
|
+
|
56
|
+
Scenario: Run update without changes in no-op mode and ask for GitLab MR
|
57
|
+
Given a basic setup with a puppet module "puppet-test" from "fakenamespace"
|
58
|
+
And a directory named "moduleroot"
|
59
|
+
And a file named "managed_modules.yml" with:
|
60
|
+
"""
|
61
|
+
---
|
62
|
+
puppet-test:
|
63
|
+
gitlab: {
|
64
|
+
base_url: 'https://gitlab.example.com'
|
65
|
+
}
|
66
|
+
"""
|
67
|
+
And I set the environment variables to:
|
68
|
+
| variable | value |
|
69
|
+
| GITLAB_TOKEN | foobar |
|
70
|
+
When I successfully run `msync update --noop --branch managed_update --pr`
|
71
|
+
Then the output should not contain "Would submit MR "
|
72
|
+
And the puppet module "puppet-test" from "fakenamespace" should have no commits made by "Aruba"
|
73
|
+
|
74
|
+
Scenario: Ask for PR without credentials
|
75
|
+
Given a basic setup with a puppet module "puppet-test" from "fakenamespace"
|
76
|
+
And a file named "managed_modules.yml" with:
|
77
|
+
"""
|
78
|
+
---
|
79
|
+
puppet-test:
|
80
|
+
gitlab: {
|
81
|
+
base_url: https://gitlab.example.com
|
82
|
+
}
|
83
|
+
"""
|
84
|
+
And a file named "config_defaults.yml" with:
|
85
|
+
"""
|
86
|
+
---
|
87
|
+
test:
|
88
|
+
name: aruba
|
89
|
+
"""
|
90
|
+
And a file named "moduleroot/test.erb" with:
|
91
|
+
"""
|
92
|
+
<%= @configs['name'] %>
|
93
|
+
"""
|
94
|
+
When I run `msync update --noop --pr`
|
95
|
+
Then the stderr should contain "A token is required to use services from gitlab"
|
96
|
+
And the exit status should be 1
|
97
|
+
And the puppet module "puppet-test" from "fakenamespace" should have no commits made by "Aruba"
|
98
|
+
|
99
|
+
Scenario: Ask for PR/MR with modules from GitHub and from GitLab
|
100
|
+
Given a basic setup with a puppet module "puppet-github" from "fakenamespace"
|
101
|
+
And a basic setup with a puppet module "puppet-gitlab" from "fakenamespace"
|
102
|
+
And a file named "managed_modules.yml" with:
|
103
|
+
"""
|
104
|
+
---
|
105
|
+
puppet-github:
|
106
|
+
github:
|
107
|
+
base_url: https://github.example.com
|
108
|
+
token: 'secret'
|
109
|
+
puppet-gitlab:
|
110
|
+
gitlab:
|
111
|
+
base_url: https://gitlab.example.com
|
112
|
+
token: 'secret'
|
113
|
+
"""
|
114
|
+
And a file named "config_defaults.yml" with:
|
115
|
+
"""
|
116
|
+
---
|
117
|
+
test:
|
118
|
+
name: aruba
|
119
|
+
"""
|
120
|
+
And a file named "moduleroot/test.erb" with:
|
121
|
+
"""
|
122
|
+
<%= @configs['name'] %>
|
123
|
+
"""
|
124
|
+
When I successfully run `msync update --noop --branch managed_update --pr`
|
125
|
+
Then the output should contain "Would submit PR "
|
126
|
+
And the output should contain "Would submit MR "
|
127
|
+
And the puppet module "puppet-github" from "fakenamespace" should have no commits made by "Aruba"
|
128
|
+
And the puppet module "puppet-gitlab" from "fakenamespace" should have no commits made by "Aruba"
|
129
|
+
|
130
|
+
Scenario: Ask for PR with same source and target branch
|
131
|
+
Given a basic setup with a puppet module "puppet-test" from "fakenamespace"
|
132
|
+
And a file named "managed_modules.yml" with:
|
133
|
+
"""
|
134
|
+
---
|
135
|
+
puppet-test:
|
136
|
+
gitlab:
|
137
|
+
token: 'secret'
|
138
|
+
base_url: 'https://gitlab.example.com'
|
139
|
+
"""
|
140
|
+
And a file named "config_defaults.yml" with:
|
141
|
+
"""
|
142
|
+
---
|
143
|
+
test:
|
144
|
+
name: aruba
|
145
|
+
"""
|
146
|
+
And a file named "moduleroot/test.erb" with:
|
147
|
+
"""
|
148
|
+
<%= @configs['name'] %>
|
149
|
+
"""
|
150
|
+
When I run `msync update --noop --branch managed_update --pr --pr-target-branch managed_update`
|
151
|
+
Then the stderr should contain "Unable to open a pull request with the same source and target branch: 'managed_update'"
|
152
|
+
And the exit status should be 1
|
153
|
+
And the puppet module "puppet-test" from "fakenamespace" should have no commits made by "Aruba"
|
154
|
+
|
155
|
+
Scenario: Ask for PR with the default branch as source and target
|
156
|
+
Given a basic setup with a puppet module "puppet-test" from "fakenamespace"
|
157
|
+
And the puppet module "puppet-test" from "fakenamespace" has the default branch named "custom_default_branch"
|
158
|
+
And a file named "managed_modules.yml" with:
|
159
|
+
"""
|
160
|
+
---
|
161
|
+
puppet-test:
|
162
|
+
github:
|
163
|
+
token: 'secret'
|
164
|
+
base_url: 'https://gitlab.example.com'
|
165
|
+
"""
|
166
|
+
And a file named "config_defaults.yml" with:
|
167
|
+
"""
|
168
|
+
---
|
169
|
+
test:
|
170
|
+
name: aruba
|
171
|
+
"""
|
172
|
+
And a file named "moduleroot/test.erb" with:
|
173
|
+
"""
|
174
|
+
<%= @configs['name'] %>
|
175
|
+
"""
|
176
|
+
And a directory named "moduleroot"
|
177
|
+
When I run `msync update --noop --pr`
|
178
|
+
Then the stderr should contain "Unable to open a pull request with the same source and target branch: 'custom_default_branch'"
|
179
|
+
And the exit status should be 1
|
180
|
+
And the puppet module "puppet-test" from "fakenamespace" should have no commits made by "Aruba"
|