#!/usr/bin/env php revision = '12345'; $log1->files = array('M' => array('/src/model.php')); // 测试数据2:Git多种操作类型 $log2 = new stdclass(); $log2->revision = 'abc123def456'; $log2->files = array( 'A' => array('/new/file.php'), 'M' => array('/modified/file.js'), 'D' => array('/deleted/old.css') ); // 测试数据3:空文件列表 $log3 = new stdclass(); $log3->revision = 'empty123'; $log3->files = array(); // 测试数据4:无效SCM类型 $log4 = new stdclass(); $log4->revision = 'invalid456'; $log4->files = array('M' => array('/test/file.php')); // 测试数据5:对比SVN和Git $log5 = new stdclass(); $log5->revision = 'compare789'; $log5->files = array('A' => array('/new/compare.php')); // 测试数据6:null文件列表(边界值) $log6 = new stdclass(); $log6->revision = 'boundary123'; // 不设置files属性,模拟null情况 // 测试数据7:验证M操作的diff链接 $log7 = new stdclass(); $log7->revision = 'difftest999'; $log7->files = array('M' => array('/test/diff.php')); r($repo->createActionChangesTest($log1, '/repo/root/', 'svn')) && p('0:field') && e('subversion'); // 测试步骤1:SVN单个文件修改 r($repo->createActionChangesTest($log2, '/repo/root/', 'git')) && p('0:field') && e('git'); // 测试步骤2:Git多种操作类型 r($repo->createActionChangesTest($log3, '/repo/root/', 'git')) && p() && e('0'); // 测试步骤3:空文件变更 r($repo->createActionChangesTest($log4, '/repo/root/', 'invalidscm')) && p('0:field') && e('git'); // 测试步骤4:无效SCM类型 r($repo->createActionChangesTest($log5, '/repo/root/', 'svn')) && p('0:field') && e('subversion'); // 测试步骤5:SVN处理A操作 r($repo->createActionChangesTest($log6, '/repo/root/', 'git')) && p() && e('0'); // 测试步骤6:边界值null文件列表 r($repo->createActionChangesTest($log7, '/repo/root/', 'git')) && p('0:field') && e('git'); // 测试步骤7:验证Git类型返回