diff mbox series

[v2] python3-license-expression: Fix the ptest failure

Message ID 20231218061542.1845279-1-mingli.yu@windriver.com
State Accepted, archived
Commit 6b06ad7a9f1dd5900483102f5723a6821f961dab
Headers show
Series [v2] python3-license-expression: Fix the ptest failure | expand

Commit Message

Yu, Mingli Dec. 18, 2023, 6:15 a.m. UTC
From: Mingli Yu <mingli.yu@windriver.com>

Fix the below ptest failure:
 self = <test_skeleton_codestyle.BaseTests testMethod=test_skeleton_codestyle>
 def test_skeleton_codestyle(self):
 """
 This test shouldn't run in proliferated repositories.
 """
 setup_cfg = configparser.ConfigParser()
 setup_cfg.read("setup.cfg")
 > if setup_cfg["metadata"]["name"] != "skeleton":
 tests/test_skeleton_codestyle.py:22:
 self = <configparser.ConfigParser object at 0x7fd87cf55110>, key = 'metadata'
 def _getitem_(self, key):
 if key != self.default_section and not self.has_section(key):
 > raise KeyError(key)
 E KeyError: 'metadata'

After the patch:
 # ./run-ptest
 [snip]
 PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_bad_syntax
 PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_exception_as_regular_key
 PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_exception_with_choice
 PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_invalid_license_exception
 PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_invalid_license_exception_strict_false
 PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_invalid_license_key
 PASS: tests/test_license_expression.py::UtilTest::test_build_licensing
 PASS: tests/test_license_expression.py::UtilTest::test_build_spdx_licensing
 PASS: tests/test_license_expression.py::UtilTest::test_get_license_key_info
 PASS: tests/test_license_expression.py::UtilTest::test_get_license_key_info_vendored
 PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_duplicated_elements
 PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_empty_input
 PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_or_relationship
 PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_regular
 PASS: tests/test_skeleton_codestyle.py::BaseTests::test_skeleton_codestyle

 ============================= 175 passed in 10.36s =============================

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
---
 .../python/python3-license-expression/run-ptest             | 6 +++++-
 .../python/python3-license-expression_30.1.1.bb             | 1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

Comments

Alexander Kanavin Dec. 18, 2023, 8:41 a.m. UTC | #1
Wait. There were two specific review requests, and both remain
unanswered. You are just resending the patch, and that is not
acceptable.

- (from Ross) can we use pytest —automake instead of unreadable
sed/awk monster expression?
- (from me) is ptest returning a non-zero error code when it fails
like the commit says? If it does, why isn't the failure seen when
running -c testimage, or in the autobuilder which does that?

Please do check these first, and please do pay attention to what people ask.

Alex



