[test-oe] test_metadata_src_uri: new unittest detecting added patch files without modifying SRC_URI

Submitted by changqing.li@windriver.com on March 5, 2019, 9:59 a.m. | Patch ID: 159297

Details

Message ID 1551779999-231946-1-git-send-email-changqing.li@windriver.com
State New
Headers show

Commit Message

changqing.li@windriver.com March 5, 2019, 9:59 a.m.
From: Changqing Li <changqing.li@windriver.com>

Adds new unittest detecting when a patch file is added but no corresponding
change to the SRC_URI is done.

This patch is from <daniela.plascencia@linux.intel.com>, get from commit
49201c19cfe4cadd127b112d2858d5b28db49c20, this commit is reverted by commit
6108d97f83b211f9eb245f339a412debd0ec5db4.

The added test case is ok, reason of series 9949 patchtest failed is:
recipe weston have REQUIRED_DISTRO_FEATURES, so parse recipe skipped,
cause self.modified is none, actually .bb is mofified, so make the testcase failed.

during patchtest, we don't really need DISTRO_FEATURES, so fix the problem
by set REQUIRED_DISTRO_FEATURES to "" in repo patchtest, meantime, add this
testcase back.

[Yocto #13005]

Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
 tests/test_metadata_src_uri.py | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

Patch hide | download patch | download mbox

diff --git a/tests/test_metadata_src_uri.py b/tests/test_metadata_src_uri.py
index a4c5caa..f684ced 100644
--- a/tests/test_metadata_src_uri.py
+++ b/tests/test_metadata_src_uri.py
@@ -85,3 +85,28 @@  class SrcUri(base.Metadata):
                               'Amend the patch containing the software patch file removal',
                               data=[('Patch', f) for f in not_removed])
 
+    def test_src_uri_path_not_updated(self):
+        new_patches = set()
+        for patch in self.patchset:
+            if patch.is_added_file and patch.path.endswith('.patch'):
+                new_patches.add(os.path.basename(patch.path))
+
+        if not new_patches:
+            self.skip('No new patches added, skipping test')
+
+        if not self.modified:
+            self.fail('New patch path missing in SRC_URI',
+                       "Add the patch path to the recipe's SRC_URI",
+                       data=[('New patch(es)', '\n'.join(new_patches))])
+
+        for pn in self.modified:
+            rd = self.tinfoil.parse_recipe(pn)
+
+            patchtestdata.PatchTestDataStore['%s-%s-%s' % (self.shortid(), self.metadata, pn)] = rd.getVar(self.metadata)
+            test_src_uri    = patchtestdata.PatchTestDataStore['%s-%s-%s' % (self.shortid(), self.metadata, pn)].split()
+            test_files    = set([os.path.basename(patch) for patch in test_src_uri if patch.startswith('file://')])
+
+            if not test_files.issuperset(new_patches):
+                self.fail('New patch path missing in SRC_URI',
+                          "Add the patch path in the recipe's SRC_URI",
+                          data=[('New patch(es)', p) for p in new_patches.difference(test_files)])

Comments

changqing.li@windriver.com April 29, 2019, 6:10 a.m.
ping

