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
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: girgias@php.net
New email:
PHP Version: OS:

 

 [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: Mon Mar 01 11:01:23 2021 UTC