diff options
author | CoprDistGit <infra@openeuler.org> | 2023-06-20 03:39:43 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-06-20 03:39:43 +0000 |
commit | a32dc820d1daad04d605f6eb75e086aa8171fc81 (patch) | |
tree | f2e735c0d0e7a36a1c552ee9d08111733885f1cb | |
parent | 2a26d1a15287c5571c5bc43440a8326b72ca3d63 (diff) |
automatic import of python-swg2pytopeneuler20.03
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-swg2pyt.spec | 696 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 698 insertions, 0 deletions
@@ -0,0 +1 @@ +/swg2pyt-0.2.9.tar.gz diff --git a/python-swg2pyt.spec b/python-swg2pyt.spec new file mode 100644 index 0000000..4f0b0f4 --- /dev/null +++ b/python-swg2pyt.spec @@ -0,0 +1,696 @@ +%global _empty_manifest_terminate_build 0 +Name: python-swg2pyt +Version: 0.2.9 +Release: 1 +Summary: A helper generate swagger_client code to pytest format +License: Freeware +URL: https://pypi.org/project/swg2pyt/ +Source0: https://mirrors.aliyun.com/pypi/web/packages/cf/02/d7aabced5ce49fb3d44086c09d95e38f77cb6488029c90a6b6d040b02975/swg2pyt-0.2.9.tar.gz +BuildArch: noarch + + +%description +# swg2pyt +### 代码准备 +* 新建文件夹 + +* 安装模块 python -m pip install swg2pyt + +* 生成swagger_client(路径分隔符有需要自行更正) + ``` + java -jar .\swagger-codegen-cli.jar generate -i .\practice.json -l python -o .\practice_interface + ``` + 记住这个 practice_interface 文件夹 + +* 新建测试用例文件夹 practice_case + + 并在 practice_case 下,创建如下结构的文件夹和xmind文件: + ``` + xxx/xxx_data/xxx.xmind + ``` + example: + ``` + practice/practice_data/practice.xmind + ``` + +* 假设现在xmind中已有有效用例 + ``` + from swg2pyt.ClassGenerator import ClassGenerator + + cg=ClassGenerator("practice_interface","practice_case") + cg.generate() + ``` + 将生成如下:\ + practice_case/auto/\ + ├──test_xxx.py\ + ├──marks\ + 同时会在xmind所在位置生成同名的 case.json ,建议只上传json至git + +### xmind基本结构 + +函数名->请求类型和地址->TestCase->具体用例 + +其中: +- 函数名\ +生成的swaggerapi中的真正函数名最短的那个,如practice_interface\\swagger_client\\api\ +文件夹下practice_api.py中,定义有如下函数: + ``` + def practice_using_post(): + 和 + def practice_using_post_with_http_info(): + ``` + 则函数名为 practice_using_post + +- 请求类型和地址\ +可于文档或代码中查找到:此处为\ + POST /return_as_is + +- TestCase\ +用例汇聚节点 + +### 用例结构 +* 用例的最丰富组成结构为 + ``` + |-请求体 + |-其他入参 + |-描述 + 用例名 |-预置条件 + |-断言 + |-mark + |-order + ``` +* 请求体:最常见的情况是大部分接口请求参数(GET请求的query param,POST请求的body)被打包为param,且位于函数入参首位,这部分参数放入请求体 + +* 其他入参: 除请求体外直接出现在函数签名中的接口其他请求参数(可能用于header,url部分),这部分参数放入其他入参 + +* 预置条件:用于处理除自身外其他结构的数据,以及决定大部分测试框架行为 + +* 描述:功能无关的描述信息,生成test_xxx.py时,用作函数注释 + +* 断言:决定测试用例是否通过,以及重试次数 + +* mark用于标记用例,功能由pytest实现,只是可以写在这 + +* order用于改变用例执行顺序,但优先级低于预置条件中的precase和fromcase函数 + +### 用例基本执行流程 +* 开始 +* 由xmind 生成json(从这一步开始数据将从json中读取) +* 生成test_xxx.py(在测试用例文件夹下auto文件夹) +* pytest读取上一步生成的py,按mark collect用例 +* 在pytest 完成collect用例后,按order重新排序用例 +* (pytest执行用例期间)执行前置请求->预处理用例->发起请求->按设定次数重试 +* pytest收尾 +* 结束 + +### 预置条件主要作用 +* 决定用例使用哪些fixture +* 改变请求体或其他入参,实现大部分动态数据功能,明面上或间接影响用例行为(主要是执行顺序),实现位于 Pretreator.py + +### 断言主要作用 +* 对用例返回的header,body和status做断言,实现位于 Asserter.py +* 当出现断言失败时,决定重试次数 + +### order主要作用 +* 在用例中添加order并输入一个整数,可以变更用例执行顺序。默认的用例order为0(可以不写)。如果需要测试用例提前执行,填一个正数,如果需要测试用例延缓执行,则填一个负数,最终测试用例会按order从大到小的顺序执行,order相同的用例执行顺序暂不清楚,默认值的用例执行顺序可以参考它们在 test_xxx.py 中从上到下出现的顺序 + +### mark主要作用 +* mark没有特别功能,pytest做什么,mark就做什么 + +### 框架主要作用 +* 全自动读取测试用例,生成测试数据,执行 +* 分离代码和测试数据 +* 生成pytest可以识别的标准格式的test_*.py,使测试用例更易写易读易管理 + +### 预处理如何使用及常用函数介绍 + +* 预处理为一个字典,其中\ + 顶级key为预处理范围,如请求体、其他入参、或断言\ + 在顶级key的value(也是一个字典)中,次级key按xxx.yyy.zzz的格式选择将要处理的对象,次级value选择处理函数,例如 + ``` + 请求体 + —————————————— + { + "xxx":{ + "yyy":{ + "zzz":"Hello world" + } + } + } + + 预置条件 + —————————————— + { + "请求体":{ + "xxx.yyy.zzz":{ + "replace":[ + "world","pytest" + ] + } + } + } + ``` +* 预置条件将用replace函数处理请求体中的xxx.yyy.zzz的值\ +* 其中replace预处理函数接受一个或两个入参(放在列表中)\ +* 当仅有一个入参时,整个xxx.yyy.zzz会被这个入参完全替换\ +* 当有两个入参时,则效果参考python标准库函数的replace\ +* 这个预置条件顺利执行后,会将请求体的xxx.yyy.zzz的值替换为Hello pytest\ +* 预处理函数的入参,即列表中的项还可以是其他预处理函数(字典),以实现更复杂的预处理\ +* 常用预处理函数功能介绍(具体入参见代码): + + - len 获取某个对象的长度,当对象为: + - 字符串:获取字符串长度 + - 列表:获取列表个数 + - 字典:获取字典key的个数 + - toint:把字符串转换为整数 + - tofloat:把字符串转换为浮点数 + - tostr:把任何python支持的对象转换为str + - range:返回一个标准range的列表 + - base64:返回一个字符串或文件内容的base64encode结果 + - tolist:将入参组合成一个列表并返回 + - todict:以入参奇数位为key,偶数位为value,返回一个字典 + - fixture:对于有返回值的fixture,从fixture处取值 + - replace:替换目标的全部或部分文本 + - precase:在执行当前用例之前,强行先执行列出的用例 + - fromcase:从目标用例处获取用例执行完成后的各来源值 + - timestamp:返回一个秒级(int)或毫秒级(float)时间戳 + - parametrize:使用了这个预处理函数的入参,入参列表有几个,该用例就会执行几次(与pytest无关),如果一个用例中有多个该预处理函数,则多个预处理函数并行,最终执行次数取决于入参列表最长的那个,不够长度的,取末尾值 + +### 断言如何使用 +* 与预置条件类似,也是用keypath决定取值,但headers只需要一次key,status当前只返回status code\ + ``` + response + ———————————————— + status_code:200 + headers:{"Connection:keep-alive"} + body: + { + "xxx":{ + "yyy":{ + "zzz":"Success" + } + } + } + + 断言 + ———————————————— + { + "headers":{ + "Connection":{ + "eq":"keep-alive" + } + }, + "body":{ + "xxx.yyy.zzz":{ + "eq":"Success"` + } + }, + "status":{"eq":200}, + "retry":3 + } + ``` +* 可以使用的断言函数在 Asserter.py 中查看\ +* 断言可以有多个,但整体用例断言结果为所有小断言的与值\ +* 重试(retry)会在任意一个小断言失败时触发,效果为重新发起请求及再次尝试断言,断言失败继续重试,成功则通过用例。\ +* 重试次数默认为1(不重试) + +### 给框架加功能 +* 实现简单的预处理和断言拓展,可以分别在 Pretreator.py 和 Asserer.py 中添加函数并“注册”到prtdict或astdict中,复杂的拓展可以配合修改 ClassGenerator.py , Executor.py , CaseCollector.py 实现 +* 添加更多fixture,可以在 conftest.py 中添加函数并使用Pytest.fixture装饰器 +* 想要改变pytest的行为,可以在 conftest.py 中添加“钩子函数”,或在预处理/断言代码中调用pytest函数 + + +%package -n python3-swg2pyt +Summary: A helper generate swagger_client code to pytest format +Provides: python-swg2pyt +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-swg2pyt +# swg2pyt +### 代码准备 +* 新建文件夹 + +* 安装模块 python -m pip install swg2pyt + +* 生成swagger_client(路径分隔符有需要自行更正) + ``` + java -jar .\swagger-codegen-cli.jar generate -i .\practice.json -l python -o .\practice_interface + ``` + 记住这个 practice_interface 文件夹 + +* 新建测试用例文件夹 practice_case + + 并在 practice_case 下,创建如下结构的文件夹和xmind文件: + ``` + xxx/xxx_data/xxx.xmind + ``` + example: + ``` + practice/practice_data/practice.xmind + ``` + +* 假设现在xmind中已有有效用例 + ``` + from swg2pyt.ClassGenerator import ClassGenerator + + cg=ClassGenerator("practice_interface","practice_case") + cg.generate() + ``` + 将生成如下:\ + practice_case/auto/\ + ├──test_xxx.py\ + ├──marks\ + 同时会在xmind所在位置生成同名的 case.json ,建议只上传json至git + +### xmind基本结构 + +函数名->请求类型和地址->TestCase->具体用例 + +其中: +- 函数名\ +生成的swaggerapi中的真正函数名最短的那个,如practice_interface\\swagger_client\\api\ +文件夹下practice_api.py中,定义有如下函数: + ``` + def practice_using_post(): + 和 + def practice_using_post_with_http_info(): + ``` + 则函数名为 practice_using_post + +- 请求类型和地址\ +可于文档或代码中查找到:此处为\ + POST /return_as_is + +- TestCase\ +用例汇聚节点 + +### 用例结构 +* 用例的最丰富组成结构为 + ``` + |-请求体 + |-其他入参 + |-描述 + 用例名 |-预置条件 + |-断言 + |-mark + |-order + ``` +* 请求体:最常见的情况是大部分接口请求参数(GET请求的query param,POST请求的body)被打包为param,且位于函数入参首位,这部分参数放入请求体 + +* 其他入参: 除请求体外直接出现在函数签名中的接口其他请求参数(可能用于header,url部分),这部分参数放入其他入参 + +* 预置条件:用于处理除自身外其他结构的数据,以及决定大部分测试框架行为 + +* 描述:功能无关的描述信息,生成test_xxx.py时,用作函数注释 + +* 断言:决定测试用例是否通过,以及重试次数 + +* mark用于标记用例,功能由pytest实现,只是可以写在这 + +* order用于改变用例执行顺序,但优先级低于预置条件中的precase和fromcase函数 + +### 用例基本执行流程 +* 开始 +* 由xmind 生成json(从这一步开始数据将从json中读取) +* 生成test_xxx.py(在测试用例文件夹下auto文件夹) +* pytest读取上一步生成的py,按mark collect用例 +* 在pytest 完成collect用例后,按order重新排序用例 +* (pytest执行用例期间)执行前置请求->预处理用例->发起请求->按设定次数重试 +* pytest收尾 +* 结束 + +### 预置条件主要作用 +* 决定用例使用哪些fixture +* 改变请求体或其他入参,实现大部分动态数据功能,明面上或间接影响用例行为(主要是执行顺序),实现位于 Pretreator.py + +### 断言主要作用 +* 对用例返回的header,body和status做断言,实现位于 Asserter.py +* 当出现断言失败时,决定重试次数 + +### order主要作用 +* 在用例中添加order并输入一个整数,可以变更用例执行顺序。默认的用例order为0(可以不写)。如果需要测试用例提前执行,填一个正数,如果需要测试用例延缓执行,则填一个负数,最终测试用例会按order从大到小的顺序执行,order相同的用例执行顺序暂不清楚,默认值的用例执行顺序可以参考它们在 test_xxx.py 中从上到下出现的顺序 + +### mark主要作用 +* mark没有特别功能,pytest做什么,mark就做什么 + +### 框架主要作用 +* 全自动读取测试用例,生成测试数据,执行 +* 分离代码和测试数据 +* 生成pytest可以识别的标准格式的test_*.py,使测试用例更易写易读易管理 + +### 预处理如何使用及常用函数介绍 + +* 预处理为一个字典,其中\ + 顶级key为预处理范围,如请求体、其他入参、或断言\ + 在顶级key的value(也是一个字典)中,次级key按xxx.yyy.zzz的格式选择将要处理的对象,次级value选择处理函数,例如 + ``` + 请求体 + —————————————— + { + "xxx":{ + "yyy":{ + "zzz":"Hello world" + } + } + } + + 预置条件 + —————————————— + { + "请求体":{ + "xxx.yyy.zzz":{ + "replace":[ + "world","pytest" + ] + } + } + } + ``` +* 预置条件将用replace函数处理请求体中的xxx.yyy.zzz的值\ +* 其中replace预处理函数接受一个或两个入参(放在列表中)\ +* 当仅有一个入参时,整个xxx.yyy.zzz会被这个入参完全替换\ +* 当有两个入参时,则效果参考python标准库函数的replace\ +* 这个预置条件顺利执行后,会将请求体的xxx.yyy.zzz的值替换为Hello pytest\ +* 预处理函数的入参,即列表中的项还可以是其他预处理函数(字典),以实现更复杂的预处理\ +* 常用预处理函数功能介绍(具体入参见代码): + + - len 获取某个对象的长度,当对象为: + - 字符串:获取字符串长度 + - 列表:获取列表个数 + - 字典:获取字典key的个数 + - toint:把字符串转换为整数 + - tofloat:把字符串转换为浮点数 + - tostr:把任何python支持的对象转换为str + - range:返回一个标准range的列表 + - base64:返回一个字符串或文件内容的base64encode结果 + - tolist:将入参组合成一个列表并返回 + - todict:以入参奇数位为key,偶数位为value,返回一个字典 + - fixture:对于有返回值的fixture,从fixture处取值 + - replace:替换目标的全部或部分文本 + - precase:在执行当前用例之前,强行先执行列出的用例 + - fromcase:从目标用例处获取用例执行完成后的各来源值 + - timestamp:返回一个秒级(int)或毫秒级(float)时间戳 + - parametrize:使用了这个预处理函数的入参,入参列表有几个,该用例就会执行几次(与pytest无关),如果一个用例中有多个该预处理函数,则多个预处理函数并行,最终执行次数取决于入参列表最长的那个,不够长度的,取末尾值 + +### 断言如何使用 +* 与预置条件类似,也是用keypath决定取值,但headers只需要一次key,status当前只返回status code\ + ``` + response + ———————————————— + status_code:200 + headers:{"Connection:keep-alive"} + body: + { + "xxx":{ + "yyy":{ + "zzz":"Success" + } + } + } + + 断言 + ———————————————— + { + "headers":{ + "Connection":{ + "eq":"keep-alive" + } + }, + "body":{ + "xxx.yyy.zzz":{ + "eq":"Success"` + } + }, + "status":{"eq":200}, + "retry":3 + } + ``` +* 可以使用的断言函数在 Asserter.py 中查看\ +* 断言可以有多个,但整体用例断言结果为所有小断言的与值\ +* 重试(retry)会在任意一个小断言失败时触发,效果为重新发起请求及再次尝试断言,断言失败继续重试,成功则通过用例。\ +* 重试次数默认为1(不重试) + +### 给框架加功能 +* 实现简单的预处理和断言拓展,可以分别在 Pretreator.py 和 Asserer.py 中添加函数并“注册”到prtdict或astdict中,复杂的拓展可以配合修改 ClassGenerator.py , Executor.py , CaseCollector.py 实现 +* 添加更多fixture,可以在 conftest.py 中添加函数并使用Pytest.fixture装饰器 +* 想要改变pytest的行为,可以在 conftest.py 中添加“钩子函数”,或在预处理/断言代码中调用pytest函数 + + +%package help +Summary: Development documents and examples for swg2pyt +Provides: python3-swg2pyt-doc +%description help +# swg2pyt +### 代码准备 +* 新建文件夹 + +* 安装模块 python -m pip install swg2pyt + +* 生成swagger_client(路径分隔符有需要自行更正) + ``` + java -jar .\swagger-codegen-cli.jar generate -i .\practice.json -l python -o .\practice_interface + ``` + 记住这个 practice_interface 文件夹 + +* 新建测试用例文件夹 practice_case + + 并在 practice_case 下,创建如下结构的文件夹和xmind文件: + ``` + xxx/xxx_data/xxx.xmind + ``` + example: + ``` + practice/practice_data/practice.xmind + ``` + +* 假设现在xmind中已有有效用例 + ``` + from swg2pyt.ClassGenerator import ClassGenerator + + cg=ClassGenerator("practice_interface","practice_case") + cg.generate() + ``` + 将生成如下:\ + practice_case/auto/\ + ├──test_xxx.py\ + ├──marks\ + 同时会在xmind所在位置生成同名的 case.json ,建议只上传json至git + +### xmind基本结构 + +函数名->请求类型和地址->TestCase->具体用例 + +其中: +- 函数名\ +生成的swaggerapi中的真正函数名最短的那个,如practice_interface\\swagger_client\\api\ +文件夹下practice_api.py中,定义有如下函数: + ``` + def practice_using_post(): + 和 + def practice_using_post_with_http_info(): + ``` + 则函数名为 practice_using_post + +- 请求类型和地址\ +可于文档或代码中查找到:此处为\ + POST /return_as_is + +- TestCase\ +用例汇聚节点 + +### 用例结构 +* 用例的最丰富组成结构为 + ``` + |-请求体 + |-其他入参 + |-描述 + 用例名 |-预置条件 + |-断言 + |-mark + |-order + ``` +* 请求体:最常见的情况是大部分接口请求参数(GET请求的query param,POST请求的body)被打包为param,且位于函数入参首位,这部分参数放入请求体 + +* 其他入参: 除请求体外直接出现在函数签名中的接口其他请求参数(可能用于header,url部分),这部分参数放入其他入参 + +* 预置条件:用于处理除自身外其他结构的数据,以及决定大部分测试框架行为 + +* 描述:功能无关的描述信息,生成test_xxx.py时,用作函数注释 + +* 断言:决定测试用例是否通过,以及重试次数 + +* mark用于标记用例,功能由pytest实现,只是可以写在这 + +* order用于改变用例执行顺序,但优先级低于预置条件中的precase和fromcase函数 + +### 用例基本执行流程 +* 开始 +* 由xmind 生成json(从这一步开始数据将从json中读取) +* 生成test_xxx.py(在测试用例文件夹下auto文件夹) +* pytest读取上一步生成的py,按mark collect用例 +* 在pytest 完成collect用例后,按order重新排序用例 +* (pytest执行用例期间)执行前置请求->预处理用例->发起请求->按设定次数重试 +* pytest收尾 +* 结束 + +### 预置条件主要作用 +* 决定用例使用哪些fixture +* 改变请求体或其他入参,实现大部分动态数据功能,明面上或间接影响用例行为(主要是执行顺序),实现位于 Pretreator.py + +### 断言主要作用 +* 对用例返回的header,body和status做断言,实现位于 Asserter.py +* 当出现断言失败时,决定重试次数 + +### order主要作用 +* 在用例中添加order并输入一个整数,可以变更用例执行顺序。默认的用例order为0(可以不写)。如果需要测试用例提前执行,填一个正数,如果需要测试用例延缓执行,则填一个负数,最终测试用例会按order从大到小的顺序执行,order相同的用例执行顺序暂不清楚,默认值的用例执行顺序可以参考它们在 test_xxx.py 中从上到下出现的顺序 + +### mark主要作用 +* mark没有特别功能,pytest做什么,mark就做什么 + +### 框架主要作用 +* 全自动读取测试用例,生成测试数据,执行 +* 分离代码和测试数据 +* 生成pytest可以识别的标准格式的test_*.py,使测试用例更易写易读易管理 + +### 预处理如何使用及常用函数介绍 + +* 预处理为一个字典,其中\ + 顶级key为预处理范围,如请求体、其他入参、或断言\ + 在顶级key的value(也是一个字典)中,次级key按xxx.yyy.zzz的格式选择将要处理的对象,次级value选择处理函数,例如 + ``` + 请求体 + —————————————— + { + "xxx":{ + "yyy":{ + "zzz":"Hello world" + } + } + } + + 预置条件 + —————————————— + { + "请求体":{ + "xxx.yyy.zzz":{ + "replace":[ + "world","pytest" + ] + } + } + } + ``` +* 预置条件将用replace函数处理请求体中的xxx.yyy.zzz的值\ +* 其中replace预处理函数接受一个或两个入参(放在列表中)\ +* 当仅有一个入参时,整个xxx.yyy.zzz会被这个入参完全替换\ +* 当有两个入参时,则效果参考python标准库函数的replace\ +* 这个预置条件顺利执行后,会将请求体的xxx.yyy.zzz的值替换为Hello pytest\ +* 预处理函数的入参,即列表中的项还可以是其他预处理函数(字典),以实现更复杂的预处理\ +* 常用预处理函数功能介绍(具体入参见代码): + + - len 获取某个对象的长度,当对象为: + - 字符串:获取字符串长度 + - 列表:获取列表个数 + - 字典:获取字典key的个数 + - toint:把字符串转换为整数 + - tofloat:把字符串转换为浮点数 + - tostr:把任何python支持的对象转换为str + - range:返回一个标准range的列表 + - base64:返回一个字符串或文件内容的base64encode结果 + - tolist:将入参组合成一个列表并返回 + - todict:以入参奇数位为key,偶数位为value,返回一个字典 + - fixture:对于有返回值的fixture,从fixture处取值 + - replace:替换目标的全部或部分文本 + - precase:在执行当前用例之前,强行先执行列出的用例 + - fromcase:从目标用例处获取用例执行完成后的各来源值 + - timestamp:返回一个秒级(int)或毫秒级(float)时间戳 + - parametrize:使用了这个预处理函数的入参,入参列表有几个,该用例就会执行几次(与pytest无关),如果一个用例中有多个该预处理函数,则多个预处理函数并行,最终执行次数取决于入参列表最长的那个,不够长度的,取末尾值 + +### 断言如何使用 +* 与预置条件类似,也是用keypath决定取值,但headers只需要一次key,status当前只返回status code\ + ``` + response + ———————————————— + status_code:200 + headers:{"Connection:keep-alive"} + body: + { + "xxx":{ + "yyy":{ + "zzz":"Success" + } + } + } + + 断言 + ———————————————— + { + "headers":{ + "Connection":{ + "eq":"keep-alive" + } + }, + "body":{ + "xxx.yyy.zzz":{ + "eq":"Success"` + } + }, + "status":{"eq":200}, + "retry":3 + } + ``` +* 可以使用的断言函数在 Asserter.py 中查看\ +* 断言可以有多个,但整体用例断言结果为所有小断言的与值\ +* 重试(retry)会在任意一个小断言失败时触发,效果为重新发起请求及再次尝试断言,断言失败继续重试,成功则通过用例。\ +* 重试次数默认为1(不重试) + +### 给框架加功能 +* 实现简单的预处理和断言拓展,可以分别在 Pretreator.py 和 Asserer.py 中添加函数并“注册”到prtdict或astdict中,复杂的拓展可以配合修改 ClassGenerator.py , Executor.py , CaseCollector.py 实现 +* 添加更多fixture,可以在 conftest.py 中添加函数并使用Pytest.fixture装饰器 +* 想要改变pytest的行为,可以在 conftest.py 中添加“钩子函数”,或在预处理/断言代码中调用pytest函数 + + +%prep +%autosetup -n swg2pyt-0.2.9 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-swg2pyt -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.2.9-1 +- Package Spec generated @@ -0,0 +1 @@ +3811fced448a66e0f0ce0db74057c950 swg2pyt-0.2.9.tar.gz |