Skip to content

Commit b50bd41

Browse files
authored
Merge pull request #232 from github/no-newline-in-existing-config
fix: ensure existing dependabot configs without end of file newlines get processed properly
2 parents 105daf8 + ed2fb73 commit b50bd41

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

dependabot_file.py

+4
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,10 @@ def build_dependabot_file(
139139
try:
140140
if repo.file_contents(file):
141141
package_managers_found[manager] = True
142+
# If the last thing in the file is not a newline,
143+
# add one before adding a new language config to the file
144+
if dependabot_file and dependabot_file[-1] != "\n":
145+
dependabot_file += "\n"
142146
dependabot_file += make_dependabot_config(
143147
manager, group_dependencies, indent, schedule, schedule_day
144148
)

test_dependabot_file.py

+31
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,37 @@ def test_build_dependabot_file_with_2_space_indent_existing_config_bundler_with_
108108
)
109109
self.assertEqual(result, expected_result)
110110

111+
def test_build_dependabot_file_with_2_space_indent_existing_config_bundler_with_update_and_no_newline(
112+
self,
113+
):
114+
"""Test that the dependabot.yml file is built correctly with bundler"""
115+
repo = MagicMock()
116+
repo.file_contents.side_effect = lambda f, filename="Gemfile": f == filename
117+
118+
# expected_result maintains existing ecosystem with custom configuration
119+
# and adds new ecosystem
120+
expected_result = """---
121+
version: 2
122+
updates:
123+
- package-ecosystem: "pip"
124+
directory: "/"
125+
schedule:
126+
interval: "weekly"
127+
commit-message:
128+
prefix: "chore(deps)"
129+
- package-ecosystem: 'bundler'
130+
directory: '/'
131+
schedule:
132+
interval: 'weekly'
133+
"""
134+
existing_config = MagicMock()
135+
existing_config.decoded = b'---\nversion: 2\nupdates:\n - package-ecosystem: "pip"\n directory: "/"\n\
136+
schedule:\n interval: "weekly"\n commit-message:\n prefix: "chore(deps)"'
137+
result = build_dependabot_file(
138+
repo, False, [], {}, existing_config, "weekly", ""
139+
)
140+
self.assertEqual(result, expected_result)
141+
111142
def test_build_dependabot_file_with_weird_space_indent_existing_config_bundler_with_update(
112143
self,
113144
):

0 commit comments

Comments
 (0)