Просмотр исходного кода

Update omission format and keywords

Matt Rubens 1 год назад
Родитель
Сommit
8159c51b03

+ 66 - 0
src/integrations/editor/__tests__/detect-omission.test.ts

@@ -0,0 +1,66 @@
+import { detectCodeOmission } from '../detect-omission'
+
+describe('detectCodeOmission', () => {
+	const originalContent = `function example() {
+  // Some code
+  const x = 1;
+  const y = 2;
+  return x + y;
+}`
+
+	it('should detect square bracket line range omission', () => {
+		const newContent = `[Previous content from line 1-305 remains exactly the same]
+const z = 3;`
+		expect(detectCodeOmission(originalContent, newContent)).toBe(true)
+	})
+
+	it('should detect single-line comment omission', () => {
+		const newContent = `// Lines 1-50 remain unchanged
+const z = 3;`
+		expect(detectCodeOmission(originalContent, newContent)).toBe(true)
+	})
+
+	it('should detect multi-line comment omission', () => {
+		const newContent = `/* Previous content remains the same */
+const z = 3;`
+		expect(detectCodeOmission(originalContent, newContent)).toBe(true)
+	})
+
+	it('should detect HTML-style comment omission', () => {
+		const newContent = `<!-- Existing content unchanged -->
+const z = 3;`
+		expect(detectCodeOmission(originalContent, newContent)).toBe(true)
+	})
+
+	it('should detect JSX-style comment omission', () => {
+		const newContent = `{/* Rest of the code remains the same */}
+const z = 3;`
+		expect(detectCodeOmission(originalContent, newContent)).toBe(true)
+	})
+
+	it('should detect Python-style comment omission', () => {
+		const newContent = `# Previous content remains unchanged
+const z = 3;`
+		expect(detectCodeOmission(originalContent, newContent)).toBe(true)
+	})
+
+	it('should not detect regular comments without omission keywords', () => {
+		const newContent = `// Adding new functionality
+const z = 3;`
+		expect(detectCodeOmission(originalContent, newContent)).toBe(false)
+	})
+
+	it('should not detect when comment is part of original content', () => {
+		const originalWithComment = `// Content remains unchanged
+${originalContent}`
+		const newContent = `// Content remains unchanged
+const z = 3;`
+		expect(detectCodeOmission(originalWithComment, newContent)).toBe(false)
+	})
+
+	it('should not detect code that happens to contain omission keywords', () => {
+		const newContent = `const remains = 'some value';
+const unchanged = true;`
+		expect(detectCodeOmission(originalContent, newContent)).toBe(false)
+	})
+})

+ 2 - 1
src/integrations/editor/detect-omission.ts

@@ -7,7 +7,7 @@
 export function detectCodeOmission(originalFileContent: string, newFileContent: string): boolean {
 	const originalLines = originalFileContent.split("\n")
 	const newLines = newFileContent.split("\n")
-	const omissionKeywords = ["remain", "remains", "unchanged", "rest", "previous", "existing", "..."]
+	const omissionKeywords = ["remain", "remains", "unchanged", "rest", "previous", "existing", "content", "same", "..."]
 
 	const commentPatterns = [
 		/^\s*\/\//, // Single-line comment for most languages
@@ -15,6 +15,7 @@ export function detectCodeOmission(originalFileContent: string, newFileContent:
 		/^\s*\/\*/, // Multi-line comment opening
 		/^\s*{\s*\/\*/, // JSX comment opening
 		/^\s*<!--/, // HTML comment opening
+		/^\s*\[/, // Square bracket notation
 	]
 
 	for (const line of newLines) {