On 3/5/19 5:59 PM, changqing.li@windriver.com wrote:
> From: Changqing Li <changqing.li@windriver.com>
>
> Adds new unittest detecting when a patch file is added but no corresponding
> change to the SRC_URI is done.
>
> This patch is from <daniela.plascencia@linux.intel.com>, get from commit
> 49201c19cfe4cadd127b112d2858d5b28db49c20, this commit is reverted by commit
> 6108d97f83b211f9eb245f339a412debd0ec5db4.
>
> The added test case is ok, reason of series 9949 patchtest failed is:
> recipe weston have REQUIRED_DISTRO_FEATURES, so parse recipe skipped,
> cause self.modified is none, actually .bb is mofified, so make the testcase failed.
>
> during patchtest, we don't really need DISTRO_FEATURES, so fix the problem
> by set REQUIRED_DISTRO_FEATURES to "" in repo patchtest, meantime, add this
> testcase back.
>
> [Yocto #13005]
>
> Signed-off-by: Changqing Li <changqing.li@windriver.com>
> ---
>   tests/test_metadata_src_uri.py | 25 +++++++++++++++++++++++++
>   1 file changed, 25 insertions(+)
>
> diff --git a/tests/test_metadata_src_uri.py b/tests/test_metadata_src_uri.py
> index a4c5caa..f684ced 100644
> --- a/tests/test_metadata_src_uri.py
> +++ b/tests/test_metadata_src_uri.py
> @@ -85,3 +85,28 @@ class SrcUri(base.Metadata):
>                                 'Amend the patch containing the software patch file removal',
>                                 data=[('Patch', f) for f in not_removed])
>   
> +    def test_src_uri_path_not_updated(self):
> +        new_patches = set()
> +        for patch in self.patchset:
> +            if patch.is_added_file and patch.path.endswith('.patch'):
> +                new_patches.add(os.path.basename(patch.path))
> +
> +        if not new_patches:
> +            self.skip('No new patches added, skipping test')
> +
> +        if not self.modified:
> +            self.fail('New patch path missing in SRC_URI',
> +                       "Add the patch path to the recipe's SRC_URI",
> +                       data=[('New patch(es)', '\n'.join(new_patches))])
> +
> +        for pn in self.modified:
> +            rd = self.tinfoil.parse_recipe(pn)
> +
> +            patchtestdata.PatchTestDataStore['%s-%s-%s' % (self.shortid(), self.metadata, pn)] = rd.getVar(self.metadata)
> +            test_src_uri    = patchtestdata.PatchTestDataStore['%s-%s-%s' % (self.shortid(), self.metadata, pn)].split()
> +            test_files    = set([os.path.basename(patch) for patch in test_src_uri if patch.startswith('file://')])
> +
> +            if not test_files.issuperset(new_patches):
> +                self.fail('New patch path missing in SRC_URI',
> +                          "Add the patch path in the recipe's SRC_URI",
> +                          data=[('New patch(es)', p) for p in new_patches.difference(test_files)])
changqing.li@windriver.com May 28, 2019, 1 a.m.
ping

On 4/29/19 2:10 PM, Changqing Li wrote:
> ping
>
> On 3/5/19 5:59 PM, changqing.li@windriver.com wrote:
>> From: Changqing Li <changqing.li@windriver.com>
>>
>> Adds new unittest detecting when a patch file is added but no 
>> corresponding
>> change to the SRC_URI is done.
>>
>> This patch is from <daniela.plascencia@linux.intel.com>, get from commit
>> 49201c19cfe4cadd127b112d2858d5b28db49c20, this commit is reverted by 
>> commit
>> 6108d97f83b211f9eb245f339a412debd0ec5db4.
>>
>> The added test case is ok, reason of series 9949 patchtest failed is:
>> recipe weston have REQUIRED_DISTRO_FEATURES, so parse recipe skipped,
>> cause self.modified is none, actually .bb is mofified, so make the 
>> testcase failed.
>>
>> during patchtest, we don't really need DISTRO_FEATURES, so fix the 
>> problem
>> by set REQUIRED_DISTRO_FEATURES to "" in repo patchtest, meantime, 
>> add this
>> testcase back.
>>
>> [Yocto #13005]
>>
>> Signed-off-by: Changqing Li <changqing.li@windriver.com>
>> ---
>>   tests/test_metadata_src_uri.py | 25 +++++++++++++++++++++++++
>>   1 file changed, 25 insertions(+)
>>
>> diff --git a/tests/test_metadata_src_uri.py 
>> b/tests/test_metadata_src_uri.py
>> index a4c5caa..f684ced 100644
>> --- a/tests/test_metadata_src_uri.py
>> +++ b/tests/test_metadata_src_uri.py
>> @@ -85,3 +85,28 @@ class SrcUri(base.Metadata):
>>                                 'Amend the patch containing the 
>> software patch file removal',
>>                                 data=[('Patch', f) for f in 
>> not_removed])
>>   +    def test_src_uri_path_not_updated(self):
>> +        new_patches = set()
>> +        for patch in self.patchset:
>> +            if patch.is_added_file and patch.path.endswith('.patch'):
>> +                new_patches.add(os.path.basename(patch.path))
>> +
>> +        if not new_patches:
>> +            self.skip('No new patches added, skipping test')
>> +
>> +        if not self.modified:
>> +            self.fail('New patch path missing in SRC_URI',
>> +                       "Add the patch path to the recipe's SRC_URI",
>> +                       data=[('New patch(es)', 
>> '\n'.join(new_patches))])
>> +
>> +        for pn in self.modified:
>> +            rd = self.tinfoil.parse_recipe(pn)
>> +
>> +            patchtestdata.PatchTestDataStore['%s-%s-%s' % 
>> (self.shortid(), self.metadata, pn)] = rd.getVar(self.metadata)
>> +            test_src_uri    = 
>> patchtestdata.PatchTestDataStore['%s-%s-%s' % (self.shortid(), 
>> self.metadata, pn)].split()
>> +            test_files    = set([os.path.basename(patch) for patch 
>> in test_src_uri if patch.startswith('file://')])
>> +
>> +            if not test_files.issuperset(new_patches):
>> +                self.fail('New patch path missing in SRC_URI',
>> +                          "Add the patch path in the recipe's SRC_URI",
>> +                          data=[('New patch(es)', p) for p in 
>> new_patches.difference(test_files)])
>
Armin Kuster May 28, 2019, 2:53 p.m.
On 5/27/19 6:00 PM, Changqing Li wrote:
> ping
>
> On 4/29/19 2:10 PM, Changqing Li wrote:
>> ping
>>

