summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-15 03:51:21 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-15 03:51:21 +0000
commit930408f4b36308e04d47a6817edc7e92828fd645 (patch)
treeb361211b22820a5326d229f21de6318b1f886a9b
parented3e5db6cab759ba9dc14d22f88d1a58fb6e6ab4 (diff)
automatic import of python-reqman
-rw-r--r--.gitignore1
-rw-r--r--python-reqman.spec733
-rw-r--r--sources1
3 files changed, 735 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..9c3135d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/reqman-3.0.4.tar.gz
diff --git a/python-reqman.spec b/python-reqman.spec
new file mode 100644
index 0000000..b4f8f6d
--- /dev/null
+++ b/python-reqman.spec
@@ -0,0 +1,733 @@
+%global _empty_manifest_terminate_build 0
+Name: python-reqman
+Version: 3.0.4
+Release: 1
+Summary: Create your http(s)-tests in simple yaml files, and run them with command line, against various environments
+License: GNU General Public License v2 (GPLv2)
+URL: https://github.com/manatlan/reqman
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/a1/86/0ad7a407bf7656aaedd7a482b140a8cb8322a291fa55cb090566fa7f83a5/reqman-3.0.4.tar.gz
+BuildArch: noarch
+
+Requires: python3-aiohttp
+Requires: python3-colorama
+Requires: python3-junit-xml
+Requires: python3-py-dom-xpath-six
+Requires: python3-pyjwt
+Requires: python3-pyyaml
+Requires: python3-stpl
+
+%description
+# reqman (3.X)
+Reqman is a postman killer ;-)
+
+**Reqman** is a [postman](https://www.getpostman.com/) killer. It shares the same goal, but without GUI ... the GUI is simply your favorite text editor, because requests/tests are only simple yaml files. **Reqman** is a command line tool, available on any platforms.
+
+[Video (1minute)](https://www.youtube.com/embed/ToK-5VwxhP4?autoplay=1&loop=1&playlist=ToK-5VwxhP4&cc_load_policy=1)
+
+All configurations is done via simple yaml files, editable with any text editors. Results are displayed in console and in an html output. It's scriptable, and can be used as a daemon/cron task to automate your tests.
+
+[Documentation](https://reqman-docs.glitch.me/)
+
+[Changelog](https://github.com/manatlan/reqman/blob/master/changelog) !
+
+[Online tool to convert swagger/openapi3, OR postman collections](https://reqman-tools.glitch.me/) to reqman's tests
+
+[DEMO](https://test-reqman.glitch.me)
+
+
+**Features**
+ * Light (simple py3 module, 3000 lines of code, and x3 lines for unittests, in TDD mind ... cov:97%)
+ * Powerful (at least as postman free version)
+ * tests are simple (no code !)
+ * Variable pool
+ * can create(save)/re-use variables per request
+ * "procedures" (declarations & re-use/call), local or global
+ * Environment aware (switch easily)
+ * https/ssl ok (bypass)
+ * http 1.0, 1.1, 2.0
+ * proxy support (thru a reqman.conf var "proxy")
+ * headers inherits
+ * ~~tests inherits~~
+ * ~~timed requests + average times~~
+ * html tests renderer (with request/response contents)
+ * encoding aware
+ * cookie handling
+ * color output in console (when [colorama](https://pypi.org/project/colorama/) is present)
+ * variables can be computed/transformed (in a chain way)
+ * tests files extension : .yml or .rml (ReqManLanguage)
+ * generate conf/rml (with 'new' command)
+ * can paralleliz tests (option `--p`)
+ * versionning
+ * NEW 2.0 :
+ * rewrite from scratch, a lot stronger & speeder !
+ * advanced save mechanisms
+ * new switches system
+ * a lot of new options (auto open browser, set html filename, compare, ...)
+ * ability to save the state, to compare with newer ones
+ * ability to replay given tests (rmr file)
+ * dual mode : compare switches vs others switches (-env1 +env2) in html output
+ * shebang mode
+ * better html output
+ * fully compatible with reqman1 conf/ymls
+ * xml/xpath support tests
+ * used as a lib/module, you can add easily your own features (see below)
+ * NEW 3.0 : (simple py file -> real python module (multiple files))
+ * full rewrite of resolving mechanism (more robust, more maintanable) (the big improvment)
+ - "wait:" commands (time expressed in ms)
+ * "ignorable vars" (avoid ResolveException, with `<<var?>>`)
+ * --f option : to output full exchanges in html output
+ * --j && --j:file.xml : to output junit-xml file
+
+**TODO** : need to rewrite this ^^ ;-)
+
+## Getting started : installation
+
+If you are on an *nix platform, you can start with pip :
+
+ $ pip3 install reqman
+
+it will install the _reqman_ script in your path (perhaps, you'll need to Add the path `~/.local/bin` to the _PATH_ environment variable.)
+
+If you are on microsoft windows, just download [reqman.exe (v3)](https://github.com/manatlan/reqman/blob/master/dist/reqman.exe).
+ [The old reqman.exe V2, is still there](https://github.com/manatlan/reqman/blob/ac7d96319bf53e08f5a01ff55c54ef820e839fa6/dist/reqman.exe), and add it in your path.
+ [The old reqman.exe V1, is still there](https://github.com/manatlan/reqman/blob/reqman1.4.4.0/dist/reqman.exe), and add it in your path.
+
+
+## Getting started : let's go
+
+Imagine that you want to test the [json api from pypi.org](https://wiki.python.org/moin/PyPIJSON), to verify that [it finds me](https://pypi.org/pypi/reqman/json) ;-)
+(if you are on windows, just replace `reqman` with `reqman.exe`)
+
+You can start a new project in your folder, like that:
+
+ $ reqman new https://pypi.org/pypi/reqman/json
+
+It's the first start ; it will create a conf file _reqman.conf_ and a (basic) test file _0010_test.rml_. Theses files are [YAML](https://en.wikipedia.org/wiki/YAML), so ensure that your editor understand them !
+(Following 'new' command will just create another fresh rml file if a _reqman.conf_ exists)
+
+Now, you can run/test it :
+
+ $ reqman .
+
+It will scan your folder "." and run all test files (`*.rml` or `*.yml`) against the _reqman.conf_ ;-)
+
+It will show you what's happened in your console. And generate a `reqman.html` with more details (open it to have an idea)!
+
+If you edit the `reqman.conf`, you will see :
+
+```yaml
+root: https://pypi.org
+headers:
+ User-Agent: reqman (https://github.com/manatlan/reqman)
+```
+
+the **root** is a `special var` which will be prependded to all relative urls in your requests tests.
+the **headers** (which is a `special var` too) is a set of `http headers` which will be added to all your requests.
+
+Change it to, and save it :
+
+```yaml
+root: https://pypi.org
+headers:
+ User-Agent: reqman (https://github.com/manatlan/reqman)
+
+switches:
+ test:
+ root: https://test.pypi.org
+```
+
+Now, you have created your first _switch_. And try to run your tests like this:
+
+ $ reqman.py . -test
+
+It will run your tests against the _root_ defined in _test_ section ; and the test is KO, because _reqman_ doesn't exist on test.pypi.org !
+In fact; all declared things under _test_ will replace those at the top ! So you can declare multiple environments, with multiple switches !
+
+But you can declare what you want, now edit _reqman.conf_ like this :
+
+```yaml
+root: https://pypi.org
+headers:
+ User-Agent: reqman (https://github.com/manatlan/reqman)
+
+package: reqman
+
+switches:
+ test:
+ root: https://test.pypi.org
+```
+
+You have declared a _var_ **package** ! let's edit the test file _0010_test.rml_ like this :
+
+```yaml
+- GET: /pypi/<<package>>/json
+ tests:
+ - status: 200
+```
+
+Now, your test will use the **package** var which was declared in _reqman.conf_ ! So, you can create a _switch_ to change the package thru the command line, simply edit your _reqman.conf_ like that :
+
+```yaml
+root: https://pypi.org
+headers:
+ User-Agent: reqman (https://github.com/manatlan/reqman)
+
+package: reqman
+
+switches:
+ test:
+ root: https://test.pypi.org
+
+ colorama:
+ package: colorama
+```
+
+Now, you can check that 'colorama' exists on pypi.org, like that :
+
+ $ reqman . -colorama
+
+And you can check that 'colorama' exists on test.pypi.org, like that :
+
+ $ reqman . -colorama -test
+
+As you can imagine, it's possible to make a lot of fun things easily. (see a more complex [reqman.conf](https://github.com/manatlan/reqman/blob/master/examples/reqman.conf))
+
+
+Now, you can edit your rml file, and try the things available in this [tuto](https://github.com/manatlan/reqman/blob/reqman1.4.4.0/examples/tuto.yml).
+Organize your tests as you want : you can make many requests in a rml file, you can make many files with many requests, you can make folders which contain many rml files. _Reqman_ will not scan sub-folders starting with "_" or ".".
+
+_reqman_ will return an `exit code` which contains the number of KO tests : 0 if everything is OK, or -1 if there is a trouble (tests can't be runned) : so it's easily scriptable in your automated workflows !
+
+
+# Ability to override reqman's features for your propers needs (reqman>=2.8.1)
+Now, it's super easy to override reqman with your own features. Using 'reqman' as a lib/module for your python's code.
+You can declare your own methods, to fulfill your specials needs (hide special mechanism, use external libs, ...):
+(Thoses real python methods, just needs to respect the same signature as pyhon methods declared in confs.)
+
+```python
+import reqman
+
+reqman.__usage__ = "USAGE: reqmanBis ..." # override usage or not ;-)
+
+@reqman.expose
+def SpecialMethod(x,ENV):
+ """
+ Do what you want ...
+
+ Args:
+ 'x' : the input var (any) or None.
+ 'ENV' : the current env (dict)
+
+ Returns:
+ any
+ """
+ ...
+ return "What you need"
+
+if __name__ == "__main__":
+ sys.exit(reqman.main())
+```
+
+Now, you can use `SpecialMethod` in your scripts, ex: `<<value|SpecialMethod>>` or `<<SpecialMethod>>`!
+
+Use and abuse !
+
+[![huntr](https://cdn.huntr.dev/huntr_security_badge.svg)](https://huntr.dev)
+
+
+
+
+%package -n python3-reqman
+Summary: Create your http(s)-tests in simple yaml files, and run them with command line, against various environments
+Provides: python-reqman
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-reqman
+# reqman (3.X)
+Reqman is a postman killer ;-)
+
+**Reqman** is a [postman](https://www.getpostman.com/) killer. It shares the same goal, but without GUI ... the GUI is simply your favorite text editor, because requests/tests are only simple yaml files. **Reqman** is a command line tool, available on any platforms.
+
+[Video (1minute)](https://www.youtube.com/embed/ToK-5VwxhP4?autoplay=1&loop=1&playlist=ToK-5VwxhP4&cc_load_policy=1)
+
+All configurations is done via simple yaml files, editable with any text editors. Results are displayed in console and in an html output. It's scriptable, and can be used as a daemon/cron task to automate your tests.
+
+[Documentation](https://reqman-docs.glitch.me/)
+
+[Changelog](https://github.com/manatlan/reqman/blob/master/changelog) !
+
+[Online tool to convert swagger/openapi3, OR postman collections](https://reqman-tools.glitch.me/) to reqman's tests
+
+[DEMO](https://test-reqman.glitch.me)
+
+
+**Features**
+ * Light (simple py3 module, 3000 lines of code, and x3 lines for unittests, in TDD mind ... cov:97%)
+ * Powerful (at least as postman free version)
+ * tests are simple (no code !)
+ * Variable pool
+ * can create(save)/re-use variables per request
+ * "procedures" (declarations & re-use/call), local or global
+ * Environment aware (switch easily)
+ * https/ssl ok (bypass)
+ * http 1.0, 1.1, 2.0
+ * proxy support (thru a reqman.conf var "proxy")
+ * headers inherits
+ * ~~tests inherits~~
+ * ~~timed requests + average times~~
+ * html tests renderer (with request/response contents)
+ * encoding aware
+ * cookie handling
+ * color output in console (when [colorama](https://pypi.org/project/colorama/) is present)
+ * variables can be computed/transformed (in a chain way)
+ * tests files extension : .yml or .rml (ReqManLanguage)
+ * generate conf/rml (with 'new' command)
+ * can paralleliz tests (option `--p`)
+ * versionning
+ * NEW 2.0 :
+ * rewrite from scratch, a lot stronger & speeder !
+ * advanced save mechanisms
+ * new switches system
+ * a lot of new options (auto open browser, set html filename, compare, ...)
+ * ability to save the state, to compare with newer ones
+ * ability to replay given tests (rmr file)
+ * dual mode : compare switches vs others switches (-env1 +env2) in html output
+ * shebang mode
+ * better html output
+ * fully compatible with reqman1 conf/ymls
+ * xml/xpath support tests
+ * used as a lib/module, you can add easily your own features (see below)
+ * NEW 3.0 : (simple py file -> real python module (multiple files))
+ * full rewrite of resolving mechanism (more robust, more maintanable) (the big improvment)
+ - "wait:" commands (time expressed in ms)
+ * "ignorable vars" (avoid ResolveException, with `<<var?>>`)
+ * --f option : to output full exchanges in html output
+ * --j && --j:file.xml : to output junit-xml file
+
+**TODO** : need to rewrite this ^^ ;-)
+
+## Getting started : installation
+
+If you are on an *nix platform, you can start with pip :
+
+ $ pip3 install reqman
+
+it will install the _reqman_ script in your path (perhaps, you'll need to Add the path `~/.local/bin` to the _PATH_ environment variable.)
+
+If you are on microsoft windows, just download [reqman.exe (v3)](https://github.com/manatlan/reqman/blob/master/dist/reqman.exe).
+ [The old reqman.exe V2, is still there](https://github.com/manatlan/reqman/blob/ac7d96319bf53e08f5a01ff55c54ef820e839fa6/dist/reqman.exe), and add it in your path.
+ [The old reqman.exe V1, is still there](https://github.com/manatlan/reqman/blob/reqman1.4.4.0/dist/reqman.exe), and add it in your path.
+
+
+## Getting started : let's go
+
+Imagine that you want to test the [json api from pypi.org](https://wiki.python.org/moin/PyPIJSON), to verify that [it finds me](https://pypi.org/pypi/reqman/json) ;-)
+(if you are on windows, just replace `reqman` with `reqman.exe`)
+
+You can start a new project in your folder, like that:
+
+ $ reqman new https://pypi.org/pypi/reqman/json
+
+It's the first start ; it will create a conf file _reqman.conf_ and a (basic) test file _0010_test.rml_. Theses files are [YAML](https://en.wikipedia.org/wiki/YAML), so ensure that your editor understand them !
+(Following 'new' command will just create another fresh rml file if a _reqman.conf_ exists)
+
+Now, you can run/test it :
+
+ $ reqman .
+
+It will scan your folder "." and run all test files (`*.rml` or `*.yml`) against the _reqman.conf_ ;-)
+
+It will show you what's happened in your console. And generate a `reqman.html` with more details (open it to have an idea)!
+
+If you edit the `reqman.conf`, you will see :
+
+```yaml
+root: https://pypi.org
+headers:
+ User-Agent: reqman (https://github.com/manatlan/reqman)
+```
+
+the **root** is a `special var` which will be prependded to all relative urls in your requests tests.
+the **headers** (which is a `special var` too) is a set of `http headers` which will be added to all your requests.
+
+Change it to, and save it :
+
+```yaml
+root: https://pypi.org
+headers:
+ User-Agent: reqman (https://github.com/manatlan/reqman)
+
+switches:
+ test:
+ root: https://test.pypi.org
+```
+
+Now, you have created your first _switch_. And try to run your tests like this:
+
+ $ reqman.py . -test
+
+It will run your tests against the _root_ defined in _test_ section ; and the test is KO, because _reqman_ doesn't exist on test.pypi.org !
+In fact; all declared things under _test_ will replace those at the top ! So you can declare multiple environments, with multiple switches !
+
+But you can declare what you want, now edit _reqman.conf_ like this :
+
+```yaml
+root: https://pypi.org
+headers:
+ User-Agent: reqman (https://github.com/manatlan/reqman)
+
+package: reqman
+
+switches:
+ test:
+ root: https://test.pypi.org
+```
+
+You have declared a _var_ **package** ! let's edit the test file _0010_test.rml_ like this :
+
+```yaml
+- GET: /pypi/<<package>>/json
+ tests:
+ - status: 200
+```
+
+Now, your test will use the **package** var which was declared in _reqman.conf_ ! So, you can create a _switch_ to change the package thru the command line, simply edit your _reqman.conf_ like that :
+
+```yaml
+root: https://pypi.org
+headers:
+ User-Agent: reqman (https://github.com/manatlan/reqman)
+
+package: reqman
+
+switches:
+ test:
+ root: https://test.pypi.org
+
+ colorama:
+ package: colorama
+```
+
+Now, you can check that 'colorama' exists on pypi.org, like that :
+
+ $ reqman . -colorama
+
+And you can check that 'colorama' exists on test.pypi.org, like that :
+
+ $ reqman . -colorama -test
+
+As you can imagine, it's possible to make a lot of fun things easily. (see a more complex [reqman.conf](https://github.com/manatlan/reqman/blob/master/examples/reqman.conf))
+
+
+Now, you can edit your rml file, and try the things available in this [tuto](https://github.com/manatlan/reqman/blob/reqman1.4.4.0/examples/tuto.yml).
+Organize your tests as you want : you can make many requests in a rml file, you can make many files with many requests, you can make folders which contain many rml files. _Reqman_ will not scan sub-folders starting with "_" or ".".
+
+_reqman_ will return an `exit code` which contains the number of KO tests : 0 if everything is OK, or -1 if there is a trouble (tests can't be runned) : so it's easily scriptable in your automated workflows !
+
+
+# Ability to override reqman's features for your propers needs (reqman>=2.8.1)
+Now, it's super easy to override reqman with your own features. Using 'reqman' as a lib/module for your python's code.
+You can declare your own methods, to fulfill your specials needs (hide special mechanism, use external libs, ...):
+(Thoses real python methods, just needs to respect the same signature as pyhon methods declared in confs.)
+
+```python
+import reqman
+
+reqman.__usage__ = "USAGE: reqmanBis ..." # override usage or not ;-)
+
+@reqman.expose
+def SpecialMethod(x,ENV):
+ """
+ Do what you want ...
+
+ Args:
+ 'x' : the input var (any) or None.
+ 'ENV' : the current env (dict)
+
+ Returns:
+ any
+ """
+ ...
+ return "What you need"
+
+if __name__ == "__main__":
+ sys.exit(reqman.main())
+```
+
+Now, you can use `SpecialMethod` in your scripts, ex: `<<value|SpecialMethod>>` or `<<SpecialMethod>>`!
+
+Use and abuse !
+
+[![huntr](https://cdn.huntr.dev/huntr_security_badge.svg)](https://huntr.dev)
+
+
+
+
+%package help
+Summary: Development documents and examples for reqman
+Provides: python3-reqman-doc
+%description help
+# reqman (3.X)
+Reqman is a postman killer ;-)
+
+**Reqman** is a [postman](https://www.getpostman.com/) killer. It shares the same goal, but without GUI ... the GUI is simply your favorite text editor, because requests/tests are only simple yaml files. **Reqman** is a command line tool, available on any platforms.
+
+[Video (1minute)](https://www.youtube.com/embed/ToK-5VwxhP4?autoplay=1&loop=1&playlist=ToK-5VwxhP4&cc_load_policy=1)
+
+All configurations is done via simple yaml files, editable with any text editors. Results are displayed in console and in an html output. It's scriptable, and can be used as a daemon/cron task to automate your tests.
+
+[Documentation](https://reqman-docs.glitch.me/)
+
+[Changelog](https://github.com/manatlan/reqman/blob/master/changelog) !
+
+[Online tool to convert swagger/openapi3, OR postman collections](https://reqman-tools.glitch.me/) to reqman's tests
+
+[DEMO](https://test-reqman.glitch.me)
+
+
+**Features**
+ * Light (simple py3 module, 3000 lines of code, and x3 lines for unittests, in TDD mind ... cov:97%)
+ * Powerful (at least as postman free version)
+ * tests are simple (no code !)
+ * Variable pool
+ * can create(save)/re-use variables per request
+ * "procedures" (declarations & re-use/call), local or global
+ * Environment aware (switch easily)
+ * https/ssl ok (bypass)
+ * http 1.0, 1.1, 2.0
+ * proxy support (thru a reqman.conf var "proxy")
+ * headers inherits
+ * ~~tests inherits~~
+ * ~~timed requests + average times~~
+ * html tests renderer (with request/response contents)
+ * encoding aware
+ * cookie handling
+ * color output in console (when [colorama](https://pypi.org/project/colorama/) is present)
+ * variables can be computed/transformed (in a chain way)
+ * tests files extension : .yml or .rml (ReqManLanguage)
+ * generate conf/rml (with 'new' command)
+ * can paralleliz tests (option `--p`)
+ * versionning
+ * NEW 2.0 :
+ * rewrite from scratch, a lot stronger & speeder !
+ * advanced save mechanisms
+ * new switches system
+ * a lot of new options (auto open browser, set html filename, compare, ...)
+ * ability to save the state, to compare with newer ones
+ * ability to replay given tests (rmr file)
+ * dual mode : compare switches vs others switches (-env1 +env2) in html output
+ * shebang mode
+ * better html output
+ * fully compatible with reqman1 conf/ymls
+ * xml/xpath support tests
+ * used as a lib/module, you can add easily your own features (see below)
+ * NEW 3.0 : (simple py file -> real python module (multiple files))
+ * full rewrite of resolving mechanism (more robust, more maintanable) (the big improvment)
+ - "wait:" commands (time expressed in ms)
+ * "ignorable vars" (avoid ResolveException, with `<<var?>>`)
+ * --f option : to output full exchanges in html output
+ * --j && --j:file.xml : to output junit-xml file
+
+**TODO** : need to rewrite this ^^ ;-)
+
+## Getting started : installation
+
+If you are on an *nix platform, you can start with pip :
+
+ $ pip3 install reqman
+
+it will install the _reqman_ script in your path (perhaps, you'll need to Add the path `~/.local/bin` to the _PATH_ environment variable.)
+
+If you are on microsoft windows, just download [reqman.exe (v3)](https://github.com/manatlan/reqman/blob/master/dist/reqman.exe).
+ [The old reqman.exe V2, is still there](https://github.com/manatlan/reqman/blob/ac7d96319bf53e08f5a01ff55c54ef820e839fa6/dist/reqman.exe), and add it in your path.
+ [The old reqman.exe V1, is still there](https://github.com/manatlan/reqman/blob/reqman1.4.4.0/dist/reqman.exe), and add it in your path.
+
+
+## Getting started : let's go
+
+Imagine that you want to test the [json api from pypi.org](https://wiki.python.org/moin/PyPIJSON), to verify that [it finds me](https://pypi.org/pypi/reqman/json) ;-)
+(if you are on windows, just replace `reqman` with `reqman.exe`)
+
+You can start a new project in your folder, like that:
+
+ $ reqman new https://pypi.org/pypi/reqman/json
+
+It's the first start ; it will create a conf file _reqman.conf_ and a (basic) test file _0010_test.rml_. Theses files are [YAML](https://en.wikipedia.org/wiki/YAML), so ensure that your editor understand them !
+(Following 'new' command will just create another fresh rml file if a _reqman.conf_ exists)
+
+Now, you can run/test it :
+
+ $ reqman .
+
+It will scan your folder "." and run all test files (`*.rml` or `*.yml`) against the _reqman.conf_ ;-)
+
+It will show you what's happened in your console. And generate a `reqman.html` with more details (open it to have an idea)!
+
+If you edit the `reqman.conf`, you will see :
+
+```yaml
+root: https://pypi.org
+headers:
+ User-Agent: reqman (https://github.com/manatlan/reqman)
+```
+
+the **root** is a `special var` which will be prependded to all relative urls in your requests tests.
+the **headers** (which is a `special var` too) is a set of `http headers` which will be added to all your requests.
+
+Change it to, and save it :
+
+```yaml
+root: https://pypi.org
+headers:
+ User-Agent: reqman (https://github.com/manatlan/reqman)
+
+switches:
+ test:
+ root: https://test.pypi.org
+```
+
+Now, you have created your first _switch_. And try to run your tests like this:
+
+ $ reqman.py . -test
+
+It will run your tests against the _root_ defined in _test_ section ; and the test is KO, because _reqman_ doesn't exist on test.pypi.org !
+In fact; all declared things under _test_ will replace those at the top ! So you can declare multiple environments, with multiple switches !
+
+But you can declare what you want, now edit _reqman.conf_ like this :
+
+```yaml
+root: https://pypi.org
+headers:
+ User-Agent: reqman (https://github.com/manatlan/reqman)
+
+package: reqman
+
+switches:
+ test:
+ root: https://test.pypi.org
+```
+
+You have declared a _var_ **package** ! let's edit the test file _0010_test.rml_ like this :
+
+```yaml
+- GET: /pypi/<<package>>/json
+ tests:
+ - status: 200
+```
+
+Now, your test will use the **package** var which was declared in _reqman.conf_ ! So, you can create a _switch_ to change the package thru the command line, simply edit your _reqman.conf_ like that :
+
+```yaml
+root: https://pypi.org
+headers:
+ User-Agent: reqman (https://github.com/manatlan/reqman)
+
+package: reqman
+
+switches:
+ test:
+ root: https://test.pypi.org
+
+ colorama:
+ package: colorama
+```
+
+Now, you can check that 'colorama' exists on pypi.org, like that :
+
+ $ reqman . -colorama
+
+And you can check that 'colorama' exists on test.pypi.org, like that :
+
+ $ reqman . -colorama -test
+
+As you can imagine, it's possible to make a lot of fun things easily. (see a more complex [reqman.conf](https://github.com/manatlan/reqman/blob/master/examples/reqman.conf))
+
+
+Now, you can edit your rml file, and try the things available in this [tuto](https://github.com/manatlan/reqman/blob/reqman1.4.4.0/examples/tuto.yml).
+Organize your tests as you want : you can make many requests in a rml file, you can make many files with many requests, you can make folders which contain many rml files. _Reqman_ will not scan sub-folders starting with "_" or ".".
+
+_reqman_ will return an `exit code` which contains the number of KO tests : 0 if everything is OK, or -1 if there is a trouble (tests can't be runned) : so it's easily scriptable in your automated workflows !
+
+
+# Ability to override reqman's features for your propers needs (reqman>=2.8.1)
+Now, it's super easy to override reqman with your own features. Using 'reqman' as a lib/module for your python's code.
+You can declare your own methods, to fulfill your specials needs (hide special mechanism, use external libs, ...):
+(Thoses real python methods, just needs to respect the same signature as pyhon methods declared in confs.)
+
+```python
+import reqman
+
+reqman.__usage__ = "USAGE: reqmanBis ..." # override usage or not ;-)
+
+@reqman.expose
+def SpecialMethod(x,ENV):
+ """
+ Do what you want ...
+
+ Args:
+ 'x' : the input var (any) or None.
+ 'ENV' : the current env (dict)
+
+ Returns:
+ any
+ """
+ ...
+ return "What you need"
+
+if __name__ == "__main__":
+ sys.exit(reqman.main())
+```
+
+Now, you can use `SpecialMethod` in your scripts, ex: `<<value|SpecialMethod>>` or `<<SpecialMethod>>`!
+
+Use and abuse !
+
+[![huntr](https://cdn.huntr.dev/huntr_security_badge.svg)](https://huntr.dev)
+
+
+
+
+%prep
+%autosetup -n reqman-3.0.4
+
+%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-reqman -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 3.0.4-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..7a0ad89
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+cf6ea9aec3809696f83eb09d73d6d1cb reqman-3.0.4.tar.gz