salesforce-deploy-tool 2.1.1 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/sf +1 -1
- data/build.xml +1 -0
- data/features/config.feature +7 -7
- data/features/pull.feature +7 -7
- data/features/push.feature +124 -69
- data/features/resources/mock/ant +201 -0
- data/features/resources/repo/COMMIT_EDITMSG +1 -0
- data/features/resources/repo/HEAD +1 -0
- data/features/resources/repo/config +5 -0
- data/features/resources/repo/description +1 -0
- data/features/resources/repo/hooks/applypatch-msg.sample +15 -0
- data/features/resources/repo/hooks/commit-msg.sample +24 -0
- data/features/resources/repo/hooks/post-update.sample +8 -0
- data/features/resources/repo/hooks/pre-applypatch.sample +14 -0
- data/features/resources/repo/hooks/pre-commit.sample +49 -0
- data/features/resources/repo/hooks/pre-push.sample +54 -0
- data/features/resources/repo/hooks/pre-rebase.sample +169 -0
- data/features/resources/repo/hooks/prepare-commit-msg.sample +36 -0
- data/features/resources/repo/hooks/update.sample +128 -0
- data/features/resources/repo/index +0 -0
- data/features/resources/repo/info/exclude +6 -0
- data/features/resources/repo/logs/HEAD +10 -0
- data/features/resources/repo/logs/refs/heads/master +10 -0
- data/features/resources/repo/objects/08/d159fb570535461d73a45322c66495b5025c20 +3 -0
- data/features/resources/repo/objects/0a/ce763c3b6bc010c2a9a193f7d7c7bc03172800 +0 -0
- data/features/resources/repo/objects/18/75bbbe3a395a8d38c1097bfeda33da7995d8ba +0 -0
- data/features/resources/repo/objects/1b/f3c07d11fce01d255838eebd41a066e20e09f0 +0 -0
- data/features/resources/repo/objects/1d/300e3c8d30b80bb88cfce2b16c3070488f0440 +2 -0
- data/features/resources/repo/objects/1d/b81d6385e52f1ac897d8c119a01537b1624c05 +2 -0
- data/features/resources/repo/objects/1f/eb7a27c44c4b82a4e0551752e3aec20d39e867 +0 -0
- data/features/resources/repo/objects/21/a8635d944fb9d9c1779a5ce7a0e0e3ae0b560f +0 -0
- data/features/resources/repo/objects/21/f12831957736ffc4b5cb11beaf61020badb5ba +0 -0
- data/features/resources/repo/objects/24/f97074eaba38f18c29b4d89781a20bacd65bed +2 -0
- data/features/resources/repo/objects/25/8a8c1f2d788fa12fa87f994e96b3efbf2d0415 +0 -0
- data/features/resources/repo/objects/26/d3f397fe0eda1d7639542edf47982e408b856a +0 -0
- data/features/resources/repo/objects/2c/0414f10c4cb61f2ae352d54f36e84b877d49b8 +3 -0
- data/features/resources/repo/objects/3c/94ea5d2b74886cefeb5ecf7f7380bc8223e05b +0 -0
- data/features/resources/repo/objects/3d/0be981f941d665b9ffc59d0d734ceb18e1c551 +0 -0
- data/features/resources/repo/objects/3f/260c2394be8a70772376832c561d33365dc74c +0 -0
- data/features/resources/repo/objects/41/341113250717ca1d4e280cac7413074e110ceb +1 -0
- data/features/resources/repo/objects/44/b93fe01a1dfc0639577dd16969715bd9e6fe0c +0 -0
- data/features/resources/repo/objects/47/913885995720fb59e94d5766314a4728ea1944 +0 -0
- data/features/resources/repo/objects/48/587cabf050866f63b8743da1dbe0ebae23b348 +2 -0
- data/features/resources/repo/objects/51/394a26665e0ad7708091db12aff4510384fb2f +2 -0
- data/features/resources/repo/objects/51/f1b7da07050f62cd00f24774856a9d06d4fc47 +4 -0
- data/features/resources/repo/objects/54/5a9377aeb6a9d4e143c95e398c8968b35944cb +1 -0
- data/features/resources/repo/objects/58/acc8fd3f0888c0d4c735dbf945b8adc982723f +0 -0
- data/features/resources/repo/objects/59/c81a96f4e0b1ed588190e2c097c325556ab0df +2 -0
- data/features/resources/repo/objects/60/192eb56263416d0221556f33ffd4220aa536d4 +0 -0
- data/features/resources/repo/objects/6a/eb5e2a8bda5b4f04cbd2d942ae7940bf796c25 +4 -0
- data/features/resources/repo/objects/72/4a3c7678b7274af8806d0395594f3b0a059fcc +0 -0
- data/features/resources/repo/objects/76/8d5ed4528f6043dee289c7da0001c8a3ce45e4 +0 -0
- data/features/resources/repo/objects/79/e1ba418010d81ca3472ee271ce83abbea5104f +0 -0
- data/features/resources/repo/objects/7f/ee222d7d4008f9d6a6c6e5f10ef4923299c93d +2 -0
- data/features/resources/repo/objects/80/1416a319f26aac530d3663d8cd214cf7b7ef65 +0 -0
- data/features/resources/repo/objects/83/bbfc790b9974134c1591192634fa771075b535 +0 -0
- data/features/resources/repo/objects/87/09c1bfb261dedf83ab5793054940782c48b54f +2 -0
- data/features/resources/repo/objects/89/3df81588c577cfbae991baa7211062faacd4a0 +0 -0
- data/features/resources/repo/objects/8c/15363be6659c514f5e2cafd817efc656106027 +0 -0
- data/features/resources/repo/objects/90/0dd02ce96c29b918d4f38c0721ac61a62e2c75 +0 -0
- data/features/resources/repo/objects/91/54141b78af68bdeb8e9b79629012a720b6e8e5 +4 -0
- data/features/resources/repo/objects/93/50c5598f6bafd3aa1a6a6ceecec7f02a0b0203 +2 -0
- data/features/resources/repo/objects/96/b1ab4d31f29b149ff0b7eb60cb3a38dbaef37d +0 -0
- data/features/resources/repo/objects/99/9db58eef630156ab2fc4aa4a9451fb77c0137f +2 -0
- data/features/resources/repo/objects/9b/c11cdc1094120c76a59f222671d754297d3ea5 +0 -0
- data/features/resources/repo/objects/9f/2d034a0b311fc3ea68d920d100f8e3143cc664 +0 -0
- data/features/resources/repo/objects/a3/9d3fe0c289c12308749b73da61076bb4e1689d +2 -0
- data/features/resources/repo/objects/a5/ab41fa374d2682939feb0f8fcbf9b243544f5c +0 -0
- data/features/resources/repo/objects/aa/c66ee0d404c124fbcafd32a054664de4fdd3da +3 -0
- data/features/resources/repo/objects/ae/5379d68c15b3fc95efa7e6a640972865ef6d3d +0 -0
- data/features/resources/repo/objects/b8/580fa58bf91133b28d162bf2572667ae54c18d +0 -0
- data/features/resources/repo/objects/b9/4c5cf17b7e3baca053deb44fa0f6306eb7b890 +0 -0
- data/features/resources/repo/objects/bf/ae3371a43e95ebfbb1dd0643810a52cd958f14 +1 -0
- data/features/resources/repo/objects/cb/db0117efc4c6709ae5069a1dcefe841666a704 +0 -0
- data/features/resources/repo/objects/cf/235b88b53b5cf3031e67bfd6ab5a7b3ca25c52 +0 -0
- data/features/resources/repo/objects/d3/48f3b026e759f584548729a04f3b91ceb2e8d3 +0 -0
- data/features/resources/repo/objects/d3/7b8a2c894dbe1839d9428a336806ee151c2e4d +0 -0
- data/features/resources/repo/objects/d3/b508d876f1639a96afed4ca1d22c38583ea2d6 +0 -0
- data/features/resources/repo/objects/d5/cb74bf363ffbb0c7a1c69ee8b0bcf1e6093774 +0 -0
- data/features/resources/repo/objects/db/3cff2d90ba3bbcee7dd1113db69ac2b7b5e3a0 +0 -0
- data/features/resources/repo/objects/de/7978b6e388de73ddc31dbfc6a9afa030449cb1 +0 -0
- data/features/resources/repo/objects/e0/72bdd8a68660581d612b509ea7dc5d1dd1cfa1 +0 -0
- data/features/resources/repo/objects/e1/39fc1a7d4eca5e8b483cafa3af47d983a99e1b +0 -0
- data/features/resources/repo/objects/e7/4644c031e1cf36a268ae5041fb8dc7104bd357 +0 -0
- data/features/resources/repo/objects/ef/bfccdbb185bc64cb49d9942a53b7ab97e21b21 +0 -0
- data/features/resources/repo/objects/f5/bcc39104bda892895e9f338b45bad76b333d80 +0 -0
- data/features/resources/repo/objects/fb/4f268988e268cbf3bcc50ff338f98054e803cb +2 -0
- data/features/resources/repo/objects/fd/6723ee7c9a7acea74ab84f4af159952279d51f +0 -0
- data/features/resources/repo/objects/ff/8c6fa78f879d98393ca470a4ea07cae7221d38 +4 -0
- data/features/resources/repo/refs/heads/master +1 -0
- data/features/support/env.rb +19 -9
- data/features/support/hooks.rb +2 -34
- data/lib/salesforcedeploytool/app.rb +9 -3
- data/lib/salesforcedeploytool/cli.rb +9 -1
- data/lib/salesforcedeploytool/version.rb +1 -1
- data/salesforce-deploy-tool.gemspec +1 -1
- data/tpl/build.xml.erb +15 -2
- metadata +175 -5
- data/cucumber-config.yaml-tpl +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 585dac2205744a81b1864062cddab4fa113c468a
|
4
|
+
data.tar.gz: 47b53f0925188b68dcc7dd7a513114408ff95b42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b5fa61af545b693f545a561efc13d02917152c5424bc325b4f5e31b9ea206f118f4ef90f7964b263929c0d3ff486a7219749ded616425a74366722e04ad8d49
|
7
|
+
data.tar.gz: 452142bee6a902cd78a4db0ca39effd9663e1188e621b921cea2b5a2bceff2f2bc9eec916eee86e3a8cfe05d3d9e329aea47b3816fe6695c4c3bc558533cac25
|
data/bin/sf
CHANGED
@@ -29,7 +29,6 @@ end
|
|
29
29
|
begin
|
30
30
|
config[:sandbox] = File.open(File.expand_path(SANDBOX_CONFIG_FILE)).read
|
31
31
|
rescue
|
32
|
-
config[:sandbox] = nil
|
33
32
|
end
|
34
33
|
|
35
34
|
# Configuration variables firrst from ENV , if not config file
|
@@ -43,6 +42,7 @@ config[:src_dir] = ENV["SFDT_SRC_DIR"] || config[:
|
|
43
42
|
config[:username] = ENV["SFDT_USERNAME"] || config[:username]
|
44
43
|
config[:password] = ENV["SFDT_PASSWORD"] || config[:password]
|
45
44
|
config[:salesforce_url] = ENV["SFDT_SALESFORCE_URL"] || config[:salesforce_url]
|
45
|
+
config[:sandbox] = ENV['SFDT_SANDBOX'] || config[:sandbox]
|
46
46
|
|
47
47
|
# Project configs
|
48
48
|
config[:version_file] = ENV["SFDT_VERSION_FILE"] || config[:version_file]
|
data/build.xml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
deployCode
|
data/features/config.feature
CHANGED
@@ -7,12 +7,12 @@ Feature: Configure the user credentials interactively
|
|
7
7
|
|
8
8
|
Scenario: Running sf config it has to interactively setup my environment
|
9
9
|
When I run `sf config` interactively
|
10
|
-
And I type
|
11
|
-
And I type
|
12
|
-
And I type
|
13
|
-
And I type
|
14
|
-
And I type
|
10
|
+
And I type "john.doe@example.com"
|
11
|
+
And I type "SecurePassword"
|
12
|
+
And I type "John Doe"
|
13
|
+
And I type "john.doe@example.com"
|
14
|
+
And I type "testEnv"
|
15
15
|
Then the exit status should be 0
|
16
|
-
And the file "~/.sf/credentials.yaml" should
|
17
|
-
And the file "~/.sf/credentials.yaml" should
|
16
|
+
And the file "~/.sf/credentials.yaml" should match /username.*john.doe@example.com/
|
17
|
+
And the file "~/.sf/credentials.yaml" should match /password.*SecurePassword/
|
18
18
|
And the file "~/.sf/salesforce.sbox" should match /.+/
|
data/features/pull.feature
CHANGED
@@ -9,15 +9,15 @@ Feature: Pull code from salesforce
|
|
9
9
|
Then the exit status should be 0
|
10
10
|
And the output should match:
|
11
11
|
"""
|
12
|
-
^INFO: Pulling changes from
|
12
|
+
^INFO: Pulling changes from testEnv using url https://test.salesforce.com.*OK
|
13
13
|
"""
|
14
14
|
|
15
15
|
Scenario: Retrieve code from a specific sandbox
|
16
|
-
When I run `sf pull -s
|
16
|
+
When I run `sf pull -s testEnvAlt`
|
17
17
|
Then the exit status should be 0
|
18
18
|
And the output should match:
|
19
19
|
"""
|
20
|
-
^INFO: Pulling changes from
|
20
|
+
^INFO: Pulling changes from testEnvAlt using url https://test.salesforce.com.*OK
|
21
21
|
"""
|
22
22
|
|
23
23
|
Scenario: Retrieve code from a sandbox using a specific URL
|
@@ -28,7 +28,7 @@ Feature: Pull code from salesforce
|
|
28
28
|
Then the exit status should be 1
|
29
29
|
And the output should match:
|
30
30
|
"""
|
31
|
-
^INFO: Pulling changes from
|
31
|
+
^INFO: Pulling changes from testEnv using url https://invalid_url.*
|
32
32
|
"""
|
33
33
|
|
34
34
|
Scenario: Retrieve code from a production
|
@@ -45,15 +45,15 @@ Feature: Pull code from salesforce
|
|
45
45
|
And the output should contain "BUILD SUCCESSFUL"
|
46
46
|
And the output should match:
|
47
47
|
"""
|
48
|
-
^INFO: Pulling changes from
|
48
|
+
^INFO: Pulling changes from testEnv using url https://test.salesforce.com.*
|
49
49
|
"""
|
50
50
|
|
51
51
|
Scenario: Retrieve code from a specific sandbox with debug output
|
52
|
-
When I run `sf pull -s
|
52
|
+
When I run `sf pull -s testEnv -d`
|
53
53
|
Then the exit status should be 0
|
54
54
|
And the output should contain "BUILD SUCCESSFUL"
|
55
55
|
And the output should match:
|
56
56
|
"""
|
57
|
-
^INFO: Pulling changes from
|
57
|
+
^INFO: Pulling changes from testEnv using url https://test.salesforce.com.*$
|
58
58
|
"""
|
59
59
|
|
data/features/push.feature
CHANGED
@@ -7,131 +7,135 @@ Feature: Push code to salesforce
|
|
7
7
|
Scenario: Push code to a sandbox
|
8
8
|
When I run `sf push`
|
9
9
|
Then the exit status should be 0
|
10
|
-
And a file named "
|
10
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should exist
|
11
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
11
12
|
And the output should match:
|
12
13
|
"""
|
13
|
-
^INFO: Pulling changes from
|
14
|
+
^INFO: Pulling changes from testEnv using url https:\/\/test.salesforce.com to temporary directory to generate destructiveChanges.xml.*OK$
|
14
15
|
^INFO: Creating destructive changes xml$
|
15
|
-
^INFO: Deploying code to
|
16
|
+
^INFO: Deploying code to testEnv:.*OK$
|
16
17
|
"""
|
17
18
|
|
18
19
|
Scenario: Push code to a different sandbox
|
19
|
-
When I run `sf push -s
|
20
|
+
When I run `sf push -s testEnvAlt`
|
20
21
|
Then the exit status should be 0
|
21
|
-
And a file named "
|
22
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should exist
|
23
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
22
24
|
And the output should match:
|
23
25
|
"""
|
24
|
-
^INFO: Pulling changes from
|
26
|
+
^INFO: Pulling changes from testEnvAlt using url https://test.salesforce.com to temporary directory to generate destructiveChanges.xml.*OK$
|
25
27
|
^INFO: Creating destructive changes xml$
|
26
|
-
^INFO: Deploying code to
|
28
|
+
^INFO: Deploying code to testEnvAlt:.*OK$
|
27
29
|
"""
|
28
30
|
|
29
31
|
Scenario: Push code to production should use the url login.salesorce.com
|
30
|
-
Given I set the environment variables to:
|
31
|
-
| variable | value |
|
32
|
-
| SFDT_USERNAME | invalid_user |
|
33
|
-
| SFDT_PASSWORD | invalid_pass |
|
34
32
|
When I run `sf push -s prod`
|
35
|
-
Then the exit status should be
|
33
|
+
Then the exit status should be 0
|
34
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
36
35
|
And the output should match:
|
37
36
|
"""
|
38
37
|
^INFO: Pulling changes from prod using url https://login.salesforce.com to temporary directory to generate destructiveChanges.xml.*$
|
39
38
|
"""
|
40
|
-
|
41
39
|
Scenario: Push code to a sandbox with debug information
|
42
40
|
When I run `sf push -d`
|
43
41
|
Then the exit status should be 0
|
44
|
-
And the
|
45
|
-
And
|
42
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
43
|
+
And the output should match /^.* testEnv .*BUILD SUCCESSFUL.*Diff between.*Changes detected.*File generated.*deployCode.*BUILD SUCCESSFUL.*$/
|
44
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should exist
|
46
45
|
|
47
46
|
Scenario: Push code to a sandbox with debug information to a different sandbox
|
48
|
-
When I run `sf push -d -s
|
47
|
+
When I run `sf push -d -s testEnvAlt`
|
49
48
|
Then the exit status should be 0
|
50
|
-
And the
|
51
|
-
And
|
49
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
50
|
+
And the output should match /^.* testEnvAlt .*BUILD SUCCESSFUL.*Diff between.*Changes detected.*File generated.*BUILD SUCCESSFUL.*$/
|
51
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should exist
|
52
52
|
|
53
53
|
Scenario: Push code to a sandbox and trigger all the tests
|
54
54
|
When I run `sf push -T`
|
55
55
|
Then the exit status should be 0
|
56
|
-
And
|
56
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
57
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should exist
|
57
58
|
And the output should match:
|
58
59
|
"""
|
59
|
-
^INFO: Pulling changes from
|
60
|
+
^INFO: Pulling changes from testEnv using url https://test.salesforce.com to temporary directory to generate destructiveChanges.xml.*OK$
|
60
61
|
^INFO: Creating destructive changes xml$
|
61
|
-
^INFO: Deploying and Testing code to
|
62
|
+
^INFO: Deploying and Testing code to testEnv:.*OK$
|
62
63
|
"""
|
63
|
-
|
64
64
|
Scenario: Push code to a sandbox and trigger all the tests in debug mode
|
65
65
|
When I run `sf push -T -d`
|
66
66
|
Then the exit status should be 0
|
67
|
-
And
|
68
|
-
And
|
67
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
68
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should exist
|
69
|
+
And the output should match /^.* testEnv .*BUILD SUCCESSFUL.*Diff between.*Changes detected.*File generated.*Running Test:.*DEPLOYMENT SUCCEEDED.*BUILD SUCCESSFUL.*$/
|
69
70
|
|
70
71
|
Scenario: Push code to a sandbox in append mode
|
71
72
|
When I run `sf push -a`
|
72
73
|
Then the exit status should be 0
|
73
|
-
And a file named "
|
74
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should not exist
|
74
75
|
And the output should match:
|
75
76
|
"""
|
76
|
-
^INFO: Deploying code to
|
77
|
+
^INFO: Deploying code to testEnv:.*OK$
|
77
78
|
"""
|
78
79
|
|
79
80
|
Scenario: Push code to a sandbox in append mode and run all tests
|
80
81
|
When I run `sf push -a -T`
|
81
82
|
Then the exit status should be 0
|
82
|
-
And a file named "
|
83
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should not exist
|
83
84
|
And the output should match:
|
84
85
|
"""
|
85
|
-
^INFO: Deploying and Testing code to
|
86
|
+
^INFO: Deploying and Testing code to testEnv:.*OK$
|
86
87
|
"""
|
87
88
|
|
88
89
|
Scenario: Push code to a sandbox in append mode and run all tests and output debug information
|
89
90
|
When I run `sf push -a -T -d`
|
90
91
|
Then the exit status should be 0
|
91
|
-
And a file named "
|
92
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should not exist
|
92
93
|
And the output should match:
|
93
94
|
"""
|
94
|
-
^INFO: Deploying and Testing code to
|
95
|
+
^INFO: Deploying and Testing code to testEnv: $
|
95
96
|
^$
|
96
97
|
^Buildfile: .*$
|
97
98
|
^$
|
98
|
-
^
|
99
|
+
^deployAndTestCode:$
|
99
100
|
"""
|
100
101
|
And the output should match /Running Test/
|
101
102
|
And the output should match /DEPLOYMENT SUCCEEDED.*BUILD SUCCESSFUL/
|
102
103
|
|
103
104
|
Scenario: Push code to a sandbox with a build number
|
104
105
|
Given I set the environment variables to:
|
105
|
-
| variable | value
|
106
|
-
| SFDT_VERSION_FILE |
|
107
|
-
| SFDT_BUILD_NUMBER_PATTERN |
|
108
|
-
When I watch "
|
106
|
+
| variable | value |
|
107
|
+
| SFDT_VERSION_FILE | classes/VersionTest.cls |
|
108
|
+
| SFDT_BUILD_NUMBER_PATTERN | %%BUILD_NUMBER%% |
|
109
|
+
When I watch "repo/salesforce/src/classes/VersionTest.cls" for changes and copy to "test_file"
|
109
110
|
And I run `sf push --build_number 123456789`
|
110
111
|
Then the exit status should be 0
|
111
112
|
And the file "test_file" should contain "123456789"
|
112
|
-
And the file "
|
113
|
+
And the file "repo/salesforce/src/classes/VersionTest.cls" should contain "%%BUILD_NUMBER%%"
|
114
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
113
115
|
And the output should match:
|
114
116
|
"""
|
115
|
-
^INFO: Pulling changes from
|
117
|
+
^INFO: Pulling changes from testEnv using url https://test.salesforce.com to temporary directory to generate destructiveChanges.xml.*OK$
|
116
118
|
^INFO: Creating destructive changes xml$
|
117
|
-
^INFO: Deploying code to
|
119
|
+
^INFO: Deploying code to testEnv:.*OK$
|
118
120
|
"""
|
119
121
|
|
122
|
+
@test
|
120
123
|
Scenario: Push code to a sandbox with the commit hash stamped into a version file
|
121
124
|
Given I set the environment variables to:
|
122
|
-
| variable | value
|
123
|
-
| SFDT_VERSION_FILE |
|
124
|
-
| SFDT_COMMIT_HASH_PATTERN |
|
125
|
-
When I watch "
|
125
|
+
| variable | value |
|
126
|
+
| SFDT_VERSION_FILE | classes/VersionTest.cls |
|
127
|
+
| SFDT_COMMIT_HASH_PATTERN | %%COMMIT_HASH%% |
|
128
|
+
When I watch "repo/salesforce/src/classes/VersionTest.cls" for changes and copy to "test_file"
|
126
129
|
And I run `sf push`
|
127
130
|
Then the exit status should be 0
|
128
|
-
And the file "test_file" should
|
129
|
-
And the file "
|
131
|
+
And the file "test_file" should contain "aac66ee0d404c124fbcafd32a054664de4fdd3da"
|
132
|
+
And the file "repo/salesforce/src/classes/VersionTest.cls" should contain "%%COMMIT_HASH%%"
|
133
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
130
134
|
And the output should match:
|
131
135
|
"""
|
132
|
-
^INFO: Pulling changes from
|
136
|
+
^INFO: Pulling changes from testEnv using url https://test.salesforce.com to temporary directory to generate destructiveChanges.xml.*OK$
|
133
137
|
^INFO: Creating destructive changes xml$
|
134
|
-
^INFO: Deploying code to
|
138
|
+
^INFO: Deploying code to testEnv:.*OK$
|
135
139
|
"""
|
136
140
|
|
137
141
|
Scenario: Push code to a sandbox with the repo not being cloned it should point the user to run sf config
|
@@ -157,50 +161,53 @@ Feature: Push code to salesforce
|
|
157
161
|
Scenario: Push code to a sandbox and trigger individual tests in debug mode
|
158
162
|
When I run `sf push -r individual_test -d`
|
159
163
|
Then the exit status should be 0
|
160
|
-
And a file named "
|
164
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should exist
|
165
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
161
166
|
And the output should match:
|
162
167
|
"""
|
163
|
-
^INFO: Deploying and Testing code to
|
168
|
+
^INFO: Deploying and Testing code to testEnv: $
|
164
169
|
^$
|
165
170
|
^Buildfile: .*$
|
166
171
|
^$
|
167
|
-
^
|
172
|
+
^deployAndRunSpecifiedTests:$
|
168
173
|
"""
|
169
174
|
And the output should match /Running Test/
|
170
175
|
And the output should match /DEPLOYMENT SUCCEEDED.*BUILD SUCCESSFUL/
|
171
176
|
|
172
177
|
Scenario: Push code to a sandbox with a build number
|
173
178
|
Given I set the environment variables to:
|
174
|
-
| variable | value
|
175
|
-
| SFDT_VERSION_FILE |
|
176
|
-
| SFDT_BUILD_NUMBER_PATTERN |
|
177
|
-
When I watch "
|
179
|
+
| variable | value |
|
180
|
+
| SFDT_VERSION_FILE | classes/VersionTest.cls |
|
181
|
+
| SFDT_BUILD_NUMBER_PATTERN | %%BUILD_NUMBER%% |
|
182
|
+
When I watch "repo/salesforce/src/classes/VersionTest.cls" for changes and copy to "test_file"
|
178
183
|
And I run `sf push --build_number 123456789`
|
179
184
|
Then the exit status should be 0
|
180
185
|
And the file "test_file" should contain "123456789"
|
181
|
-
And the file "
|
186
|
+
And the file "repo/salesforce/src/classes/VersionTest.cls" should contain "%%BUILD_NUMBER%%"
|
187
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
182
188
|
And the output should match:
|
183
189
|
"""
|
184
|
-
^INFO: Pulling changes from
|
190
|
+
^INFO: Pulling changes from testEnv using url https://test.salesforce.com to temporary directory to generate destructiveChanges.xml.*OK$
|
185
191
|
^INFO: Creating destructive changes xml$
|
186
|
-
^INFO: Deploying code to
|
192
|
+
^INFO: Deploying code to testEnv:.*OK$
|
187
193
|
"""
|
188
194
|
|
189
195
|
Scenario: Push code to a sandbox with the commit hash stamped into a version file
|
190
196
|
Given I set the environment variables to:
|
191
|
-
| variable | value
|
192
|
-
| SFDT_VERSION_FILE |
|
193
|
-
| SFDT_COMMIT_HASH_PATTERN |
|
194
|
-
When I watch "
|
197
|
+
| variable | value |
|
198
|
+
| SFDT_VERSION_FILE | classes/VersionTest.cls |
|
199
|
+
| SFDT_COMMIT_HASH_PATTERN | %%COMMIT_HASH%% |
|
200
|
+
When I watch "repo/salesforce/src/classes/VersionTest.cls" for changes and copy to "test_file"
|
195
201
|
And I run `sf push`
|
196
202
|
Then the exit status should be 0
|
197
|
-
And the file "test_file" should
|
198
|
-
And the file "
|
203
|
+
And the file "test_file" should contain "aac66ee0d404c124fbcafd32a054664de4fdd3da"
|
204
|
+
And the file "repo/salesforce/src/classes/VersionTest.cls" should contain "%%COMMIT_HASH%%"
|
205
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
199
206
|
And the output should match:
|
200
207
|
"""
|
201
|
-
^INFO: Pulling changes from
|
208
|
+
^INFO: Pulling changes from testEnv using url https://test.salesforce.com to temporary directory to generate destructiveChanges.xml.*OK$
|
202
209
|
^INFO: Creating destructive changes xml$
|
203
|
-
^INFO: Deploying code to
|
210
|
+
^INFO: Deploying code to testEnv:.*OK$
|
204
211
|
"""
|
205
212
|
|
206
213
|
Scenario: Push code to a sandbox with the repo not being cloned it should point the user to run sf config
|
@@ -222,18 +229,66 @@ Feature: Push code to salesforce
|
|
222
229
|
"""
|
223
230
|
.*Failed to login: Failed to send request to https://invalid_url.salesforce.com.*
|
224
231
|
"""
|
225
|
-
@new
|
226
232
|
Scenario: Push code to a sandbox and trigger individual tests in debug mode
|
227
233
|
When I run `sf push -r individual_test -d`
|
228
234
|
Then the exit status should be 0
|
229
|
-
And a file named "
|
235
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should exist
|
236
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
230
237
|
And the output should match:
|
231
238
|
"""
|
232
|
-
^INFO: Deploying and Testing code to
|
239
|
+
^INFO: Deploying and Testing code to testEnv: $
|
233
240
|
^$
|
234
241
|
^Buildfile: .*$
|
235
242
|
^$
|
236
|
-
^
|
243
|
+
^deployAndRunSpecifiedTests:$
|
237
244
|
"""
|
238
|
-
And the output should match /Running Test:
|
245
|
+
And the output should match /Running Test: .*/
|
246
|
+
And the output should match /DEPLOYMENT SUCCEEDED.*BUILD SUCCESSFUL/
|
247
|
+
|
248
|
+
Scenario: Push code to a sandbox in check only mode using debug
|
249
|
+
When I run `sf push -c -d`
|
250
|
+
Then the exit status should be 0
|
251
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should exist
|
252
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should match /ApexClass|ApexPage/
|
253
|
+
And the output should match:
|
254
|
+
"""
|
255
|
+
^INFO: Deploying code to testEnv:.*$
|
256
|
+
^$
|
257
|
+
^Buildfile: .*$
|
258
|
+
^$
|
259
|
+
^checkOnlyCode:$
|
260
|
+
"""
|
261
|
+
And the output should match /DEPLOYMENT SUCCEEDED.*BUILD SUCCESSFUL/
|
262
|
+
|
263
|
+
Scenario: Push code to a sandbox in debug mode and exclude specific metadata objects to exclude
|
264
|
+
When I run `sf push -e Account.Sort__c -d`
|
265
|
+
Then the exit status should be 0
|
266
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should exist
|
267
|
+
And the output should match /Pulling.*testEnv.*https:..test.salesforce.com.*destructiveChanges.xml/
|
268
|
+
And the output should match /excluded: Account.Sort__c/
|
269
|
+
And the output should match /INFO: Deploying code to testEnv/
|
270
|
+
And the output should match /DEPLOYMENT SUCCEEDED.*BUILD SUCCESSFUL/
|
271
|
+
|
272
|
+
Scenario: Push code to a sandbox in debug mode and specifieng specific metadata to destroy
|
273
|
+
When I run `sf push -i apexclass -d`
|
274
|
+
Then the exit status should be 0
|
275
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should exist
|
276
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should contain "ApexClass"
|
277
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should not contain "ApexPage"
|
278
|
+
And the output should match /Pulling.*testEnv.*https:..test.salesforce.com.*destructiveChanges.xml/
|
279
|
+
And the output should match /included: apexclass/
|
280
|
+
And the output should match /INFO: Deploying code to testEnv/
|
281
|
+
And the output should match /DEPLOYMENT SUCCEEDED.*BUILD SUCCESSFUL/
|
282
|
+
|
283
|
+
@new
|
284
|
+
Scenario: Push code to a sandbox in debug mode and specifieng specific metadata exclude from destructive change
|
285
|
+
When I run `sf push -e NewVersionTest -d`
|
286
|
+
Then the exit status should be 0
|
287
|
+
And a file named "repo/salesforce/src/destructiveChanges.xml" should exist
|
288
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should not contain "ApexClass"
|
289
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should not contain "NewVersionTest"
|
290
|
+
And the file "repo/salesforce/src/destructiveChanges.xml" should contain "ApexPage"
|
291
|
+
And the output should match /Pulling.*testEnv.*https:..test.salesforce.com.*destructiveChanges.xml/
|
292
|
+
And the output should match /excluded: NewVersionTest/
|
293
|
+
And the output should match /INFO: Deploying code to testEnv/
|
239
294
|
And the output should match /DEPLOYMENT SUCCEEDED.*BUILD SUCCESSFUL/
|
@@ -0,0 +1,201 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
COMMAND=$1
|
4
|
+
|
5
|
+
if [[ -z $SF_SRC_DIR ]]; then
|
6
|
+
echo "ERROR: SF_SRC_DIR Not defined"
|
7
|
+
exit 1
|
8
|
+
fi
|
9
|
+
|
10
|
+
if [[ -z $SF_USERNAME ]]; then
|
11
|
+
echo "ERROR: SF_USERNAME Not defined"
|
12
|
+
exit 1
|
13
|
+
fi
|
14
|
+
|
15
|
+
if [[ -z $SF_PASSWORD ]]; then
|
16
|
+
echo "ERROR: SF_PASSWORD Not defined"
|
17
|
+
exit 1
|
18
|
+
fi
|
19
|
+
|
20
|
+
if [[ -z $SF_SERVERURL ]]; then
|
21
|
+
echo "ERROR: SF_PASSWORD Not defined"
|
22
|
+
exit 1
|
23
|
+
fi
|
24
|
+
|
25
|
+
if [[ $SF_USERNAME == 'invalid_user' ]]; then
|
26
|
+
cat << EOF
|
27
|
+
Buildfile: ${PWD}/build.xml
|
28
|
+
|
29
|
+
${COMMAND}:
|
30
|
+
|
31
|
+
BUILD FAILED
|
32
|
+
${PWD}/build.xml:53: Invalid username, password, security token; or user locked out.
|
33
|
+
|
34
|
+
Total time: 10 seconds
|
35
|
+
|
36
|
+
EOF
|
37
|
+
exit 1
|
38
|
+
fi
|
39
|
+
|
40
|
+
if ! echo $SF_SERVERURL|grep -E 'https:\/\/(test|login).salesforce.com' > /dev/null 2>&1 ; then
|
41
|
+
cat << EOF
|
42
|
+
Buildfile: ${PWD}/build.xml
|
43
|
+
|
44
|
+
retrieveCode:
|
45
|
+
[sf:retrieve] Note: use ant -verbose to get more information on the failure
|
46
|
+
|
47
|
+
BUILD FAILED
|
48
|
+
${PWD}/build.xml:53: Failed to login: Failed to send request to ${SF_SERVERURL}/services/Soap/u/31.0
|
49
|
+
|
50
|
+
Total time: 6 seconds
|
51
|
+
|
52
|
+
EOF
|
53
|
+
|
54
|
+
exit 1
|
55
|
+
fi
|
56
|
+
|
57
|
+
if [[ ! -f build.xml ]]; then
|
58
|
+
echo "ERROR: build.xml not found"
|
59
|
+
exit 1
|
60
|
+
fi
|
61
|
+
|
62
|
+
if [[ ! -f $SF_SRC_DIR/package.xml ]]; then
|
63
|
+
echo "ERROR: package.xml not found"
|
64
|
+
exit 1
|
65
|
+
fi
|
66
|
+
|
67
|
+
if ! grep $COMMAND build.xml > /dev/null 2>&1 ; then
|
68
|
+
echo "ERROR: $COMMAND not found on build.xml"
|
69
|
+
exit 1
|
70
|
+
fi
|
71
|
+
|
72
|
+
case $COMMAND in
|
73
|
+
"retrieveCode")
|
74
|
+
|
75
|
+
# Add two more classes and two more pages so to simulate
|
76
|
+
# Destructive changes
|
77
|
+
cd $SF_SRC_DIR
|
78
|
+
git reset --hard
|
79
|
+
old_dir=`pwd`
|
80
|
+
cd $SF_SRC_DIR/classes
|
81
|
+
ls|tail -2|while read class;do cp $class New$class;done
|
82
|
+
cd $SF_SRC_DIR/pages
|
83
|
+
ls|tail -2|while read page;do cp $page New$page;done
|
84
|
+
cd $old_dir
|
85
|
+
|
86
|
+
cat << EOF
|
87
|
+
Buildfile: ${PWD}/build.xml
|
88
|
+
|
89
|
+
retrieveCode:
|
90
|
+
[sf:retrieve] Request for a retrieve submitted successfully.
|
91
|
+
[sf:retrieve] Request ID for the current retrieve task: 09S11000002rKP5EAM
|
92
|
+
[sf:retrieve] Waiting for server to finish processing the request...
|
93
|
+
[sf:retrieve] Request Status: Pending
|
94
|
+
[sf:retrieve] Request Status: InProgress
|
95
|
+
[sf:retrieve] Request Status: Succeeded
|
96
|
+
[sf:retrieve] Finished request 09S11000002rKP5EAM successfully.
|
97
|
+
|
98
|
+
BUILD SUCCESSFUL
|
99
|
+
Total time: 1 minute 38 seconds
|
100
|
+
|
101
|
+
EOF
|
102
|
+
;;
|
103
|
+
"deployCode")
|
104
|
+
if echo $SF_SERVERURL |grep login > /dev/null 2>&1 ;then
|
105
|
+
cat << EOF
|
106
|
+
Buildfile: ${PWD}/build.xml
|
107
|
+
|
108
|
+
deployCode:
|
109
|
+
[sf:deploy] Request for a deploy submitted successfully.
|
110
|
+
[sf:deploy] Request ID for the current deploy task: 0Af2400000a0FeVCAU
|
111
|
+
[sf:deploy] Waiting for server to finish processing the request...
|
112
|
+
[sf:deploy] Request Status: Pending
|
113
|
+
[sf:deploy] Request Status: InProgress (94/1473) -- Processing Type: CustomObject
|
114
|
+
[sf:deploy] Request Status: InProgress
|
115
|
+
[sf:deploy] Request Status: InProgress (1204/1473) -- Processing Type: ApprovalProcess
|
116
|
+
[sf:deploy] Request Status: InProgress (1212/1473) -- Processing Type: ApexClass
|
117
|
+
[sf:deploy] Request Status: InProgress (1442/1473) -- Processing Type: PermissionSet
|
118
|
+
[sf:deploy] Request Status: InProgress (7/227) -- Running Test: FooClassTest
|
119
|
+
[sf:deploy] Request Status: InProgress (26/227) -- Running Test: BarClassTest
|
120
|
+
[sf:deploy] Request Status: Succeeded
|
121
|
+
[sf:deploy] *********** DEPLOYMENT SUCCEEDED ***********
|
122
|
+
[sf:deploy] Finished request 0Af2400000a0FeVCAU successfully.
|
123
|
+
|
124
|
+
BUILD SUCCESSFUL
|
125
|
+
EOF
|
126
|
+
else
|
127
|
+
cat << EOF
|
128
|
+
Buildfile: ${PWD}/build.xml
|
129
|
+
|
130
|
+
deployCode:
|
131
|
+
[sf:deploy] Request for a deploy submitted successfully.
|
132
|
+
[sf:deploy] Request ID for the current deploy task: 0Af2400000a0FeVCAU
|
133
|
+
[sf:deploy] Waiting for server to finish processing the request...
|
134
|
+
[sf:deploy] Request Status: Pending
|
135
|
+
[sf:deploy] Request Status: InProgress (94/1473) -- Processing Type: CustomObject
|
136
|
+
[sf:deploy] Request Status: InProgress
|
137
|
+
[sf:deploy] Request Status: InProgress (1204/1473) -- Processing Type: ApprovalProcess
|
138
|
+
[sf:deploy] Request Status: InProgress (1212/1473) -- Processing Type: ApexClass
|
139
|
+
[sf:deploy] Request Status: InProgress (1442/1473) -- Processing Type: PermissionSet
|
140
|
+
[sf:deploy] Request Status: Succeeded
|
141
|
+
[sf:deploy] *********** DEPLOYMENT SUCCEEDED ***********
|
142
|
+
[sf:deploy] Finished request 0Af2400000a0FeVCAU successfully.
|
143
|
+
|
144
|
+
BUILD SUCCESSFUL
|
145
|
+
|
146
|
+
EOF
|
147
|
+
fi
|
148
|
+
;;
|
149
|
+
"deployAndTestCode"|"deployAndRunSpecifiedTests")
|
150
|
+
cat << EOF
|
151
|
+
Buildfile: ${PWD}/build.xml
|
152
|
+
|
153
|
+
${COMMAND}:
|
154
|
+
[sf:deploy] Request for a deploy submitted successfully.
|
155
|
+
[sf:deploy] Request ID for the current deploy task: 0Af2400000a0FeVCAU
|
156
|
+
[sf:deploy] Waiting for server to finish processing the request...
|
157
|
+
[sf:deploy] Request Status: Pending
|
158
|
+
[sf:deploy] Request Status: InProgress (94/1473) -- Processing Type: CustomObject
|
159
|
+
[sf:deploy] Request Status: InProgress
|
160
|
+
[sf:deploy] Request Status: InProgress (1204/1473) -- Processing Type: ApprovalProcess
|
161
|
+
[sf:deploy] Request Status: InProgress (1212/1473) -- Processing Type: ApexClass
|
162
|
+
[sf:deploy] Request Status: InProgress (1212/1473) -- Processing Type: ApexClass
|
163
|
+
[sf:deploy] Request Status: InProgress (1442/1473) -- Processing Type: PermissionSet
|
164
|
+
[sf:deploy] Request Status: InProgress (7/227) -- Running Test: FooClassTest
|
165
|
+
[sf:deploy] Request Status: InProgress (26/227) -- Running Test: BarClassTest
|
166
|
+
[sf:deploy] Request Status: Succeeded
|
167
|
+
[sf:deploy] *********** DEPLOYMENT SUCCEEDED ***********
|
168
|
+
[sf:deploy] Finished request 0Af2400000a0FeVCAU successfully.
|
169
|
+
|
170
|
+
BUILD SUCCESSFUL
|
171
|
+
EOF
|
172
|
+
;;
|
173
|
+
"checkOnlyCode")
|
174
|
+
cat << EOF
|
175
|
+
Buildfile: /home/vagrant/salesforce/build.xml
|
176
|
+
|
177
|
+
checkOnlyCode:
|
178
|
+
[sf:deploy] Request for a deploy submitted successfully.
|
179
|
+
[sf:deploy] Request ID for the current deploy task: 0Afg000000Dwn66CAB
|
180
|
+
[sf:deploy] Waiting for server to finish processing the request...
|
181
|
+
[sf:deploy] Request Status: Pending
|
182
|
+
[sf:deploy] Request Status: InProgress
|
183
|
+
[sf:deploy] Request Status: InProgress (49/1115) -- Processing Type: ApexPage
|
184
|
+
[sf:deploy] Request Status: InProgress (49/1115) -- Processing Type: ApexPage
|
185
|
+
[sf:deploy] Request Status: InProgress (125/1115) -- Processing Type: CustomObject
|
186
|
+
[sf:deploy] Request Status: InProgress (912/1115) -- Processing Type: Workflow
|
187
|
+
[sf:deploy] Request Status: InProgress (926/1115) -- Processing Type: ApexClass
|
188
|
+
[sf:deploy] Request Status: InProgress (1101/1115) -- Processing Type: ApexTrigger
|
189
|
+
[sf:deploy] Request Status: InProgress (1108/1115) -- Processing Type: Profile
|
190
|
+
[sf:deploy] Request Status: InProgress
|
191
|
+
[sf:deploy] Request Status: Succeeded
|
192
|
+
[sf:deploy] *********** DEPLOYMENT SUCCEEDED ***********
|
193
|
+
[sf:deploy] Finished request 0Afg000000Dwn66CAB successfully.
|
194
|
+
|
195
|
+
BUILD SUCCESSFUL
|
196
|
+
Total time: 5 minutes 2 seconds
|
197
|
+
EOF
|
198
|
+
|
199
|
+
esac
|
200
|
+
|
201
|
+
sleep 0.4
|