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: 2022-11-18 13:40 UTC
Votes:1
Avg. Score:3.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: girgias@php.net Assigned: girgias (profile)
Status: Closed Package: Filesystem function related
PHP Version: 8.0Git-2021-01-15 (Git) OS: Fedora Workstation 33
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
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

Pull Requests

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)
 [2022-11-18 13:40 UTC] girgias@php.net
-Status: Open +Status: Closed -Assigned To: +Assigned To: girgias
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 15:01:29 2024 UTC