diff --git a/lib/manager/cocoapods/extract.ts b/lib/manager/cocoapods/extract.ts index 7362adfa333186ec3f05f17750b17024f65e8954..0ae1eefe06cc7df8bd44a9edc3ede6ae92e28cfd 100644 --- a/lib/manager/cocoapods/extract.ts +++ b/lib/manager/cocoapods/extract.ts @@ -27,6 +27,9 @@ export interface ParsedLine { export function parseLine(line: string): ParsedLine { const result: ParsedLine = {}; + if (!line) { + return result; + } for (const regex of Object.values(regexMappings)) { const match = regex.exec(line.replace(/#.*$/, '')); if (match && match.groups) { diff --git a/lib/manager/cocoapods/update.spec.ts b/lib/manager/cocoapods/update.spec.ts index ee73d947ceb93195fc5479a37acf8a8cb20c4baf..b87aa8b77769b8c9ac787f033ad4f8c4294ee0e0 100644 --- a/lib/manager/cocoapods/update.spec.ts +++ b/lib/manager/cocoapods/update.spec.ts @@ -9,6 +9,16 @@ const fileContent = fs.readFileSync( describe('lib/manager/cocoapods/update', () => { describe('updateDependency', () => { + it('handles undefined lines', () => { + const upgrade = { + depName: 'b', + managerData: { lineNumber: 999999999 }, + currentValue: '1.2.3', + newValue: '2.0.0', + }; + const res = updateDependency({ fileContent, upgrade }); + expect(res).toBeNull(); + }); it('replaces existing value', () => { const upgrade = { depName: 'b', diff --git a/lib/manager/cocoapods/update.ts b/lib/manager/cocoapods/update.ts index c3c7a487791ba4789516510d70fac449125babe3..ac8b81ab17335e858bda633b024f98ef29a297af 100644 --- a/lib/manager/cocoapods/update.ts +++ b/lib/manager/cocoapods/update.ts @@ -24,6 +24,14 @@ export function updateDependency({ const lines = fileContent.split('\n'); const lineToChange = lines[managerData.lineNumber]; + if (!lineToChange) { + logger.warn( + { fileContent, depName, currentValue, newValue }, + 'Undefined cocoapods lineToChange' + ); + return null; + } + if (!lineContainsDep(lineToChange, depName)) { return null; }