mirror of
https://github.com/ziglang/zig.git
synced 2025-12-20 13:13:16 +00:00
Make CacheHash.release return an error
If a user doesn't care that the manifest failed to be written, they can simply ignore it. The program will still work; that particular cache item will simply not be cached.
This commit is contained in:
parent
967b9825a7
commit
e7657f2938
@ -311,13 +311,17 @@ pub const CacheHash = struct {
|
|||||||
try self.manifest_file.?.writeAll(contents.items);
|
try self.manifest_file.?.writeAll(contents.items);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn release(self: *@This()) void {
|
/// Releases the manifest file and frees any memory the CacheHash was using.
|
||||||
|
/// `CacheHash.hit` must be called first.
|
||||||
|
///
|
||||||
|
/// Will also attempt to write to the manifest file if the manifest is dirty.
|
||||||
|
/// Writing to the manifest file is the only way that this file can return an
|
||||||
|
/// error.
|
||||||
|
pub fn release(self: *@This()) !void {
|
||||||
debug.assert(self.manifest_file != null);
|
debug.assert(self.manifest_file != null);
|
||||||
|
|
||||||
if (self.manifest_dirty) {
|
if (self.manifest_dirty) {
|
||||||
self.write_manifest() catch |err| {
|
try self.write_manifest();
|
||||||
debug.warn("Unable to write cache file '{}': {}\n", .{ self.b64_digest, err });
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.manifest_file.?.close();
|
self.manifest_file.?.close();
|
||||||
@ -366,7 +370,7 @@ test "cache file and then recall it" {
|
|||||||
|
|
||||||
{
|
{
|
||||||
var ch = try CacheHash.init(testing.allocator, temp_manifest_dir);
|
var ch = try CacheHash.init(testing.allocator, temp_manifest_dir);
|
||||||
defer ch.release();
|
defer ch.release() catch unreachable;
|
||||||
|
|
||||||
ch.add(true);
|
ch.add(true);
|
||||||
ch.add(@as(u16, 1234));
|
ch.add(@as(u16, 1234));
|
||||||
@ -380,7 +384,7 @@ test "cache file and then recall it" {
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
var ch = try CacheHash.init(testing.allocator, temp_manifest_dir);
|
var ch = try CacheHash.init(testing.allocator, temp_manifest_dir);
|
||||||
defer ch.release();
|
defer ch.release() catch unreachable;
|
||||||
|
|
||||||
ch.add(true);
|
ch.add(true);
|
||||||
ch.add(@as(u16, 1234));
|
ch.add(@as(u16, 1234));
|
||||||
@ -420,7 +424,7 @@ test "check that changing a file makes cache fail" {
|
|||||||
|
|
||||||
{
|
{
|
||||||
var ch = try CacheHash.init(testing.allocator, temp_manifest_dir);
|
var ch = try CacheHash.init(testing.allocator, temp_manifest_dir);
|
||||||
defer ch.release();
|
defer ch.release() catch unreachable;
|
||||||
|
|
||||||
ch.add("1234");
|
ch.add("1234");
|
||||||
try ch.addFile(temp_file);
|
try ch.addFile(temp_file);
|
||||||
@ -435,7 +439,7 @@ test "check that changing a file makes cache fail" {
|
|||||||
|
|
||||||
{
|
{
|
||||||
var ch = try CacheHash.init(testing.allocator, temp_manifest_dir);
|
var ch = try CacheHash.init(testing.allocator, temp_manifest_dir);
|
||||||
defer ch.release();
|
defer ch.release() catch unreachable;
|
||||||
|
|
||||||
ch.add("1234");
|
ch.add("1234");
|
||||||
try ch.addFile(temp_file);
|
try ch.addFile(temp_file);
|
||||||
@ -462,7 +466,7 @@ test "no file inputs" {
|
|||||||
|
|
||||||
{
|
{
|
||||||
var ch = try CacheHash.init(testing.allocator, temp_manifest_dir);
|
var ch = try CacheHash.init(testing.allocator, temp_manifest_dir);
|
||||||
defer ch.release();
|
defer ch.release() catch unreachable;
|
||||||
|
|
||||||
ch.add("1234");
|
ch.add("1234");
|
||||||
|
|
||||||
@ -473,7 +477,7 @@ test "no file inputs" {
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
var ch = try CacheHash.init(testing.allocator, temp_manifest_dir);
|
var ch = try CacheHash.init(testing.allocator, temp_manifest_dir);
|
||||||
defer ch.release();
|
defer ch.release() catch unreachable;
|
||||||
|
|
||||||
ch.add("1234");
|
ch.add("1234");
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user