aws_minecraft 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8b2ac622c911990d68a2392c6e8f5ba779420a40
4
- data.tar.gz: 5463cc914cb80dd64576b1984e7e49f2b2eac973
2
+ SHA256:
3
+ metadata.gz: d6276eb43e3e3d747a509a61cbc3626084fc806f8697563cdc281aa99c3c817c
4
+ data.tar.gz: 5368e300bb28a07a780b02e3f5a864936c1e0b5321c2ee37c74d6af012d6d428
5
5
  SHA512:
6
- metadata.gz: e0e76fe8c5691fcb5dc8c541152b5f8acdc8111c1d64bf0d6c19dee444b981590438b875156b0dc650c421269983df4b9021fda9518355b32adf1fd5bbaeb027
7
- data.tar.gz: a6016d147a7f053addf791ebb7304cc76fa784935b5de75a98b56314f263a5d7380d9b6e23f8fa00fc40911fcd3e33f891f05a8a73acb246dfc94457405e35b8
6
+ metadata.gz: 8ceb5ba3fa12f2be2f499465a1fcf72a5669d31db8e5b15791c2b7f537e641526bf49d8a5d7a062c37a24adf8c658df38b774d912e03205d4e16ca1b9ba46dc1
7
+ data.tar.gz: e606683cf5183c19017919aa85a2536e87826f8a0ed9ed6b45b84e785d2a36a92b162b47508f78bbc5a10a8cb196ea9f0874a1537ff22d81f0b710cec70e3e74
@@ -1,4 +1,6 @@
1
1
  rvm:
2
- - 2.3.1
2
+ - 2.5
3
+ - 2.6
4
+ - 2.7
3
5
  env:
4
6
  - AWS_REGION=eu-central-1
data/Gemfile CHANGED
@@ -1,11 +1,11 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rspec', require: 'spec'
4
- gem 'thor'
5
3
  gem 'aws-sdk', '~> 2'
6
- gem 'rubocop'
4
+ gem 'fakefs', require: 'fakefs/safe'
5
+ gem 'net-scp'
6
+ gem 'net-ssh'
7
7
  gem 'rake'
8
+ gem 'rspec', require: 'spec'
9
+ gem 'rubocop'
8
10
  gem 'sqlite3'
9
- gem 'net-ssh'
10
- gem 'net-scp'
11
- gem 'fakefs', require: 'fakefs/safe'
11
+ gem 'thor'
@@ -1,50 +1,62 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- ast (2.3.0)
5
- aws-sdk (2.6.2)
6
- aws-sdk-resources (= 2.6.2)
7
- aws-sdk-core (2.6.2)
4
+ ast (2.4.1)
5
+ aws-eventstream (1.1.0)
6
+ aws-sdk (2.11.632)
7
+ aws-sdk-resources (= 2.11.632)
8
+ aws-sdk-core (2.11.632)
9
+ aws-sigv4 (~> 1.0)
8
10
  jmespath (~> 1.0)
