divergence 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +19 -0
- data/Gemfile +4 -0
- data/LICENSE +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +111 -0
- data/Rakefile +18 -0
- data/bin/divergence +45 -0
- data/divergence.gemspec +26 -0
- data/generators/files/callbacks.rb +9 -0
- data/generators/files/config.rb +14 -0
- data/generators/files/config.ru +4 -0
- data/lib/divergence/config.rb +58 -0
- data/lib/divergence/git_manager.rb +150 -0
- data/lib/divergence/helpers.rb +34 -0
- data/lib/divergence/request_parser.rb +52 -0
- data/lib/divergence/respond.rb +71 -0
- data/lib/divergence/version.rb +3 -0
- data/lib/divergence/webhook.rb +31 -0
- data/lib/divergence.rb +54 -0
- data/lib/rack_ssl_hack.rb +14 -0
- data/log/.gitkeep +0 -0
- data/public/404.html +46 -0
- data/test/app_root/test.txt +1 -0
- data/test/config.rb +10 -0
- data/test/config_test.rb +18 -0
- data/test/git_test.rb +59 -0
- data/test/request_test.rb +23 -0
- data/test/test_helper.rb +72 -0
- data/test/webhook_test.rb +19 -0
- metadata +180 -0
data/lib/divergence.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require "rack/proxy"
|
2
|
+
require "git"
|
3
|
+
require "json"
|
4
|
+
require "logger"
|
5
|
+
|
6
|
+
require "rack_ssl_hack"
|
7
|
+
require "divergence/version"
|
8
|
+
require "divergence/config"
|
9
|
+
require "divergence/git_manager"
|
10
|
+
require "divergence/helpers"
|
11
|
+
require "divergence/request_parser"
|
12
|
+
require "divergence/respond"
|
13
|
+
require "divergence/webhook"
|
14
|
+
|
15
|
+
module Divergence
|
16
|
+
class Application < Rack::Proxy
|
17
|
+
@@config = Configuration.new
|
18
|
+
@@log = Logger.new('./log/app.log')
|
19
|
+
|
20
|
+
def self.configure(&block)
|
21
|
+
block.call(@@config)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.log
|
25
|
+
@@log
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.config
|
29
|
+
@@config
|
30
|
+
end
|
31
|
+
|
32
|
+
def initialize
|
33
|
+
file_checks
|
34
|
+
|
35
|
+
@g = GitManager.new(config)
|
36
|
+
end
|
37
|
+
|
38
|
+
def config
|
39
|
+
@@config
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def file_checks
|
45
|
+
unless File.exists?(config.app_path)
|
46
|
+
raise "Configured path not found: #{config.app_path}"
|
47
|
+
end
|
48
|
+
|
49
|
+
unless File.exists?(config.git_path)
|
50
|
+
raise "Configured git path not found: #{config.git_path}"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Monkey patching sucks, but Rack seems to think we have
|
2
|
+
# HTTPS even with SSL termination enabled. This force
|
3
|
+
# disables it until HTTPS is built-in to divergence.
|
4
|
+
module Rack
|
5
|
+
class HttpStreamingResponse
|
6
|
+
def use_ssl
|
7
|
+
false
|
8
|
+
end
|
9
|
+
|
10
|
+
def use_ssl=(v)
|
11
|
+
self.instance_variable_set(:@use_ssl, false)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/log/.gitkeep
ADDED
File without changes
|
data/public/404.html
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Branch not found - Divergence</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body {
|
7
|
+
margin: 0;
|
8
|
+
padding: 0;
|
9
|
+
background: #0f1419;
|
10
|
+
font: 26px/36px 'Helvetica Neue', Helvetica, Arial, Sans-Serif;
|
11
|
+
-webkit-font-smoothing: antialiased;
|
12
|
+
color: #9099a3;
|
13
|
+
}
|
14
|
+
|
15
|
+
#MessageContainer {
|
16
|
+
position: fixed;
|
17
|
+
top: 50%;
|
18
|
+
width: 100%;
|
19
|
+
display: table-cell;
|
20
|
+
vertical-align: middle;
|
21
|
+
}
|
22
|
+
|
23
|
+
#Message {
|
24
|
+
margin: auto;
|
25
|
+
width: 620px;
|
26
|
+
text-align: center;
|
27
|
+
color: #9099a3;
|
28
|
+
}
|
29
|
+
|
30
|
+
#Message img {
|
31
|
+
display: block;
|
32
|
+
margin: -180px 0 80px 50px;
|
33
|
+
}
|
34
|
+
|
35
|
+
#Message span {
|
36
|
+
color: #ECEEF1;
|
37
|
+
font-weight: bold;
|
38
|
+
}
|
39
|
+
</style>
|
40
|
+
</head>
|
41
|
+
<body>
|
42
|
+
<div id="MessageContainer">
|
43
|
+
<div id="Message"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQwAAAIwCAYAAADDBSZaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoxREI3ODU5NTYwMjA2ODExODA4M0MyMkQxRjFENzQzNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4QkNFQzhGRTA4RjkxMUUyODg0QkJCMzUzNUNDNjRBNCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4QkNFQzhGRDA4RjkxMUUyODg0QkJCMzUzNUNDNjRBNCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OUY0OUJCMUQ2NzIwNjgxMTgwODNDMjJEMUYxRDc0MzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MURCNzg1OTU2MDIwNjgxMTgwODNDMjJEMUYxRDc0MzYiLz4gPC9yZGY6RGVzY3Jp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" width="500"><span>Looks like you've lost your way.</span> You have diverged upon a branch that does not exist.</div>
|
44
|
+
</div>
|
45
|
+
</body>
|
46
|
+
</html>
|
@@ -0,0 +1 @@
|
|
1
|
+
master
|
data/test/config.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
Divergence::Application.configure do |config|
|
2
|
+
config.git_path = "test/git_root"
|
3
|
+
config.app_path = "test/app_root"
|
4
|
+
config.forward_host = 'localhost'
|
5
|
+
config.forward_port = 80
|
6
|
+
|
7
|
+
config.callbacks :after_swap do
|
8
|
+
# Run anything after the swap finishes
|
9
|
+
end
|
10
|
+
end
|
data/test/config_test.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ConfigureTest < Test::Unit::TestCase
|
4
|
+
def test_config
|
5
|
+
git_path = File.expand_path('../git_root', __FILE__)
|
6
|
+
app_path = File.expand_path('../app_root', __FILE__)
|
7
|
+
|
8
|
+
Divergence::Application.configure do |config|
|
9
|
+
config.git_path = git_path
|
10
|
+
config.app_path = app_path
|
11
|
+
config.forward_host = 'localhost'
|
12
|
+
config.forward_port = 80
|
13
|
+
end
|
14
|
+
|
15
|
+
assert app.config.app_path, app_path
|
16
|
+
assert app.config.git_path, git_path
|
17
|
+
end
|
18
|
+
end
|
data/test/git_test.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class GitTest < Test::Unit::TestCase
|
4
|
+
def test_ignore
|
5
|
+
force_branch :master
|
6
|
+
mock_get 'master.example.com'
|
7
|
+
|
8
|
+
git = Git.open('test/git_root')
|
9
|
+
assert_equal "master", git.current_branch
|
10
|
+
|
11
|
+
# and again...
|
12
|
+
mock_get 'master.example.com'
|
13
|
+
assert_equal 'master', git.current_branch
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_switch_branch
|
17
|
+
force_branch :master
|
18
|
+
mock_get 'branch1.example.com'
|
19
|
+
|
20
|
+
git = Git.open('test/git_root')
|
21
|
+
assert_equal 'branch1', git.current_branch
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_branch_discover
|
25
|
+
force_branch :master
|
26
|
+
mock_get 'branch-1.example.com'
|
27
|
+
|
28
|
+
git = Git.open('test/git_root')
|
29
|
+
assert_equal 'branch_1', git.current_branch
|
30
|
+
|
31
|
+
mock_get 'branch-with-complex-name-1.example.com'
|
32
|
+
assert_equal 'branch_with_complex_name-1', git.current_branch
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_dirty_switch
|
36
|
+
force_branch :master
|
37
|
+
|
38
|
+
File.open 'test/git_root/test.txt', 'a' do |f|
|
39
|
+
f.write 'modifying this'
|
40
|
+
end
|
41
|
+
|
42
|
+
mock_get 'branch1.example.com'
|
43
|
+
|
44
|
+
git = Git.open('test/git_root')
|
45
|
+
assert_equal 'branch1', git.current_branch
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_swap
|
49
|
+
force_branch :master
|
50
|
+
mock_get "branch1.example.com"
|
51
|
+
|
52
|
+
assert File.exists? 'test/app_root/test.txt'
|
53
|
+
file = File.open 'test/app_root/test.txt'
|
54
|
+
contents = file.read.strip
|
55
|
+
file.close
|
56
|
+
|
57
|
+
assert_equal "branch1", contents
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RequestTest < Test::Unit::TestCase
|
4
|
+
def test_has_subdomain
|
5
|
+
set_mock_request "master.example.com"
|
6
|
+
assert app.req.has_subdomain?
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_no_subdomain
|
10
|
+
set_mock_request "example.com"
|
11
|
+
assert !app.req.has_subdomain?
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_branch
|
15
|
+
set_mock_request "master.example.com"
|
16
|
+
assert_equal app.req.branch, "master"
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_missing_branch
|
20
|
+
status, _, _ = mock_get "idontexist.example.com"
|
21
|
+
assert_equal status, 404
|
22
|
+
end
|
23
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "rack"
|
3
|
+
require "rack/test"
|
4
|
+
|
5
|
+
require "./lib/divergence"
|
6
|
+
|
7
|
+
Test::Unit::TestCase.class_eval do
|
8
|
+
include Rack::Test::Methods
|
9
|
+
end
|
10
|
+
|
11
|
+
class Test::Unit::TestCase
|
12
|
+
def app
|
13
|
+
unless @d
|
14
|
+
@d = Divergence::Application.new
|
15
|
+
end
|
16
|
+
|
17
|
+
@d
|
18
|
+
end
|
19
|
+
|
20
|
+
def force_branch(branch)
|
21
|
+
git = Git.open('test/git_root')
|
22
|
+
git.reset_hard('HEAD')
|
23
|
+
git.checkout branch.to_s, :force => true
|
24
|
+
end
|
25
|
+
|
26
|
+
# We have to rewrite the host constant in rack-test
|
27
|
+
# in order to set a host with a subdomain. Gross.
|
28
|
+
def set_request_addr(addr)
|
29
|
+
old = $VERBOSE
|
30
|
+
$VERBOSE = nil
|
31
|
+
Rack::Test::DEFAULT_HOST.replace addr
|
32
|
+
$VERBOSE = old
|
33
|
+
end
|
34
|
+
|
35
|
+
def set_mock_request(addr, opts={})
|
36
|
+
req = Rack::MockRequest.env_for "http://#{addr}", opts
|
37
|
+
git = Divergence::GitManager.new(Divergence::Application.config)
|
38
|
+
app.req = Divergence::RequestParser.new(req, git)
|
39
|
+
end
|
40
|
+
|
41
|
+
def mock_get(addr, params={})
|
42
|
+
env = Rack::MockRequest.env_for "http://#{addr}",
|
43
|
+
:params => params
|
44
|
+
|
45
|
+
app.call env
|
46
|
+
end
|
47
|
+
|
48
|
+
def mock_post(addr, params={})
|
49
|
+
env = Rack::MockRequest.env_for "http://#{addr}",
|
50
|
+
:method => :post,
|
51
|
+
:params => params
|
52
|
+
|
53
|
+
app.call env
|
54
|
+
end
|
55
|
+
|
56
|
+
def mock_webhook(branch)
|
57
|
+
mock_post "divergence.example.com/update",
|
58
|
+
:payload => JSON.generate({
|
59
|
+
:ref => "refs/heads/#{branch.to_s}"
|
60
|
+
})
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
module Divergence
|
65
|
+
class Application < Rack::Proxy
|
66
|
+
attr_accessor :req
|
67
|
+
|
68
|
+
def perform_request(env)
|
69
|
+
[200, {"Content-Type" => "text/html"}, ["Ohai"]]
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class WebhookTest < Test::Unit::TestCase
|
4
|
+
def test_detect
|
5
|
+
force_branch :master
|
6
|
+
status, _, body = mock_webhook :master
|
7
|
+
|
8
|
+
assert_equal 200, status
|
9
|
+
assert_equal ["OK"], body
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_ignore
|
13
|
+
force_branch :master
|
14
|
+
status, _, body = mock_webhook :branch1
|
15
|
+
|
16
|
+
assert_equal 200, status
|
17
|
+
assert_equal ["IGNORE"], body
|
18
|
+
end
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,180 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: divergence
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Ryan LeFevre
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-10-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rack
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rack-proxy
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: thor
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: git
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: json
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rack-test
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
description: Map subdomains to git branches for switching live codebases on the fly.
|
111
|
+
It's a Rack application that acts as a HTTP proxy between you and your web application
|
112
|
+
for rapid testing.
|
113
|
+
email:
|
114
|
+
- ryan@layervault.com
|
115
|
+
executables:
|
116
|
+
- divergence
|
117
|
+
extensions: []
|
118
|
+
extra_rdoc_files: []
|
119
|
+
files:
|
120
|
+
- .gitignore
|
121
|
+
- Gemfile
|
122
|
+
- LICENSE
|
123
|
+
- LICENSE.txt
|
124
|
+
- README.md
|
125
|
+
- Rakefile
|
126
|
+
- bin/divergence
|
127
|
+
- divergence.gemspec
|
128
|
+
- generators/files/callbacks.rb
|
129
|
+
- generators/files/config.rb
|
130
|
+
- generators/files/config.ru
|
131
|
+
- lib/divergence.rb
|
132
|
+
- lib/divergence/config.rb
|
133
|
+
- lib/divergence/git_manager.rb
|
134
|
+
- lib/divergence/helpers.rb
|
135
|
+
- lib/divergence/request_parser.rb
|
136
|
+
- lib/divergence/respond.rb
|
137
|
+
- lib/divergence/version.rb
|
138
|
+
- lib/divergence/webhook.rb
|
139
|
+
- lib/rack_ssl_hack.rb
|
140
|
+
- log/.gitkeep
|
141
|
+
- public/404.html
|
142
|
+
- test/app_root/test.txt
|
143
|
+
- test/config.rb
|
144
|
+
- test/config_test.rb
|
145
|
+
- test/git_test.rb
|
146
|
+
- test/request_test.rb
|
147
|
+
- test/test_helper.rb
|
148
|
+
- test/webhook_test.rb
|
149
|
+
homepage: http://cosmos.layervault.com/divergence.html
|
150
|
+
licenses: []
|
151
|
+
post_install_message:
|
152
|
+
rdoc_options: []
|
153
|
+
require_paths:
|
154
|
+
- lib
|
155
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
156
|
+
none: false
|
157
|
+
requirements:
|
158
|
+
- - ! '>='
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
requirements: []
|
168
|
+
rubyforge_project:
|
169
|
+
rubygems_version: 1.8.23
|
170
|
+
signing_key:
|
171
|
+
specification_version: 3
|
172
|
+
summary: Map virtual host subdomains to git branches for testing
|
173
|
+
test_files:
|
174
|
+
- test/app_root/test.txt
|
175
|
+
- test/config.rb
|
176
|
+
- test/config_test.rb
|
177
|
+
- test/git_test.rb
|
178
|
+
- test/request_test.rb
|
179
|
+
- test/test_helper.rb
|
180
|
+
- test/webhook_test.rb
|