Message ID | 20210128114611.128865-1-xypron.glpk@gmx.de |
---|---|
State | Accepted |
Commit | 89d52afa5d0b643bddbedd840cea98ea7cba84f9 |
Delegated to: | Tom Rini |
Headers | show |
Series | test: correct entry point to pytest | expand |
On Thu, Jan 28, 2021 at 12:46:11PM +0100, Heinrich Schuchardt wrote: > With Pytest 6.0.2 'make tests' fails: > > sandbox: Traceback (most recent call last): > File "./test/py/test.py", line 20, in <module> > sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args)) > TypeError: console_main() takes 0 positional arguments but 1 was given > > The definition of console_scripts has changed as follows: > > Pytest 4.6.1: > > [options.entry_points] > console_scripts = > pytest=pytest:main > py.test=pytest:main > > Pytest 6.0.2: > > [options.entry_points] > console_scripts = > pytest=pytest:console_main > py.test=pytest:console_main > > The new function console_main() has a comment: > "This function is not meant for programmable use; use `main()`" > > Hence let's call pytest.main() directly. > Move args processing into the __main__ paragraph. > > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > --- > test/py/test.py | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) So the last round of "newer pytest means we need to ..." was part of why we have test/py/requirements.txt right now. That was over a year ago. So, for after v2021.04 it would be good to update pytest to current and deal with any updating that needs updating in our tests and related code. Thanks!
On 28.01.21 13:58, Tom Rini wrote: > On Thu, Jan 28, 2021 at 12:46:11PM +0100, Heinrich Schuchardt wrote: > >> With Pytest 6.0.2 'make tests' fails: >> >> sandbox: Traceback (most recent call last): >> File "./test/py/test.py", line 20, in <module> >> sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args)) >> TypeError: console_main() takes 0 positional arguments but 1 was given >> >> The definition of console_scripts has changed as follows: >> >> Pytest 4.6.1: >> >> [options.entry_points] >> console_scripts = >> pytest=pytest:main >> py.test=pytest:main >> >> Pytest 6.0.2: >> >> [options.entry_points] >> console_scripts = >> pytest=pytest:console_main >> py.test=pytest:console_main >> >> The new function console_main() has a comment: >> "This function is not meant for programmable use; use `main()`" >> >> Hence let's call pytest.main() directly. >> Move args processing into the __main__ paragraph. >> >> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> >> --- >> test/py/test.py | 10 +++++----- >> 1 file changed, 5 insertions(+), 5 deletions(-) > > So the last round of "newer pytest means we need to ..." was part of why > we have test/py/requirements.txt right now. That was over a year ago. > So, for after v2021.04 it would be good to update pytest to current and > deal with any updating that needs updating in our tests and related > code. Thanks! > This patch is not about making new requirements. It is about increasing the compatibility of our Python script with a larger range of Pytest revisions. So I do not see the show-stopper for the current release. Best regards Heinrich
On Thu, Jan 28, 2021 at 02:28:03PM +0100, Heinrich Schuchardt wrote: > On 28.01.21 13:58, Tom Rini wrote: > > On Thu, Jan 28, 2021 at 12:46:11PM +0100, Heinrich Schuchardt wrote: > > > >> With Pytest 6.0.2 'make tests' fails: > >> > >> sandbox: Traceback (most recent call last): > >> File "./test/py/test.py", line 20, in <module> > >> sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args)) > >> TypeError: console_main() takes 0 positional arguments but 1 was given > >> > >> The definition of console_scripts has changed as follows: > >> > >> Pytest 4.6.1: > >> > >> [options.entry_points] > >> console_scripts = > >> pytest=pytest:main > >> py.test=pytest:main > >> > >> Pytest 6.0.2: > >> > >> [options.entry_points] > >> console_scripts = > >> pytest=pytest:console_main > >> py.test=pytest:console_main > >> > >> The new function console_main() has a comment: > >> "This function is not meant for programmable use; use `main()`" > >> > >> Hence let's call pytest.main() directly. > >> Move args processing into the __main__ paragraph. > >> > >> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > >> --- > >> test/py/test.py | 10 +++++----- > >> 1 file changed, 5 insertions(+), 5 deletions(-) > > > > So the last round of "newer pytest means we need to ..." was part of why > > we have test/py/requirements.txt right now. That was over a year ago. > > So, for after v2021.04 it would be good to update pytest to current and > > deal with any updating that needs updating in our tests and related > > code. Thanks! > > > > This patch is not about making new requirements. It is about increasing > the compatibility of our Python script with a larger range of Pytest > revisions. > > So I do not see the show-stopper for the current release. I bring up the last time because we support using "pip install -r test/py/requirements.txt" as how to create the supported test environment. This is based on my understanding of the time of the best practices of dealing with python modules.
On Thu, Jan 28, 2021 at 1:46 PM Heinrich Schuchardt <xypron.glpk@gmx.de> wrote: > > With Pytest 6.0.2 'make tests' fails: > > sandbox: Traceback (most recent call last): > File "./test/py/test.py", line 20, in <module> > sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args)) > TypeError: console_main() takes 0 positional arguments but 1 was given > > The definition of console_scripts has changed as follows: > > Pytest 4.6.1: > > [options.entry_points] > console_scripts = > pytest=pytest:main > py.test=pytest:main > > Pytest 6.0.2: > > [options.entry_points] > console_scripts = > pytest=pytest:console_main > py.test=pytest:console_main > > The new function console_main() has a comment: > "This function is not meant for programmable use; use `main()`" > > Hence let's call pytest.main() directly. > Move args processing into the __main__ paragraph. > Thanks for the patch! And +1 that we shouldn't avoid the package == version as much as possible. Distros provide a version and if Python doesn't have a capability to provide a way how to do above conditionally to the version, then probably we have to drop Python crap and use better language for the test cases that must be robust. > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > --- > test/py/test.py | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/test/py/test.py b/test/py/test.py > index bee88d96bc..285fda5425 100755 > --- a/test/py/test.py > +++ b/test/py/test.py > @@ -10,11 +10,11 @@ > import os > import os.path > import sys > +import pytest > from pkg_resources import load_entry_point > > -# argv; py.test test_directory_name user-supplied-arguments > -args = [os.path.dirname(__file__) + '/tests'] > -args.extend(sys.argv) > - > if __name__ == '__main__': > - sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args)) > + # argv; py.test test_directory_name user-supplied-arguments > + args = [os.path.dirname(__file__) + '/tests'] > + args.extend(sys.argv) > + sys.exit(pytest.main(args)) > -- > 2.29.2 >
On 1/28/21 5:17 PM, Tom Rini wrote: > On Thu, Jan 28, 2021 at 02:28:03PM +0100, Heinrich Schuchardt wrote: >> On 28.01.21 13:58, Tom Rini wrote: >>> On Thu, Jan 28, 2021 at 12:46:11PM +0100, Heinrich Schuchardt wrote: >>> >>>> With Pytest 6.0.2 'make tests' fails: >>>> >>>> sandbox: Traceback (most recent call last): >>>> File "./test/py/test.py", line 20, in <module> >>>> sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args)) >>>> TypeError: console_main() takes 0 positional arguments but 1 was given >>>> >>>> The definition of console_scripts has changed as follows: >>>> >>>> Pytest 4.6.1: >>>> >>>> [options.entry_points] >>>> console_scripts = >>>> pytest=pytest:main >>>> py.test=pytest:main >>>> >>>> Pytest 6.0.2: >>>> >>>> [options.entry_points] >>>> console_scripts = >>>> pytest=pytest:console_main >>>> py.test=pytest:console_main >>>> >>>> The new function console_main() has a comment: >>>> "This function is not meant for programmable use; use `main()`" >>>> >>>> Hence let's call pytest.main() directly. >>>> Move args processing into the __main__ paragraph. >>>> >>>> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> >>>> --- >>>> test/py/test.py | 10 +++++----- >>>> 1 file changed, 5 insertions(+), 5 deletions(-) >>> >>> So the last round of "newer pytest means we need to ..." was part of why >>> we have test/py/requirements.txt right now. That was over a year ago. >>> So, for after v2021.04 it would be good to update pytest to current and >>> deal with any updating that needs updating in our tests and related >>> code. Thanks! >>> >> >> This patch is not about making new requirements. It is about increasing >> the compatibility of our Python script with a larger range of Pytest >> revisions. >> >> So I do not see the show-stopper for the current release. > > I bring up the last time because we support using "pip install -r > test/py/requirements.txt" as how to create the supported test > environment. This is based on my understanding of the time of the best > practices of dealing with python modules. As you have read in the replies to that discussion it is not only me who due to security considerations will not run pip on his private computer but wants to use the packages from the distro. This patch does not break anything. Hence I would appreciate if you could consider it for inclusion. This does not stop you or Gitlab to use pip with your favorite Pytest version. Best regards Heinrich
On Thu, Jan 28, 2021 at 1:46 PM Heinrich Schuchardt <xypron.glpk@gmx.de> wrote: > > With Pytest 6.0.2 'make tests' fails: > > sandbox: Traceback (most recent call last): > File "./test/py/test.py", line 20, in <module> > sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args)) > TypeError: console_main() takes 0 positional arguments but 1 was given > > The definition of console_scripts has changed as follows: > > Pytest 4.6.1: > > [options.entry_points] > console_scripts = > pytest=pytest:main > py.test=pytest:main > > Pytest 6.0.2: > > [options.entry_points] > console_scripts = > pytest=pytest:console_main > py.test=pytest:console_main > > The new function console_main() has a comment: > "This function is not meant for programmable use; use `main()`" > > Hence let's call pytest.main() directly. > Move args processing into the __main__ paragraph. Tested-by: Andy Shevchenko <andy.shevchenko@gmail.com> > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > --- > test/py/test.py | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/test/py/test.py b/test/py/test.py > index bee88d96bc..285fda5425 100755 > --- a/test/py/test.py > +++ b/test/py/test.py > @@ -10,11 +10,11 @@ > import os > import os.path > import sys > +import pytest > from pkg_resources import load_entry_point > > -# argv; py.test test_directory_name user-supplied-arguments > -args = [os.path.dirname(__file__) + '/tests'] > -args.extend(sys.argv) > - > if __name__ == '__main__': > - sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args)) > + # argv; py.test test_directory_name user-supplied-arguments > + args = [os.path.dirname(__file__) + '/tests'] > + args.extend(sys.argv) > + sys.exit(pytest.main(args)) > -- > 2.29.2 >
On Thu, Jan 28, 2021 at 07:36:53PM +0100, Heinrich Schuchardt wrote: > On 1/28/21 5:17 PM, Tom Rini wrote: > > On Thu, Jan 28, 2021 at 02:28:03PM +0100, Heinrich Schuchardt wrote: > > > On 28.01.21 13:58, Tom Rini wrote: > > > > On Thu, Jan 28, 2021 at 12:46:11PM +0100, Heinrich Schuchardt wrote: > > > > > > > > > With Pytest 6.0.2 'make tests' fails: > > > > > > > > > > sandbox: Traceback (most recent call last): > > > > > File "./test/py/test.py", line 20, in <module> > > > > > sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args)) > > > > > TypeError: console_main() takes 0 positional arguments but 1 was given > > > > > > > > > > The definition of console_scripts has changed as follows: > > > > > > > > > > Pytest 4.6.1: > > > > > > > > > > [options.entry_points] > > > > > console_scripts = > > > > > pytest=pytest:main > > > > > py.test=pytest:main > > > > > > > > > > Pytest 6.0.2: > > > > > > > > > > [options.entry_points] > > > > > console_scripts = > > > > > pytest=pytest:console_main > > > > > py.test=pytest:console_main > > > > > > > > > > The new function console_main() has a comment: > > > > > "This function is not meant for programmable use; use `main()`" > > > > > > > > > > Hence let's call pytest.main() directly. > > > > > Move args processing into the __main__ paragraph. > > > > > > > > > > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > > > > > --- > > > > > test/py/test.py | 10 +++++----- > > > > > 1 file changed, 5 insertions(+), 5 deletions(-) > > > > > > > > So the last round of "newer pytest means we need to ..." was part of why > > > > we have test/py/requirements.txt right now. That was over a year ago. > > > > So, for after v2021.04 it would be good to update pytest to current and > > > > deal with any updating that needs updating in our tests and related > > > > code. Thanks! > > > > > > > > > > This patch is not about making new requirements. It is about increasing > > > the compatibility of our Python script with a larger range of Pytest > > > revisions. > > > > > > So I do not see the show-stopper for the current release. > > > > I bring up the last time because we support using "pip install -r > > test/py/requirements.txt" as how to create the supported test > > environment. This is based on my understanding of the time of the best > > practices of dealing with python modules. > > As you have read in the replies to that discussion it is not only me who > due to security considerations will not run pip on his private computer > but wants to use the packages from the distro. > > This patch does not break anything. Hence I would appreciate if you > could consider it for inclusion. > > This does not stop you or Gitlab to use pip with your favorite Pytest > version. In that this does not lead to a backwards incompatible change (like we had previously), this falls in to the category of changes that fix problems some people see, even if it's not the default case. So yes, I will pick this up as part of picking up general fixes. And as I've thrown this at everything-new (to see what happens there) + sandbox, as well as my regular lab of testing with the old version and everything is fine: Tested-by: Tom Rini <trini@konsulko.com>
On Fri, Jan 29, 2021 at 1:56 AM Tom Rini <trini@konsulko.com> wrote: > On Thu, Jan 28, 2021 at 07:36:53PM +0100, Heinrich Schuchardt wrote: > > On 1/28/21 5:17 PM, Tom Rini wrote: ... > > As you have read in the replies to that discussion it is not only me who > > due to security considerations will not run pip on his private computer > > but wants to use the packages from the distro. > > > > This patch does not break anything. Hence I would appreciate if you > > could consider it for inclusion. > > > > This does not stop you or Gitlab to use pip with your favorite Pytest > > version. > > In that this does not lead to a backwards incompatible change (like we > had previously), this falls in to the category of changes that fix > problems some people see, even if it's not the default case. So yes, I > will pick this up as part of picking up general fixes. Thanks, Tom! > And as I've thrown this at everything-new (to see what happens there) + > sandbox, as well as my regular lab of testing with the old version and > everything is fine: > > Tested-by: Tom Rini <trini@konsulko.com>
On Thu, Jan 28, 2021 at 12:46:11PM +0100, Heinrich Schuchardt wrote: > With Pytest 6.0.2 'make tests' fails: > > sandbox: Traceback (most recent call last): > File "./test/py/test.py", line 20, in <module> > sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args)) > TypeError: console_main() takes 0 positional arguments but 1 was given > > The definition of console_scripts has changed as follows: > > Pytest 4.6.1: > > [options.entry_points] > console_scripts = > pytest=pytest:main > py.test=pytest:main > > Pytest 6.0.2: > > [options.entry_points] > console_scripts = > pytest=pytest:console_main > py.test=pytest:console_main > > The new function console_main() has a comment: > "This function is not meant for programmable use; use `main()`" > > Hence let's call pytest.main() directly. > Move args processing into the __main__ paragraph. > > Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > Tested-by: Andy Shevchenko <andy.shevchenko@gmail.com> > Tested-by: Tom Rini <trini@konsulko.com> Applied to u-boot/master, thanks!
diff --git a/test/py/test.py b/test/py/test.py index bee88d96bc..285fda5425 100755 --- a/test/py/test.py +++ b/test/py/test.py @@ -10,11 +10,11 @@ import os import os.path import sys +import pytest from pkg_resources import load_entry_point -# argv; py.test test_directory_name user-supplied-arguments -args = [os.path.dirname(__file__) + '/tests'] -args.extend(sys.argv) - if __name__ == '__main__': - sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args)) + # argv; py.test test_directory_name user-supplied-arguments + args = [os.path.dirname(__file__) + '/tests'] + args.extend(sys.argv) + sys.exit(pytest.main(args))
With Pytest 6.0.2 'make tests' fails: sandbox: Traceback (most recent call last): File "./test/py/test.py", line 20, in <module> sys.exit(load_entry_point('pytest', 'console_scripts', 'pytest')(args)) TypeError: console_main() takes 0 positional arguments but 1 was given The definition of console_scripts has changed as follows: Pytest 4.6.1: [options.entry_points] console_scripts = pytest=pytest:main py.test=pytest:main Pytest 6.0.2: [options.entry_points] console_scripts = pytest=pytest:console_main py.test=pytest:console_main The new function console_main() has a comment: "This function is not meant for programmable use; use `main()`" Hence let's call pytest.main() directly. Move args processing into the __main__ paragraph. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> --- test/py/test.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) -- 2.29.2