|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
feat(auth): role management — ancestor completion, CRUD, permission assignment, cascade delete (ADR-0012)
Implements ADR-0005 (backend ancestor completion) and ADR-0012 (role management
architecture) across 5 tracer-bullet tickets:
- ISysMenuService.getAncestorIds: batch query full table, in-memory parentId
traversal, returns complete ancestor set (ADR-0005)
- SysRole.builtin field + DataInitializer idempotent refactor + 5 button
permission seeds (crm:role:list/detail/save/delete/assign) bound to ADMIN
- RoleController (/api/roles/*): page, saveOrUpdate, detail, assign-resources,
delete — pure hasAuthority, POST + action suffix, form params
- SysRoleServiceImpl.saveRole: roleCode uniqueness, builtin protection,
dataScope 1-4 range, create can't set builtin=true
- assignResources: calls getAncestorIds for ancestor completion, then
full replacement (delete + insert) of sys_role_menu
- getRoleDetail: returns RoleDetailVO with basic info + resourceIds
- deleteRoleCascade: cleans sys_role_menu + sys_user_role, builtin rejection,
three-table transaction
- SystemController: all role endpoints removed, unused deps cleaned
- Dead code removed: assignMenus, getMenuIdsByRoleId (superseded by
assignResources, getRoleDetail)
- H2 test schemas updated with builtin column
- 150 tests pass (16 new in SysRoleServiceImplTest, 7 in SysMenuServiceImplTest)
1 month ago
|
|
|
<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="com.crm.file.service.KkFileViewClientTest" time="0.019" tests="3" errors="0" skipped="0" failures="0">
|
|
|
|
|
<properties>
|
|
|
|
|
<property name="java.specification.version" value="17"/>
|
|
|
|
|
<property name="sun.cpu.isalist" value="amd64"/>
|
|
|
|
|
<property name="sun.jnu.encoding" value="GBK"/>
|
|
|
|
|
<property name="java.class.path" value="D:\code\crm-backend-matt\crm-file\target\test-classes;D:\code\crm-backend-matt\crm-file\target\classes;D:\code\crm-backend-matt\crm-base\target\classes;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-web\3.3.5\spring-boot-starter-web-3.3.5.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-json\3.3.5\spring-boot-starter-json-3.3.5.jar;C:\Users\luowj\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.17.2\jackson-datatype-jdk8-2.17.2.jar;C:\Users\luowj\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.17.2\jackson-datatype-jsr310-2.17.2.jar;C:\Users\luowj\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.17.2\jackson-module-parameter-names-2.17.2.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\3.3.5\spring-boot-starter-tomcat-3.3.5.jar;C:\Users\luowj\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\10.1.31\tomcat-embed-core-10.1.31.jar;C:\Users\luowj\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.31\tomcat-embed-websocket-10.1.31.jar;C:\Users\luowj\.m2\repository\org\springframework\spring-web\6.1.14\spring-web-6.1.14.jar;C:\Users\luowj\.m2\repository\org\springframework\spring-webmvc\6.1.14\spring-webmvc-6.1.14.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-validation\3.3.5\spring-boot-starter-validation-3.3.5.jar;C:\Users\luowj\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\10.1.31\tomcat-embed-el-10.1.31.jar;C:\Users\luowj\.m2\repository\org\hibernate\validator\hibernate-validator\8.0.1.Final\hibernate-validator-8.0.1.Final.jar;C:\Users\luowj\.m2\repository\org\jboss\logging\jboss-logging\3.5.3.Final\jboss-logging-3.5.3.Final.jar;C:\Users\luowj\.m2\repository\com\fasterxml\classmate\1.7.0\classmate-1.7.0.jar;C:\Users\luowj\.m2\repository\com\baomidou\mybatis-plus-spring-boot3-starter\3.5.7\mybatis-plus-spring-boot3-starter-3.5.7.jar;C:\Users\luowj\.m2\repository\com\baomidou\mybatis-plus\3.5.7\mybatis-plus-3.5.7.jar;C:\Users\luowj\.m2\repository\com\baomidou\mybatis-plus-core\3.5.7\mybatis-plus-core-3.5.7.jar;C:\Users\luowj\.m2\repository\com\baomidou\mybatis-plus-annotation\3.5.7\mybatis-plus-annotation-3.5.7.jar;C:\Users\luowj\.m2\repository\com\baomidou\mybatis-plus-extension\3.5.7\mybatis-plus-extension-3.5.7.jar;C:\Users\luowj\.m2\repository\org\mybatis\mybatis\3.5.16\mybatis-3.5.16.jar;C:\Users\luowj\.m2\repository\com\github\jsqlparser\jsqlparser\4.9\jsqlparser-4.9.jar;C:\Users\luowj\.m2\repository\org\mybatis\mybatis-spring\3.0.3\mybatis-spring-3.0.3.jar;C:\Users\luowj\.m2\repository\com\baomidou\mybatis-plus-spring-boot-autoconfigure\3.5.7\mybatis-plus-spring-boot-autoconfigure-3.5.7.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\3.3.5\spring-boot-autoconfigure-3.3.5.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\3.3.5\spring-boot-starter-jdbc-3.3.5.jar;C:\Users\luowj\.m2\repository\com\zaxxer\HikariCP\5.1.0\HikariCP-5.1.0.jar;C:\Users\luowj\.m2\repository\org\springframework\spring-jdbc\6.1.14\spring-jdbc-6.1.14.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa\3.3.5\spring-boot-starter-data-jpa-3.3.5.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-aop\3.3.5\spring-boot-starter-aop-3.3.5.jar;C:\Users\luowj\.m2\repository\org\aspectj\aspectjweaver\1.9.22.1\aspectjweaver-1.9.22.1.jar;C:\Users\luowj\.m2\repository\org\hibernate\orm\hibernate-core\6.5.3.Final\hibernate-core-6.5.3.Final.jar;C:\Users\luowj\.m2\repository\jakarta\persistence\jakarta.persistence-api\3.1.0\jakarta.persistence-api-3.1.0.jar;C:\Users\luowj\.m2\repository\jakarta\transaction\jakarta.transaction-api\2.0.1\jakarta.transaction-api-2.0.1.jar;C:\Users\luowj\.m2\repository\org\hibernate\common\hibernate-commons-annotations\6.0.6.Final\hibernate-commons-annotations-6.0.6.Final.jar;C:\Users\luowj\.m2\repository\io\smallrye\jandex\3.1.2
|
|
|
|
|
<property name="java.vm.vendor" value="Oracle Corporation"/>
|
|
|
|
|
<property name="sun.arch.data.model" value="64"/>
|
|
|
|
|
<property name="user.variant" value=""/>
|
|
|
|
|
<property name="java.vendor.url" value="https://java.oracle.com/"/>
|
|
|
|
|
<property name="user.timezone" value="Asia/Shanghai"/>
|
|
|
|
|
<property name="os.name" value="Windows 10"/>
|
|
|
|
|
<property name="java.vm.specification.version" value="17"/>
|
|
|
|
|
<property name="sun.java.launcher" value="SUN_STANDARD"/>
|
|
|
|
|
<property name="user.country" value="CN"/>
|
|
|
|
|
<property name="sun.boot.library.path" value="C:\Users\luowj\.jdks\jdk-17.0.15\bin"/>
|
feat(auth): role management — ancestor completion, CRUD, permission assignment, cascade delete (ADR-0012)
Implements ADR-0005 (backend ancestor completion) and ADR-0012 (role management
architecture) across 5 tracer-bullet tickets:
- ISysMenuService.getAncestorIds: batch query full table, in-memory parentId
traversal, returns complete ancestor set (ADR-0005)
- SysRole.builtin field + DataInitializer idempotent refactor + 5 button
permission seeds (crm:role:list/detail/save/delete/assign) bound to ADMIN
- RoleController (/api/roles/*): page, saveOrUpdate, detail, assign-resources,
delete — pure hasAuthority, POST + action suffix, form params
- SysRoleServiceImpl.saveRole: roleCode uniqueness, builtin protection,
dataScope 1-4 range, create can't set builtin=true
- assignResources: calls getAncestorIds for ancestor completion, then
full replacement (delete + insert) of sys_role_menu
- getRoleDetail: returns RoleDetailVO with basic info + resourceIds
- deleteRoleCascade: cleans sys_role_menu + sys_user_role, builtin rejection,
three-table transaction
- SystemController: all role endpoints removed, unused deps cleaned
- Dead code removed: assignMenus, getMenuIdsByRoleId (superseded by
assignResources, getRoleDetail)
- H2 test schemas updated with builtin column
- 150 tests pass (16 new in SysRoleServiceImplTest, 7 in SysMenuServiceImplTest)
1 month ago
|
|
|
<property name="sun.java.command" value="C:\Users\luowj\AppData\Local\Temp\surefire1710732705807281281\surefirebooter-20260805140501771_6.jar C:\Users\luowj\AppData\Local\Temp\surefire1710732705807281281 2026-08-05T14-04-57_963-jvmRun1 surefire-20260805140501771_4tmp surefire_1-20260805140501771_5tmp"/>
|
|
|
|
|
<property name="jdk.debug" value="release"/>
|
|
|
|
|
<property name="surefire.test.class.path" value="D:\code\crm-backend-matt\crm-file\target\test-classes;D:\code\crm-backend-matt\crm-file\target\classes;D:\code\crm-backend-matt\crm-base\target\classes;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-web\3.3.5\spring-boot-starter-web-3.3.5.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-json\3.3.5\spring-boot-starter-json-3.3.5.jar;C:\Users\luowj\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.17.2\jackson-datatype-jdk8-2.17.2.jar;C:\Users\luowj\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.17.2\jackson-datatype-jsr310-2.17.2.jar;C:\Users\luowj\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.17.2\jackson-module-parameter-names-2.17.2.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\3.3.5\spring-boot-starter-tomcat-3.3.5.jar;C:\Users\luowj\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\10.1.31\tomcat-embed-core-10.1.31.jar;C:\Users\luowj\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.31\tomcat-embed-websocket-10.1.31.jar;C:\Users\luowj\.m2\repository\org\springframework\spring-web\6.1.14\spring-web-6.1.14.jar;C:\Users\luowj\.m2\repository\org\springframework\spring-webmvc\6.1.14\spring-webmvc-6.1.14.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-validation\3.3.5\spring-boot-starter-validation-3.3.5.jar;C:\Users\luowj\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\10.1.31\tomcat-embed-el-10.1.31.jar;C:\Users\luowj\.m2\repository\org\hibernate\validator\hibernate-validator\8.0.1.Final\hibernate-validator-8.0.1.Final.jar;C:\Users\luowj\.m2\repository\org\jboss\logging\jboss-logging\3.5.3.Final\jboss-logging-3.5.3.Final.jar;C:\Users\luowj\.m2\repository\com\fasterxml\classmate\1.7.0\classmate-1.7.0.jar;C:\Users\luowj\.m2\repository\com\baomidou\mybatis-plus-spring-boot3-starter\3.5.7\mybatis-plus-spring-boot3-starter-3.5.7.jar;C:\Users\luowj\.m2\repository\com\baomidou\mybatis-plus\3.5.7\mybatis-plus-3.5.7.jar;C:\Users\luowj\.m2\repository\com\baomidou\mybatis-plus-core\3.5.7\mybatis-plus-core-3.5.7.jar;C:\Users\luowj\.m2\repository\com\baomidou\mybatis-plus-annotation\3.5.7\mybatis-plus-annotation-3.5.7.jar;C:\Users\luowj\.m2\repository\com\baomidou\mybatis-plus-extension\3.5.7\mybatis-plus-extension-3.5.7.jar;C:\Users\luowj\.m2\repository\org\mybatis\mybatis\3.5.16\mybatis-3.5.16.jar;C:\Users\luowj\.m2\repository\com\github\jsqlparser\jsqlparser\4.9\jsqlparser-4.9.jar;C:\Users\luowj\.m2\repository\org\mybatis\mybatis-spring\3.0.3\mybatis-spring-3.0.3.jar;C:\Users\luowj\.m2\repository\com\baomidou\mybatis-plus-spring-boot-autoconfigure\3.5.7\mybatis-plus-spring-boot-autoconfigure-3.5.7.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\3.3.5\spring-boot-autoconfigure-3.3.5.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\3.3.5\spring-boot-starter-jdbc-3.3.5.jar;C:\Users\luowj\.m2\repository\com\zaxxer\HikariCP\5.1.0\HikariCP-5.1.0.jar;C:\Users\luowj\.m2\repository\org\springframework\spring-jdbc\6.1.14\spring-jdbc-6.1.14.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa\3.3.5\spring-boot-starter-data-jpa-3.3.5.jar;C:\Users\luowj\.m2\repository\org\springframework\boot\spring-boot-starter-aop\3.3.5\spring-boot-starter-aop-3.3.5.jar;C:\Users\luowj\.m2\repository\org\aspectj\aspectjweaver\1.9.22.1\aspectjweaver-1.9.22.1.jar;C:\Users\luowj\.m2\repository\org\hibernate\orm\hibernate-core\6.5.3.Final\hibernate-core-6.5.3.Final.jar;C:\Users\luowj\.m2\repository\jakarta\persistence\jakarta.persistence-api\3.1.0\jakarta.persistence-api-3.1.0.jar;C:\Users\luowj\.m2\repository\jakarta\transaction\jakarta.transaction-api\2.0.1\jakarta.transaction-api-2.0.1.jar;C:\Users\luowj\.m2\repository\org\hibernate\common\hibernate-commons-annotations\6.0.6.Final\hibernate-commons-annotations-6.0.6.Final.jar;C:\Users\luowj\.m2\repository\io\smallrye\jan
|
|
|
|
|
<property name="sun.cpu.endian" value="little"/>
|
|
|
|
|
<property name="user.home" value="C:\Users\luowj"/>
|
|
|
|
|
<property name="user.language" value="zh"/>
|
|
|
|
|
<property name="java.specification.vendor" value="Oracle Corporation"/>
|
|
|
|
|
<property name="java.version.date" value="2025-04-15"/>
|
|
|
|
|
<property name="java.home" value="C:\Users\luowj\.jdks\jdk-17.0.15"/>
|
|
|
|
|
<property name="file.separator" value="\"/>
|
|
|
|
|
<property name="basedir" value="D:\code\crm-backend-matt\crm-file"/>
|
|
|
|
|
<property name="java.vm.compressedOopsMode" value="Zero based"/>
|
|
|
|
|
<property name="line.separator" value=" "/>
|
|
|
|
|
<property name="java.vm.specification.vendor" value="Oracle Corporation"/>
|
|
|
|
|
<property name="java.specification.name" value="Java Platform API Specification"/>
|
feat(auth): role management — ancestor completion, CRUD, permission assignment, cascade delete (ADR-0012)
Implements ADR-0005 (backend ancestor completion) and ADR-0012 (role management
architecture) across 5 tracer-bullet tickets:
- ISysMenuService.getAncestorIds: batch query full table, in-memory parentId
traversal, returns complete ancestor set (ADR-0005)
- SysRole.builtin field + DataInitializer idempotent refactor + 5 button
permission seeds (crm:role:list/detail/save/delete/assign) bound to ADMIN
- RoleController (/api/roles/*): page, saveOrUpdate, detail, assign-resources,
delete — pure hasAuthority, POST + action suffix, form params
- SysRoleServiceImpl.saveRole: roleCode uniqueness, builtin protection,
dataScope 1-4 range, create can't set builtin=true
- assignResources: calls getAncestorIds for ancestor completion, then
full replacement (delete + insert) of sys_role_menu
- getRoleDetail: returns RoleDetailVO with basic info + resourceIds
- deleteRoleCascade: cleans sys_role_menu + sys_user_role, builtin rejection,
three-table transaction
- SystemController: all role endpoints removed, unused deps cleaned
- Dead code removed: assignMenus, getMenuIdsByRoleId (superseded by
assignResources, getRoleDetail)
- H2 test schemas updated with builtin column
- 150 tests pass (16 new in SysRoleServiceImplTest, 7 in SysMenuServiceImplTest)
1 month ago
|
|
|
<property name="surefire.real.class.path" value="C:\Users\luowj\AppData\Local\Temp\surefire1710732705807281281\surefirebooter-20260805140501771_6.jar"/>
|
|
|
|
|
<property name="user.script" value=""/>
|
|
|
|
|
<property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
|
|
|
|
|
<property name="java.runtime.version" value="17.0.15+9-LTS-241"/>
|
|
|
|
|
<property name="user.name" value="luowj"/>
|
|
|
|
|
<property name="path.separator" value=";"/>
|
|
|
|
|
<property name="os.version" value="10.0"/>
|
|
|
|
|
<property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
|
|
|
|
|
<property name="file.encoding" value="GBK"/>
|
|
|
|
|
<property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
|
|
|
|
|
<property name="localRepository" value="C:\Users\luowj\.m2\repository"/>
|
|
|
|
|
<property name="java.vendor.url.bug" value="https://bugreport.java.com/bugreport/"/>
|
|
|
|
|
<property name="java.io.tmpdir" value="C:\Users\luowj\AppData\Local\Temp\"/>
|
|
|
|
|
<property name="java.version" value="17.0.15"/>
|
|
|
|
|
<property name="user.dir" value="D:\code\crm-backend-matt\crm-file"/>
|
|
|
|
|
<property name="os.arch" value="amd64"/>
|
|
|
|
|
<property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
|
|
|
|
|
<property name="sun.os.patch.level" value=""/>
|
|
|
|
|
<property name="native.encoding" value="GBK"/>
|
|
|
|
|
<property name="java.library.path" value="C:\Users\luowj\.jdks\jdk-17.0.15\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Python313\Scripts\;C:\Python313\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Pandoc\;C:\Program Files\Git\cmd;C:\Program Files (x86)\NetSarang\Xshell 8\;C:\ProgramData\chocolatey\bin;C:\Program Files (x86)\NetSarang\Xftp 8\;D:\nvm;C:\nvm4w\nodejs;C:\Users\luowj\.jdks\jdk-17.0.15\bin;C:\Users\luowj\Downloads;C:\Program Files\dotnet\;D:\MiKTeX\miktex\bin\x64\;C:\Windows\SysWOW64;C:\Python313\Scripts\;C:\Python313\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Pandoc\;C:\Program Files\Git\cmd;C:\Program Files (x86)\NetSarang\Xshell 8\;C:\ProgramData\chocolatey\bin;C:\Program Files (x86)\NetSarang\Xftp 8\;D:\nvm;C:\nvm4w\nodejs;C:\Users\luowj\.jdks\jdk-17.0.15\bin;C:\Users\luowj\Downloads;C:\Program Files\dotnet\;C:\Users\luowj\.local\bin;C:\Users\luowj\AppData\Local\Microsoft\WindowsApps;D:\Microsoft VS Code\bin;C:\Users\luowj\AppData\Roaming\npm;D:\nvm;C:\nvm4w\nodejs;D:\Warp\bin;C:\Users\luowj\.costrict\bin;C:\Users\luowj\.bun\bin;D:\Qoder\bin;."/>
|
|
|
|
|
<property name="java.vm.info" value="mixed mode, sharing"/>
|
|
|
|
|
<property name="java.vendor" value="Oracle Corporation"/>
|
|
|
|
|
<property name="java.vm.version" value="17.0.15+9-LTS-241"/>
|
|
|
|
|
<property name="java.specification.maintenance.version" value="1"/>
|
|
|
|
|
<property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
|
|
|
|
|
<property name="java.class.version" value="61.0"/>
|
|
|
|
|
</properties>
|
feat(auth): role management — ancestor completion, CRUD, permission assignment, cascade delete (ADR-0012)
Implements ADR-0005 (backend ancestor completion) and ADR-0012 (role management
architecture) across 5 tracer-bullet tickets:
- ISysMenuService.getAncestorIds: batch query full table, in-memory parentId
traversal, returns complete ancestor set (ADR-0005)
- SysRole.builtin field + DataInitializer idempotent refactor + 5 button
permission seeds (crm:role:list/detail/save/delete/assign) bound to ADMIN
- RoleController (/api/roles/*): page, saveOrUpdate, detail, assign-resources,
delete — pure hasAuthority, POST + action suffix, form params
- SysRoleServiceImpl.saveRole: roleCode uniqueness, builtin protection,
dataScope 1-4 range, create can't set builtin=true
- assignResources: calls getAncestorIds for ancestor completion, then
full replacement (delete + insert) of sys_role_menu
- getRoleDetail: returns RoleDetailVO with basic info + resourceIds
- deleteRoleCascade: cleans sys_role_menu + sys_user_role, builtin rejection,
three-table transaction
- SystemController: all role endpoints removed, unused deps cleaned
- Dead code removed: assignMenus, getMenuIdsByRoleId (superseded by
assignResources, getRoleDetail)
- H2 test schemas updated with builtin column
- 150 tests pass (16 new in SysRoleServiceImplTest, 7 in SysMenuServiceImplTest)
1 month ago
|
|
|
<testcase name="buildPreviewUrl_encodesBase64ThenUrlEncode" classname="com.crm.file.service.KkFileViewClientTest" time="0.01"/>
|
|
|
|
|
<testcase name="isAvailable_urlNotConfigured_returnsFalse" classname="com.crm.file.service.KkFileViewClientTest" time="0.006"/>
|
|
|
|
|
<testcase name="buildPreviewUrl_trailingSlashTrimmed" classname="com.crm.file.service.KkFileViewClientTest" time="0.001"/>
|
|
|
|
|
</testsuite>
|