9
- aws-sdk-resources (2.6.2)
10
- aws-sdk-core (= 2.6.2)
11
- diff-lcs (1.2.5)
12
- fakefs (0.9.1)
13
- jmespath (1.3.1)
14
- net-scp (1.2.1)
15
- net-ssh (>= 2.6.5)
16
- net-ssh (3.2.0)
17
- parser (2.3.1.4)
18
- ast (~> 2.2)
19
- powerpack (0.1.1)
20
- rainbow (2.1.0)
21
- rake (11.2.2)
22
- rspec (3.5.0)
23
- rspec-core (~> 3.5.0)
24
- rspec-expectations (~> 3.5.0)
25
- rspec-mocks (~> 3.5.0)
26
- rspec-core (3.5.3)
27
- rspec-support (~> 3.5.0)
28
- rspec-expectations (3.5.0)
11
+ aws-sdk-resources (2.11.632)
12
+ aws-sdk-core (= 2.11.632)
13
+ aws-sigv4 (1.2.2)
14
+ aws-eventstream (~> 1, >= 1.0.2)
15
+ diff-lcs (1.4.4)
16
+ fakefs (1.3.0)
17
+ jmespath (1.4.0)
18
+ net-scp (3.0.0)
19
+ net-ssh (>= 2.6.5, < 7.0.0)
20
+ net-ssh (6.1.0)
21
+ parallel (1.20.1)
22
+ parser (2.7.2.0)
23
+ ast (~> 2.4.1)
24
+ rainbow (3.0.0)
25
+ rake (13.0.3)
26
+ regexp_parser (2.0.1)
27
+ rexml (3.2.4)
28
+ rspec (3.10.0)
29
+ rspec-core (~> 3.10.0)
30
+ rspec-expectations (~> 3.10.0)
31
+ rspec-mocks (~> 3.10.0)
32
+ rspec-core (3.10.0)
33
+ rspec-support (~> 3.10.0)
34
+ rspec-expectations (3.10.0)
29
35
  diff-lcs (>= 1.2.0, < 2.0)
30
- rspec-support (~> 3.5.0)
31
- rspec-mocks (3.5.0)
36
+ rspec-support (~> 3.10.0)
37
+ rspec-mocks (3.10.0)
32
38
  diff-lcs (>= 1.2.0, < 2.0)
33
- rspec-support (~> 3.5.0)
34
- rspec-support (3.5.0)
35
- rubocop (0.43.0)
36
- parser (>= 2.3.1.1, < 3.0)
37
- powerpack (~> 0.1)
38
- rainbow (>= 1.99.1, < 3.0)
39
+ rspec-support (~> 3.10.0)
40
+ rspec-support (3.10.0)
41
+ rubocop (1.7.0)
42
+ parallel (~> 1.10)
43
+ parser (>= 2.7.1.5)
44
+ rainbow (>= 2.2.2, < 4.0)
45
+ regexp_parser (>= 1.8, < 3.0)
46
+ rexml
47
+ rubocop-ast (>= 1.2.0, < 2.0)
39
48
  ruby-progressbar (~> 1.7)
40
- unicode-display_width (~> 1.0, >= 1.0.1)
41
- ruby-progressbar (1.8.1)
42
- sqlite3 (1.3.11)
43
- thor (0.19.1)
44
- unicode-display_width (1.1.1)
49
+ unicode-display_width (>= 1.4.0, < 2.0)
50
+ rubocop-ast (1.3.0)
51
+ parser (>= 2.7.1.5)
52
+ ruby-progressbar (1.10.1)
53
+ sqlite3 (1.4.2)
54
+ thor (1.0.1)
55
+ unicode-display_width (1.7.0)
45
56
 
46
57
  PLATFORMS
47
58
  ruby
59
+ x86_64-darwin-20
48
60
 
49
61
  DEPENDENCIES
50
62
  aws-sdk (~> 2)
@@ -58,4 +70,4 @@ DEPENDENCIES
58
70
  thor
59
71
 
60
72
  BUNDLED WITH
61
- 1.13.1
73
+ 2.2.3
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  Minecraft Server In The Cloud
2
2
  =============================
3
3
 
