git-semaphore 0.0.9 → 1.0.0

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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -19
  3. data/.pryrc +6 -0
  4. data/.ruby-version +1 -1
  5. data/CODE_OF_CONDUCT.md +49 -0
  6. data/LICENSE.txt +17 -18
  7. data/README.md +166 -40
  8. data/Rakefile +8 -9
  9. data/bin/console +14 -0
  10. data/bin/setup +10 -0
  11. data/exe/git-semaphore +79 -0
  12. data/git-semaphore.gemspec +15 -19
  13. data/lib/git/semaphore/api.rb +133 -0
  14. data/lib/git/semaphore/api_cache.rb +59 -0
  15. data/lib/git/semaphore/api_enrich.rb +40 -0
  16. data/lib/git/semaphore/app.rb +121 -0
  17. data/lib/{git-semaphore → git/semaphore}/banner.rb +0 -0
  18. data/lib/{git-semaphore → git/semaphore}/copyright.rb +1 -1
  19. data/lib/{git-semaphore → git/semaphore}/version.rb +1 -1
  20. data/lib/git/semaphore.rb +77 -0
  21. metadata +55 -181
  22. data/.bundle/config +0 -3
  23. data/.irbrc +0 -13
  24. data/bin/git-semaphore +0 -115
  25. data/features/cassettes/cucumber_tags/api_branch_status.json +0 -20
  26. data/features/cassettes/cucumber_tags/api_project_branches.json +0 -14
  27. data/features/cassettes/cucumber_tags/api_projects.json +0 -46
  28. data/features/cassettes/cucumber_tags/vcr_api_branches.yml +0 -70
  29. data/features/cassettes/cucumber_tags/vcr_api_projects.yml +0 -102
  30. data/features/cassettes/cucumber_tags/vcr_api_rebuild_last_revision.yml +0 -55
  31. data/features/cassettes/cucumber_tags/vcr_api_status.yml +0 -76
  32. data/features/coming_soon.feature +0 -13
  33. data/features/env_config.feature +0 -11
  34. data/features/git_config.feature +0 -11
  35. data/features/help_and_version.feature +0 -33
  36. data/features/semaphore_app_api.feature +0 -29
  37. data/features/semaphore_app_config.feature +0 -37
  38. data/features/semaphore_auth_token.feature +0 -32
  39. data/features/semaphore_project_token.feature +0 -32
  40. data/features/step_definitions/git-semaphore_steps.rb +0 -121
  41. data/features/step_definitions/patch_methadone_steps.rb +0 -5
  42. data/features/step_definitions/vcr_semaphore_steps.rb +0 -25
  43. data/features/support/env.rb +0 -7
  44. data/features/support/semaphoreapp.rb +0 -2
  45. data/features/support/vcr.rb +0 -14
  46. data/features/working_directory.feature +0 -22
  47. data/lib/git-semaphore/api.rb +0 -60
  48. data/lib/git-semaphore/app.rb +0 -123
  49. data/lib/git-semaphore.rb +0 -15
  50. data/spec_helper.rb +0 -6
  51. data/vendor/bundle/.gitignore +0 -2
