rake-funnel 0.3.2.pre → 0.4.0.pre

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 (122) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +2 -2
  3. data/Gemfile +4 -0
  4. data/README.md +2 -2
  5. data/lib/rake/funnel/ambiguous_file_error.rb +31 -29
  6. data/lib/rake/funnel/execution_error.rb +28 -26
  7. data/lib/rake/funnel/extensions/case/camel_case.rb +24 -19
  8. data/lib/rake/funnel/extensions/case/pascal_case.rb +24 -19
  9. data/lib/rake/funnel/extensions/case.rb +3 -3
  10. data/lib/rake/funnel/extensions/common_path.rb +60 -52
  11. data/lib/rake/funnel/extensions/disable_colors.rb +33 -27
  12. data/lib/rake/funnel/extensions/rexml.rb +27 -23
  13. data/lib/rake/funnel/extensions/shell.rb +92 -56
  14. data/lib/rake/funnel/extensions/windows_path.rb +15 -11
  15. data/lib/rake/funnel/framework.rb +11 -16
  16. data/lib/rake/funnel/integration/progress_report.rb +72 -70
  17. data/lib/rake/funnel/integration/sync_output.rb +12 -8
  18. data/lib/rake/funnel/integration/teamcity/nunit_plugin.rb +61 -55
  19. data/lib/rake/funnel/integration/teamcity/progress_report.rb +39 -33
  20. data/lib/rake/funnel/integration/teamcity/service_messages.rb +46 -40
  21. data/lib/rake/funnel/integration/teamcity/teamcity.rb +19 -15
  22. data/lib/rake/funnel/integration/teamcity.rb +3 -5
  23. data/lib/rake/funnel/support/argument_mapper/key_value_pair.rb +16 -10
  24. data/lib/rake/funnel/support/argument_mapper/styles/default.rb +39 -31
  25. data/lib/rake/funnel/support/argument_mapper/styles/msbuild.rb +41 -33
  26. data/lib/rake/funnel/support/argument_mapper/styles/msdeploy.rb +55 -47
  27. data/lib/rake/funnel/support/argument_mapper/styles/nunit.rb +41 -33
  28. data/lib/rake/funnel/support/argument_mapper/styles.rb +3 -5
  29. data/lib/rake/funnel/support/argument_mapper/switch.rb +16 -10
  30. data/lib/rake/funnel/support/argument_mapper/value.rb +16 -10
  31. data/lib/rake/funnel/support/assembly_version/from_version_files.rb +39 -35
  32. data/lib/rake/funnel/support/assembly_version/languages/cs +5 -5
  33. data/lib/rake/funnel/support/assembly_version/languages/fs +12 -12
  34. data/lib/rake/funnel/support/assembly_version/languages/vb +5 -5
  35. data/lib/rake/funnel/support/assembly_version_writer.rb +56 -52
  36. data/lib/rake/funnel/support/binary_version_reader.rb +37 -32
  37. data/lib/rake/funnel/support/copier.rb +31 -27
  38. data/lib/rake/funnel/support/environments/loader.rb +46 -40
  39. data/lib/rake/funnel/support/environments.rb +3 -3
  40. data/lib/rake/funnel/support/internal/finder.rb +55 -51
  41. data/lib/rake/funnel/support/internal/instantiate_symbol.rb +38 -34
  42. data/lib/rake/funnel/support/mapper.rb +57 -53
  43. data/lib/rake/funnel/support/mono.rb +21 -17
  44. data/lib/rake/funnel/support/msbuild/build_tool.rb +30 -24
  45. data/lib/rake/funnel/support/msbuild.rb +3 -3
  46. data/lib/rake/funnel/support/msdeploy/registry_patch.rb +90 -84
  47. data/lib/rake/funnel/support/msdeploy.rb +3 -3
  48. data/lib/rake/funnel/support/patch.rb +41 -37
  49. data/lib/rake/funnel/support/specs_remover.rb +66 -62
  50. data/lib/rake/funnel/support/template_engine.rb +30 -26
  51. data/lib/rake/funnel/support/timing/report.rb +95 -89
  52. data/lib/rake/funnel/support/timing/statistics.rb +32 -26
  53. data/lib/rake/funnel/support/timing.rb +3 -3
  54. data/lib/rake/funnel/support/version_info.rb +103 -72
  55. data/lib/rake/funnel/support/which.rb +19 -15
  56. data/lib/rake/funnel/support/zipper.rb +53 -49
  57. data/lib/rake/funnel/tasks/assembly_version.rb +44 -40
  58. data/lib/rake/funnel/tasks/bin_path.rb +45 -41
  59. data/lib/rake/funnel/tasks/copy.rb +43 -39
  60. data/lib/rake/funnel/tasks/environments.rb +89 -89
  61. data/lib/rake/funnel/tasks/msbuild.rb +55 -51
  62. data/lib/rake/funnel/tasks/msdeploy.rb +54 -50
  63. data/lib/rake/funnel/tasks/nunit.rb +52 -48
  64. data/lib/rake/funnel/tasks/paket.rb +51 -47
  65. data/lib/rake/funnel/tasks/quick_template.rb +53 -49
  66. data/lib/rake/funnel/tasks/side_by_side_specs.rb +41 -37
  67. data/lib/rake/funnel/tasks/timing.rb +108 -104
  68. data/lib/rake/funnel/tasks/zip.rb +46 -42
  69. data/lib/rake/funnel/version.rb +1 -1
  70. data/lib/rake/funnel.rb +7 -7
  71. data/rake-funnel.gemspec +12 -3
  72. data/spec/rake/funnel/execution_error_spec.rb +67 -67
  73. data/spec/rake/funnel/extensions/case/camel_case_spec.rb +17 -17
  74. data/spec/rake/funnel/extensions/case/pascal_case_spec.rb +17 -17
  75. data/spec/rake/funnel/extensions/common_path_spec.rb +56 -56
  76. data/spec/rake/funnel/extensions/disable_colors_spec.rb +33 -33
  77. data/spec/rake/funnel/extensions/rexml_spec.rb +20 -20
  78. data/spec/rake/funnel/extensions/shell_spec.rb +237 -237
  79. data/spec/rake/funnel/extensions/windows_path_spec.rb +5 -5
  80. data/spec/rake/funnel/integration/progress_report_spec.rb +149 -149
  81. data/spec/rake/funnel/integration/sync_output_spec.rb +16 -16
  82. data/spec/rake/funnel/integration/teamcity/nunit_plugin_spec.rb +110 -110
  83. data/spec/rake/funnel/integration/teamcity/progress_report_spec.rb +174 -174
  84. data/spec/rake/funnel/integration/teamcity/service_messages_spec.rb +136 -136
  85. data/spec/rake/funnel/integration/teamcity/teamcity_spec.rb +34 -34
  86. data/spec/rake/funnel/support/argument_mapper/styles/msdeploy_spec.rb +222 -222
  87. data/spec/rake/funnel/support/argument_mapper/styles/nunit_spec.rb +25 -25
  88. data/spec/rake/funnel/support/argument_mapper/styles/styles_spec.rb +214 -214
  89. data/spec/rake/funnel/support/assembly_version/from_version_files_spec.rb +66 -61
  90. data/spec/rake/funnel/support/assembly_version_writer_spec.rb +140 -140
  91. data/spec/rake/funnel/support/binary_version_reader_spec.rb +29 -29
  92. data/spec/rake/funnel/support/copier_spec.rb +58 -58
  93. data/spec/rake/funnel/support/environments/loader_spec.rb +143 -143
  94. data/spec/rake/funnel/support/internal/finder_spec.rb +229 -229
  95. data/spec/rake/funnel/support/internal/instantiate_symbol_spec.rb +182 -183
  96. data/spec/rake/funnel/support/mapper_spec.rb +87 -87
  97. data/spec/rake/funnel/support/mono_spec.rb +57 -57
  98. data/spec/rake/funnel/support/msbuild/build_tool_spec.rb +21 -21
  99. data/spec/rake/funnel/support/msdeploy/registry_patch_spec.rb +139 -139
  100. data/spec/rake/funnel/support/patch_spec.rb +108 -108
  101. data/spec/rake/funnel/support/specs_remover/Sample.csproj +28 -28
  102. data/spec/rake/funnel/support/specs_remover_spec.rb +116 -116
  103. data/spec/rake/funnel/support/template_engine_spec.rb +65 -65
  104. data/spec/rake/funnel/support/timing/report_spec.rb +129 -129
  105. data/spec/rake/funnel/support/version_info_spec.rb +333 -228
  106. data/spec/rake/funnel/support/which_spec.rb +65 -65
  107. data/spec/rake/funnel/support/zipper_spec.rb +77 -77
  108. data/spec/rake/funnel/tasks/assembly_version_spec.rb +45 -45
  109. data/spec/rake/funnel/tasks/bin_path_spec.rb +52 -52
  110. data/spec/rake/funnel/tasks/copy_spec.rb +44 -44
  111. data/spec/rake/funnel/tasks/environments_spec.rb +249 -247
  112. data/spec/rake/funnel/tasks/msbuild_spec.rb +91 -91
  113. data/spec/rake/funnel/tasks/msdeploy_spec.rb +220 -220
  114. data/spec/rake/funnel/tasks/nunit_spec.rb +74 -74
  115. data/spec/rake/funnel/tasks/paket_spec.rb +140 -142
  116. data/spec/rake/funnel/tasks/quick_template_spec.rb +62 -62
  117. data/spec/rake/funnel/tasks/side_by_side_specs_spec.rb +58 -58
  118. data/spec/rake/funnel/tasks/timing_spec.rb +133 -133
  119. data/spec/rake/funnel/tasks/zip_spec.rb +50 -50
  120. data/spec/spec_helper.rb +43 -33
  121. metadata +2 -3
  122. data/lib/rake/funnel/support/side_by_side_specs.rb +0 -3
