Skip to content

Commit

Permalink
DiskStat: show only virtual fields (JuliaLang#42959)
Browse files Browse the repository at this point in the history
Also, return them as Int64 since that's what we use in Julia land for
sizes of things. The raw fields remain UInt64 because that's how they
are actually represented.
  • Loading branch information
StefanKarpinski authored Nov 8, 2021
1 parent d39b2c0 commit d2b5a13
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 12 deletions.
18 changes: 7 additions & 11 deletions base/file.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1190,23 +1190,19 @@ struct DiskStat
end

function Base.getproperty(stats::DiskStat, field::Symbol)
total = getfield(stats, :bsize) * getfield(stats, :blocks)
available = getfield(stats, :bsize) * getfield(stats, :bavail)
field === :available && return available
total = Int64(getfield(stats, :bsize) * getfield(stats, :blocks))
available = Int64(getfield(stats, :bsize) * getfield(stats, :bavail))
field === :total && return total
field === :available && return available
field === :used && return total - available
return getfield(stats, field)
end

@eval Base.propertynames(stats::DiskStat) = $((fieldnames(DiskStat)[1:end-1]..., :available, :total, :used))
@eval Base.propertynames(stats::DiskStat) =
$((fieldnames(DiskStat)[1:end-1]..., :available, :total, :used))

function Base.show(io::IO, x::DiskStat)
print(io, "DiskStat(")
for field in 1:(nfields(x) - 1)
print(io, "$(getfield(x, field)), ")
end
print(io, "available: $(x.available), total: $(x.total), used: $(x.used))")
end
Base.show(io::IO, x::DiskStat) =
print(io, "DiskStat(total=$(x.total), used=$(x.used), available=$(x.available))")

"""
diskstat(path=pwd())
Expand Down
2 changes: 1 addition & 1 deletion test/file.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1703,7 +1703,7 @@ end
dstat = diskstat()
@test dstat.total < 32PB
@test dstat.used + dstat.available == dstat.total
@test occursin(r"^DiskStat\(.*, available: \d+, total: \d+, used: \d+\)$", sprint(show, dstat))
@test occursin(r"^DiskStat\(total=\d+, used=\d+, available=\d+\)$", sprint(show, dstat))
# Test diskstat(::AbstractString)
dstat = diskstat(pwd())
@test dstat.total < 32PB
Expand Down

0 comments on commit d2b5a13

Please sign in to comment.