Skip to content

Commit 77469eb

Browse files
committed
Create Matrixeval::Ruby::Gitignore
1 parent def08e1 commit 77469eb

File tree

6 files changed

+116
-0
lines changed

6 files changed

+116
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
**/.DS_Store
1010
test/dummy_gem/matrixeval.yml
1111
test/dummy_gem/.matrixeval
12+
test/dummy_gem/.gitignore
1213
.byebug_history

lib/matrixeval/ruby.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
require 'matrixeval/ruby/context'
66
require 'matrixeval/ruby/gemfile_locks'
77
require 'matrixeval/ruby/runner'
8+
require 'matrixeval/ruby/gitignore'
89

910
module Matrixeval
1011
module Ruby

lib/matrixeval/ruby/gitignore.rb

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
module Matrixeval
2+
module Ruby
3+
class Gitignore
4+
class << self
5+
6+
def update
7+
add_docker_compose
8+
add_gemfile_locks
9+
end
10+
11+
private
12+
13+
def add_docker_compose
14+
return if docker_compose_included?
15+
16+
File.open(gitignore_path, 'a+') do |file|
17+
file.puts docker_compose_yaml
18+
end
19+
end
20+
21+
def add_gemfile_locks
22+
return if gemfile_locks_included?
23+
24+
File.open(gitignore_path, 'a+') do |file|
25+
file.puts gemfile_locks
26+
end
27+
end
28+
29+
def docker_compose_included?
30+
File.exist?(gitignore_path) &&
31+
File.read(gitignore_path).include?(docker_compose_yaml)
32+
end
33+
34+
def gemfile_locks_included?
35+
File.exist?(gitignore_path) &&
36+
File.read(gitignore_path).include?(gemfile_locks)
37+
end
38+
39+
def docker_compose_yaml
40+
".matrixeval/docker-compose.yml"
41+
end
42+
43+
def gemfile_locks
44+
".matrixeval/Gemfile.lock.*"
45+
end
46+
47+
def gitignore_path
48+
Matrixeval.working_dir.join(".gitignore")
49+
end
50+
51+
end
52+
end
53+
end
54+
end

lib/matrixeval/ruby/runner.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def start
2727
Config::YAML.create
2828
DockerCompose::YAML.create
2929
GemfileLocks.create
30+
Gitignore.update
3031

3132
context = Context.find_by_command_options!(command.context_options)
3233

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# frozen_string_literal: true
2+
3+
require "test_helper"
4+
5+
class Matrixeval::Ruby::GitignoreTest < MatrixevalTest
6+
7+
def setup
8+
FileUtils.rm(dummy_gem_working_dir.join(".gitignore")) rescue nil
9+
Matrixeval.stubs(:working_dir).returns(dummy_gem_working_dir)
10+
end
11+
12+
def test_create
13+
refute File.exist?(dummy_gem_working_dir.join(".gitignore"))
14+
15+
Matrixeval::Ruby::Gitignore.update
16+
17+
expected_gitignore_content = <<~GITIGNORE
18+
.matrixeval/docker-compose.yml
19+
.matrixeval/Gemfile.lock.*
20+
GITIGNORE
21+
gitignore_content = File.read dummy_gem_working_dir.join(".gitignore")
22+
assert_equal expected_gitignore_content, gitignore_content
23+
end
24+
25+
def test_update
26+
File.open(dummy_gem_working_dir.join(".gitignore"), 'w+') do |file|
27+
file.puts ".env"
28+
end
29+
30+
Matrixeval::Ruby::Gitignore.update
31+
32+
expected_gitignore_content = <<~GITIGNORE
33+
.env
34+
.matrixeval/docker-compose.yml
35+
.matrixeval/Gemfile.lock.*
36+
GITIGNORE
37+
gitignore_content = File.read dummy_gem_working_dir.join(".gitignore")
38+
assert_equal expected_gitignore_content, gitignore_content
39+
end
40+
41+
def test_update_duplicate_check
42+
File.open(dummy_gem_working_dir.join(".gitignore"), 'w+') do |file|
43+
file.puts ".env"
44+
file.puts ".matrixeval/Gemfile.lock.*"
45+
end
46+
47+
Matrixeval::Ruby::Gitignore.update
48+
49+
expected_gitignore_content = <<~GITIGNORE
50+
.env
51+
.matrixeval/Gemfile.lock.*
52+
.matrixeval/docker-compose.yml
53+
GITIGNORE
54+
gitignore_content = File.read dummy_gem_working_dir.join(".gitignore")
55+
assert_equal expected_gitignore_content, gitignore_content
56+
end
57+
58+
end

test/matrixeval/ruby/runner_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ def setup
99

1010
FileUtils.rm(dummy_gem_docker_compose_file_path) rescue nil
1111
FileUtils.rm(dummy_gem_matrixeval_file_path) rescue nil
12+
FileUtils.rm(dummy_gem_working_dir.join(".gitignore")) rescue nil
1213
FileUtils.rm Dir.glob(dummy_gem_working_dir.join(".matrixeval/Gemfile.lock.*"))
1314
end
1415

0 commit comments

Comments
 (0)