braid 1.1.6 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/exe/braid +11 -0
  3. data/lib/braid/check_gem.rb +58 -0
  4. data/lib/braid/command.rb +13 -0
  5. data/lib/braid/commands/diff.rb +1 -1
  6. data/lib/braid/config.rb +28 -4
  7. data/{bin/braid → lib/braid/main.rb} +1 -16
  8. data/lib/braid/mirror.rb +110 -23
  9. data/lib/braid/operations.rb +5 -4
  10. data/lib/braid/operations_lite.rb +19 -1
  11. data/lib/braid/sorbet/fake_runtime.rb +68 -0
  12. data/lib/braid/sorbet/setup.rb +18 -0
  13. data/lib/braid/version.rb +1 -1
  14. data/lib/braid.rb +21 -0
  15. metadata +12 -75
  16. data/.gitignore +0 -16
  17. data/.travis.yml +0 -15
  18. data/CONTRIBUTING.md +0 -24
  19. data/Gemfile +0 -3
  20. data/README.md +0 -234
  21. data/Rakefile +0 -12
  22. data/_config.yml +0 -1
  23. data/braid.gemspec +0 -35
  24. data/braids-json.schema.json +0 -91
  25. data/config_versions.md +0 -58
  26. data/spec/config_spec.rb +0 -59
  27. data/spec/fixtures/shiny/README +0 -3
  28. data/spec/fixtures/shiny/other-skit/layout.liquid +0 -219
  29. data/spec/fixtures/shiny/skit-layout.liquid.test +0 -2
  30. data/spec/fixtures/shiny/skit1.test +0 -2
  31. data/spec/fixtures/shiny-conf-1.0.9-lock/.braids.json +0 -10
  32. data/spec/fixtures/shiny-conf-1.0.9-lock/expected.braids.json +0 -9
  33. data/spec/fixtures/shiny-conf-1.0.9-lock/skit1/layouts/layout.liquid +0 -219
  34. data/spec/fixtures/shiny-conf-1.0.9-lock/skit1/preview.png +0 -0
  35. data/spec/fixtures/shiny-conf-breaking-changes/.braids +0 -14
  36. data/spec/fixtures/shiny-conf-breaking-changes/Spoon-Knife/README.md +0 -9
  37. data/spec/fixtures/shiny-conf-breaking-changes/Spoon-Knife/index.html +0 -20
  38. data/spec/fixtures/shiny-conf-breaking-changes/Spoon-Knife/styles.css +0 -17
  39. data/spec/fixtures/shiny-conf-breaking-changes/expected.braids.json +0 -10
  40. data/spec/fixtures/shiny-conf-breaking-changes/skit1/layouts/layout.liquid +0 -219
  41. data/spec/fixtures/shiny-conf-breaking-changes/skit1/preview.png +0 -0
  42. data/spec/fixtures/shiny-conf-future/.braids.json +0 -10
  43. data/spec/fixtures/shiny-conf-future/skit1/layouts/layout.liquid +0 -219
  44. data/spec/fixtures/shiny-conf-future/skit1/preview.png +0 -0
  45. data/spec/fixtures/shiny-conf-json-old-name/.braids +0 -9
  46. data/spec/fixtures/shiny-conf-json-old-name/expected.braids.json +0 -10
  47. data/spec/fixtures/shiny-conf-json-old-name/skit1/layouts/layout.liquid +0 -219
  48. data/spec/fixtures/shiny-conf-json-old-name/skit1/preview.png +0 -0
  49. data/spec/fixtures/shiny-conf-yaml/.braids +0 -8
  50. data/spec/fixtures/shiny-conf-yaml/expected.braids.json +0 -10
  51. data/spec/fixtures/shiny-conf-yaml/skit1/layouts/layout.liquid +0 -219
  52. data/spec/fixtures/shiny-conf-yaml/skit1/preview.png +0 -0
  53. data/spec/fixtures/shiny_skit1.2_merged/layouts/layout.liquid +0 -223
  54. data/spec/fixtures/shiny_skit1.2_merged/preview.png +0 -0
  55. data/spec/fixtures/shiny_skit1_conflicting/layouts/layout.liquid +0 -221
  56. data/spec/fixtures/shiny_skit1_conflicting/preview.png +0 -0
  57. data/spec/fixtures/shiny_skit1_mergeable/layouts/layout.liquid +0 -221
  58. data/spec/fixtures/shiny_skit1_mergeable/preview.png +0 -0
  59. data/spec/fixtures/skit1/layouts/layout.liquid +0 -219
  60. data/spec/fixtures/skit1/preview.png +0 -0
  61. data/spec/fixtures/skit1.1/layouts/layout.liquid +0 -219
  62. data/spec/fixtures/skit1.1_with_filter/.gitattributes +0 -1
  63. data/spec/fixtures/skit1.1_with_filter/layouts/layout.liquid +0 -219
  64. data/spec/fixtures/skit1.1_with_filter/preview.png +0 -0
  65. data/spec/fixtures/skit1.1x/layouts/layout.liquid +0 -219
  66. data/spec/fixtures/skit1.2/layouts/layout.liquid +0 -221
  67. data/spec/fixtures/skit1.3/layouts/README.md +0 -1
  68. data/spec/fixtures/skit1.3/layouts/layout.liquid +0 -221
  69. data/spec/fixtures/skit1_with_filter/.gitattributes +0 -1
  70. data/spec/fixtures/skit1_with_filter/layouts/layout.liquid +0 -219
  71. data/spec/fixtures/skit1_with_filter/preview.png +0 -0
  72. data/spec/integration/adding_spec.rb +0 -230
  73. data/spec/integration/config_versioning_spec.rb +0 -222
  74. data/spec/integration/diff_spec.rb +0 -597
  75. data/spec/integration/integration_helper.rb +0 -129
  76. data/spec/integration/push_spec.rb +0 -399
  77. data/spec/integration/remove_spec.rb +0 -81
  78. data/spec/integration/status_spec.rb +0 -165
  79. data/spec/integration/updating_spec.rb +0 -487
  80. data/spec/mirror_spec.rb +0 -119
  81. data/spec/operations_spec.rb +0 -66
  82. data/spec/test_helper.rb +0 -19
