[libcamera-devel] [PATCH 3/4] test: file: Add file creation test

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Jul 13 13:27:30 CEST 2020


Hi Kieran,

On Sun, Jul 12, 2020 at 08:46:16PM +0100, Kieran Bingham wrote:
> Hi Laurent,
> 
> On 12/07/2020 15:44, Laurent Pinchart wrote:
> > Add a test to verify file creation with File::open(). The test is
> > expected to fail as the File::open() implementation is not correct.
> 
> I guess as the previous two patches are not yet integrated, you could
> equally just merge  4/4 into 1/4 before and then it wouldn't fail ...
> 
> But given the patches were done at different times, I can understand why
> you've built this on top :-)

It's also because merging the test that reproduces the issue first
allows making sure that the test correctly triggers the problem. If you
merge the fix first, there's a risk that both the fix and the test could
be incorrect, and cancel each other resulting in the test passing.

> Still,
> 
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> 
> > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > ---
> >  test/file.cpp | 28 ++++++++++++++++++++++++++--
> >  1 file changed, 26 insertions(+), 2 deletions(-)
> > 
> > diff --git a/test/file.cpp b/test/file.cpp
> > index 7688a9dc224a..f458f355ccad 100644
> > --- a/test/file.cpp
> > +++ b/test/file.cpp
> > @@ -31,6 +31,7 @@ protected:
> >  			return TestFail;
> >  
> >  		close(fd);
> > +		unlink(fileName_.c_str());
> >  
> >  		return TestPass;
> >  	}
> > @@ -191,14 +192,37 @@ protected:
> >  
> >  		file.close();
> >  
> > +		/* Test file creation. */
> > +		file.setFileName(fileName_);
> > +
> > +		if (file.exists()) {
> > +			cerr << "Temporary file already exists" << endl;
> > +			return TestFail;
> > +		}
> > +
> > +		if (file.open(File::ReadOnly)) {
> > +			cerr << "Read-only open succeeded on nonexistent file" << endl;
> > +			return TestFail;
> > +		}
> > +
> > +		if (!file.open(File::WriteOnly)) {
> > +			cerr << "Write-only open failed on nonexistent file" << endl;
> > +			return TestFail;
> > +		}
> > +
> > +		if (!file.exists()) {
> > +			cerr << "Write-only open failed to create file" << endl;
> > +			return TestFail;
> > +		}
> > +
> > +		file.close();
> > +
> >  		/* Test read and write. */
> >  		std::array<uint8_t, 256> buffer = { 0 };
> >  
> >  		strncpy(reinterpret_cast<char *>(buffer.data()), "libcamera",
> >  			buffer.size());
> >  
> > -		file.setFileName(fileName_);
> > -
> >  		if (file.read(buffer) >= 0) {
> >  			cerr << "Read succeeded on closed file" << endl;
> >  			return TestFail;

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list