* [PATCH 1/3] oeqa/selftest: clean up selftest.inc in teardown
[not found] <cover.1445231631.git.leonardo.sandoval.gonzalez@linux.intel.com>
@ 2015-10-19 5:22 ` leonardo.sandoval.gonzalez
2015-10-19 5:24 ` [PATCH 3/3] oeqa/utils/ftools: Checks before appending/reading files leonardo.sandoval.gonzalez
1 sibling, 0 replies; 4+ messages in thread
From: leonardo.sandoval.gonzalez @ 2015-10-19 5:22 UTC (permalink / raw)
To: openembedded-core
From: Ross Burton <ross.burton@intel.com>
Test cases may want to do call bitbake in setUpClass() but at that point the
previous selftest.inc is still present which could change the build
configuration and result in any built artifacts being removed in the next
bitbake invocation as part of the sysroot clean up.
Resolve this by cleaning selftest.inc in the tearDown, the clean in setUp should
be considered a safety net.
[YOCTO #8466]
Signed-off-by: Ross Burton <ross.burton@intel.com>
---
meta/lib/oeqa/selftest/base.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/lib/oeqa/selftest/base.py b/meta/lib/oeqa/selftest/base.py
index b2faa66..9bddc23 100644
--- a/meta/lib/oeqa/selftest/base.py
+++ b/meta/lib/oeqa/selftest/base.py
@@ -31,7 +31,7 @@ class oeSelfTest(unittest.TestCase):
self.testinc_bblayers_path = os.path.join(self.builddir, "conf/bblayers.inc")
self.testlayer_path = oeSelfTest.testlayer_path
self._extra_tear_down_commands = []
- self._track_for_cleanup = []
+ self._track_for_cleanup = [self.testinc_path]
super(oeSelfTest, self).__init__(methodName)
def setUp(self):
--
1.8.4.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] oeqa/utils/ftools: Checks before appending/reading files
[not found] <cover.1445231631.git.leonardo.sandoval.gonzalez@linux.intel.com>
2015-10-19 5:22 ` [PATCH 1/3] oeqa/selftest: clean up selftest.inc in teardown leonardo.sandoval.gonzalez
@ 2015-10-19 5:24 ` leonardo.sandoval.gonzalez
2015-10-19 13:41 ` Paul Eggleton
1 sibling, 1 reply; 4+ messages in thread
From: leonardo.sandoval.gonzalez @ 2015-10-19 5:24 UTC (permalink / raw)
To: openembedded-core; +Cc: paul.eggleton
From: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Before trying to append/read a file, check if file exists.
Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
---
meta/lib/oeqa/utils/ftools.py | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/meta/lib/oeqa/utils/ftools.py b/meta/lib/oeqa/utils/ftools.py
index 64ebe3d..70a55b8 100644
--- a/meta/lib/oeqa/utils/ftools.py
+++ b/meta/lib/oeqa/utils/ftools.py
@@ -8,20 +8,24 @@ def write_file(path, data):
def append_file(path, data):
wdata = data.rstrip() + "\n"
- with open(path, "a") as f:
+ if os.path.isfile(path):
+ with open(path, "a") as f:
f.write(wdata)
def read_file(path):
data = None
- with open(path) as f:
- data = f.read()
+ if os.path.isfile(path):
+ with open(path) as f:
+ data = f.read()
return data
def remove_from_file(path, data):
- lines = read_file(path).splitlines()
- rmdata = data.strip().splitlines()
- for l in rmdata:
- for c in range(0, lines.count(l)):
- i = lines.index(l)
- del(lines[i])
- write_file(path, "\n".join(lines))
+ rawdata = read_file(path)
+ if rawdata:
+ lines = rawdata.splitlines()
+ rmdata = data.strip().splitlines()
+ for l in rmdata:
+ for c in range(0, lines.count(l)):
+ i = lines.index(l)
+ del(lines[i])
+ write_file(path, "\n".join(lines))
--
1.8.4.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 3/3] oeqa/utils/ftools: Checks before appending/reading files
2015-10-19 5:24 ` [PATCH 3/3] oeqa/utils/ftools: Checks before appending/reading files leonardo.sandoval.gonzalez
@ 2015-10-19 13:41 ` Paul Eggleton
2015-10-19 14:21 ` Leonardo Sandoval
0 siblings, 1 reply; 4+ messages in thread
From: Paul Eggleton @ 2015-10-19 13:41 UTC (permalink / raw)
To: leonardo.sandoval.gonzalez; +Cc: openembedded-core
Hi Leo,
On Monday 19 October 2015 05:24:44 leonardo.sandoval.gonzalez@linux.intel.com
wrote:
> From: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
>
> Before trying to append/read a file, check if file exists.
>
> Signed-off-by: Leonardo Sandoval
> <leonardo.sandoval.gonzalez@linux.intel.com> ---
> meta/lib/oeqa/utils/ftools.py | 24 ++++++++++++++----------
> 1 file changed, 14 insertions(+), 10 deletions(-)
>
> diff --git a/meta/lib/oeqa/utils/ftools.py b/meta/lib/oeqa/utils/ftools.py
> index 64ebe3d..70a55b8 100644
> --- a/meta/lib/oeqa/utils/ftools.py
> +++ b/meta/lib/oeqa/utils/ftools.py
> @@ -8,20 +8,24 @@ def write_file(path, data):
>
> def append_file(path, data):
> wdata = data.rstrip() + "\n"
> - with open(path, "a") as f:
> + if os.path.isfile(path):
> + with open(path, "a") as f:
> f.write(wdata)
Hang on - opening a nonexistent file with mode 'a' is perfectly fine, it'll just
get created - why do we need this check?
> def read_file(path):
> data = None
> - with open(path) as f:
> - data = f.read()
> + if os.path.isfile(path):
> + with open(path) as f:
> + data = f.read()
> return data
>
> def remove_from_file(path, data):
> - lines = read_file(path).splitlines()
> - rmdata = data.strip().splitlines()
> - for l in rmdata:
> - for c in range(0, lines.count(l)):
> - i = lines.index(l)
> - del(lines[i])
> - write_file(path, "\n".join(lines))
> + rawdata = read_file(path)
> + if rawdata:
> + lines = rawdata.splitlines()
> + rmdata = data.strip().splitlines()
> + for l in rmdata:
> + for c in range(0, lines.count(l)):
> + i = lines.index(l)
> + del(lines[i])
> + write_file(path, "\n".join(lines))
Checking a file exists before opening it isn't good practice. It's much better
to try opening it and if the open fails with IOError of errno.ENOENT then
ignore it (or rather, if e.errno != errno.ENOENT then re-raise the
exception).
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 3/3] oeqa/utils/ftools: Checks before appending/reading files
2015-10-19 13:41 ` Paul Eggleton
@ 2015-10-19 14:21 ` Leonardo Sandoval
0 siblings, 0 replies; 4+ messages in thread
From: Leonardo Sandoval @ 2015-10-19 14:21 UTC (permalink / raw)
To: Paul Eggleton; +Cc: openembedded-core
Hi Paul,
On 10/19/2015 08:41 AM, Paul Eggleton wrote:
> Hi Leo,
>
> On Monday 19 October 2015 05:24:44 leonardo.sandoval.gonzalez@linux.intel.com
> wrote:
>> From: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
>>
>> Before trying to append/read a file, check if file exists.
>>
>> Signed-off-by: Leonardo Sandoval
>> <leonardo.sandoval.gonzalez@linux.intel.com> ---
>> meta/lib/oeqa/utils/ftools.py | 24 ++++++++++++++----------
>> 1 file changed, 14 insertions(+), 10 deletions(-)
>>
>> diff --git a/meta/lib/oeqa/utils/ftools.py b/meta/lib/oeqa/utils/ftools.py
>> index 64ebe3d..70a55b8 100644
>> --- a/meta/lib/oeqa/utils/ftools.py
>> +++ b/meta/lib/oeqa/utils/ftools.py
>> @@ -8,20 +8,24 @@ def write_file(path, data):
>>
>> def append_file(path, data):
>> wdata = data.rstrip() + "\n"
>> - with open(path, "a") as f:
>> + if os.path.isfile(path):
>> + with open(path, "a") as f:
>> f.write(wdata)
>
> Hang on - opening a nonexistent file with mode 'a' is perfectly fine, it'll just
> get created - why do we need this check?
You are right, there is no need.
>
>
>> def read_file(path):
>> data = None
>> - with open(path) as f:
>> - data = f.read()
>> + if os.path.isfile(path):
>> + with open(path) as f:
>> + data = f.read()
>> return data
>>
>> def remove_from_file(path, data):
>> - lines = read_file(path).splitlines()
>> - rmdata = data.strip().splitlines()
>> - for l in rmdata:
>> - for c in range(0, lines.count(l)):
>> - i = lines.index(l)
>> - del(lines[i])
>> - write_file(path, "\n".join(lines))
>> + rawdata = read_file(path)
>> + if rawdata:
>> + lines = rawdata.splitlines()
>> + rmdata = data.strip().splitlines()
>> + for l in rmdata:
>> + for c in range(0, lines.count(l)):
>> + i = lines.index(l)
>> + del(lines[i])
>> + write_file(path, "\n".join(lines))
>
> Checking a file exists before opening it isn't good practice. It's much better
> to try opening it and if the open fails with IOError of errno.ENOENT then
> ignore it (or rather, if e.errno != errno.ENOENT then re-raise the
> exception).
After applying patch into master
http://lists.openembedded.org/pipermail/openembedded-core/2015-October/111704.html
I saw this error:
Traceback (most recent call last):
File
"/srv/ab/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/meta/lib/oeqa/selftest/base.py",
line 110, in remove_config
ftools.remove_from_file(self.testinc_path, data)
File
"/srv/ab/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/meta/lib/oeqa/utils/ftools.py",
line 21, in remove_from_file
lines = read_file(path).splitlines()
File
"/srv/ab/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/meta/lib/oeqa/utils/ftools.py",
line 16, in read_file
with open(path) as f:
IOError: [Errno 2] No such file or directory:
'/srv/ab/yocto-autobuilder/yocto-worker/nightly-oe-selftest/build/build/conf/selftest.inc'
That is why I created the latter check. I will change it to use IOError,
safer and cleaner. Sending V2 today.
Thanks for your comments.
>
> Cheers,
> Paul
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-10-19 14:19 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <cover.1445231631.git.leonardo.sandoval.gonzalez@linux.intel.com>
2015-10-19 5:22 ` [PATCH 1/3] oeqa/selftest: clean up selftest.inc in teardown leonardo.sandoval.gonzalez
2015-10-19 5:24 ` [PATCH 3/3] oeqa/utils/ftools: Checks before appending/reading files leonardo.sandoval.gonzalez
2015-10-19 13:41 ` Paul Eggleton
2015-10-19 14:21 ` Leonardo Sandoval
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox