Skip to contentSkip to conversation

support/run-test: move pacakges' tests to packages' directories

PATCH New Yann E. MORIN 2 participants 11 messages Sep 16, 2017 – Oct 2, 2017

lore
Share & tools
lore
#0 lore raw

cover support/run-test: move pacakges' tests to packages' directories

Hello All!

It looks more logical to have packages' tests right next to the packages own descriptions, side by side with the Config.in and the .mk files.

If this solution is accepted, then it will also allow to easily add tests directly in the filesystems and boot directories.

Regards,
Yann E. MORIN.

The following changes since commit c665c7c9cd6646b135cdd9aa7036809f7771ab80

netsnmp: install all MIB files (2017-09-13 23:23:40 +0200)

are available in the git repository at:

git://git.buildroot.org/~ymorin/git/buildroot.git

for you to fetch changes up to 5d8ea4ebb51023d3943fb4e5a1678f8cfba70527

testing: add python-cryptography tests (2017-09-16 22:20:52 +0200)

----------------------------------------------------------------
Yann E. MORIN (1):
support/run-tests: move packages tests to packages directories

Yegor Yefremov (1):
testing: add python-cryptography tests

 .gitignore                                         |  1 +
 .gitlab-ci.yml                                     |  2 ++
 .../dropbear/dropbear.py                           |  0
 package/python-cryptography/python-cryptography.py | 31 ++++++++++++++++++++++
 .../python-ipython/python-ipython.py               |  0
 .../test_python.py => package/python/python.py     |  0
 support/testing/run-tests                          | 22 +++++++++++++++
 support/testing/tests/package/__init__.py          |  0
 8 files changed, 56 insertions(+)
 rename support/testing/tests/package/test_dropbear.py => package/dropbear/dropbear.py (100%)
 create mode 100644 package/python-cryptography/python-cryptography.py
 rename support/testing/tests/package/test_ipython.py => package/python-ipython/python-ipython.py (100%)
 rename support/testing/tests/package/test_python.py => package/python/python.py (100%)
 delete mode 100644 support/testing/tests/package/__init__.py
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#1 lore raw

PATCH 1/2 support/run-tests: move packages tests to packages directories

Move the existing few packages' tests to the correspnding package directories.

If we were to add the package/ directory to nose2's search path, we would have to add __init__.py files about everywhere, at each level of the directory hierarchy, because nose2 only includes tests that are in a python pacakge (a directory with a __init__.py file is a python package). This is far from ideal, especially since we have absolutely nothing to put in those __init__.py files.

An alternative is to just scan the package/ directory ourselves, and create symlinks in a sub-directory of support/tessting/tests/ so that nose2 does find them. We have no two packages with the same name, we don't risk having two symlinks with the same name.

That second solution is what we choose to do, at the cost of a slight increase in complexity in the run-test script.

Cc Ricardo Martincoski <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Arnout Vandecappelle <[email protected]>
Cc Samuel Martin <[email protected]>
---
 .gitignore                                         |  1 +
 .../dropbear/dropbear.py                           |  0
 .../python-ipython/python-ipython.py               |  0
 .../test_python.py => package/python/python.py     |  0
 support/testing/run-tests                          | 22 ++++++++++++++++++++++
 support/testing/tests/package/__init__.py          |  0
 6 files changed, 23 insertions(+)
 rename support/testing/tests/package/test_dropbear.py => package/dropbear/dropbear.py (100%)
 rename support/testing/tests/package/test_ipython.py => package/python-ipython/python-ipython.py (100%)
 rename support/testing/tests/package/test_python.py => package/python/python.py (100%)
 delete mode 100644 support/testing/tests/package/__init__.py
.gitignore +1 -0
index bb02d9f572..e85c07f99a 100644
@@ -9,6 +9,7 @@
 *.o
 /*.patch
 /*.diff
+/support/testing/tests/package/
 *.orig
 *.rej
 *~
package/dropbear/dropbear.py renamed from support/testing/tests/package/test_dropbear.py +0 -0
similarity index 100%
rename from support/testing/tests/package/test_dropbear.py
rename to package/dropbear/dropbear.py
package/python-ipython/python-ipython.py renamed from support/testing/tests/package/test_ipython.py +0 -0
similarity index 100%
rename from support/testing/tests/package/test_ipython.py
rename to package/python-ipython/python-ipython.py
package/python/python.py renamed from support/testing/tests/package/test_python.py +0 -0
similarity index 100%
rename from support/testing/tests/package/test_python.py
rename to package/python/python.py
support/testing/run-tests +22 -0
index ae0bd336b5..67736331ae 100755
@@ -2,6 +2,9 @@
 import argparse
 import sys
 import os
+import errno
+import shutil
+import re
 import nose2
 import multiprocessing
 
@@ -36,6 +39,9 @@ def main():
     script_path = os.path.realpath(__file__)
     test_dir = os.path.dirname(script_path)
 
+    gatheradditionaltests(os.path.abspath("."),
+                          os.path.join(test_dir,"tests","package"))
+
     if args.stdout:
         BRTest.logtofile = False
 
@@ -116,5 +122,21 @@ def main():
 
     nose2.discover(argv=nose2_args)
 
+def gatheradditionaltests(search_dir, symlink_dir):
+    try:
+        shutil.rmtree(symlink_dir)
+    except OSError as err:
+        if not err.errno == errno.ENOENT:
+            raise err
+        pass
+    os.mkdir(symlink_dir)
+    open(os.path.join(symlink_dir,"__init__.py"), "w").close()
+    for dir, _, files in os.walk(os.path.abspath(search_dir)):
+        package = os.path.basename(dir)
+        for file in files:
+            if re.match("^{}.py$".format(package),file):
+                os.symlink(os.path.join(dir,file),
+                           os.path.join(symlink_dir,"test_{}.py".format(package)))
+
 if __name__ == "__main__":
     sys.exit(main())
support/testing/tests/package/__init__.py deleted +0 -0
deleted file mode 100644
index e69de29bb2..0000000000
Signature · 1 line
2.11.0
#2 lore raw

PATCH 1/2 support/run-tests: move packages tests to packages directories

Hello,

Quoted 1 line · Yann E. MORIN

Move the existing few packages' tests to the correspnding package

typo: corresponding

Quoted 6 lines

directories.

If we were to add the package/ directory to nose2's search path, we would have to add __init__.py files about everywhere, at each level of the directory hierarchy, because nose2 only includes tests that are in a python pacakge (a directory with a __init__.py file is a python package).

typo: package

Quoted 5 lines

This is far from ideal, especially since we have absolutely nothing to put in those __init__.py files.

An alternative is to just scan the package/ directory ourselves, and create symlinks in a sub-directory of support/tessting/tests/ so that

typo: testing

Quoted 11 lines

nose2 does find them. We have no two packages with the same name, we don't risk having two symlinks with the same name.

That second solution is what we choose to do, at the cost of a slight increase in complexity in the run-test script.

Cc Ricardo Martincoski <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Arnout Vandecappelle <[email protected]>
Cc Samuel Martin <[email protected]>
Quoted 10 lines
---
 .gitignore                                         |  1 +
 .../dropbear/dropbear.py                           |  0
 .../python-ipython/python-ipython.py               |  0
 .../test_python.py => package/python/python.py     |  0
 support/testing/run-tests                          | 22 ++++++++++++++++++++++
 support/testing/tests/package/__init__.py          |  0
 6 files changed, 23 insertions(+)
 rename support/testing/tests/package/test_dropbear.py => package/dropbear/dropbear.py (100%)
 rename support/testing/tests/package/test_ipython.py => package/python-ipython/python-ipython.py (100%)

.gitlab-ci.yml needs to be generated again because of this rename.

As I mentioned in another thread, having Python files with '-' in their name AFAIK is not a problem as long we don't want to import them.
We currently import only test_python.py and it seems unlikely to have runtime tests importing each other.

And this series is really changing the filename convention for runtime tests of packages, making the pre-existing convention of package files beat the convention inside the test infra. I am OK with this change, but I think it worth mentioning. Perhaps it fits in the commit log?

[snip]

support/testing/run-tests def main(): · line 42

Quoted 5 lines
support/testing/run-tests +1 -0
@@ -36,6 +39,9 @@ def main():
     script_path = os.path.realpath(__file__)
     test_dir = os.path.dirname(script_path)
 
+    gatheradditionaltests(os.path.abspath("."),

Below you run all files in this path (base dir of buildroot) to match against the regex. It's bad because one can have output/, test-output/, test-dl/, outgoing/, ...

Also os.getcwd() should give the same result and it is already used in support/testing/infra/__init__.py

So for now I suggest to change to:
gather_additional_tests(os.path.join(os.getcwd(), "package"), And if fs tests gets moved, just add another call to the same method. We don't have that many subdirectories in the root directory.

Other way around is to pass an array of relative subdirectories gather_additional_tests(["package", "fs"],
and compose the absolute path inside the method while iterating over the entries.

support/testing/run-tests def main(): · line 43

Quoted 1 line
support/testing/run-tests +1 -0
+                          os.path.join(test_dir,"tests","package"))

Here and all over the file there are missing whitespace after ',' Can you use flake8 to find them and fix it?

If you use vim you can do
:set makeprg=flake8\ %
:make
and it will jump the cursor to the right place

support/testing/run-tests def main(): · line 125

Quoted 9 lines
support/testing/run-tests +2 -0
+
     if args.stdout:
         BRTest.logtofile = False
 
@@ -116,5 +122,21 @@ def main():
 
     nose2.discover(argv=nose2_args)
 
+def gatheradditionaltests(search_dir, symlink_dir):

You could call it gather_additional_tests.

support/testing/run-tests def main(): · line 131

Quoted 6 lines
support/testing/run-tests +6 -0
+    try:
+        shutil.rmtree(symlink_dir)
+    except OSError as err:
+        if not err.errno == errno.ENOENT:
+            raise err
+        pass

Could we do just this? (like is done in builder.py)
if os.path.exists(symlink_dir):
shutil.rmtree(symlink_dir)
If you change this, errno doesn't need to be imported.

support/testing/run-tests def main(): · line 134

Quoted 3 lines
support/testing/run-tests +3 -0
+    os.mkdir(symlink_dir)
+    open(os.path.join(symlink_dir,"__init__.py"), "w").close()
+    for dir, _, files in os.walk(os.path.abspath(search_dir)):

I first thought, why not glob.glob? But in Python 2 it is not recursive. So indeed os.walk is the way to go.

support/testing/run-tests def main(): · line 136

Quoted 2 lines
support/testing/run-tests +2 -0
+        package = os.path.basename(dir)
+        for file in files:

You can import fnmatch to drastically reduce the number of regex compilations:
for file in fnmatch.filter(files, '*.py'):

support/testing/run-tests def main(): · line 139

Quoted 3 lines
support/testing/run-tests +3 -0
+            if re.match("^{}.py$".format(package),file):
+                os.symlink(os.path.join(dir,file),
+                           os.path.join(symlink_dir,"test_{}.py".format(package)))

Regards,
Ricardo

#3 lore raw

PATCH 1/2 support/run-tests: move packages tests to packages directories

Ricardo, All,

On 2017-09-17 02:20 -0300, Ricardo Martincoski spake thusly:

Quoted 11 lines · Yann E. MORIN
Quoted 10 lines
---
 .gitignore                                         |  1 +
 .../dropbear/dropbear.py                           |  0
 .../python-ipython/python-ipython.py               |  0
 .../test_python.py => package/python/python.py     |  0
 support/testing/run-tests                          | 22 ++++++++++++++++++++++
 support/testing/tests/package/__init__.py          |  0
 6 files changed, 23 insertions(+)
 rename support/testing/tests/package/test_dropbear.py => package/dropbear/dropbear.py (100%)
 rename support/testing/tests/package/test_ipython.py => package/python-ipython/python-ipython.py (100%)
Quoted 4 lines

As I mentioned in another thread, having Python files with '-' in their name AFAIK is not a problem as long we don't want to import them.
We currently import only test_python.py and it seems unlikely to have runtime tests importing each other.

Yet we don't know what the future will be made of, so we should squash the dasj into an underscore, so as to allow this kind of situation.

Quoted 4 lines

And this series is really changing the filename convention for runtime tests of packages, making the pre-existing convention of package files beat the convention inside the test infra. I am OK with this change, but I think it worth mentioning. Perhaps it fits in the commit log?

Yes, it does change the naming convention. I was about to add it to our manual, in the section about adding new packages, to document the .py file in addition to Config.in and the .mk and .hash files. But then I noticed we had nothing about the runtime tests in the manual, so I could not refer to that section to explain the .py file.

So I deferred updating the manual for later.

Quoted 10 lines

[snip]

support/testing/run-tests def main(): · line 42

Quoted 5 lines
support/testing/run-tests +1 -0
@@ -36,6 +39,9 @@ def main():
     script_path = os.path.realpath(__file__)
     test_dir = os.path.dirname(script_path)
 
+    gatheradditionaltests(os.path.abspath("."),

Below you run all files in this path (base dir of buildroot) to match against the regex. It's bad because one can have output/, test-output/, test-dl/, outgoing/, ...

Arg, I initially wanted to only scan package/ in fact.

Quoted 5 lines

Also os.getcwd() should give the same result and it is already used in support/testing/infra/__init__.py

So for now I suggest to change to:
gather_additional_tests(os.path.join(os.getcwd(), "package"),

Except that both your solution and mine break when the script is not called from the Buildroot top directory. We must derive the top directory from the script path.

Quoted 7 lines

And if fs tests gets moved, just add another call to the same method. We don't have that many subdirectories in the root directory.

Other way around is to pass an array of relative subdirectories gather_additional_tests(["package", "fs"],
and compose the absolute path inside the method while iterating over the entries.

I think the origin directory should be passed as argument to the function, for the above reason.

And yes, we could pass a list of directories.

Quoted 4 lines

support/testing/run-tests def main(): · line 43

Quoted 1 line
support/testing/run-tests +1 -0
+                          os.path.join(test_dir,"tests","package"))

Here and all over the file there are missing whitespace after ',' Can you use flake8 to find them and fix it?

Yup, will do.

Quoted 9 lines

If you use vim you can do
:set makeprg=flake8\ %
:make
and it will jump the cursor to the right place

Quoted 4 lines
support/testing/run-tests +1 -0
+
     if args.stdout:
         BRTest.logtofile = False
 
Quoted 7 lines

support/testing/run-tests def main(): · line 125

Quoted 5 lines
support/testing/run-tests +1 -0
@@ -116,5 +122,21 @@ def main():
 
     nose2.discover(argv=nose2_args)
 
+def gatheradditionaltests(search_dir, symlink_dir):

You could call it gather_additional_tests.

I never know whatThe_prefered_Solutionis. ;-)

Quoted 11 lines

support/testing/run-tests def main(): · line 131

Quoted 6 lines
support/testing/run-tests +6 -0
+    try:
+        shutil.rmtree(symlink_dir)
+    except OSError as err:
+        if not err.errno == errno.ENOENT:
+            raise err
+        pass

Could we do just this? (like is done in builder.py)
if os.path.exists(symlink_dir):
shutil.rmtree(symlink_dir)
If you change this, errno doesn't need to be imported.

So I am no Python expert, and this shows. Thanks for the hints! :-)

Quoted 4 lines

support/testing/run-tests def main(): · line 134

Quoted 3 lines
support/testing/run-tests +3 -0
+    os.mkdir(symlink_dir)
+    open(os.path.join(symlink_dir,"__init__.py"), "w").close()
+    for dir, _, files in os.walk(os.path.abspath(search_dir)):
Quoted 8 lines

I first thought, why not glob.glob? But in Python 2 it is not recursive. So indeed os.walk is the way to go.

support/testing/run-tests def main(): · line 136

Quoted 2 lines
support/testing/run-tests +2 -0
+        package = os.path.basename(dir)
+        for file in files:

You can import fnmatch to drastically reduce the number of regex compilations:
for file in fnmatch.filter(files, '*.py'):

Wee! :-)

Quoted 6 lines

support/testing/run-tests def main(): · line 139

Quoted 3 lines
support/testing/run-tests +3 -0
+            if re.match("^{}.py$".format(package),file):
+                os.symlink(os.path.join(dir,file),
+                           os.path.join(symlink_dir,"test_{}.py".format(package)))

Regards,
Ricardo

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#4 lore raw

PATCH 1/2 support/run-tests: move packages tests to packages directories

Ricardo, All,

On 2017-09-17 09:18 +0200, Yann E. MORIN spake thusly:

Quoted 2 lines

On 2017-09-17 02:20 -0300, Ricardo Martincoski spake thusly:

Quoted 1 line · Yann E. MORIN

[--SNIP--]

Quoted 6 lines
Quoted 5 lines

support/testing/run-tests def main(): · line 136

Quoted 2 lines
support/testing/run-tests +2 -0
+        package = os.path.basename(dir)
+        for file in files:

You can import fnmatch to drastically reduce the number of regex compilations:
for file in fnmatch.filter(files, '*.py'):

Wee! :-)

In fact, no. At least, not in this state, because we do not want to match _any_ .py file; instead, we want to match only .py files that are named after the package.

But I guess I can make it to work with fnmatch nonetheless. ;-)

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#5 lore raw

PATCH 1/2 support/run-tests: move packages tests to packages directories

Hello,

Quoted 7 lines · Yann E. MORIN

On 2017-09-17 09:18 +0200, Yann E. MORIN spake thusly:

Quoted 2 lines

On 2017-09-17 02:20 -0300, Ricardo Martincoski spake thusly:

Quoted 1 line · Yann E. MORIN

[--SNIP--]

Quoted 3 lines
Quoted 3 lines
Quoted 2 lines
support/testing/run-tests +2 -0
+        package = os.path.basename(dir)
+        for file in files:
Quoted 7 lines
Quoted 3 lines
Quoted 2 lines

You can import fnmatch to drastically reduce the number of regex compilations:
for file in fnmatch.filter(files, '*.py'):

Wee! :-)

In fact, no. At least, not in this state, because we do not want to match _any_ .py file; instead, we want to match only .py files that are named after the package.

We could use 2 filters. Instead of 8k+ regex compilations (one for each file inside a package directory) we would run 2k+ fnmatch.filter (that probably compile one regex, one per directory) and one regex compilation for each test file in the package tree.

for file in fnmatch.filter(files, '*.py'):
if re.match("^{}.py$".format(package),file):

But well... the default python interpreter has a cache for regex (I don't know its internals, just that it exists) and perhaps the change I suggested won't make any difference in performance.

Quoted 2 lines

But I guess I can make it to work with fnmatch nonetheless. ;-)

BTW, could you change the DEVELOPERS file in the same patch?
+F: package/*/*.py
F: support/testing/

