php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #80629 Test ext/standard/tests/file/disk_free_space_basic.phpt fails on Fedora 33
Submitted: 2021-01-15 03:41 UTC Modified: 2021-01-19 15:10 UTC
From: girgias@php.net Assigned:
Status: Open Package: Filesystem function related
PHP Version: 8.0Git-2021-01-15 (Git) OS: Fedora Workstation 33
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please — but make sure to vote on the bug!
Your email address:
MUST BE VALID
Solve the problem:
49 - 34 = ?
Subscribe to this entry?

 
 [2021-01-15 03:41 UTC] girgias@php.net
Description:
------------
A fresh minimal build of PHP on Fedora 33 produces one test failure with the following test:
Test disk_free_space and its alias diskfreespace() functions : basic functionality [ext/standard/tests/file/disk_free_space_basic.phpt]

DIFF:
--
     
      Free Space after writing to a file
     float(%f)
012+  Free Space Value Is Incorrect
013+ float(982391926784)
014+ float(982391926784)
012-  Free Space Value Is Correct
     *** Testing with Binary Input ***
     float(%f)
     
--

Test script:
---------------
<?php
$file_path = __DIR__;

echo "*** Testing with existing directory ***\n";
var_dump( disk_free_space($file_path) );
var_dump( diskfreespace($file_path) );

echo "*** Testing with newly created directory ***\n";
$dir = "/disk_free_space";
mkdir($file_path.$dir);
echo" \n Free Space before writing to a file\n";
$space1 =  disk_free_space($file_path.$dir);
var_dump( $space1 );

$fh = fopen($file_path.$dir."/disk_free_space.tmp", "a");
$data = str_repeat("x", 0xffff);
fwrite($fh, $data);
fclose($fh);

echo "\n Free Space after writing to a file\n";
$space2 =  disk_free_space($file_path.$dir);
var_dump( $space2 );

if($space1 > $space2 )
  echo "\n Free Space Value Is Correct\n";
else {
  echo "\n Free Space Value Is Incorrect\n";
  var_dump($space1, $space2);
}

echo "*** Testing with Binary Input ***\n";
var_dump( disk_free_space(b"$file_path") );

echo"\n--- Done ---";
?>

Expected result:
----------------
--EXPECTF--
*** Testing with existing directory ***
float(%f)
float(%f)
*** Testing with newly created directory ***
 
 Free Space before writing to a file
float(%f)

 Free Space after writing to a file
float(%f)

 Free Space Value Is Correct
*** Testing with Binary Input ***
float(%f)

--- Done ---

Actual result:
--------------
*** Testing with existing directory ***
float(982391926784)
float(982391926784)
*** Testing with newly created directory ***
 
 Free Space before writing to a file
float(982391926784)

 Free Space after writing to a file
float(982391926784)

 Free Space Value Is Incorrect
float(982391926784)
float(982391926784)
*** Testing with Binary Input ***
float(982391926784)

--- Done ---

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2021-01-15 13:32 UTC] cmb@php.net
Hmm, unnecessarily verbose test case, and also flaky, since
another process could interface (might be the reason why it's
disabled on Travis).  I also wonder why the memory_limit is set to
32M.

Anyhow, can you reliably reproduce this test failure?
 [2021-01-15 15:01 UTC] girgias@php.net
I can, the values change (for obvious reasons) but every time I run it it fails.
 [2021-01-19 15:10 UTC] nikic@php.net
What happens if you increase the 0xffff to something larger? Possibly disk size gets measured at larger granularity than that...
 [2021-01-19 15:20 UTC] girgias@php.net
Even changing the repeat value to 0xffffff produces the same diff.

(can't go any higher without memory exhaustion, for obvious reasons)
 
PHP Copyright © 2001-2021 The PHP Group
All rights reserved.
Last updated: Sat Oct 23 05:03:37 2021 UTC