polytrix 0.0.1

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 (171) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.groc.json +7 -0
  4. data/.rspec +11 -0
  5. data/.rspec_parallel +10 -0
  6. data/Gemfile +23 -0
  7. data/README.md +48 -0
  8. data/Rakefile +143 -0
  9. data/Vagrantfile +41 -0
  10. data/features/0_identity_spec.rb +40 -0
  11. data/features/1_cloud_files_spec.rb +48 -0
  12. data/features/2_servers_spec.rb +19 -0
  13. data/features/features_helper.rb +46 -0
  14. data/features/helpers/cloudfiles_helper.rb +31 -0
  15. data/features/helpers/pacto_helper.rb +33 -0
  16. data/features/helpers/teardown_helper.rb +49 -0
  17. data/features/pacto/extensions/loaders/api_blueprint_loader.rb +63 -0
  18. data/features/pacto/extensions/loaders/simple_loader.rb +55 -0
  19. data/features/pacto/extensions/loaders/yaml_or_json_loader.rb +17 -0
  20. data/features/pacto/extensions/matchers.rb +38 -0
  21. data/features/phase2/feature_coverage_report.rb +109 -0
  22. data/features/phase2/run_all_features.rb +14 -0
  23. data/features/static_site/fixtures/index.html +6 -0
  24. data/lib/polytrix/challenge.rb +27 -0
  25. data/lib/polytrix/challenge_builder.rb +16 -0
  26. data/lib/polytrix/challenge_runner.rb +87 -0
  27. data/lib/polytrix/configuration.rb +31 -0
  28. data/lib/polytrix/core/file_finder.rb +43 -0
  29. data/lib/polytrix/core/implementor.rb +17 -0
  30. data/lib/polytrix/core/result_tracker.rb +25 -0
  31. data/lib/polytrix/documentation_generator.rb +18 -0
  32. data/lib/polytrix/manifest.rb +46 -0
  33. data/lib/polytrix/result.rb +9 -0
  34. data/lib/polytrix/rspec/documentation_formatter.rb +41 -0
  35. data/lib/polytrix/rspec.rb +75 -0
  36. data/lib/polytrix/runners/linux_challenge_runner.rb +22 -0
  37. data/lib/polytrix/runners/middleware/change_directory.rb +20 -0
  38. data/lib/polytrix/runners/middleware/feature_executor.rb +23 -0
  39. data/lib/polytrix/runners/middleware/pacto.rb +59 -0
  40. data/lib/polytrix/runners/middleware/setup_env_vars.rb +38 -0
  41. data/lib/polytrix/runners/windows_challenge_runner.rb +25 -0
  42. data/lib/polytrix/version.rb +3 -0
  43. data/lib/polytrix.rb +56 -0
  44. data/packer/.gitignore +3 -0
  45. data/packer/Berksfile +15 -0
  46. data/packer/Gemfile +5 -0
  47. data/packer/Vagrantfile +128 -0
  48. data/packer/cookbooks/drg/metadata.rb +27 -0
  49. data/packer/cookbooks/drg/recipes/admins.rb +22 -0
  50. data/packer/cookbooks/drg/recipes/default.rb +9 -0
  51. data/packer/cookbooks/drg/recipes/dotnet.rb +4 -0
  52. data/packer/cookbooks/drg/recipes/golang.rb +4 -0
  53. data/packer/cookbooks/drg/recipes/java.rb +5 -0
  54. data/packer/cookbooks/drg/recipes/php.rb +10 -0
  55. data/packer/cookbooks/drg/recipes/ruby.rb +29 -0
  56. data/packer/cookbooks/drg/recipes/system.rb +13 -0
  57. data/packer/create_box.sh +10 -0
  58. data/packer/http/preseed.cfg +87 -0
  59. data/packer/packer.json +91 -0
  60. data/packer/scripts/root_setup.sh +37 -0
  61. data/packer/scripts/setup.sh +32 -0
  62. data/pacto/config/pacto_server.rb +40 -0
  63. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/extensions.json +64 -0
  64. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/flavors/id.json +100 -0
  65. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/images/id.json +176 -0
  66. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/servers/id.json +189 -0
  67. data/pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/servers.json +63 -0
  68. data/pacto/contracts/dns.api.rackspacecloud.com/v1.0/_tenant_id/domains.json +62 -0
  69. data/pacto/contracts/identity.api.rackspacecloud.com/v2.0/tokens.json +192 -0
  70. data/pacto/contracts/monitoring.api.rackspacecloud.com/v1.0/_tenant_id/account.json +39 -0
  71. data/pacto/contracts/ord.autoscale.api.rackspacecloud.com/v1.0/_tenant_id/groups.json +38 -0
  72. data/pacto/contracts/ord.blockstorage.api.rackspacecloud.com/v1/_tenant_id/volumes.json +30 -0
  73. data/pacto/contracts/ord.databases.api.rackspacecloud.com/v1.0/_tenant_id/instances.json +30 -0
  74. data/pacto/contracts/ord.loadbalancers.api.rackspacecloud.com/v1.0/_tenant_id/loadbalancers.json +114 -0
  75. data/pacto/contracts/ord.queues.api.rackspacecloud.com/v1/_tenant_id/queues.json +13 -0
  76. data/pacto/contracts/ord.servers.api.rackspacecloud.com/v2/_tenant_id/os-networksv2.json +46 -0
  77. data/pacto/contracts/ord.servers.api.rackspacecloud.com/v2/_tenant_id/servers/detail.json +230 -0
  78. data/pacto/contracts/storage101.dfw1.clouddrive.com/v1/mosso_account/container/object.json +15 -0
  79. data/pacto/contracts/storage101.dfw1.clouddrive.com/v1/mosso_account.json +43 -0
  80. data/pacto/contracts/storage101.ord1.clouddrive.com/v1/_mosso_id.json +44 -0
  81. data/pacto/pacto_server.rb +100 -0
  82. data/pacto/rackspace_uri_map.yaml +229 -0
  83. data/polytrix.gemspec +27 -0
  84. data/scripts/bootstrap +10 -0
  85. data/scripts/cibuild +4 -0
  86. data/sdks/fog/.gitignore +1 -0
  87. data/sdks/fog/Gemfile +5 -0
  88. data/sdks/fog/challenges/all_connections.rb +45 -0
  89. data/sdks/fog/challenges/authenticate_token.rb +15 -0
  90. data/sdks/fog/challenges/cdn_enable_container.rb +20 -0
  91. data/sdks/fog/challenges/create_a_container.rb +17 -0
  92. data/sdks/fog/challenges/create_server.rb +36 -0
  93. data/sdks/fog/challenges/get_object_metadata.rb +13 -0
  94. data/sdks/fog/challenges/list_containers.rb +10 -0
  95. data/sdks/fog/challenges/provision_scalable_webapp.rb +30 -0
  96. data/sdks/fog/challenges/upload_folder.rb +25 -0
  97. data/sdks/fog/scripts/bootstrap +4 -0
  98. data/sdks/fog/scripts/bootstrap.ps1 +1 -0
  99. data/sdks/fog/scripts/wrapper +2 -0
  100. data/sdks/fog/scripts/wrapper.ps1 +1 -0
  101. data/sdks/gophercloud/.gitignore +2 -0
  102. data/sdks/gophercloud/challenges/authenticate_token.go +23 -0
  103. data/sdks/gophercloud/scripts/bootstrap +6 -0
  104. data/sdks/gophercloud/scripts/wrapper +10 -0
  105. data/sdks/jclouds/.gitignore +1 -0
  106. data/sdks/jclouds/challenges/AuthenticateToken.java +115 -0
  107. data/sdks/jclouds/pom.xml +34 -0
  108. data/sdks/jclouds/scripts/bootstrap +3 -0
  109. data/sdks/jclouds/scripts/wrapper +7 -0
  110. data/sdks/openstack.net/.gitignore +4 -0
  111. data/sdks/openstack.net/.nuget/Microsoft.Build.dll +0 -0
  112. data/sdks/openstack.net/.nuget/NuGet.Config +6 -0
  113. data/sdks/openstack.net/.nuget/NuGet.exe +0 -0
  114. data/sdks/openstack.net/.nuget/NuGet.targets +136 -0
  115. data/sdks/openstack.net/Challenge.cs +10 -0
  116. data/sdks/openstack.net/RunChallenge.cs +19 -0
  117. data/sdks/openstack.net/challenges/AuthenticateToken.cs +24 -0
  118. data/sdks/openstack.net/challenges/Weird.cs +133 -0
  119. data/sdks/openstack.net/openstack.net.csproj +58 -0
  120. data/sdks/openstack.net/openstack.net.sln +27 -0
  121. data/sdks/openstack.net/openstack.net.userprefs +8 -0
  122. data/sdks/openstack.net/packages.config +6 -0
  123. data/sdks/openstack.net/scripts/bootstrap +2 -0
  124. data/sdks/openstack.net/scripts/bootstrap.ps1 +2 -0
  125. data/sdks/openstack.net/scripts/wrapper +7 -0
  126. data/sdks/openstack.net/scripts/wrapper.ps1 +1 -0
  127. data/sdks/php-opencloud/.gitignore +4 -0
  128. data/sdks/php-opencloud/challenges/all_connections.php +64 -0
  129. data/sdks/php-opencloud/challenges/authenticate_token.php +14 -0
  130. data/sdks/php-opencloud/challenges/create_server.php +39 -0
  131. data/sdks/php-opencloud/challenges/get_object_metadata.php +19 -0
  132. data/sdks/php-opencloud/composer.json +5 -0
  133. data/sdks/php-opencloud/scripts/bootstrap +4 -0
  134. data/sdks/php-opencloud/scripts/bootstrap.ps1 +2 -0
  135. data/sdks/php-opencloud/scripts/wrapper +2 -0
  136. data/sdks/php-opencloud/scripts/wrapper.ps1 +1 -0
  137. data/sdks/pkgcloud/.gitignore +1 -0
  138. data/sdks/pkgcloud/challenges/authenticate_token.js +17 -0
  139. data/sdks/pkgcloud/challenges/get_object_metadata.js +18 -0
  140. data/sdks/pkgcloud/scripts/bootstrap +2 -0
  141. data/sdks/pkgcloud/scripts/bootstrap.ps1 +1 -0
  142. data/sdks/pkgcloud/scripts/wrapper +2 -0
  143. data/sdks/pkgcloud/scripts/wrapper.ps1 +1 -0
  144. data/sdks/pyrax/.gitignore +2 -0
  145. data/sdks/pyrax/challenges/all_connections.py +61 -0
  146. data/sdks/pyrax/challenges/authenticate_token.py +17 -0
  147. data/sdks/pyrax/challenges/cdn_enable_container.py +22 -0
  148. data/sdks/pyrax/challenges/create_a_container.py +21 -0
  149. data/sdks/pyrax/challenges/create_server.py +35 -0
  150. data/sdks/pyrax/challenges/get_object_metadata.py +17 -0
  151. data/sdks/pyrax/challenges/upload_folder.py +32 -0
  152. data/sdks/pyrax/requirements.txt +21 -0
  153. data/sdks/pyrax/scripts/bootstrap +9 -0
  154. data/sdks/pyrax/scripts/bootstrap.ps1 +7 -0
  155. data/sdks/pyrax/scripts/wrapper +3 -0
  156. data/sdks/pyrax/scripts/wrapper.ps1 +2 -0
  157. data/spec/fixtures/factorial.py +18 -0
  158. data/spec/fixtures/polytrix.yml +16 -0
  159. data/spec/fixtures/src-doc/quine.md.erb +20 -0
  160. data/spec/polytrix/challenge_builder_spec.rb +16 -0
  161. data/spec/polytrix/challenge_runner_spec.rb +14 -0
  162. data/spec/polytrix/challenge_spec.rb +20 -0
  163. data/spec/polytrix/configuration_spec.rb +10 -0
  164. data/spec/polytrix/documentation_generator_spec.rb +36 -0
  165. data/spec/polytrix/file_finder_spec.rb +24 -0
  166. data/spec/polytrix/manifest_spec.rb +26 -0
  167. data/spec/polytrix/middleware/feature_executor_spec.rb +48 -0
  168. data/spec/polytrix_spec.rb +13 -0
  169. data/spec/rspec_spec.rb +17 -0
  170. data/spec/spec_helper.rb +7 -0
  171. metadata +325 -0