On Mon, 18 Dec 2023 at 07:15, <mingli.yu@windriver.com> wrote:
>
> From: Mingli Yu <mingli.yu@windriver.com>
>
> Fix the below ptest failure:
>  self = <test_skeleton_codestyle.BaseTests testMethod=test_skeleton_codestyle>
>  def test_skeleton_codestyle(self):
>  """
>  This test shouldn't run in proliferated repositories.
>  """
>  setup_cfg = configparser.ConfigParser()
>  setup_cfg.read("setup.cfg")
>  > if setup_cfg["metadata"]["name"] != "skeleton":
>  tests/test_skeleton_codestyle.py:22:
>  self = <configparser.ConfigParser object at 0x7fd87cf55110>, key = 'metadata'
>  def _getitem_(self, key):
>  if key != self.default_section and not self.has_section(key):
>  > raise KeyError(key)
>  E KeyError: 'metadata'
>
> After the patch:
>  # ./run-ptest
>  [snip]
>  PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_bad_syntax
>  PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_exception_as_regular_key
>  PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_exception_with_choice
>  PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_invalid_license_exception
>  PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_invalid_license_exception_strict_false
>  PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_invalid_license_key
>  PASS: tests/test_license_expression.py::UtilTest::test_build_licensing
>  PASS: tests/test_license_expression.py::UtilTest::test_build_spdx_licensing
>  PASS: tests/test_license_expression.py::UtilTest::test_get_license_key_info
>  PASS: tests/test_license_expression.py::UtilTest::test_get_license_key_info_vendored
>  PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_duplicated_elements
>  PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_empty_input
>  PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_or_relationship
>  PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_regular
>  PASS: tests/test_skeleton_codestyle.py::BaseTests::test_skeleton_codestyle
>
>  ============================= 175 passed in 10.36s =============================
>
> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> ---
>  .../python/python3-license-expression/run-ptest             | 6 +++++-
>  .../python/python3-license-expression_30.1.1.bb             | 1 +
>  2 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/meta/recipes-devtools/python/python3-license-expression/run-ptest b/meta/recipes-devtools/python/python3-license-expression/run-ptest
> index 5cec711696..07e2dd17ee 100644
> --- a/meta/recipes-devtools/python/python3-license-expression/run-ptest
> +++ b/meta/recipes-devtools/python/python3-license-expression/run-ptest
> @@ -1,3 +1,7 @@
>  #!/bin/sh
>
> -pytest
> +rm -rf output.log
> +pytest -o log_cli=true -o log_cli_level=INFO > output.log 2>&1
> +exitcode=$?
> +cat output.log | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
> +exit $exitcode
> diff --git a/meta/recipes-devtools/python/python3-license-expression_30.1.1.bb b/meta/recipes-devtools/python/python3-license-expression_30.1.1.bb
> index 31fb88d6e5..5d3923d487 100644
> --- a/meta/recipes-devtools/python/python3-license-expression_30.1.1.bb
> +++ b/meta/recipes-devtools/python/python3-license-expression_30.1.1.bb
> @@ -33,4 +33,5 @@ do_install_ptest() {
>      install -d ${D}${PTEST_PATH}/src
>      cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
>      cp -rf ${S}/src/* ${D}${PTEST_PATH}/src/
> +    cp -rf ${S}/setup.cfg ${D}${PTEST_PATH}/
>  }
> --
> 2.25.1
>
Yu, Mingli Dec. 18, 2023, 9:11 a.m. UTC | #2
Hi Alex,

Please check the comments inline.

On 12/18/23 16:41, Alexander Kanavin wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
> 
> Wait. There were two specific review requests, and both remain
> unanswered. You are just resending the patch, and that is not
> acceptable.
> 
> - (from Ross) can we use pytest —automake instead of unreadable
> sed/awk monster expression?

A: Will use pytest --automake in v3.

> - (from me) is ptest returning a non-zero error code when it fails
> like the commit says? If it does, why isn't the failure seen when
> running -c testimage, or in the autobuilder which does that?

Yes, the pytest command should return non-zero as below:
  # ./run-ptest
  [snip]

PASS: 
tests/test_license_expression.py:CombineExpressionTest.test_combine_expressions_with_duplicated_elements
PASS: 
tests/test_license_expression.py:CombineExpressionTest.test_combine_expressions_with_empty_input
PASS: 
tests/test_license_expression.py:CombineExpressionTest.test_combine_expressions_with_or_relationship
PASS: 
tests/test_license_expression.py:CombineExpressionTest.test_combine_expressions_with_regular

self = <test_skeleton_codestyle.BaseTests 
testMethod=test_skeleton_codestyle>

     def test_skeleton_codestyle(self):
         """
         This test shouldn't run in proliferated repositories.
         """
         setup_cfg = configparser.ConfigParser()
         setup_cfg.read("setup.cfg")
 >       if setup_cfg["metadata"]["name"] != "skeleton":

tests/test_skeleton_codestyle.py:22:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _

self = <configparser.ConfigParser object at 0x7f6e46e36e90>, key = 
'metadata'

     def __getitem__(self, key):
         if key != self.default_section and not self.has_section(key):
 >           raise KeyError(key)
E           KeyError: 'metadata'

../../python3.11/configparser.py:979: KeyError
FAIL: tests/test_skeleton_codestyle.py:BaseTests.test_skeleton_codestyle
============================================================================
Testsuite summary
# TOTAL: 175
# PASS: 174
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0

# echo $?
1

Thanks,

> 
> Please do check these first, and please do pay attention to what people ask.
> 
> Alex
> 
> 
> 
> On Mon, 18 Dec 2023 at 07:15, <mingli.yu@windriver.com> wrote:
>>
>> From: Mingli Yu <mingli.yu@windriver.com>
>>
>> Fix the below ptest failure:
>>   self = <test_skeleton_codestyle.BaseTests testMethod=test_skeleton_codestyle>
>>   def test_skeleton_codestyle(self):
>>   """
>>   This test shouldn't run in proliferated repositories.
>>   """
>>   setup_cfg = configparser.ConfigParser()
>>   setup_cfg.read("setup.cfg")
>>   > if setup_cfg["metadata"]["name"] != "skeleton":
>>   tests/test_skeleton_codestyle.py:22:
>>   self = <configparser.ConfigParser object at 0x7fd87cf55110>, key = 'metadata'
>>   def _getitem_(self, key):
>>   if key != self.default_section and not self.has_section(key):
>>   > raise KeyError(key)
>>   E KeyError: 'metadata'
>>
>> After the patch:
>>   # ./run-ptest
>>   [snip]
>>   PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_bad_syntax
>>   PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_exception_as_regular_key
>>   PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_exception_with_choice
>>   PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_invalid_license_exception
>>   PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_invalid_license_exception_strict_false
>>   PASS: tests/test_license_expression.py::LicensingValidateTest::test_validation_invalid_license_key
>>   PASS: tests/test_license_expression.py::UtilTest::test_build_licensing
>>   PASS: tests/test_license_expression.py::UtilTest::test_build_spdx_licensing
>>   PASS: tests/test_license_expression.py::UtilTest::test_get_license_key_info
>>   PASS: tests/test_license_expression.py::UtilTest::test_get_license_key_info_vendored
>>   PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_duplicated_elements
>>   PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_empty_input
>>   PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_or_relationship
>>   PASS: tests/test_license_expression.py::CombineExpressionTest::test_combine_expressions_with_regular
>>   PASS: tests/test_skeleton_codestyle.py::BaseTests::test_skeleton_codestyle
>>
>>   ============================= 175 passed in 10.36s =============================
>>
>> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
>> ---
>>   .../python/python3-license-expression/run-ptest             | 6 +++++-
>>   .../python/python3-license-expression_30.1.1.bb             | 1 +
>>   2 files changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/meta/recipes-devtools/python/python3-license-expression/run-ptest b/meta/recipes-devtools/python/python3-license-expression/run-ptest
>> index 5cec711696..07e2dd17ee 100644
>> --- a/meta/recipes-devtools/python/python3-license-expression/run-ptest
>> +++ b/meta/recipes-devtools/python/python3-license-expression/run-ptest
>> @@ -1,3 +1,7 @@
>>   #!/bin/sh
>>
>> -pytest
>> +rm -rf output.log
>> +pytest -o log_cli=true -o log_cli_level=INFO > output.log 2>&1
>> +exitcode=$?
>> +cat output.log | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
>> +exit $exitcode
>> diff --git a/meta/recipes-devtools/python/python3-license-expression_30.1.1.bb b/meta/recipes-devtools/python/python3-license-expression_30.1.1.bb
>> index 31fb88d6e5..5d3923d487 100644
>> --- a/meta/recipes-devtools/python/python3-license-expression_30.1.1.bb
>> +++ b/meta/recipes-devtools/python/python3-license-expression_30.1.1.bb
>> @@ -33,4 +33,5 @@ do_install_ptest() {
>>       install -d ${D}${PTEST_PATH}/src
>>       cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
>>       cp -rf ${S}/src/* ${D}${PTEST_PATH}/src/
>> +    cp -rf ${S}/setup.cfg ${D}${PTEST_PATH}/
>>   }
>> --
>> 2.25.1
>>
Alexander Kanavin Dec. 18, 2023, 9:24 a.m. UTC | #3
On Mon, 18 Dec 2023 at 10:12, Yu, Mingli <mingli.yu@eng.windriver.com> wrote:

> # echo $?
> 1

Thanks. This however doesn't explain why the failure is not seen on
the autobuilder, but I'll answer that in a response to the patch.

Alex
diff mbox series

Patch

diff --git a/meta/recipes-devtools/python/python3-license-expression/run-ptest b/meta/recipes-devtools/python/python3-license-expression/run-ptest
index 5cec711696..07e2dd17ee 100644
--- a/meta/recipes-devtools/python/python3-license-expression/run-ptest
+++ b/meta/recipes-devtools/python/python3-license-expression/run-ptest
@@ -1,3 +1,7 @@ 
 #!/bin/sh
 
-pytest
+rm -rf output.log
+pytest -o log_cli=true -o log_cli_level=INFO > output.log 2>&1
+exitcode=$?
+cat output.log | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
+exit $exitcode
diff --git a/meta/recipes-devtools/python/python3-license-expression_30.1.1.bb b/meta/recipes-devtools/python/python3-license-expression_30.1.1.bb
index 31fb88d6e5..5d3923d487 100644
--- a/meta/recipes-devtools/python/python3-license-expression_30.1.1.bb
+++ b/meta/recipes-devtools/python/python3-license-expression_30.1.1.bb
@@ -33,4 +33,5 @@  do_install_ptest() {
     install -d ${D}${PTEST_PATH}/src
     cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
     cp -rf ${S}/src/* ${D}${PTEST_PATH}/src/
+    cp -rf ${S}/setup.cfg ${D}${PTEST_PATH}/
 }