@@ -1,143 +1,143 @@
1
- describe Rake::Funnel::Support::Environments::Loader do
2
- let(:store) {
3
- double(Configatron::Store).as_null_object
4
- }
5
-
6
- let(:customizer) { nil }
7
-
8
- let(:config) {
9
- {
10
- name: 'environment name',
11
- config_files: config_files.keys.map(&:to_s)
12
- }
13
- }
14
-
15
- before {
16
- config_files.each do |file, content|
17
- allow(File).to receive(:read).with(file.to_s).and_return(content)
18
- end
19
-
20
- allow(Rake).to receive(:rake_output_message)
21
- }
22
-
23
- describe 'loading configuration' do
24
- let(:config_files) {
25
- {
26
- one: 'one: 23',
27
- two: 'two: 42'
28
- }
29
- }
30
-
31
- before {
32
- described_class.load_configuration(config, store, customizer)
33
- }
34
-
35
- it 'should reinitialize the configatron store' do
36
- expect(store).to have_received(:unlock!)
37
- expect(store).to have_received(:reset!)
38
- end
39
-
40
- it 'should save the env to store' do
41
- expect(store).to have_received(:env=).with(config[:name])
42
- end
43
-
44
- it 'should load all config files' do
45
- config[:config_files].each do |file|
46
- expect(File).to have_received(:read).with(file)
47
- end
48
- end
49
-
50
- it "should add each config file's values to the store" do
51
- expect(store).to have_received(:configure_from_hash).with({ 'one' => 23 })
52
- expect(store).to have_received(:configure_from_hash).with({ 'two' => 42 })
53
- end
54
-
55
- it 'should lock the store' do
56
- expect(store).to have_received(:lock!)
57
- end
58
-
59
- describe 'customization' do
60
- let(:customizer) { double(Proc).as_null_object }
61
-
62
- it 'should run the customizer' do
63
- expect(customizer).to have_received(:call).with(store)
64
- end
65
- end
66
-
67
- context 'config file with overriding values' do
68
- let(:config_files) {
69
- {
70
- one: 'foo: bar',
71
- two: 'foo: baz'
72
- }
73
- }
74
-
75
- let(:store) {
76
- Configatron::RootStore.new
77
- }
78
-
79
- it 'should merge config values' do
80
- expect(store.foo).to eq('baz')
81
- end
82
- end
83
-
84
- context 'env also defined in config file' do
85
- let(:config_files) {
86
- {
87
- with_env: 'env: foo'
88
- }
89
- }
90
-
91
- let(:store) {
92
- Configatron::RootStore.new
93
- }
94
-
95
- it 'should override env from config' do
96
- expect(store.env).to eq('foo')
97
- end
98
- end
99
-
100
- context 'empty config file' do
101
- let(:config_files) {
102
- {
103
- empty: ''
104
- }
105
- }
106
-
107
- it 'should configure with empty hash' do
108
- expect(store).to have_received(:configure_from_hash).with({})
109
- end
110
- end
111
- end
112
-
113
- describe 'config file with ERb' do
114
- context 'ERb success' do
115
- let(:config_files) {
116
- {
117
- with_erb: 'foo: <%= 40 + 2 %>'
118
- }
119
- }
120
-
121
- before {
122
- described_class.load_configuration(config, store)
123
- }
124
-
125
- it 'should evaluate ERb' do
126
- expect(store).to have_received(:configure_from_hash).with({ 'foo' => 42 })
127
- end
128
- end
129
-
130
- context 'ERb failure' do
131
- let(:config_files) {
132
- {
133
- with_erb: 'bogus: <%= 42 + "a" %>'
134
- }
135
- }
136
-
137
- it 'should report file name' do
138
- expect { described_class.load_configuration(config, store) }
139
- .to raise_error { |ex| expect(ex.backtrace.join("\n")).to match(/with_erb/) }
140
- end
141
- end
142
- end
143
- end
1
+ describe Rake::Funnel::Support::Environments::Loader do
2
+ let(:store) {
3
+ double(Configatron::Store).as_null_object
4
+ }
5
+
6
+ let(:customizer) { nil }
7
+
8
+ let(:config) {
9
+ {
10
+ name: 'environment name',
11
+ config_files: config_files.keys.map(&:to_s)
12
+ }
13
+ }
14
+
15
+ before {
16
+ config_files.each do |file, content|
17
+ allow(File).to receive(:read).with(file.to_s).and_return(content)
18
+ end
19
+
20
+ allow(Rake).to receive(:rake_output_message)
21
+ }
22
+
23
+ describe 'loading configuration' do
24
+ let(:config_files) {
25
+ {
26
+ one: 'one: 23',
27
+ two: 'two: 42'
28
+ }
29
+ }
30
+
31
+ before {
32
+ described_class.load_configuration(config, store, customizer)
33
+ }
34
+
35
+ it 'should reinitialize the configatron store' do
36
+ expect(store).to have_received(:unlock!)
37
+ expect(store).to have_received(:reset!)
38
+ end
39
+
40
+ it 'should save the env to store' do
41
+ expect(store).to have_received(:env=).with(config[:name])
42
+ end
43
+
44
+ it 'should load all config files' do
45
+ config[:config_files].each do |file|
46
+ expect(File).to have_received(:read).with(file)
47
+ end
48
+ end
49
+
50
+ it "should add each config file's values to the store" do
51
+ expect(store).to have_received(:configure_from_hash).with({ 'one' => 23 })
52
+ expect(store).to have_received(:configure_from_hash).with({ 'two' => 42 })
53
+ end
54
+
55
+ it 'should lock the store' do
56
+ expect(store).to have_received(:lock!)
57
+ end
58
+
59
+ describe 'customization' do
60
+ let(:customizer) { double(Proc).as_null_object }
61
+
62
+ it 'should run the customizer' do
63
+ expect(customizer).to have_received(:call).with(store)
64
+ end
65
+ end
66
+
67
+ context 'config file with overriding values' do
68
+ let(:config_files) {
69
+ {
70
+ one: 'foo: bar',
71
+ two: 'foo: baz'
72
+ }
73
+ }
74
+
75
+ let(:store) {
76
+ Configatron::RootStore.new
77
+ }
78
+
79
+ it 'should merge config values' do
80
+ expect(store.foo).to eq('baz')
81
+ end
82
+ end
83
+
84
+ context 'env also defined in config file' do
85
+ let(:config_files) {
86
+ {
87
+ with_env: 'env: foo'
88
+ }
89
+ }
90
+
91
+ let(:store) {
92
+ Configatron::RootStore.new
93
+ }
94
+
95
+ it 'should override env from config' do
96
+ expect(store.env).to eq('foo')
97
+ end
98
+ end
99
+
100
+ context 'empty config file' do
101
+ let(:config_files) {
102
+ {
103
+ empty: ''
104
+ }
105
+ }
106
+
107
+ it 'should configure with empty hash' do
108
+ expect(store).to have_received(:configure_from_hash).with({})
109
+ end
110
+ end
111
+ end
112
+
113
+ describe 'config file with ERb' do
114
+ context 'ERb success' do
115
+ let(:config_files) {
116
+ {
117
+ with_erb: 'foo: <%= 40 + 2 %>'
118
+ }
119
+ }
120
+
121
+ before {
122
+ described_class.load_configuration(config, store)
123
+ }
124
+
125
+ it 'should evaluate ERb' do
126
+ expect(store).to have_received(:configure_from_hash).with({ 'foo' => 42 })
127
+ end
128
+ end
129
+
130
+ context 'ERb failure' do
131
+ let(:config_files) {
132
+ {
133
+ with_erb: 'bogus: <%= 42 + "a" %>'
134
+ }
135
+ }
136
+
137
+ it 'should report file name' do
138
+ expect { described_class.load_configuration(config, store) }
139
+ .to raise_error { |ex| expect(ex.backtrace.join("\n")).to match(/with_erb/) }
140
+ end
141
+ end
142
+ end
143
+ end