@@ -1,230 +0,0 @@
1
- require File.dirname(__FILE__) + '/integration_helper'
2
-
3
- describe 'Adding a mirror in a clean repository' do
4
-
5
- before do
6
- FileUtils.rm_rf(TMP_PATH)
7
- FileUtils.mkdir_p(TMP_PATH)
8
- end
9
-
10
- describe 'from a git repository' do
11
- before do
12
- @repository_dir = create_git_repo_from_fixture('shiny', :name => 'Some body', :email => 'somebody@example.com')
13
- @vendor_repository_dir = create_git_repo_from_fixture('skit1')
14
-
15
- in_dir(@repository_dir) do
16
- run_command("#{BRAID_BIN} add #{@vendor_repository_dir}")
17
- end
18
- end
19
-
20
- it 'should add the files and commit' do
21
- assert_no_diff("#{FIXTURE_PATH}/skit1/layouts/layout.liquid", "#{@repository_dir}/skit1/layouts/layout.liquid")
22
-
23
- in_dir(@repository_dir) do
24
- assert_commit_subject(/Braid: Add mirror 'skit1' at '[0-9a-f]{7}'/)
25
- assert_commit_author('Some body')
26
- assert_commit_email('somebody@example.com')
27
- end
28
- end
29
-
30
- it 'should create .braids.json and add the mirror to it' do
31
- braids = YAML::load_file("#{@repository_dir}/.braids.json")
32
- expect(braids['config_version']).to be_kind_of(Numeric)
33
- mirror_obj = braids['mirrors']['skit1']
34
- expect(mirror_obj['url']).to eq(@vendor_repository_dir)
35
- expect(mirror_obj['revision']).not_to be_nil
36
- expect(mirror_obj['branch']).to eq('master')
37
- expect(mirror_obj['tag']).to be_nil
38
- expect(mirror_obj['path']).to be_nil
39
- end
40
- end
41
-
42
- describe 'from a subdirectory in a git repository' do
43
- before do
44
- @repository_dir = create_git_repo_from_fixture('shiny', :name => 'Some body', :email => 'somebody@example.com')
45
- @vendor_repository_dir = create_git_repo_from_fixture('skit1')
46
-
47
- in_dir(@repository_dir) do
48
- run_command("#{BRAID_BIN} add --path layouts #{@vendor_repository_dir} skit-layouts")
49
- end
50
- end
51
-
52
- it 'should add the files and commit' do
53
- assert_no_diff("#{FIXTURE_PATH}/skit1/layouts/layout.liquid", "#{@repository_dir}/skit-layouts/layout.liquid")
54
-
55
- in_dir(@repository_dir) do
56
- assert_commit_subject(/Braid: Add mirror 'skit-layouts' at '[0-9a-f]{7}'/)
57
- assert_commit_author('Some body')
58
- assert_commit_email('somebody@example.com')
59
- end
60
- end
61
-
62
- it 'should create .braids.json and add the mirror to it' do
63
- braids = YAML::load_file("#{@repository_dir}/.braids.json")
64
- expect(braids['config_version']).to be_kind_of(Numeric)
65
- mirror_obj = braids['mirrors']['skit-layouts']
66
- expect(mirror_obj['url']).to eq(@vendor_repository_dir)
67
- expect(mirror_obj['revision']).not_to be_nil
68
- expect(mirror_obj['branch']).to eq('master')
69
- expect(mirror_obj['tag']).to be_nil
70
- expect(mirror_obj['path']).to eq('layouts')
71
- end
72
- end
73
-
74
- describe 'from a single file in a git repository' do
75
- before do
76
- @repository_dir = create_git_repo_from_fixture('shiny', :name => 'Some body', :email => 'somebody@example.com')
77
- @vendor_repository_dir = create_git_repo_from_fixture('skit1')
78
-
79
- in_dir(@repository_dir) do
80
- run_command("#{BRAID_BIN} add --path layouts/layout.liquid #{@vendor_repository_dir} skit-layout.liquid")
81
- end
82
- end
83
-
84
- it 'should add the file and commit' do
85
- assert_no_diff("#{FIXTURE_PATH}/skit1/layouts/layout.liquid", "#{@repository_dir}/skit-layout.liquid")
86
-
87
- in_dir(@repository_dir) do
88
- assert_commit_subject(/Braid: Add mirror 'skit-layout.liquid' at '[0-9a-f]{7}'/)
89
- assert_commit_author('Some body')
90
- assert_commit_email('somebody@example.com')
91
- end
92
- end
93
-
94
- it 'should create .braids.json and add the mirror to it' do
95
- braids = YAML::load_file("#{@repository_dir}/.braids.json")
96
- expect(braids['config_version']).to be_kind_of(Numeric)
97
- mirror_obj = braids['mirrors']['skit-layout.liquid']
98
- expect(mirror_obj['url']).to eq(@vendor_repository_dir)
99
- expect(mirror_obj['revision']).not_to be_nil
100
- expect(mirror_obj['branch']).to eq('master')
101
- expect(mirror_obj['tag']).to be_nil
102
- expect(mirror_obj['path']).to eq('layouts/layout.liquid')
103
- end
104
- end
105
-
106
- describe 'from a tag in a git repository' do
107
- before do
108
- @repository_dir = create_git_repo_from_fixture('shiny', :name => 'Some body', :email => 'somebody@example.com')
109
- @vendor_repository_dir = create_git_repo_from_fixture('skit1')
110
- in_dir(@vendor_repository_dir) do
111
- run_command('git tag v1')
112
- end
113
-
114
- in_dir(@repository_dir) do
115
- run_command("#{BRAID_BIN} add #{@vendor_repository_dir} --tag v1")
116
- end
117
- end
118
-
119
- it 'should add the files and commit' do
120
- assert_no_diff("#{FIXTURE_PATH}/skit1/layouts/layout.liquid", "#{@repository_dir}/skit1/layouts/layout.liquid")
121
-
122
- in_dir(@repository_dir) do
123
- assert_commit_subject(/Braid: Add mirror 'skit1' at '[0-9a-f]{7}'/)
124
- assert_commit_author('Some body')
125
- assert_commit_email('somebody@example.com')
126
- end
127
- end
128
-
129
- it 'should create .braids.json and add the mirror to it' do
130
- braids = YAML::load_file("#{@repository_dir}/.braids.json")
131
- expect(braids['config_version']).to be_kind_of(Numeric)
132
- mirror_obj = braids['mirrors']['skit1']
133
- expect(mirror_obj['url']).to eq(@vendor_repository_dir)
134
- expect(mirror_obj['revision']).not_to be_nil
135
- expect(mirror_obj['branch']).to be_nil
136
- expect(mirror_obj['tag']).to eq('v1')
137
- expect(mirror_obj['path']).to be_nil
138
- end
139
- end
140
-
141
- describe 'from an annotated tag in a git repository' do
142
- before do
143
- @repository_dir = create_git_repo_from_fixture('shiny', :name => 'Some body', :email => 'somebody@example.com')
144
- @vendor_repository_dir = create_git_repo_from_fixture('skit1')
145
- in_dir(@vendor_repository_dir) do
146
- run_command('git tag -a -m "v1" v1')
147
- end
148
-
149
- in_dir(@repository_dir) do
150
- run_command("#{BRAID_BIN} add #{@vendor_repository_dir} --tag v1")
151
- end
152
- end
153
-
154
- it 'should add the files and commit' do
155
- assert_no_diff("#{FIXTURE_PATH}/skit1/layouts/layout.liquid", "#{@repository_dir}/skit1/layouts/layout.liquid")
156
-
157
- in_dir(@repository_dir) do
158
- assert_commit_subject(/Braid: Add mirror 'skit1' at '[0-9a-f]{7}'/)
159
- assert_commit_author('Some body')
160
- assert_commit_email('somebody@example.com')
161
- end
162
- end
163
-
164
- it 'should create .braids.json and add the mirror to it' do
165
- braids = YAML::load_file("#{@repository_dir}/.braids.json")
166
- expect(braids['config_version']).to be_kind_of(Numeric)
167
- mirror_obj = braids['mirrors']['skit1']
168
- expect(mirror_obj['url']).to eq(@vendor_repository_dir)
169
- expect(mirror_obj['revision']).not_to be_nil
170
- expect(mirror_obj['branch']).to be_nil
171
- expect(mirror_obj['tag']).to eq('v1')
172
- expect(mirror_obj['path']).to be_nil
173
- end
174
- end
175
-
176
- describe 'from a revision in a git repository' do
177
- before do
178
- @repository_dir = create_git_repo_from_fixture('shiny', :name => 'Some body', :email => 'somebody@example.com')
179
- @vendor_repository_dir = create_git_repo_from_fixture('skit1')
180
- in_dir(@vendor_repository_dir) do
181
- run_command('git tag v1')
182
- @revision = run_command('git rev-parse HEAD').strip
183
- end
184
-
185
- in_dir(@repository_dir) do
186
- run_command("#{BRAID_BIN} add #{@vendor_repository_dir} --revision #{@revision}")
187
- end
188
- end
189
-
190
- it 'should add the files and commit' do
191
- assert_no_diff("#{FIXTURE_PATH}/skit1/layouts/layout.liquid", "#{@repository_dir}/skit1/layouts/layout.liquid")
192
-
193
- in_dir(@repository_dir) do
194
- assert_commit_subject(/Braid: Add mirror 'skit1' at '[0-9a-f]{7}'/)
195
- assert_commit_author('Some body')
196
- assert_commit_email('somebody@example.com')
197
- end
198
- end
199
-
200
- it 'should create .braids.json and add the mirror to it' do
201
- braids = YAML::load_file("#{@repository_dir}/.braids.json")
202
- expect(braids['config_version']).to be_kind_of(Numeric)
203
- mirror_obj = braids['mirrors']['skit1']
204
- expect(mirror_obj['url']).to eq(@vendor_repository_dir)
205
- expect(mirror_obj['revision']).not_to be_nil
206
- expect(mirror_obj['branch']).to be_nil
207
- expect(mirror_obj['tag']).to be_nil
208
- expect(mirror_obj['path']).to be_nil
209
- end
210
- end
211
-
212
- describe 'with a git repository' do
213
- before do
214
- @repository_dir = create_git_repo_from_fixture('shiny', :name => 'Some body', :email => 'somebody@example.com')
215
- @vendor_repository_dir = create_git_repo_from_fixture('skit1')
216
- in_dir(@vendor_repository_dir) do
217
- run_command('git tag v1')
218
- end
219
- end
220
-
221
- it 'should generate an error if both tag and revision specified' do
222
- output = nil
223
- in_dir(@repository_dir) do
224
- output = `#{BRAID_BIN} add #{@vendor_repository_dir} --revision X --tag v1`
225
- end
226
-
227
- expect(output).to match(/^Braid: Error: Can not add mirror specifying both a revision and a tag$/)
228
- end
229
- end
230
- end
@@ -1,222 +0,0 @@
1
- require File.dirname(__FILE__) + '/integration_helper'
2
-
3
- describe 'Config versioning:' do
4
-
5
- before do
6
- FileUtils.rm_rf(TMP_PATH)
7
- FileUtils.mkdir_p(TMP_PATH)
8
- end
9
-
10
- # Workaround for Braid writing .braids.json with LF line endings on Windows,
11
- # while the .braids.json files in the fixtures get converted to CRLF under Git
12
- # for Windows recommended settings.
13
- # https://github.com/cristibalan/braid/issues/77
14
- def assert_no_diff_in_braids(file1, file2)
15
- # --ignore-trailing-space is not present in the platform diff command under osx so only use it when needed
16
- assert_no_diff(file1, file2, Gem.win_platform? ? '--ignore-trailing-space' : '')
17
- end
18
-
19
- describe 'read-only command' do
20
-
21
- it 'from future config version should fail' do
22
- @repository_dir = create_git_repo_from_fixture('shiny-conf-future')
23
-
24
- in_dir(@repository_dir) do
25
- output = run_command_expect_failure("#{BRAID_BIN} diff skit1")
26
- expect(output).to match(/is too old to understand/)
27
- end
28
- end
29
-
30
- it 'from old config version with no breaking changes should work' do
31
- @repository_dir = create_git_repo_from_fixture('shiny-conf-yaml')
32
- @vendor_repository_dir = create_git_repo_from_fixture('skit1')
33
-
34
- vendor_revision = nil
35
- in_dir(@vendor_repository_dir) do
36
- vendor_revision = run_command('git rev-parse HEAD')
37
- end
38
-
39
- in_dir(@repository_dir) do
40
- # For a real command to work, we have to substitute the URL and revision
41
- # of the real vendor repository we created on this run of the test. The
42
- # below looks marginally easier than using the real YAML parser.
43
- braids_content = nil
44
- File.open('.braids', 'rb') do |f|
45
- braids_content = f.read
46
- end
47
- braids_content = braids_content.sub(/revision:.*$/, "revision: #{vendor_revision}")
48
- braids_content = braids_content.sub(/url:.*$/, "url: file://#{@vendor_repository_dir}")
49
- File.open('.braids', 'wb') do |f|
50
- f.write braids_content
51
- end
52
-
53
- output = run_command("#{BRAID_BIN} diff skit1")
54
- expect(output).to eq('') # no diff
55
- end
56
- end
57
-
58
- it 'from old config version with breaking changes should fail' do
59
- @repository_dir = create_git_repo_from_fixture('shiny-conf-breaking-changes')
60
-
61
- in_dir(@repository_dir) do
62
- output = run_command_expect_failure("#{BRAID_BIN} diff skit1")
63
- expect(output).to match(/no longer supports a feature/)
64
- end
65
- end
66
-
67
- end
68
-
69
- describe 'write command' do
70
-
71
- it 'from future config version should fail' do
72
- @repository_dir = create_git_repo_from_fixture('shiny-conf-future')
73
-
74
- in_dir(@repository_dir) do
75
- output = run_command_expect_failure("#{BRAID_BIN} update skit1")
76
- expect(output).to match(/is too old to understand/)
77
- end
78
- end
79
-
80
- it 'from old config version with no breaking changes should fail' do
81
- @repository_dir = create_git_repo_from_fixture('shiny-conf-yaml')
82
-
83
- in_dir(@repository_dir) do
84
- output = run_command_expect_failure("#{BRAID_BIN} update skit1")
85
- expect(output).to match(/force other developers on your project to upgrade Braid/)
86
- end
87
- end
88
-
89
- it 'from old config version with breaking changes should fail' do
90
- @repository_dir = create_git_repo_from_fixture('shiny-conf-breaking-changes')
91
-
92
- in_dir(@repository_dir) do
93
- output = run_command_expect_failure("#{BRAID_BIN} update skit1")
94
- expect(output).to match(/no longer supports a feature/)
95
- end
96
- end
97
-
98
- end
99
-
100
- describe '"braid upgrade-config"' do
101
-
102
- it 'from Braid 0.7.1 (.braids YAML) should produce the expected configuration' do
103
- @repository_dir = create_git_repo_from_fixture('shiny-conf-yaml')
104
-
105
- in_dir(@repository_dir) do
106
- output = run_command("#{BRAID_BIN} upgrade-config")
107
- # Check this on one of the test cases.
108
- expect(output).to match(/Configuration upgrade complete\./)
109
- expect(File.exists?('.braids')).to eq(false)
110
- assert_no_diff_in_braids('.braids.json', 'expected.braids.json')
111
- end
112
- end
113
-
114
- it 'from Braid 1.0.0 (.braids JSON) should produce the expected configuration' do
115
- @repository_dir = create_git_repo_from_fixture('shiny-conf-json-old-name')
116
-
117
- in_dir(@repository_dir) do
118
- run_command("#{BRAID_BIN} upgrade-config")
119
- expect(File.exists?('.braids')).to eq(false)
120
- assert_no_diff_in_braids('.braids.json', 'expected.braids.json')
121
- end
122
- end
123
-
124
- it 'from Braid 1.0.9 (.braids.json) with old-style lock should produce the expected configuration' do
125
- @repository_dir = create_git_repo_from_fixture('shiny-conf-1.0.9-lock')
126
-
127
- in_dir(@repository_dir) do
128
- run_command("#{BRAID_BIN} upgrade-config")
129
- assert_no_diff_in_braids('.braids.json', 'expected.braids.json')
130
- end
131
- end
132
-
133
- it 'from Braid 1.0.9 (.braids.json) with old-style lock with --dry-run should print info without performing the upgrade' do
134
- @repository_dir = create_git_repo_from_fixture('shiny-conf-1.0.9-lock')
135
-
136
- in_dir(@repository_dir) do
137
- output = run_command("#{BRAID_BIN} upgrade-config --dry-run")
138
- expect(output).to match(/Your configuration file will be upgraded from configuration version 0 to 1\./)
139
- expect(output).not_to match(/The following breaking changes/)
140
- # Instructions should not include --allow-breaking-changes if it isn't necessary.
141
- expect(output).to match(/Run 'braid upgrade-config'/)
142
- assert_no_diff_in_braids('.braids.json', "#{FIXTURE_PATH}/shiny-conf-1.0.9-lock/.braids.json")
143
- end
144
- end
145
-
146
- it 'with breaking changes and --dry-run should print info without performing the upgrade' do
147
- @repository_dir = create_git_repo_from_fixture('shiny-conf-breaking-changes')
148
-
149
- in_dir(@repository_dir) do
150
- output = run_command("#{BRAID_BIN} upgrade-config --dry-run")
151
- expect(output).to match(/The following breaking changes/)
152
- expect(output).to match(/Spoon-Knife.*Subversion/)
153
- expect(output).to match(/skit1.*full-history/)
154
- expect(output).to match(/Run 'braid upgrade-config --allow-breaking-changes'/)
155
- assert_no_diff('.braids', "#{FIXTURE_PATH}/shiny-conf-breaking-changes/.braids")
156
- expect(File.exists?('.braids.json')).to eq(false)
157
- end
158
- end
159
-
160
- it 'with breaking changes should fail' do
161
- @repository_dir = create_git_repo_from_fixture('shiny-conf-breaking-changes')
162
-
163
- in_dir(@repository_dir) do
164
- output = run_command_expect_failure("#{BRAID_BIN} upgrade-config")
165
- expect(output).to match(/The following breaking changes/)
166
- expect(output).to match(/Spoon-Knife.*Subversion/)
167
- expect(output).to match(/skit1.*full-history/)
168
- expect(output).to match(/You must pass --allow-breaking-changes/)
169
- # `braid upgrade-config` should not have changed any files.
170
- assert_no_diff('.braids', "#{FIXTURE_PATH}/shiny-conf-breaking-changes/.braids")
171
- expect(File.exists?('.braids.json')).to eq(false)
172
- end
173
- end
174
-
175
- it 'with breaking changes and --allow-breaking-changes should produce the expected configuration' do
176
- @repository_dir = create_git_repo_from_fixture('shiny-conf-breaking-changes')
177
-
178
- in_dir(@repository_dir) do
179
- output = run_command("#{BRAID_BIN} upgrade-config --allow-breaking-changes")
180
- expect(output).to match(/The following breaking changes/)
181
- expect(output).to match(/Spoon-Knife.*Subversion/)
182
- expect(output).to match(/skit1.*full-history/)
183
- expect(output).to match(/Configuration upgrade complete\./)
184
- expect(File.exists?('.braids')).to eq(false)
185
- assert_no_diff_in_braids('.braids.json', 'expected.braids.json')
186
- end
187
- end
188
-
189
- it 'from future config version should fail' do
190
- @repository_dir = create_git_repo_from_fixture('shiny-conf-future')
191
-
192
- in_dir(@repository_dir) do
193
- output = run_command_expect_failure("#{BRAID_BIN} upgrade-config")
194
- expect(output).to match(/is too old to understand/)
195
- end
196
- end
197
-
198
- it 'from current config version should do nothing and print expected message' do
199
- # Generate a current-version configuration by adding a mirror.
200
- @repository_dir = create_git_repo_from_fixture('shiny')
201
- @vendor_repository_dir = create_git_repo_from_fixture('skit1')
202
-
203
- in_dir(@repository_dir) do
204
- run_command("#{BRAID_BIN} add #{@vendor_repository_dir}")
205
- output = run_command("#{BRAID_BIN} upgrade-config")
206
- expect(output).to match(/already at the current configuration version/)
207
- end
208
- end
209
-
210
- it 'with no Braid configuration should do nothing and print expected message' do
211
- @repository_dir = create_git_repo_from_fixture('shiny')
212
-
213
- in_dir(@repository_dir) do
214
- output = run_command("#{BRAID_BIN} upgrade-config")
215
- expect(output).to match(/has no Braid configuration file/)
216
- expect(File.exists?('.braids.json')).to eq(false)
217
- end
218
- end
219
-
220
- end
221
-
222
- end