@@ -1,102 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: https://semaphoreci.com/api/v1/projects?auth_token=Yds3w6o26FLfJTnVK2y9
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- Accept-Encoding:
11
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
- Accept:
13
- - ! '*/*'
14
- User-Agent:
15
- - Ruby
16
- response:
17
- status:
18
- code: 200
19
- message: OK
20
- headers:
21
- Content-Type:
22
- - application/json; charset=utf-8
23
- Transfer-Encoding:
24
- - chunked
25
- Connection:
26
- - keep-alive
27
- Status:
28
- - '200'
29
- X-Powered-By:
30
- - Phusion Passenger (mod_rails/mod_rack) 3.0.13
31
- Strict-Transport-Security:
32
- - max-age=31536000
33
- X-Ua-Compatible:
34
- - IE=Edge,chrome=1
35
- Etag:
36
- - ! '"e42bf466c06c9118300b3a6408b531b1"'
37
- Cache-Control:
38
- - max-age=0, private, must-revalidate
39
- Set-Cookie:
40
- - _base-app_session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJTViMjRmMTczNjEyZjdmMzJjNWQ5OWZjNWI0YWIyYmM0BjsAVEkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIJVXNlcgY7AEZbBmkCCANJIiIkMmEkMTAkN3VSVzl5MkpUMHVrdVA5TWVncEpYdQY7AFQ%3D--9772b226dbe76a1dfe0118335db573afbe9cacb2;
41
- path=/; secure; HttpOnly
42
- X-Request-Id:
43
- - d458d702d771a4fdfeb6baffe3a5c87c
44
- X-Runtime:
45
- - '0.651900'
46
- Date:
47
- - Sat, 20 Oct 2012 09:39:18 GMT
48
- X-Rack-Cache:
49
- - miss
50
- Server:
51
- - nginx/1.2.1 + Phusion Passenger 3.0.13 (mod_rails/mod_rack)
52
- body:
53
- encoding: US-ASCII
54
- string: ! '[
55
- {
56
- "id": 61,
57
- "hash_id": "3f1004b8343faabda63d441734526c854380ab89",
58
- "name": "testapp-sphinx",
59
- "owner": "renderedtext",
60
- "created_at": "2012-09-04T11:53:22Z",
61
- "updated_at": "2012-09-04T12:01:17Z",
62
- "branches": [
63
- {
64
- "branch_name": "master",
65
- "branch_url": "http://10.0.1.76:3000/projects/61/branches/85",
66
- "branch_status_url": "http://semaphoreci.com/api/v1/projects/3f1004b8343faabda63d441734526c854380ab89/85/status?auth_token=Yds3w6o26FLfJTnVK2y9",
67
- "branch_history_url": "http://semaphoreci.com/api/v1/projects/3f1004b8343faabda63d441734526c854380ab89/85?auth_token=Yds3w6o26FLfJTnVK2y9",
68
- "project_name": "testapp-sphinx",
69
- "build_url": "http://10.0.1.76:3000/projects/61/branches/85/builds/1",
70
- "build_number": 1,
71
- "result": "passed",
72
- "started_at": "2012-09-04T11:55:07Z",
73
- "finished_at": "2012-09-04T12:01:16Z"
74
- }
75
- ]
76
- },
77
- {
78
- "id": 63,
79
- "hash_id": "649e584dc507ca4b73e1374d3125ef0b567a949c",
80
- "name": "testapp-mongodb",
81
- "owner": "renderedtext",
82
- "created_at": "2012-09-14T10:53:38Z",
83
- "updated_at": "2012-09-14T11:16:51Z",
84
- "branches": [
85
- {
86
- "branch_name": "mongoid3",
87
- "branch_url": "http://10.0.1.76:3000/projects/63/branches/89",
88
- "branch_status_url": "http://semaphoreci.com/api/v1/projects/3f1004b8343faabda63d441734526c854380ab89/85/status?auth_token=Yds3w6o26FLfJTnVK2y9",
89
- "branch_history_url": "http://semaphoreci.com/api/v1/projects/3f1004b8343faabda63d441734526c854380ab89/85?auth_token=Yds3w6o26FLfJTnVK2y9",
90
- "project_name": "testapp-mongodb",
91
- "build_url": "http://10.0.1.76:3000/projects/63/branches/89/builds/3",
92
- "build_number": 3,
93
- "result": "passed",
94
- "started_at": "2012-09-14T11:11:39Z",
95
- "finished_at": "2012-09-14T11:16:51Z"
96
- }
97
- ]
98
- }
99
- ]'
100
- http_version:
101
- recorded_at: Sat, 20 Oct 2012 09:39:19 GMT
102
- recorded_with: VCR 2.2.5
@@ -1,55 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: post
5
- uri: https://semaphoreci.com/api/v1/projects/649e584dc507ca4b73e1374d3125ef0b567a949c/89/build?auth_token=Yds3w6o26FLfJTnVK2y9
6
- body:
7
- encoding: UTF-8
8
- string: auth_token=Yds3w6o26FLfJTnVK2y9
9
- headers:
10
- Accept-Encoding:
11
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
- Accept:
13
- - '*/*'
14
- User-Agent:
15
- - Ruby
16
- response:
17
- status:
18
- code: 200
19
- message: OK
20
- headers:
21
- Content-Type:
22
- - application/json; charset=utf-8
23
- Transfer-Encoding:
24
- - chunked
25
- Connection:
26
- - keep-alive
27
- Status:
28
- - '200'
29
- X-Powered-By:
30
- - Phusion Passenger (mod_rails/mod_rack) 3.0.14
31
- Strict-Transport-Security:
32
- - max-age=31536000
33
- X-Ua-Compatible:
34
- - IE=Edge,chrome=1
35
- Cache-Control:
36
- - no-cache
37
- Set-Cookie:
38
- - _semaphoreappdotcom_session=BAh7BkkiD3Nlc3Npb25faWQGOgZFRkkiJTM4NGFhMzNmMzBlMWYwZWNjZGY1YTVmOTZmM2EwZGM5BjsAVA%3D%3D--221d375194d03282702a20d5dd5be5520e5eccca;
39
- path=/; secure; HttpOnly
40
- X-Request-Id:
41
- - 7ca89a2918f9ed99308b0969f52d04b8
42
- X-Runtime:
43
- - '0.005673'
44
- Date:
45
- - Thu, 18 Dec 2014 09:38:06 GMT
46
- X-Rack-Cache:
47
- - invalidate, pass
48
- Server:
49
- - nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)
50
- body:
51
- encoding: UTF-8
52
- string: ! '{"commits":[{"id":"dummy_commit","url":"https://github.com/company/dummy_project/commit/dummy_commit","author_name":"Dude","author_email":"dude@company.co.uk","message":"Spiky spike","timestamp":"2014-07-23T09:52:55Z"},{"id":"foobar","url":"https://github.com/company/dummy_project/commit/foobar","author_name":"Dude","author_email":"dude@company.co.uk","message":"Merge branch \"master\" into dumy-branch","timestamp":"2014-07-25T15:33:05Z"},{"id":"dummy_commit4","url":"https://github.com/company/dummy_project/commit/dummy_commit4","author_name":"Dude","author_email":"dude@company.co.uk","message":"Move letter-opener to production gem","timestamp":"2014-07-28T07:32:28Z"},{"id":"dummy_commit2","url":"https://github.com/company/dummy_project/commit/dummy_commit2","author_name":"Dude","author_email":"dude@company.co.uk","message":"Merge branch \"master\" into dumy-branch","timestamp":"2014-07-30T07:25:37Z"},{"id":"dummy_commit3","url":"https://github.com/company/dummy_project/commit/dummy_commit3","author_name":"Dude","author_email":"dude@company.co.uk","message":"Merge branch \"master\" into dumy-branch","timestamp":"2014-08-04T10:08:26Z"},{"id":"dummy_commit5","url":"https://github.com/company/dummy_project/commit/dummy_commit5","author_name":"Dude","author_email":"dude@company.co.uk","message":"Merge branch \"master\" into dumy-branch\n\nConflicts:\n\tGemfile","timestamp":"2014-12-18T09:05:53Z"}],"project_name":"dummy_project","branch_name":"dumy-branch","number":4,"result":null,"created_at":"2014-12-18T09:44:11Z","updated_at":"2014-12-18T09:44:11Z","started_at":null,"finished_at":null,"html_url":"https://semaphoreci.com/company/dummy_project/branches/dumy-branch/builds/4","build_log_url":"https://semaphoreci.com/api/v1/projects/dummy_project/313010/builds/4/log?auth_token=Yds3w6o26FLfJTnVK2y9","build_info_url":"https://semaphoreci.com/api/v1/projects/dummy_project/313010/builds/4?auth_token=Yds3w6o26FLfJTnVK2y9"}'
53
- http_version:
54
- recorded_at: Thu, 18 Dec 2014 09:38:06 GMT
55
- recorded_with: VCR 2.9.3
@@ -1,76 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: https://semaphoreci.com/api/v1/projects/649e584dc507ca4b73e1374d3125ef0b567a949c/89/status?auth_token=Yds3w6o26FLfJTnVK2y9
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- Accept-Encoding:
11
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
- Accept:
13
- - ! '*/*'
14
- User-Agent:
15
- - Ruby
16
- response:
17
- status:
18
- code: 200
19
- message: OK
20
- headers:
21
- Content-Type:
22
- - application/json; charset=utf-8
23
- Transfer-Encoding:
24
- - chunked
25
- Connection:
26
- - keep-alive
27
- Status:
28
- - '200'
29
- X-Powered-By:
30
- - Phusion Passenger (mod_rails/mod_rack) 3.0.13
31
- Strict-Transport-Security:
32
- - max-age=31536000
33
- X-Ua-Compatible:
34
- - IE=Edge,chrome=1
35
- Etag:
36
- - ! '"c1bdb2043e1b1523c34cdeb47860d6c2"'
37
- Cache-Control:
38
- - max-age=0, private, must-revalidate
39
- Set-Cookie:
40
- - _base-app_session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJTY1Yzk0MzBhMzBhMzMxZGViMmQ2YjM2ZDEzMmNjYTUwBjsAVEkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjsAVFsISSIJVXNlcgY7AEZbBmkCCANJIiIkMmEkMTAkN3VSVzl5MkpUMHVrdVA5TWVncEpYdQY7AFQ%3D--e5c2a33818fd15d965c8a7cbbb092d7c602516f5;
41
- path=/; secure; HttpOnly
42
- X-Request-Id:
43
- - 45e070788bb4c7c80c85dea3a323bb2d
44
- X-Runtime:
45
- - '0.142061'
46
- Date:
47
- - Sat, 20 Oct 2012 12:15:21 GMT
48
- X-Rack-Cache:
49
- - miss
50
- Server:
51
- - nginx/1.2.1 + Phusion Passenger 3.0.13 (mod_rails/mod_rack)
52
- body:
53
- encoding: US-ASCII
54
- string: ! '{
55
- "branch_name": "gem_updates",
56
- "branch_url": "https://semaphoreci.com/projects/44/branches/50",
57
- "branch_status_url": "http://semaphoreci.com/api/v1/projects/649e584dc507ca4b73e1374d3125ef0b567a949c/89/status?auth_token=Yds3w6o26FLfJTnVK2y9",
58
- "branch_history_url": "http://semaphoreci.com/api/v1/projects/649e584dc507ca4b73e1374d3125ef0b567a949c/89?auth_token=Yds3w6o26FLfJTnVK2y9",
59
- "project_name": "base-app",
60
- "build_url": "https://semaphoreci.com/projects/44/branches/50/builds/15",
61
- "build_number": 15,
62
- "result": "passed",
63
- "started_at": "2012-07-09T15:23:53Z",
64
- "finished_at": "2012-07-09T15:30:16Z",
65
- "commit": {
66
- "id": "dc395381e650f3bac18457909880829fc20e34ba",
67
- "url": "https://github.com/renderedtext/base-app/commit/dc395381e650f3bac18457909880829fc20e34ba",
68
- "author_name": "Vladimir Saric",
69
- "author_email": "vladimir@renderedtext.com",
70
- "message": "Update ''shoulda'' gem.",
71
- "timestamp": "2012-07-04T18:14:08Z"
72
- }
73
- }'
74
- http_version:
75
- recorded_at: Sat, 20 Oct 2012 12:15:25 GMT
76
- recorded_with: VCR 2.2.5
@@ -1,13 +0,0 @@
1
- Feature: Move Along, Nothing To See Here
2
-
3
- Scenario: run the main script in a directory that is not a git working dir
4
-
5
- When I run `git-semaphore`
6
- Then the exit status should be 255
7
- And the output should match /Error: "[^\042]*" is not a git working directory\.\.\. exiting!/
8
-
9
- Scenario: run the main script in a directory that is a git working dir
10
-
11
- When I run `git-semaphore` in a git working dir
12
- Then the exit status should be 1
13
- And the output should match /Coming soon! \(RuntimeError\)/
@@ -1,11 +0,0 @@
1
- Feature: Configuration, Configuration, Configuration
2
-
3
- Scenario: run the main script with tokens set in the environment
4
-
5
- Given a runtime environment with config:
6
- | SEMAPHORE_AUTH_TOKEN | foo|
7
- | SEMAPHORE_PROJECT_TOKEN | bar|
8
- When I run `git-semaphore --env-config` in a git working dir
9
- Then the exit status should be 0
10
- And the output should match /export SEMAPHORE_AUTH_TOKEN="foo"/
11
- And the output should match /export SEMAPHORE_PROJECT_TOKEN="bar"/
@@ -1,11 +0,0 @@
1
- Feature: Configuration, Configuration, Configuration
2
-
3
- Scenario: run the main script with tokens set in the git configuration
4
-
5
- Given a git repo in directory "blegga" with config:
6
- | semaphore.authtoken | foo |
7
- | semaphore.projecttoken | bar |
8
- When I run `git-semaphore --git-config` in "blegga" directory
9
- Then the exit status should be 0
10
- And the output should match /git config --local --replace-all semaphore.authtoken "foo"/
11
- And the output should match /git config --local --replace-all semaphore.projecttoken "bar"/
@@ -1,33 +0,0 @@
1
- Feature: Help Me I've Got Versionitis
2
-
3
- Scenario: get help for the main script
4
-
5
- When I get help for "git-semaphore"
6
- Then the exit status should be 0
7
- And the banner should be present
8
- And the banner should include the version
9
- And the banner should document that this app takes options
10
- And the following trollop options should be documented:
11
- | -v, --version |
12
- | -h, --help |
13
- | -w, --working-dir |
14
- | -p, --project-name |
15
- | -b, --branch-name |
16
- | -x, --check-auth |
17
- | -y, --check-project |
18
- | -z, --check-branch |
19
- | -e, --env-config |
20
- | -g, --git-config |
21
- | -r, --projects |
22
- | -a, --branches |
23
- | -s, --status |
24
- | -c, --commit-status |
25
- | -u, --rebuild-last-revision |
26
-
27
- Scenario: get the version of the main script
28
-
29
- When I get the version of "git-semaphore"
30
- Then the exit status should be 0
31
- And the output should include the version
32
- And the output should include the app name
33
- And the output should include a copyright notice
@@ -1,29 +0,0 @@
1
- Feature: Show Me What You've Got
2
-
3
- @vcr_api_projects
4
- Scenario: user's projects
5
-
6
- Given I am an authenticated user on semaphoreci.com
7
- And get the list of all my projects via their API
8
- Then the JSON should be an array
9
-
10
- @vcr_api_branches
11
- Scenario: project's branches
12
-
13
- Given I am an authenticated user on semaphoreci.com
14
- And get the list of all the branches for one of my projects via their API
15
- Then the JSON should be an array
16
-
17
- @vcr_api_status
18
- Scenario: branch status
19
-
20
- Given I am an authenticated user on semaphoreci.com
21
- And get the build status of one of the branches for one of my projects via their API
22
- Then the JSON should be a hash
23
-
24
- @vcr_api_rebuild_last_revision
25
- Scenario: Rebuild last revision
26
-
27
- Given I am an authenticated user on semaphoreci.com
28
- And request to rebuild the last revision of one of the branches for one of my projects via their API
29
- Then the JSON should be a hash
@@ -1,37 +0,0 @@
1
- Feature: Configuration, Configuration, Configuration
2
-
3
- Scenario: create an app instance inside a git repo without config
4
-
5
- Given a git repo in directory "blegga"
6
- And the "SEMAPHORE_AUTH_TOKEN" env variable is not set
7
- And the "SEMAPHORE_PROJECT_TOKEN" env variable is not set
8
- Then the application doesn't have an auth token
9
- And the application doesn't have a project token
10
-
11
- Scenario: create an app instance inside a git repo with config
12
-
13
- Given a git repo in directory "blegga" with config:
14
- | semaphore.authtoken | foo |
15
- | semaphore.projecttoken | bar |
16
- Then the application uses "foo" as the auth token
17
- And the application uses "bar" as the project token
18
-
19
- Scenario: create an app instance inside a git repo without config
20
-
21
- Given a git repo in directory "blegga"
22
- And a runtime environment with config:
23
- | SEMAPHORE_AUTH_TOKEN | foofoo |
24
- | SEMAPHORE_PROJECT_TOKEN | barbar |
25
- Then the application uses "foofoo" as the auth token
26
- And the application uses "barbar" as the project token
27
-
28
- Scenario: create an app instance inside a git repo with config
29
-
30
- Given a git repo in directory "blegga" with config:
31
- | semaphore.authtoken | foo |
32
- | semaphore.projecttoken | bar |
33
- And a runtime environment with config:
34
- | SEMAPHORE_AUTH_TOKEN | foofoo |
35
- | SEMAPHORE_PROJECT_TOKEN | barbar |
36
- Then the application uses "foo" as the auth token
37
- And the application uses "bar" as the project token
@@ -1,32 +0,0 @@
1
- Feature: How to Overcome Your Fear of Authority
2
-
3
- Scenario: run the main script with the auth token set in the env
4
-
5
- Given the "SEMAPHORE_AUTH_TOKEN" env variable is set
6
- When I run `git-semaphore --check-auth` in a git working dir
7
- Then the exit status should be 0
8
- And the stderr should contain exactly:
9
- """
10
- """
11
-
12
- Scenario: run the main script with the auth token set in git config
13
-
14
- Given "semaphore.authtoken" git config is set for git repo "blegga"
15
- When I run `git-semaphore --check-auth` in "blegga" directory
16
- Then the exit status should be 0
17
- And the stderr should contain exactly:
18
- """
19
- """
20
-
21
- Scenario: run the main script with the auth token not set in the env
22
-
23
- Given the "SEMAPHORE_AUTH_TOKEN" env variable is not set
24
- And "semaphore.authtoken" git config is not set for git repo "blegga"
25
- When I run `git-semaphore --check-auth` in "blegga" directory
26
- Then the exit status should be 255
27
- And the stderr should contain exactly:
28
- """
29
- Please set - and export - the SEMAPHORE_AUTH_TOKEN env variable
30
- Alternatively, set semaphore.authtoken in your local git config
31
-
32
- """
@@ -1,32 +0,0 @@
1
- Feature: Always Carry Identification Wherever You Go
2
-
3
- Scenario: run the main script with the project token set in the env
4
-
5
- Given the "SEMAPHORE_PROJECT_TOKEN" env variable is set
6
- When I run `git-semaphore --check-project` in a git working dir
7
- Then the exit status should be 0
8
- And the stderr should contain exactly:
9
- """
10
- """
11
-
12
- Scenario: run the main script with the project token set in git config
13
-
14
- Given "semaphore.projecttoken" git config is set for git repo "blegga"
15
- When I run `git-semaphore --check-project` in "blegga" directory
16
- Then the exit status should be 0
17
- And the stderr should contain exactly:
18
- """
19
- """
20
-
21
- Scenario: run the main script with the project token not set in the env
22
-
23
- Given the "SEMAPHORE_PROJECT_TOKEN" env variable is not set
24
- And "semaphore.projecttoken" git config is not set for git repo "blegga"
25
- When I run `git-semaphore --check-project` in "blegga" directory
26
- Then the exit status should be 255
27
- And the stderr should contain exactly:
28
- """
29
- Please set - and export - the SEMAPHORE_PROJECT_TOKEN env variable
30
- Alternatively, set semaphore.projecttoken in your local git config
31
-
32
- """
@@ -1,121 +0,0 @@
1
- #
2
- # Steps that interact with ENV (via `aruba.environment`)
3
- #
4
-
5
- Before do
6
- set_environment_variable('SEMAPHORE_AUTH_TOKEN', nil)
7
- set_environment_variable('SEMAPHORE_PROJECT_TOKEN', nil)
8
- end
9
-
10
- After do
11
- restore_env
12
- end
13
-
14
- Given /^the "([A-Z_]+)" env variable is set(?: to "([^"]*)")?$/ do |key, value|
15
- set_environment_variable(key, value || 'blegga')
16
- end
17
-
18
- Given /^the "([A-Z_]+)" env variable is not set$/ do |key|
19
- set_environment_variable(key, nil)
20
- end
21
-
22
- Given /^a runtime environment with config:$/ do |config_table|
23
- config_table.rows_hash.each do |key, value|
24
- set_environment_variable(key, value)
25
- end
26
- end
27
-
28
- #
29
- # Steps that interact with git
30
- #
31
-
32
- Given /^a git repo in directory "([^"]*)"$/ do |project_name|
33
- @pwd = File.join(expand_path('.'), project_name)
34
- @repo = Grit::Repo.init(@pwd)
35
- end
36
-
37
- Given /^a git repo in directory "([^"]*)" with config:$/ do |project_name, config_table|
38
- step %(a git repo in directory "#{project_name}")
39
- config_table.rows_hash.each do |key, value|
40
- @repo.config[key] = value
41
- end
42
- end
43
-
44
- Given /^"([^"]*)" git config is (not set|set) for git repo "([^"]*)"$/ do |key, is_or_isnt_set, project_name|
45
- step %(a git repo in directory "#{project_name}")
46
- @repo.config[key] = 'blegga' unless is_or_isnt_set == "not set"
47
- end
48
-
49
- #
50
- # Steps that interact with Dir.pwd
51
- #
52
-
53
- When /^I run `([^`]*)` in a git working dir$/ do |cmd|
54
- working_dir = "foo/bar/qux_blegga"
55
- step %(a git repo in directory "#{working_dir}")
56
- step %(I run `#{cmd}` in "#{working_dir}" directory)
57
- end
58
-
59
- When /^I run `([^`]*)` in "([^"]*)" directory$/ do |cmd, working_dir|
60
- step %(a directory named "#{working_dir}")
61
- cd working_dir
62
- step %(I run `#{cmd}`)
63
- @dirs = ['tmp', 'aruba'] # reset Aruba::API.current_dir
64
- end
65
-
66
- #
67
- # Methodane/Aruba "extensions"/"customizations"
68
- #
69
-
70
- When /^I get the version of "([^"]*)"$/ do |app_name|
71
- @app_name = app_name
72
- step %(I run `#{app_name} --version`)
73
- end
74
-
75
- Then /^the output should include the version$/ do
76
- step %(the output should match /v\\d+\\.\\d+\\.\\d+/)
77
- end
78
-
79
- Then /^the output should include the app name$/ do
80
- step %(the output should match /#{Regexp.escape(@app_name)}/)
81
- end
82
-
83
- Then /^the output should include a copyright notice$/ do
84
- step %(the output should match /Copyright \\(c\\) [\\d]{4}-[\\d]{4} [[\\w]+]+/)
85
- end
86
-
87
- #
88
- # Steps that check config expectations
89
- #
90
-
91
- # Then /^the application uses "([^"]+)" as the git auth token$/ do |auth_token|
92
- # (@app || Git::Semaphore::App.new(@repo, aruba.environment)).git_auth_token.should eq auth_token
93
- # end
94
-
95
- # Then /^the application uses "([^"]+)" as the git project token$/ do |project_token|
96
- # (@app || Git::Semaphore::App.new(@repo, aruba.environment)).git_project_token.should eq project_token
97
- # end
98
-
99
- # Then /^the application uses "([^"]+)" as the env auth token$/ do |auth_token|
100
- # (@app || Git::Semaphore::App.new(@repo, aruba.environment)).env_auth_token.should eq auth_token
101
- # end
102
-
103
- # Then /^the application uses "([^"]+)" as the env project token$/ do |project_token|
104
- # (@app || Git::Semaphore::App.new(@repo, aruba.environment)).env_project_token.should eq project_token
105
- # end
106
-
107
- Then /^the application doesn't have an auth token$/ do
108
- (@app || Git::Semaphore::App.new(@pwd, aruba.environment)).auth_token.should be_empty
109
- end
110
-
111
- Then /^the application doesn't have a project token$/ do
112
- (@app || Git::Semaphore::App.new(@pwd, aruba.environment)).project_token.should be_empty
113
- end
114
-
115
- Then /^the application uses "([^"]+)" as the auth token$/ do |auth_token|
116
- (@app || Git::Semaphore::App.new(@pwd, aruba.environment)).auth_token.should eq auth_token
117
- end
118
-
119
- Then /^the application uses "([^"]+)" as the project token$/ do |project_token|
120
- (@app || Git::Semaphore::App.new(@pwd, aruba.environment)).project_token.should eq project_token
121
- end
@@ -1,5 +0,0 @@
1
- Then /^the following trollop options should be documented:$/ do |options|
2
- options.raw.each do |option|
3
- step %(the output should match /\\s*#{Regexp.escape(option.first)}\\s+\\w+\\w+\\w+/)
4
- end
5
- end
@@ -1,25 +0,0 @@
1
- Given /^I am an authenticated user on semaphoreci\.com$/ do
2
- @auth_token = SEMAPHORE_TEST_TOKEN
3
- @project = '649e584dc507ca4b73e1374d3125ef0b567a949c'
4
- @branch = '89'
5
- end
6
-
7
- Given /^get the list of all my projects via their API$/ do
8
- @response = Git::Semaphore::Api.get_response Git::Semaphore::Api.projects_uri(@auth_token)
9
- end
10
-
11
- Given /^get the list of all the branches for one of my projects via their API$/ do
12
- @response = Git::Semaphore::Api.get_response Git::Semaphore::Api.branches_uri(@project, @auth_token)
13
- end
14
-
15
- Given /^get the build status of one of the branches for one of my projects via their API$/ do
16
- @response = Git::Semaphore::Api.get_response Git::Semaphore::Api.status_uri(@project, @branch, @auth_token)
17
- end
18
-
19
- Given /^request to rebuild the last revision of one of the branches for one of my projects via their API$/ do
20
- @response = Git::Semaphore::Api.get_response Git::Semaphore::Api.last_revision_uri(@project, @branch, @auth_token), :post
21
- end
22
-
23
- def last_json
24
- @response.body
25
- end
@@ -1,7 +0,0 @@
1
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
2
-
3
- require 'git-semaphore'
4
-
5
- require 'aruba/cucumber'
6
- require 'methadone/cucumber'
7
- require "json_spec/cucumber"
@@ -1,2 +0,0 @@
1
- # https://semaphoreci.com/docs/
2
- SEMAPHORE_TEST_TOKEN='Yds3w6o26FLfJTnVK2y9'
@@ -1,14 +0,0 @@
1
- require 'vcr'
2
-
3
- VCR.configure do |c|
4
- c.hook_into :webmock # or :fakeweb
5
- c.cassette_library_dir = 'features/cassettes'
6
- c.debug_logger = File.open('vcr_debug.log', 'w')
7
- end
8
-
9
- VCR.cucumber_tags do |t|
10
- t.tag '@vcr_api_projects'
11
- t.tag '@vcr_api_branches'
12
- t.tag '@vcr_api_status'
13
- t.tag '@vcr_api_rebuild_last_revision'
14
- end
@@ -1,22 +0,0 @@
1
- Feature: It's Where You Can Find Me
2
-
3
- Scenario: print out the working directory
4
-
5
- Given a git repo in directory "foo/bar/qux_blegga"
6
- When I run `git-semaphore --working-dir` in "foo/bar/qux_blegga" directory
7
- Then the exit status should be 0
8
- And the output should contain "foo/bar"
9
-
10
- Scenario: print out the project name
11
-
12
- Given a git repo in directory "foo/bar/qux_blegga"
13
- When I run `git-semaphore --project-name` in "foo/bar/qux_blegga" directory
14
- Then the exit status should be 0
15
- And the output should contain "qux_blegga"
16
-
17
- Scenario: print out the branch name
18
-
19
- Given a git repo in directory "foo/bar/qux_blegga"
20
- When I run `git-semaphore --branch-name` in "foo/bar/qux_blegga" directory
21
- Then the exit status should be 0
22
- And the output should contain "master"