Does this mean you have a working knowledge of patchtest?

The one used by the project appears to be off line.  Can you help?

kind regards,
Armin
>> On 3/5/19 5:59 PM, changqing.li@windriver.com wrote:
>>> From: Changqing Li <changqing.li@windriver.com>
>>>
>>> Adds new unittest detecting when a patch file is added but no
>>> corresponding
>>> change to the SRC_URI is done.
>>>
>>> This patch is from <daniela.plascencia@linux.intel.com>, get from
>>> commit
>>> 49201c19cfe4cadd127b112d2858d5b28db49c20, this commit is reverted by
>>> commit
>>> 6108d97f83b211f9eb245f339a412debd0ec5db4.
>>>
>>> The added test case is ok, reason of series 9949 patchtest failed is:
>>> recipe weston have REQUIRED_DISTRO_FEATURES, so parse recipe skipped,
>>> cause self.modified is none, actually .bb is mofified, so make the
>>> testcase failed.
>>>
>>> during patchtest, we don't really need DISTRO_FEATURES, so fix the
>>> problem
>>> by set REQUIRED_DISTRO_FEATURES to "" in repo patchtest, meantime,
>>> add this
>>> testcase back.
>>>
>>> [Yocto #13005]
>>>
>>> Signed-off-by: Changqing Li <changqing.li@windriver.com>
>>> ---
>>>   tests/test_metadata_src_uri.py | 25 +++++++++++++++++++++++++
>>>   1 file changed, 25 insertions(+)
>>>
>>> diff --git a/tests/test_metadata_src_uri.py
>>> b/tests/test_metadata_src_uri.py
>>> index a4c5caa..f684ced 100644
>>> --- a/tests/test_metadata_src_uri.py
>>> +++ b/tests/test_metadata_src_uri.py
>>> @@ -85,3 +85,28 @@ class SrcUri(base.Metadata):
>>>                                 'Amend the patch containing the
>>> software patch file removal',
>>>                                 data=[('Patch', f) for f in
>>> not_removed])
>>>   +    def test_src_uri_path_not_updated(self):
>>> +        new_patches = set()
>>> +        for patch in self.patchset:
>>> +            if patch.is_added_file and patch.path.endswith('.patch'):
>>> +                new_patches.add(os.path.basename(patch.path))
>>> +
>>> +        if not new_patches:
>>> +            self.skip('No new patches added, skipping test')
>>> +
>>> +        if not self.modified:
>>> +            self.fail('New patch path missing in SRC_URI',
>>> +                       "Add the patch path to the recipe's SRC_URI",
>>> +                       data=[('New patch(es)',
>>> '\n'.join(new_patches))])
>>> +
>>> +        for pn in self.modified:
>>> +            rd = self.tinfoil.parse_recipe(pn)
>>> +
>>> +            patchtestdata.PatchTestDataStore['%s-%s-%s' %
>>> (self.shortid(), self.metadata, pn)] = rd.getVar(self.metadata)
>>> +            test_src_uri    =
>>> patchtestdata.PatchTestDataStore['%s-%s-%s' % (self.shortid(),
>>> self.metadata, pn)].split()
>>> +            test_files    = set([os.path.basename(patch) for patch
>>> in test_src_uri if patch.startswith('file://')])
>>> +
>>> +            if not test_files.issuperset(new_patches):
>>> +                self.fail('New patch path missing in SRC_URI',
>>> +                          "Add the patch path in the recipe's
>>> SRC_URI",
>>> +                          data=[('New patch(es)', p) for p in
>>> new_patches.difference(test_files)])
>>
changqing.li@windriver.com May 29, 2019, 2:28 a.m.
On 5/28/19 10:53 PM, akuster wrote:
>
> On 5/27/19 6:00 PM, Changqing Li wrote:
>> ping
>>
>> On 4/29/19 2:10 PM, Changqing Li wrote:
>>> ping
>>>
> Does this mean you have a working knowledge of patchtest?
>
> The one used by the project appears to be off line.  Can you help?
>
> kind regards,
> Armin

I have do some work on this,  and can try to help,  but I don't have