I know it won't work for all possible files. 99% is enough for me.

Regards,
Ricardo

#6 lore raw

PATCH 1/2 support/run-tests: move packages tests to packages directories

Ricardo, All,

On 2017-10-01 21:54 -0300, Ricardo Martincoski spake thusly:

Quoted 16 lines · Yann E. MORIN
Quoted 7 lines

On 2017-09-17 09:18 +0200, Yann E. MORIN spake thusly:

Quoted 2 lines

On 2017-09-17 02:20 -0300, Ricardo Martincoski spake thusly:

Quoted 1 line · Yann E. MORIN

[--SNIP--]

Quoted 3 lines
Quoted 3 lines
Quoted 2 lines
support/testing/run-tests +2 -0
+        package = os.path.basename(dir)
+        for file in files:
Quoted 7 lines
Quoted 3 lines
Quoted 2 lines

You can import fnmatch to drastically reduce the number of regex compilations:
for file in fnmatch.filter(files, '*.py'):

Wee! :-)

In fact, no. At least, not in this state, because we do not want to match _any_ .py file; instead, we want to match only .py files that are named after the package.

Quoted 7 lines

We could use 2 filters. Instead of 8k+ regex compilations (one for each file inside a package directory) we would run 2k+ fnmatch.filter (that probably compile one regex, one per directory) and one regex compilation for each test file in the package tree.

