authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-10-09 20:48:39-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-10-10 02:29:29-07:00
log2ca7cc46c41dc5fe91fe385df4f3330634bd88f3
treedb1ae26cadd206ab6af9d09d8b3896a4f06fa76c
parentaaf46187ab7bf23c87a275e2755a9bd01f3c93cf

Package.Fetch: fix inclusions not working for directories

Oops, the loop was checking the wrong variable! Added a unit test.

1 files changed, 15 insertions(+), 1 deletions(-)

src/Package/Fetch.zig+15-1
...@@ -1510,12 +1510,22 @@ const Filter = struct {...@@ -1510,12 +1510,22 @@ const Filter = struct {
1510 // Check if any included paths are parent directories of sub_path.1510 // Check if any included paths are parent directories of sub_path.
1511 var dirname = sub_path;1511 var dirname = sub_path;
1512 while (std.fs.path.dirname(dirname)) |next_dirname| {1512 while (std.fs.path.dirname(dirname)) |next_dirname| {
1513 if (self.include_paths.contains(sub_path)) return true;1513 if (self.include_paths.contains(next_dirname)) return true;
1514 dirname = next_dirname;1514 dirname = next_dirname;
1515 }1515 }
15161516
1517 return false;1517 return false;
1518 }1518 }
1519
1520 test includePath {
1521 const gpa = std.testing.allocator;
1522 var filter: Filter = .{};
1523 defer filter.include_paths.deinit(gpa);
1524
1525 try filter.include_paths.put(gpa, "src", {});
1526 try std.testing.expect(filter.includePath("src/core/unix/SDL_poll.c"));
1527 try std.testing.expect(!filter.includePath(".gitignore"));
1528 }
1519};1529};
15201530
1521pub fn depDigest(1531pub fn depDigest(
...@@ -1556,3 +1566,7 @@ const git = @import("Fetch/git.zig");...@@ -1556,3 +1566,7 @@ const git = @import("Fetch/git.zig");
1556const Package = @import("../Package.zig");1566const Package = @import("../Package.zig");
1557const Manifest = Package.Manifest;1567const Manifest = Package.Manifest;
1558const ErrorBundle = std.zig.ErrorBundle;1568const ErrorBundle = std.zig.ErrorBundle;
1569
1570test {
1571 _ = Filter;
1572}