@@ -0,0 +1,24 @@
1
+ module Polytrix
2
+ module Core
3
+ describe FileFinder do
4
+ subject(:finder) do
5
+ Object.new.extend(Polytrix::Core::FileFinder)
6
+ end
7
+
8
+ it 'finds files within the search path' do
9
+ search_path = 'spec/fixtures/src-doc'
10
+ file = finder.find_file search_path, 'quine'
11
+ expect(file.relative_path_from path(search_path)).to eq(path('quine.md.erb'))
12
+ end
13
+
14
+ it 'raises FileNotFound except if a file is not found' do
15
+ expect { finder.find_file 'spec/fixtures/src-doc', 'quinez' }.to raise_error FileFinder::FileNotFound
16
+ end
17
+
18
+ private
19
+ def path(p)
20
+ Pathname.new p
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,26 @@
1
+ module Polytrix
2
+ module Core
3
+ describe Manifest do
4
+ describe '#from_yaml' do
5
+ subject(:manifest) { described_class.from_yaml 'spec/fixtures/polytrix.yml' }
6
+
7
+ it 'initializes a manifest' do
8
+ expect(manifest).to be_an_instance_of Polytrix::Manifest
9
+ end
10
+
11
+ it 'processes ERB' do
12
+ expect(manifest.global_env['LOCALE']).to eq(ENV['LANG'])
13
+ end
14
+
15
+ it 'parses global_env' do
16
+ expect(manifest.global_env).to be_an_instance_of Polytrix::Manifest::Environment
17
+ end
18
+
19
+ it 'parses suites' do
20
+ expect(manifest.suites).to be_an_instance_of Polytrix::Manifest::Suites
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,48 @@
1
+ module Polytrix
2
+ module Runners
3
+ module Middleware
4
+ describe FeatureExecutor do
5
+ let(:app) { double('Middleware Chain') }
6
+ let(:challenge_runner) { double('ChallengeRunner') }
7
+ subject(:middleware) { described_class.new app }
8
+
9
+ describe '#call' do
10
+ let(:env) do
11
+ {
12
+ basedir: Pathname.new('spec/fixtures'),
13
+ env_file: 'tmp/vars.sh',
14
+ source_file: Pathname.new('spec/fixtures/test.js'),
15
+ command: 'some command to execute',
16
+ challenge_runner: challenge_runner
17
+ }
18
+ end
19
+
20
+ before do
21
+ allow(challenge_runner).to receive(:challenge_command).with(env[:env_file], Pathname.new('test.js')).and_return('some command to execute')
22
+ allow(challenge_runner).to receive(:run_command).with('some command to execute').and_return Polytrix::Result.new(process: 'a', source: 'b', data: 'c')
23
+ allow(app).to receive(:call).with(env)
24
+ end
25
+
26
+ # Most of this belongs in the ChallengeRunner...
27
+ xit 'finds the challenge' do
28
+ end
29
+
30
+ xit 'setups the env vars' do
31
+ end
32
+
33
+ xit 'gets the command' do
34
+ end
35
+
36
+ it 'returns a result' do
37
+ expect(middleware.call(env)).to be_an_instance_of Polytrix::Result
38
+ end
39
+
40
+ it 'continues the middleware chain' do
41
+ expect(app).to receive(:call).with env
42
+ middleware.call(env)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Polytrix do
4
+ describe '.load_manifest' do
5
+ it 'parses the YAML file' do
6
+ expect do
7
+ described_class.load_manifest 'spec/fixtures/polytrix.yml'
8
+ end.to change {
9
+ described_class.manifest
10
+ }.from(nil).to(be_an_instance_of(Polytrix::Manifest))
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ # This is more of an integration test, but makes sure the rspec API is working.
4
+ # Expect results to all be pending, because there's no implementors in this proj.
5
+
6
+ describe 'Katas' do
7
+ code_sample 'Hello World' do |execution_result|
8
+ # You can make assertions about the process using the Mixlib::ShellOut API
9
+ expect(execution_result.process.stdout).to include 'Hello, world!'
10
+ expect(execution_result.process.stderr).to be_empty
11
+ expect(execution_result.process.exitstatus).to eq(0)
12
+ end
13
+
14
+ code_sample 'Quine' do |execution_result|
15
+ expect(execution_result.process.stdout).to eq File.read(execution_result.source)
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ require 'polytrix'
5
+ require 'polytrix/rspec'
6
+
7
+ Polytrix.implementors = Dir['sdks/*'].map{|sdk| File.basename sdk}
metadata ADDED
@@ -0,0 +1,325 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: polytrix
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Max Lincoln
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mixlib-shellout
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: middleware
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.14'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.14'
55
+ - !ruby/object:Gem::Dependency
56
+ name: hashie
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.5'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.5'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: A polyglot test runner for sample code
98
+ email:
99
+ - max@devopsy.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".gitignore"
105
+ - ".groc.json"
106
+ - ".rspec"
107
+ - ".rspec_parallel"
108
+ - Gemfile
109
+ - README.md
110
+ - Rakefile
111
+ - Vagrantfile
112
+ - features/0_identity_spec.rb
113
+ - features/1_cloud_files_spec.rb
114
+ - features/2_servers_spec.rb
115
+ - features/features_helper.rb
116
+ - features/helpers/cloudfiles_helper.rb
117
+ - features/helpers/pacto_helper.rb
118
+ - features/helpers/teardown_helper.rb
119
+ - features/pacto/extensions/loaders/api_blueprint_loader.rb
120
+ - features/pacto/extensions/loaders/simple_loader.rb
121
+ - features/pacto/extensions/loaders/yaml_or_json_loader.rb
122
+ - features/pacto/extensions/matchers.rb
123
+ - features/phase2/feature_coverage_report.rb
124
+ - features/phase2/run_all_features.rb
125
+ - features/static_site/fixtures/index.html
126
+ - lib/polytrix.rb
127
+ - lib/polytrix/challenge.rb
128
+ - lib/polytrix/challenge_builder.rb
129
+ - lib/polytrix/challenge_runner.rb
130
+ - lib/polytrix/configuration.rb
131
+ - lib/polytrix/core/file_finder.rb
132
+ - lib/polytrix/core/implementor.rb
133
+ - lib/polytrix/core/result_tracker.rb
134
+ - lib/polytrix/documentation_generator.rb
135
+ - lib/polytrix/manifest.rb
136
+ - lib/polytrix/result.rb
137
+ - lib/polytrix/rspec.rb
138
+ - lib/polytrix/rspec/documentation_formatter.rb
139
+ - lib/polytrix/runners/linux_challenge_runner.rb
140
+ - lib/polytrix/runners/middleware/change_directory.rb
141
+ - lib/polytrix/runners/middleware/feature_executor.rb
142
+ - lib/polytrix/runners/middleware/pacto.rb
143
+ - lib/polytrix/runners/middleware/setup_env_vars.rb
144
+ - lib/polytrix/runners/windows_challenge_runner.rb
145
+ - lib/polytrix/version.rb
146
+ - packer/.gitignore
147
+ - packer/Berksfile
148
+ - packer/Gemfile
149
+ - packer/Vagrantfile
150
+ - packer/cookbooks/drg/metadata.rb
151
+ - packer/cookbooks/drg/recipes/admins.rb
152
+ - packer/cookbooks/drg/recipes/default.rb
153
+ - packer/cookbooks/drg/recipes/dotnet.rb
154
+ - packer/cookbooks/drg/recipes/golang.rb
155
+ - packer/cookbooks/drg/recipes/java.rb
156
+ - packer/cookbooks/drg/recipes/php.rb
157
+ - packer/cookbooks/drg/recipes/ruby.rb
158
+ - packer/cookbooks/drg/recipes/system.rb
159
+ - packer/create_box.sh
160
+ - packer/http/preseed.cfg
161
+ - packer/packer.json
162
+ - packer/scripts/root_setup.sh
163
+ - packer/scripts/setup.sh
164
+ - pacto/config/pacto_server.rb
165
+ - pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/extensions.json
166
+ - pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/flavors/id.json
167
+ - pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/images/id.json
168
+ - pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/servers.json
169
+ - pacto/contracts/dfw.servers.api.rackspacecloud.com/v2/account_id/servers/id.json
170
+ - pacto/contracts/dns.api.rackspacecloud.com/v1.0/_tenant_id/domains.json
171
+ - pacto/contracts/identity.api.rackspacecloud.com/v2.0/tokens.json
172
+ - pacto/contracts/monitoring.api.rackspacecloud.com/v1.0/_tenant_id/account.json
173
+ - pacto/contracts/ord.autoscale.api.rackspacecloud.com/v1.0/_tenant_id/groups.json
174
+ - pacto/contracts/ord.blockstorage.api.rackspacecloud.com/v1/_tenant_id/volumes.json
175
+ - pacto/contracts/ord.databases.api.rackspacecloud.com/v1.0/_tenant_id/instances.json
176
+ - pacto/contracts/ord.loadbalancers.api.rackspacecloud.com/v1.0/_tenant_id/loadbalancers.json
177
+ - pacto/contracts/ord.queues.api.rackspacecloud.com/v1/_tenant_id/queues.json
178
+ - pacto/contracts/ord.servers.api.rackspacecloud.com/v2/_tenant_id/os-networksv2.json
179
+ - pacto/contracts/ord.servers.api.rackspacecloud.com/v2/_tenant_id/servers/detail.json
180
+ - pacto/contracts/storage101.dfw1.clouddrive.com/v1/mosso_account.json
181
+ - pacto/contracts/storage101.dfw1.clouddrive.com/v1/mosso_account/container/object.json
182
+ - pacto/contracts/storage101.ord1.clouddrive.com/v1/_mosso_id.json
183
+ - pacto/pacto_server.rb
184
+ - pacto/rackspace_uri_map.yaml
185
+ - polytrix.gemspec
186
+ - scripts/bootstrap
187
+ - scripts/cibuild
188
+ - sdks/fog/.gitignore
189
+ - sdks/fog/Gemfile
190
+ - sdks/fog/challenges/all_connections.rb
191
+ - sdks/fog/challenges/authenticate_token.rb
192
+ - sdks/fog/challenges/cdn_enable_container.rb
193
+ - sdks/fog/challenges/create_a_container.rb
194
+ - sdks/fog/challenges/create_server.rb
195
+ - sdks/fog/challenges/get_object_metadata.rb
196
+ - sdks/fog/challenges/list_containers.rb
197
+ - sdks/fog/challenges/provision_scalable_webapp.rb
198
+ - sdks/fog/challenges/upload_folder.rb
199
+ - sdks/fog/scripts/bootstrap
200
+ - sdks/fog/scripts/bootstrap.ps1
201
+ - sdks/fog/scripts/wrapper
202
+ - sdks/fog/scripts/wrapper.ps1
203
+ - sdks/gophercloud/.gitignore
204
+ - sdks/gophercloud/challenges/authenticate_token.go
205
+ - sdks/gophercloud/scripts/bootstrap
206
+ - sdks/gophercloud/scripts/wrapper
207
+ - sdks/jclouds/.gitignore
208
+ - sdks/jclouds/challenges/AuthenticateToken.java
209
+ - sdks/jclouds/pom.xml
210
+ - sdks/jclouds/scripts/bootstrap
211
+ - sdks/jclouds/scripts/wrapper
212
+ - sdks/openstack.net/.gitignore
213
+ - sdks/openstack.net/.nuget/Microsoft.Build.dll
214
+ - sdks/openstack.net/.nuget/NuGet.Config
215
+ - sdks/openstack.net/.nuget/NuGet.exe
216
+ - sdks/openstack.net/.nuget/NuGet.targets
217
+ - sdks/openstack.net/Challenge.cs
218
+ - sdks/openstack.net/RunChallenge.cs
219
+ - sdks/openstack.net/challenges/AuthenticateToken.cs
220
+ - sdks/openstack.net/challenges/Weird.cs
221
+ - sdks/openstack.net/openstack.net.csproj
222
+ - sdks/openstack.net/openstack.net.sln
223
+ - sdks/openstack.net/openstack.net.userprefs
224
+ - sdks/openstack.net/packages.config
225
+ - sdks/openstack.net/scripts/bootstrap
226
+ - sdks/openstack.net/scripts/bootstrap.ps1
227
+ - sdks/openstack.net/scripts/wrapper
228
+ - sdks/openstack.net/scripts/wrapper.ps1
229
+ - sdks/php-opencloud/.gitignore
230
+ - sdks/php-opencloud/challenges/all_connections.php
231
+ - sdks/php-opencloud/challenges/authenticate_token.php
232
+ - sdks/php-opencloud/challenges/create_server.php
233
+ - sdks/php-opencloud/challenges/get_object_metadata.php
234
+ - sdks/php-opencloud/composer.json
235
+ - sdks/php-opencloud/scripts/bootstrap
236
+ - sdks/php-opencloud/scripts/bootstrap.ps1
237
+ - sdks/php-opencloud/scripts/wrapper
238
+ - sdks/php-opencloud/scripts/wrapper.ps1
239
+ - sdks/pkgcloud/.gitignore
240
+ - sdks/pkgcloud/challenges/authenticate_token.js
241
+ - sdks/pkgcloud/challenges/get_object_metadata.js
242
+ - sdks/pkgcloud/scripts/bootstrap
243
+ - sdks/pkgcloud/scripts/bootstrap.ps1
244
+ - sdks/pkgcloud/scripts/wrapper
245
+ - sdks/pkgcloud/scripts/wrapper.ps1
246
+ - sdks/pyrax/.gitignore
247
+ - sdks/pyrax/challenges/all_connections.py
248
+ - sdks/pyrax/challenges/authenticate_token.py
249
+ - sdks/pyrax/challenges/cdn_enable_container.py
250
+ - sdks/pyrax/challenges/create_a_container.py
251
+ - sdks/pyrax/challenges/create_server.py
252
+ - sdks/pyrax/challenges/get_object_metadata.py
253
+ - sdks/pyrax/challenges/upload_folder.py
254
+ - sdks/pyrax/requirements.txt
255
+ - sdks/pyrax/scripts/bootstrap
256
+ - sdks/pyrax/scripts/bootstrap.ps1
257
+ - sdks/pyrax/scripts/wrapper
258
+ - sdks/pyrax/scripts/wrapper.ps1
259
+ - spec/fixtures/factorial.py
260
+ - spec/fixtures/polytrix.yml
261
+ - spec/fixtures/src-doc/quine.md.erb
262
+ - spec/polytrix/challenge_builder_spec.rb
263
+ - spec/polytrix/challenge_runner_spec.rb
264
+ - spec/polytrix/challenge_spec.rb
265
+ - spec/polytrix/configuration_spec.rb
266
+ - spec/polytrix/documentation_generator_spec.rb
267
+ - spec/polytrix/file_finder_spec.rb
268
+ - spec/polytrix/manifest_spec.rb
269
+ - spec/polytrix/middleware/feature_executor_spec.rb
270
+ - spec/polytrix_spec.rb
271
+ - spec/rspec_spec.rb
272
+ - spec/spec_helper.rb
273
+ homepage: ''
274
+ licenses:
275
+ - MIT
276
+ metadata: {}
277
+ post_install_message:
278
+ rdoc_options: []
279
+ require_paths:
280
+ - lib
281
+ required_ruby_version: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ required_rubygems_version: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - ">="
289
+ - !ruby/object:Gem::Version
290
+ version: '0'
291
+ requirements: []
292
+ rubyforge_project:
293
+ rubygems_version: 2.2.0
294
+ signing_key:
295
+ specification_version: 4
296
+ summary: A polyglot test runner for sample code
297
+ test_files:
298
+ - features/0_identity_spec.rb
299
+ - features/1_cloud_files_spec.rb
300
+ - features/2_servers_spec.rb
301
+ - features/features_helper.rb
302
+ - features/helpers/cloudfiles_helper.rb
303
+ - features/helpers/pacto_helper.rb
304
+ - features/helpers/teardown_helper.rb
305
+ - features/pacto/extensions/loaders/api_blueprint_loader.rb
306
+ - features/pacto/extensions/loaders/simple_loader.rb
307
+ - features/pacto/extensions/loaders/yaml_or_json_loader.rb
308
+ - features/pacto/extensions/matchers.rb
309
+ - features/phase2/feature_coverage_report.rb
310
+ - features/phase2/run_all_features.rb
311
+ - features/static_site/fixtures/index.html
312
+ - spec/fixtures/factorial.py
313
+ - spec/fixtures/polytrix.yml
314
+ - spec/fixtures/src-doc/quine.md.erb
315
+ - spec/polytrix/challenge_builder_spec.rb
316
+ - spec/polytrix/challenge_runner_spec.rb
317
+ - spec/polytrix/challenge_spec.rb
318
+ - spec/polytrix/configuration_spec.rb
319
+ - spec/polytrix/documentation_generator_spec.rb
320
+ - spec/polytrix/file_finder_spec.rb
321
+ - spec/polytrix/manifest_spec.rb
322
+ - spec/polytrix/middleware/feature_executor_spec.rb
323
+ - spec/polytrix_spec.rb
324
+ - spec/rspec_spec.rb
325
+ - spec/spec_helper.rb