for file in fnmatch.filter(files, '*.py'):
if re.match("^{}.py$".format(package),file):

Err... I already changed it to:

for file in fnmatch.filter(files, '{}.py'.format(package)):

Is there something wrong with that? ;-)

Quoted 10 lines

But well... the default python interpreter has a cache for regex (I don't know its internals, just that it exists) and perhaps the change I suggested won't make any difference in performance.

Quoted 2 lines

But I guess I can make it to work with fnmatch nonetheless. ;-)

BTW, could you change the DEVELOPERS file in the same patch?
+F: package/*/*.py
F: support/testing/

You meant, add it to your entry ?

In fact, I would expect to assign the test files to the corresponding package custodian (now imp[licit by their location).

But yes, I can assign them to you as well.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#7 lore raw

PATCH 1/2 support/run-tests: move packages tests to packages directories

Hello,

Quoted 22 lines · Yann E. MORIN

On 2017-10-01 21:54 -0300, Ricardo Martincoski spake thusly:

Quoted 21 lines · Yann E. MORIN
Quoted 7 lines

On 2017-09-17 09:18 +0200, Yann E. MORIN spake thusly:

Quoted 2 lines

On 2017-09-17 02:20 -0300, Ricardo Martincoski spake thusly:

Quoted 1 line · Yann E. MORIN

[--SNIP--]

Quoted 3 lines
Quoted 3 lines
Quoted 2 lines
support/testing/run-tests +2 -0
+        package = os.path.basename(dir)
+        for file in files:
Quoted 7 lines
Quoted 3 lines
Quoted 2 lines

You can import fnmatch to drastically reduce the number of regex compilations:
for file in fnmatch.filter(files, '*.py'):

Wee! :-)

In fact, no. At least, not in this state, because we do not want to match _any_ .py file; instead, we want to match only .py files that are named after the package.

We could use 2 filters. Instead of 8k+ regex compilations (one for each file inside a package directory) we would run 2k+ fnmatch.filter (that probably compile one regex, one per directory) and one regex compilation for each test file in the package tree.

Quoted 8 lines
Quoted 2 lines

for file in fnmatch.filter(files, '*.py'):
if re.match("^{}.py$".format(package),file):

Err... I already changed it to:

for file in fnmatch.filter(files, '{}.py'.format(package)):

Is there something wrong with that? ;-)

Nothing wrong. It's better this (your) way IMO.

Quoted 6 lines
Quoted 6 lines

But well... the default python interpreter has a cache for regex (I don't know its internals, just that it exists) and perhaps the change I suggested won't make any difference in performance.

Quoted 1 line
Quoted 7 lines
Quoted 5 lines
Quoted 1 line

But I guess I can make it to work with fnmatch nonetheless. ;-)

BTW, could you change the DEVELOPERS file in the same patch?
+F: package/*/*.py
F: support/testing/