access right of the server,  and I also don't have the admin account of

the patchwork.  if  someone can  provide these info,  I am glad to help.

>>> On 3/5/19 5:59 PM, changqing.li@windriver.com wrote:
>>>> From: Changqing Li <changqing.li@windriver.com>
>>>>
>>>> Adds new unittest detecting when a patch file is added but no
>>>> corresponding
>>>> change to the SRC_URI is done.
>>>>
>>>> This patch is from <daniela.plascencia@linux.intel.com>, get from
>>>> commit
>>>> 49201c19cfe4cadd127b112d2858d5b28db49c20, this commit is reverted by
>>>> commit
>>>> 6108d97f83b211f9eb245f339a412debd0ec5db4.
>>>>
>>>> The added test case is ok, reason of series 9949 patchtest failed is:
>>>> recipe weston have REQUIRED_DISTRO_FEATURES, so parse recipe skipped,
>>>> cause self.modified is none, actually .bb is mofified, so make the
>>>> testcase failed.
>>>>
>>>> during patchtest, we don't really need DISTRO_FEATURES, so fix the
>>>> problem
>>>> by set REQUIRED_DISTRO_FEATURES to "" in repo patchtest, meantime,
>>>> add this
>>>> testcase back.
>>>>
>>>> [Yocto #13005]
>>>>
>>>> Signed-off-by: Changqing Li <changqing.li@windriver.com>
>>>> ---
>>>>    tests/test_metadata_src_uri.py | 25 +++++++++++++++++++++++++
>>>>    1 file changed, 25 insertions(+)
>>>>
>>>> diff --git a/tests/test_metadata_src_uri.py
>>>> b/tests/test_metadata_src_uri.py
>>>> index a4c5caa..f684ced 100644
>>>> --- a/tests/test_metadata_src_uri.py
>>>> +++ b/tests/test_metadata_src_uri.py
>>>> @@ -85,3 +85,28 @@ class SrcUri(base.Metadata):
>>>>                                  'Amend the patch containing the
>>>> software patch file removal',
>>>>                                  data=[('Patch', f) for f in
>>>> not_removed])
>>>>    +    def test_src_uri_path_not_updated(self):
>>>> +        new_patches = set()
>>>> +        for patch in self.patchset:
>>>> +            if patch.is_added_file and patch.path.endswith('.patch'):
>>>> +                new_patches.add(os.path.basename(patch.path))
>>>> +
>>>> +        if not new_patches:
>>>> +            self.skip('No new patches added, skipping test')
>>>> +
>>>> +        if not self.modified:
>>>> +            self.fail('New patch path missing in SRC_URI',
>>>> +                       "Add the patch path to the recipe's SRC_URI",
>>>> +                       data=[('New patch(es)',
>>>> '\n'.join(new_patches))])
>>>> +
>>>> +        for pn in self.modified:
>>>> +            rd = self.tinfoil.parse_recipe(pn)
>>>> +
>>>> +            patchtestdata.PatchTestDataStore['%s-%s-%s' %
>>>> (self.shortid(), self.metadata, pn)] = rd.getVar(self.metadata)
>>>> +            test_src_uri    =
>>>> patchtestdata.PatchTestDataStore['%s-%s-%s' % (self.shortid(),
>>>> self.metadata, pn)].split()
>>>> +            test_files    = set([os.path.basename(patch) for patch
>>>> in test_src_uri if patch.startswith('file://')])
>>>> +
>>>> +            if not test_files.issuperset(new_patches):
>>>> +                self.fail('New patch path missing in SRC_URI',
>>>> +                          "Add the patch path in the recipe's
>>>> SRC_URI",
>>>> +                          data=[('New patch(es)', p) for p in
>>>> new_patches.difference(test_files)])
>
Richard Purdie June 4, 2019, 4:02 p.m.
On Wed, 2019-05-29 at 10:28 +0800, Changqing Li wrote:
> On 5/28/19 10:53 PM, akuster wrote:
> > On 5/27/19 6:00 PM, Changqing Li wrote:
> > > ping
> > > 
> > > On 4/29/19 2:10 PM, Changqing Li wrote:
> > > > ping
> > > > 
> > Does this mean you have a working knowledge of patchtest?
> > 
> > The one used by the project appears to be off line.  Can you help?
> > 
> > kind regards,
> > Armin
> 
> I have do some work on this,  and can try to help,  but I don't have
> 
> access right of the server,  and I also don't have the admin account
> of the patchwork.  if  someone can  provide these info,  I am glad to
> help.

Help would be much appreciated, lets take this offlist and work with
Michael and Paul and see if we can figure out how to move forward.

Cheers,

Richard