4
+ [![Build Status](https://travis-ci.org/Skarlso/aws_minecraft.svg?branch=master)](https://travis-ci.org/Skarlso/aws_minecraft)
5
+
4
6
  This is a fully provisinable Minecraft server on a configurable EC2 instance under AWS. This Gem
5
7
  provides the ability to manage both, an EC2 instance and a Minecraft server which is executed on
6
8
  that EC2 instance.
@@ -41,13 +43,42 @@ Test your CLI by running an AWS command like this one: `aws ec2 describe-instanc
41
43
 
42
44
  ## AWS Minecraft Gem
43
45
 
46
+ ### Install
47
+
48
+ Version 0.1.0 is deployed as a gem.
49
+
50
+ ```
51
+ gem install aws_minecraft
52
+ ```
53
+
54
+ Or, in a Gemfile
55
+
56
+ ```
57
+ gem 'aws_minecraft'
58
+ ```
59
+
60
+ You can also build it yourself. Just clone this repository and use rake.
61
+
62
+ ```
63
+ rake install
64
+ ```
65
+
66
+ Or
67
+
68
+ ```
69
+ bundle exec rake install
70
+ ```
71
+
72
+ This will create a gem which will be used under `pkg`. Just bare in mind, that there is a key which needs to be present. The `minecraft.key` file. Without it, you won't be able to build the gem.
73
+
44
74
  ### Instance
45
75
 
46
76
  The instance configuration that is used can be found here: [ec2_config](cfg/ec2_config.json). This
47
77
  will configure and create an EC2 instance for you. Couple of things to note here. The instance uses
48
78
  an ssh key import which is than used to execute commands on the instance. So in order for this to work
49
79
  you'll have to create an SSH key with `ssh-keygen`. Enter your **PUBLIC** key, something like `/Users/youruser/.ssh/ida_rsa.pub`,
50
- into the file called `Minecraft.key` as a *base64* encoded string.
80
+ into the file called `minecraft.key` as a *base64* encoded string. You can use a public encoder, since
81
+ this is your public key. [Base64Encode](https://www.base64encode.org/).
51
82
 
52
83
  AWS Minecraft uses tmux to run a Minecraft server in the background. The tmux is a multiplexer client
53
84
  and will allow us to attach to it later on, if the user would like to run some commands on the server.
@@ -62,13 +93,13 @@ query amazon for information about the instance.
62
93
 
63
94
  The [config.yml](cfg/config.yml) file configures this gem. Currently, two settings are available. A
64
95
  Logger level setting information which can be overridden any time. And second, it's the location from
65
- where files will be uploaded to the instance like, Minecraft.jar or craftbukkit.jar. These than will
96
+ where files will be uploaded to the instance like, minecraft.jar or craftbukkit.jar. These than will
66
97
  be executed during starting a Minecraft server.
67
98
 
68
99
  ### DB
69
100
 
70
101
  The database also needs to be initialised, for this, there is a cli command called init-db. To
71
- initialise the database, run `bundle exec ./bin/aws_Minecraft.rb init-db`. This will create a
102
+ initialise the database, run `bundle exec ./bin/aws_minecraft.rb init-db`. This will create a
72
103
  Minecraft.db file. In case there is anything wrong and you would like to create a new instance, and
73
104
  you are sure that the one which is saved, is not the correct one, just delete this file and run
74
105
  `init-db` again.
@@ -131,6 +162,14 @@ When you are done playing, don't forget to issue a `stop-server` command.
131
162
  If you would like to resume playing on the same server, you would call `start-server` and again,
132
163
  enjoy a nice session of Minecraft.
133
164
 
165
+ ## Using an existing server configuration with plugins
166
+
167
+ If you happen to have a server with configured plugins and all that jazz, and you would like to just
168
+ continue that on an instance, it's easy to do that. Simply point, in the config.yml file `upload_path:`
169
+ to that folder in which your server, world, minecraft jar, craftbukkit jar, sit and upload_file will
170
+ upload the contents of that folder to EC2. Start your minecraft jar, and log in to your old world with
171
+ everything in tact.
172
+
134
173
  # Examples
135
174
 
136
175
  Created the instance
data/ROADMAP.md CHANGED
@@ -7,17 +7,17 @@ Roadmap for aws_minecraft
7
7
  * Working on coverage is important. Adding unit tests for ssh, uploader and negative scenarios for
8
8
  aws_helper would be Next.
9
9
  * Some of the error cases are not handled really well at the moment. They just raise an error.
10
- * Upload world is not working yet.
11
10
  * Everything Minecraft related could be extracted.
12
11
  * Would be nice if it wouldn't re-upload.
13
12
  * start-server doesn't tell you if starting the tmux session was successful or not.
13
+ * World backup isn't there yet.
14
+ * Could be to an S3 or, even downloaded.
14
15
 
15
16
  0.1.0
16
17
  -----
17
18
 
18
19
  * This is an MVP at this stage, with everything working and the most important parts have unit tests.
19
20
 
20
-
21
21
  0.0.4
22
22
  -----
23
23
 
@@ -13,20 +13,18 @@ Gem::Specification.new do |s|
13
13
  s.email = 'skarlso777@gmail.com'
14
14
  s.extra_rdoc_files = ['README.md']
15
15
  s.files = `git ls-files`.split("\n")
16
- s.files << './cfg/minecraft.key'
17
16
  s.homepage = 'https://github.com/Skarlso/aws_minecraft'
18
17
  s.rdoc_options = ['--charset=UTF-8']
19
18
  s.require_paths = ['lib']
20
19
  s.rubygems_version = '2.6.6'
21
20
  s.test_files = `git ls-files`.split("\n").select { |f| f =~ /^specs/ }
22
- s.rubyforge_project = 'aws_minecraft'
23
21
  s.executables = `git ls-files -- bin/*`.split("\n")
24
22
  .map { |f| File.basename(f) }
25
23
  s.licenses = ['MIT']
26
24
 
27
25
  # dependencies
26
+ s.add_development_dependency 'bundler'
28
27
  s.add_development_dependency 'code_stats'
29
28
  s.add_development_dependency 'rake'
30
29
  s.add_development_dependency 'rspec'
31
- s.add_development_dependency 'bundler'
32
30
  end
@@ -61,7 +61,7 @@ class AWSMineCli < Thor
61
61
  @aws_mine.upload_files
62
62
  end
63
63
 
64
- desc 'init-db', 'Initialize the databse.'
64
+ desc 'init-db', 'Initialize the database.'
65
65
  def init_db
66
66
  @aws_mine.init_db
67
67
  end
@@ -1,2 +1,2 @@
1
1
  loglevel: INFO
2
- upload_path: /Users/hannibal/RubyProjects/aws_minecraft/drop
2
+ upload_path: /Users/<youruser>/aws_minecraft/drop
@@ -4,7 +4,7 @@
4
4
  "key_name": "minecraft_keys",
5
5
  "min_count": 1,
6
6
  "max_count": 1,
7
- "instance_type": "t2.nano",
7
+ "instance_type": "t2.large",
8
8
  "monitoring": {
9
9
  "enabled": true
10
10
  }
@@ -10,12 +10,13 @@ module AWSMine
10
10
  class AWSMine
11
11
  MINECRAFT_SESSION_NAME = 'minecraft'.freeze
12
12
  attr_accessor :aws_helper, :db_helper, :upload_helper, :ssh_helper
13
+
13
14
  def initialize
14
15
  @aws_helper = AWSHelper.new
15
16
  @db_helper = DBHelper.new
16
17
  @upload_helper = UploadHelper.new
17
18
  @ssh_helper = SSHHelper.new
18
- @logger = Logger.new(STDOUT)
19
+ @logger = Logger.new($stdout)
19
20
  @logger.level = Logger.const_get(MineConfig.new.loglevel)
20
21
  end
21
22
 
@@ -23,8 +23,7 @@ module AWSMine
23
23
  # rubocop:disable Metrics/AbcSize
24
24
  def create_ec2
25
25
  @logger.info('Creating new EC2 instance.')
26
- config = File.open(File.join(__dir__, '../../cfg/ec2_conf.json'),
27
- 'rb', &:read).chop
26
+ config = File.read(File.join(__dir__, '../../cfg/ec2_conf.json'))
28
27
  @logger.debug("Configuration loaded: #{config}.")
29
28
  ec2_config = symbolize(JSON.parse(config))
30
29
  @logger.debug("Configuration symbolized: #{ec2_config}.")
@@ -110,8 +109,7 @@ module AWSMine
110
109
  end
111
110
 
112
111
  def import_keypair
113
- key = Base64.decode64(File.open(File.join(__dir__, '../../cfg/minecraft.key'),
114
- 'rb', &:read).chop)
112
+ key = Base64.decode64(File.read(File.join(__dir__, '../../cfg/minecraft.key')))
115
113
  begin
116
114
  @ec2_client.describe_key_pairs(key_names: ['minecraft_keys'])
117
115
  key_exists = true
@@ -126,8 +124,7 @@ module AWSMine
126
124
  end
127
125
 
128
126
  def create_security_group
129
- config = File.open(File.join(__dir__, '../../cfg/sg_config.json'),
130
- 'rb', &:read).chop
127
+ config = File.read(File.join(__dir__, '../../cfg/sg_config.json'))
131
128
  sg_config = symbolize(JSON.parse(config))
132
129
  begin
133
130
  sg = @ec2_resource.create_security_group(dry_run: false,
@@ -142,8 +139,7 @@ module AWSMine
142
139
  end
143
140
 
144
141
  def retrieve_user_data
145
- user_data = File.open(File.join(__dir__, '../../cfg/user_data.sh'),
146
- 'rb', &:read).chop
142
+ user_data = File.read(File.join(__dir__, '../../cfg/user_data.sh'))
147
143
  Base64.encode64(user_data)
148
144
  end
149
145
  end
@@ -19,8 +19,7 @@ module AWSMine
19
19
 
20
20
  def init_db
21
21
  @tables.each do |table|
22
- sql = File.open(File.join(__dir__, "../../cfg/#{table}.sql"),
23
- 'rb', &:read).chop
22
+ sql = File.read(File.join(__dir__, "../../cfg/#{table}.sql"))
24
23
  @db.execute sql unless table_exists? table
25
24
  end
26
25
  end
@@ -6,7 +6,7 @@ module AWSMine
6
6
  class UploadHelper
7
7
  def initialize
8
8
  @config = MineConfig.new
9
- @logger = Logger.new(STDOUT)
9
+ @logger = Logger.new($stdout)
10
10
  @logger.level = Logger.const_get(@config.loglevel)
11
11
  end
12
12
 
@@ -1,5 +1,5 @@
1
1
  module AWSMine
2
2
  class AWSMine
3
- VERSION = '0.1.0'.freeze
3
+ VERSION = '0.2.0'.freeze
4
4
  end
5
5
  end
@@ -41,10 +41,10 @@ describe AWSMine::AWSHelper do
41
41
  key_name: 'minecraft_keys',
42
42
  min_count: 1,
43
43
  max_count: 1,
44
- instance_type: 't2.nano',
44
+ instance_type: 't2.large',
45
45
  monitoring: { enabled: true },
46
46
  security_group_ids: ['sg-1'],
47
- user_data: "ICAgICAgICAgICEjL2Jpbi9iYXNo\n")
47
+ user_data: "ISMvYmluL2Jhc2g=\n")
48
48
  .and_return([ec2])
49
49
  expect(ec2_resource).to receive(:client).and_return(client)
50
50
  expect(ec2).to receive(:id).exactly(4).times.and_return('ec2-id')
@@ -20,81 +20,15 @@ shared_examples 'with aws minecraft' do
20
20
 
21
21
  before :each do
22
22
  FakeFS.activate!
23
- FakeFS::FileSystem.clone(__dir__)
23
+ FakeFS::FileSystem.clone(File.join(File.dirname(__FILE__), '../cfg'))
24
24
  FakeFS do
25
- FileUtils.mkdir_p(File.join(__dir__, '../cfg'))
25
+ # FileUtils.mkdir_p(File.join(__dir__, '../cfg'))
26
26
  File.open(File.join(__dir__, '../cfg/config.yml'), 'w') do |f|
27
27
  f.puts('loglevel: ERROR')
28
28
  f.puts('upload_path: /drop')
29
29
  end
30
-
31
- FileUtils.mkdir_p(File.join(__dir__, '../cfg'))
32
- File.open(File.join(__dir__, '../cfg/ec2_conf.json'), 'w') do |f|
33
- f.puts <<-FILE
34
- {
35
- "dry_run": false,
36
- "image_id": "ami-ea26ce85",
37
- "key_name": "minecraft_keys",
38
- "min_count": 1,
39
- "max_count": 1,
40
- "instance_type": "t2.nano",
41
- "monitoring": {
42
- "enabled": true
43
- }
44
- }
45
- FILE
46
- end
47
-
48
- FileUtils.mkdir_p(File.join(__dir__, '../cfg'))
49
- File.open(File.join(__dir__, '../cfg/instances.sql'), 'w') do |f|
50
- f.puts <<-FILE
51
- create table instances (
52
- ip varchar(100),
53
- id varchar(100),
54
- PRIMARY KEY (id)
55
- );
56
- FILE
57
- end
58
-
59
- FileUtils.mkdir_p(File.join(__dir__, '../cfg'))
60
- File.open(File.join(__dir__, '../cfg/sg_config.json'), 'w') do |f|
61
- f.puts <<-FILE
62
- {
63
- "ip_permissions": [
64
- {
65
- "ip_protocol": "tcp",
66
- "from_port": 22,
67
- "to_port": 22,
68
- "ip_ranges": [{
69
- "cidr_ip": "0.0.0.0/0"
70
- }]
71
- },
72
- {
73
- "ip_protocol": "tcp",
74
- "from_port": 25565,
75
- "to_port": 25565,
76
- "ip_ranges": [{
77
- "cidr_ip": "0.0.0.0/0"
78
- }]
79
- }
80
- ]
81
- }
82
- FILE
83
- end
84
-
85
- FileUtils.mkdir_p(File.join(__dir__, '../cfg'))
86
- File.open(File.join(__dir__, '../cfg/user_data.sh'), 'w') do |f|
87
- f.puts <<-FILE
88
- !#/bin/bash
89
- FILE
90
- end
91
-
92
- FileUtils.mkdir_p(File.join(__dir__, '../cfg'))
93
- File.open(File.join(__dir__, '../cfg/minecraft.key'), 'w') do |f|
94
- f.puts <<-FILE
95
- somekey
96
- FILE
97
- end
30
+ File.write(File.join(__dir__, '../cfg/user_data.sh'), '!#/bin/bash')
31
+ File.write(File.join(__dir__, '../cfg/minecraft.key'), 'mykey')
98
32
  end
99
33
  end
100
34
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws_minecraft
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gergely Brautigam
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-03 00:00:00.000000000 Z
11
+ date: 2020-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: code_stats
14
+ name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: code_stats
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: bundler
56
+ name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -74,7 +74,6 @@ extensions: []
74
74
  extra_rdoc_files:
75
75
  - README.md
76
76
  files:
77
- - "./cfg/minecraft.key"
78
77
  - ".gitignore"
79
78
  - ".rspec"
80
79
  - ".travis.yml"
@@ -116,7 +115,7 @@ homepage: https://github.com/Skarlso/aws_minecraft
116
115
  licenses:
117
116
  - MIT
118
117
  metadata: {}
119
- post_install_message:
118
+ post_install_message:
120
119
  rdoc_options:
121
120
  - "--charset=UTF-8"
122
121
  require_paths:
@@ -132,9 +131,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
131
  - !ruby/object:Gem::Version
133
132
  version: '0'
134
133
  requirements: []
135
- rubyforge_project: aws_minecraft
136
- rubygems_version: 2.5.1
137
- signing_key:
134
+ rubygems_version: 3.1.2
135
+ signing_key:
138
136
  specification_version: 4
139
137
  summary: A minecraft server provisioner on an AWS EC2 instance.
140
138
  test_files: []