You meant, add it to your entry ?

Yes.

Quoted 5 lines

In fact, I would expect to assign the test files to the corresponding package custodian (now imp[licit by their location).

But yes, I can assign them to you as well.

Thanks.

Regards,
Ricardo

#8 lore raw

PATCH 2/2 testing: add python-cryptography tests

In reply to Yann E. MORIN

From: Yegor Yefremov <[email protected]>

[yann.morin.1998 at free.fr:
- move to package directory,
- indent the config fragment
]

---
Note:
This is exactly the same as https://patchwork.ozlabs.org/patch/811011/
but with the test moved to the python-cryptography package and the config fragment indented.

---
 .gitlab-ci.yml                                     |  2 ++
 package/python-cryptography/python-cryptography.py | 31 ++++++++++++++++++++++
 2 files changed, 33 insertions(+)
 create mode 100644 package/python-cryptography/python-cryptography.py
.gitlab-ci.yml +2 -0
index b44c935f2a..091b016191 100644
@@ -250,6 +250,8 @@ tests.package.test_ipython.TestIPythonPy2: *runtime_test
 tests.package.test_ipython.TestIPythonPy3: *runtime_test
 tests.package.test_python.TestPython2: *runtime_test
 tests.package.test_python.TestPython3: *runtime_test
+tests.package.test_python_cryptography.TestPythonPy2Cryptography: *runtime_test
+tests.package.test_python_cryptography.TestPythonPy3Cryptography: *runtime_test
 tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: *runtime_test
 tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: *runtime_test
 tests.toolchain.test_external.TestExternalToolchainCCache: *runtime_test
package/python-cryptography/python-cryptography.py new file +31 -0
new file mode 100644
index 0000000000..907baaafa6
@@ -0,0 +1,31 @@
+import os
+
+from tests.package.test_python import TestPythonBase
+
+class TestPythonCryptography(TestPythonBase):
+    def fernet_test(self, timeout=-1):
+        cmd = self.interpreter + " -c 'from cryptography.fernet import Fernet;"
+        cmd += "key = Fernet.generate_key();"
+        cmd += "f = Fernet(key)'"
+        _, exit_code = self.emulator.run(cmd, timeout)
+        self.assertEqual(exit_code, 0)
+
+class TestPythonPy2Cryptography(TestPythonCryptography):
+    config = TestPythonBase.config + \
+        """
+        BR2_PACKAGE_PYTHON=y
+        BR2_PACKAGE_PYTHON_CRYPTOGRAPHY=y
+        """
+    def test_run(self):
+        self.login()
+        self.fernet_test(40)
+
+class TestPythonPy3Cryptography(TestPythonCryptography):
+    config = TestPythonBase.config + \
+        """
+        BR2_PACKAGE_PYTHON3=y
+        BR2_PACKAGE_PYTHON_CRYPTOGRAPHY=y
+        """
+    def test_run(self):
+        self.login()
+        self.fernet_test(40)
Signature · 1 line
2.11.0
#9 lore raw

PATCH 2/2 testing: add python-cryptography tests

Hello,

Quoted 1 line · Yann E. MORIN

testing: add python-cryptography tests

This patch could now be renamed to:
python-cryptography: add runtime tests
or something like this

Quoted 6 lines

From: Yegor Yefremov <[email protected]>

[yann.morin.1998 at free.fr:
- move to package directory,

- rename the test file to follow the package convention,

I am OK with this change, but I think it worth mentioning.

Quoted 9 lines

- indent the config fragment
]

---
Note:
This is exactly the same as https://patchwork.ozlabs.org/patch/811011/
but with the test moved to the python-cryptography package and the config fragment indented.

Quoted 5 lines
---
 .gitlab-ci.yml                                     |  2 ++
 package/python-cryptography/python-cryptography.py | 31 ++++++++++++++++++++++
 2 files changed, 33 insertions(+)
 create mode 100644 package/python-cryptography/python-cryptography.py

.gitlab-ci.yml needs to be generated again because of this rename (to use '-' in the name again).

Quoted 6 lines
.gitlab-ci.yml +0 -0
index b44c935f2a..091b016191 100644

.gitlab-ci.yml tests.package.test_ipython.TestIPythonPy2: *runtime_test · line 257

Quoted 8 lines
.gitlab-ci.yml +2 -0
@@ -250,6 +250,8 @@ tests.package.test_ipython.TestIPythonPy2: *runtime_test
 tests.package.test_ipython.TestIPythonPy3: *runtime_test
 tests.package.test_python.TestPython2: *runtime_test
 tests.package.test_python.TestPython3: *runtime_test
+tests.package.test_python_cryptography.TestPythonPy2Cryptography: *runtime_test
+tests.package.test_python_cryptography.TestPythonPy3Cryptography: *runtime_test
 tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: *runtime_test
 tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: *runtime_test
 tests.toolchain.test_external.TestExternalToolchainCCache: *runtime_test

[snip]

Regards,
Ricardo

#10 lore raw

PATCH 2/2 testing: add python-cryptography tests

Ricardo, All,

On 2017-09-17 02:26 -0300, Ricardo Martincoski spake thusly:

Quoted 7 lines · Yann E. MORIN
Quoted 2 lines

testing: add python-cryptography tests

This patch could now be renamed to:
python-cryptography: add runtime tests
or something like this

Yep, good point.

Quoted 10 lines
Quoted 6 lines

From: Yegor Yefremov <[email protected]>

[yann.morin.1998 at free.fr:
- move to package directory,

- rename the test file to follow the package convention,

I am OK with this change, but I think it worth mentioning.

Ack.

Regards,
Yann E. MORIN.

Quoted 36 lines
Quoted 9 lines

- indent the config fragment
]

---
Note:
This is exactly the same as https://patchwork.ozlabs.org/patch/811011/
but with the test moved to the python-cryptography package and the config fragment indented.

Quoted 5 lines
---
 .gitlab-ci.yml                                     |  2 ++
 package/python-cryptography/python-cryptography.py | 31 ++++++++++++++++++++++
 2 files changed, 33 insertions(+)
 create mode 100644 package/python-cryptography/python-cryptography.py

.gitlab-ci.yml needs to be generated again because of this rename (to use '-' in the name again).

Quoted 6 lines
.gitlab-ci.yml +0 -0
index b44c935f2a..091b016191 100644

.gitlab-ci.yml tests.package.test_ipython.TestIPythonPy2: *runtime_test · line 257

Quoted 8 lines
.gitlab-ci.yml +2 -0
@@ -250,6 +250,8 @@ tests.package.test_ipython.TestIPythonPy2: *runtime_test
 tests.package.test_ipython.TestIPythonPy3: *runtime_test
 tests.package.test_python.TestPython2: *runtime_test
 tests.package.test_python.TestPython3: *runtime_test
+tests.package.test_python_cryptography.TestPythonPy2Cryptography: *runtime_test
+tests.package.test_python_cryptography.TestPythonPy3Cryptography: *runtime_test
 tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: *runtime_test
 tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: *runtime_test
 tests.toolchain.test_external.TestExternalToolchainCCache: *runtime_test

[snip]

Regards,
Ricardo

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'