import { RegressionReportResults, LocalResource, CodeRegressionTestEntry, CodeRegressionTestPair, } from "@animaapp/scooby-shared"; import { CodeBatchComparisonEntry } from "../../../../comparison"; import { MatchedSources } from "../../../../matching"; import { CodeSourceEntry } from "../../../../types"; import { convertPathToLocalResource } from "../../../../utils/resource"; import { RegressionCheckResult } from "../../../shared/regression"; export function generateCodeResults( regressions: RegressionCheckResult, matchedSources: MatchedSources ): RegressionReportResults { return { type: "code", new: matchedSources.new.map(convertCodeSourceEntryToReportEntry), removed: matchedSources.removed.map(convertCodeSourceEntryToReportEntry), changed: regressions.changed.map(convertCodeRegressionEntryToReportEntry), unchanged: regressions.unchanged.map( convertCodeRegressionEntryToReportEntry ), }; } function convertCodeSourceEntryToReportEntry( entry: CodeSourceEntry ): CodeRegressionTestEntry { return { type: "code", id: entry.id, groupId: entry.groupId, code: convertPathToLocalResource(entry.path), tags: entry.tags, path: entry.relativePath, metadata: entry.metadata, }; } function convertCodeRegressionEntryToReportEntry( entry: CodeBatchComparisonEntry ): CodeRegressionTestPair { return { type: "code", actual: convertCodeSourceEntryToReportEntry(entry.actual), expected: convertCodeSourceEntryToReportEntry(entry.expected), comparison: { type: "code", similarity: entry.comparison.similarity, ...(entry.comparison.differenceFilePath && { diff: convertPathToLocalResource(entry.comparison.differenceFilePath), }), }, }; } export function convertCodeSourceToMainBranchReportEntry( entry: CodeSourceEntry ): CodeRegressionTestPair { return { type: "code", actual: convertCodeSourceEntryToReportEntry(entry), expected: convertCodeSourceEntryToReportEntry(entry), comparison: { type: "code", similarity: 1, }, }; }