? .DS_Store
? .cache
? .git
? .project
? .settings
? INSTALL.sqlite.txt
? file_341910.patch
? logs
? sites/.DS_Store
? sites/all/modules
? sites/default/.DS_Store
? sites/default/files
? sites/default/settings.php
? sites/default/test
Index: includes/file.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/file.inc,v
retrieving revision 1.146
diff -u -p -r1.146 file.inc
--- includes/file.inc	4 Dec 2008 11:09:33 -0000	1.146
+++ includes/file.inc	30 Dec 2008 04:45:58 -0000
@@ -771,9 +771,9 @@ function file_unmanaged_delete($path) {
  */
 function file_space_used($uid = NULL, $status = FILE_STATUS_PERMANENT) {
   if (!is_null($uid)) {
-    return db_query('SELECT SUM(filesize) FROM {files} WHERE uid = :uid AND status = :status', array(':uid' => $uid, ':status' => $status))->fetchField();
+    return (int) db_query('SELECT SUM(filesize) FROM {files} WHERE uid = :uid AND status & :status = :status', array(':uid' => $uid, ':status' => $status))->fetchField();
   }
-  return db_query('SELECT SUM(filesize) FROM {files} WHERE status = :status', array(':status' => $status))->fetchField();
+  return (int) db_query('SELECT SUM(filesize) FROM {files} WHERE status & :status = :status', array(':status' => $status))->fetchField();
 }
 
 /**
Index: modules/simpletest/tests/file.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/file.test,v
retrieving revision 1.14
diff -u -p -r1.14 file.test
--- modules/simpletest/tests/file.test	27 Nov 2008 08:41:45 -0000	1.14
+++ modules/simpletest/tests/file.test	30 Dec 2008 04:45:58 -0000
@@ -130,6 +130,62 @@ class FileHookTestCase extends FileTestC
   }
 }
 
+
+/**
+ *  This will run tests against the file_space_used() function.
+ */
+class FileSpaceUsedTest extends FileTestCase {
+  function getInfo() {
+    return array(
+      'name' => t('File space used tests'),
+      'description' => t('Tests the file_space_used() function.'),
+      'group' => t('File'),
+    );
+  }
+
+  function setUp() {
+    parent::setUp();
+
+    // Create records for a couple of users with different sizes.
+    drupal_write_record('files', $file = array('uid' => 2, 'filesize' => 50, 'status' => FILE_STATUS_PERMANENT));
+    drupal_write_record('files', $file = array('uid' => 2, 'filesize' => 20, 'status' => FILE_STATUS_PERMANENT));
+    drupal_write_record('files', $file = array('uid' => 3, 'filesize' => 100, 'status' => FILE_STATUS_PERMANENT));
+    drupal_write_record('files', $file = array('uid' => 3, 'filesize' => 200, 'status' => FILE_STATUS_PERMANENT));
+
+    // Now create some with other statuses
+    drupal_write_record('files', $file = array('uid' => 2, 'filesize' => 1, 'status' => 2 | 8));
+    drupal_write_record('files', $file = array('uid' => 3, 'filesize' => 3, 'status' => 2 | 4));
+  }
+
+  /**
+   * Test different users with the default status.
+   */
+  function testUser() {
+    $this->assertEqual(file_space_used(2), 70, t("Found the size of the first user's files."));
+    $this->assertEqual(file_space_used(3), 300, t("Found the size of the second user's files."));
+    $this->assertEqual(file_space_used(), 370, t("Found the size of all user's files."));
+  }
+
+  /**
+   * Test the status fields
+   */
+  function testStatus() {
+    $this->assertEqual(file_space_used(NULL, 2), 4, t("Found the size of all user's files with status 2."));
+    $this->assertEqual(file_space_used(NULL, 4), 3, t("Found the size of all user's files with status 4."));
+    $this->assertEqual(file_space_used(NULL, 2 | 4), 3, t("Found the size of all user's files with status 6."));
+  }
+
+  /**
+   * Test both the user and status.
+   */
+  function testUserAndStatus() {
+    $this->assertEqual(file_space_used(1, 8), 0, t("Found the size of the admin user's files with status 8."));
+    $this->assertEqual(file_space_used(2, 8), 0, t("Found the size of the first user's files with status 8."));
+    $this->assertEqual(file_space_used(2, 2), 0, t("Found the size of the first user's files with status 2."));
+    $this->assertEqual(file_space_used(3, 2), 3, t("Found the size of the second user's files with status 2."));
+  }
+}
+
 /**
  *  This will run tests against the file validation functions (file_validate_*).
  */
