From fa061e7353de3fd4de6e05466891810c4877bdf1 Mon Sep 17 00:00:00 2001 From: Emil Lerch Date: Sat, 19 Jul 2025 13:17:29 -0700 Subject: [PATCH] actually run the generated tests --- src/main.zig | 5 +++++ src/providers/Codeberg.zig | 10 ++++++++-- src/providers/GitHub.zig | 8 +++++++- src/providers/GitLab.zig | 10 ++++++++-- src/providers/SourceHut.zig | 22 ---------------------- 5 files changed, 28 insertions(+), 27 deletions(-) diff --git a/src/main.zig b/src/main.zig index 95c82a6..a2da073 100644 --- a/src/main.zig +++ b/src/main.zig @@ -495,4 +495,9 @@ test "Age-based release filtering" { test { std.testing.refAllDecls(@import("timestamp_tests.zig")); std.testing.refAllDecls(@import("atom.zig")); + std.testing.refAllDecls(@import("utils.zig")); + std.testing.refAllDecls(@import("providers/GitHub.zig")); + std.testing.refAllDecls(@import("providers/GitLab.zig")); + std.testing.refAllDecls(@import("providers/SourceHut.zig")); + std.testing.refAllDecls(@import("providers/Codeberg.zig")); } diff --git a/src/providers/Codeberg.zig b/src/providers/Codeberg.zig index ab54612..ac4a4e6 100644 --- a/src/providers/Codeberg.zig +++ b/src/providers/Codeberg.zig @@ -315,7 +315,7 @@ test "codeberg release parsing with live data snapshot" { const release = Release{ .repo_name = try allocator.dupe(u8, "example/project"), .tag_name = try allocator.dupe(u8, tag_name_value.string), - .published_at = try allocator.dupe(u8, published_at_value.string), + .published_at = try utils.parseReleaseTimestamp(published_at_value.string), .html_url = try allocator.dupe(u8, html_url_value.string), .description = try allocator.dupe(u8, body_str), .provider = try allocator.dupe(u8, "codeberg"), @@ -333,6 +333,12 @@ test "codeberg release parsing with live data snapshot" { try std.testing.expectEqualStrings("v3.0.1", releases.items[0].tag_name); try std.testing.expectEqualStrings("v3.0.0", releases.items[1].tag_name); try std.testing.expectEqualStrings("v2.9.5", releases.items[2].tag_name); - try std.testing.expectEqualStrings("2024-01-25T11:20:30Z", releases.items[0].published_at); + try std.testing.expectEqual( + @as(i64, @intCast(@divTrunc( + (try @import("zeit").instant(.{ .source = .{ .iso8601 = "2024-01-25T11:20:30Z" } })).timestamp, + std.time.ns_per_s, + ))), + releases.items[0].published_at, + ); try std.testing.expectEqualStrings("codeberg", releases.items[0].provider); } diff --git a/src/providers/GitHub.zig b/src/providers/GitHub.zig index 5cb6661..9650b98 100644 --- a/src/providers/GitHub.zig +++ b/src/providers/GitHub.zig @@ -680,6 +680,12 @@ test "github release parsing with live data snapshot" { try std.testing.expectEqualStrings("v1.2.0", releases.items[0].tag_name); try std.testing.expectEqualStrings("v1.1.0", releases.items[1].tag_name); try std.testing.expectEqualStrings("v1.0.0", releases.items[2].tag_name); - try std.testing.expectEqual(try @import("zeit").instant(.{ .source = .{ .iso8601 = "2024-01-15T10:30:00Z" } }), releases.items[0].published_at); + try std.testing.expectEqual( + @as(i64, @intCast(@divTrunc( + (try @import("zeit").instant(.{ .source = .{ .iso8601 = "2024-01-15T10:30:00Z" } })).timestamp, + std.time.ns_per_s, + ))), + releases.items[0].published_at, + ); try std.testing.expectEqualStrings("github", releases.items[0].provider); } diff --git a/src/providers/GitLab.zig b/src/providers/GitLab.zig index de3522d..fd687a5 100644 --- a/src/providers/GitLab.zig +++ b/src/providers/GitLab.zig @@ -320,7 +320,7 @@ test "gitlab release parsing with live data snapshot" { const release = Release{ .repo_name = try allocator.dupe(u8, obj.get("name").?.string), .tag_name = try allocator.dupe(u8, obj.get("tag_name").?.string), - .published_at = try allocator.dupe(u8, obj.get("created_at").?.string), + .published_at = try utils.parseReleaseTimestamp(obj.get("created_at").?.string), .html_url = try allocator.dupe(u8, obj.get("_links").?.object.get("self").?.string), .description = try allocator.dupe(u8, desc_str), .provider = try allocator.dupe(u8, "gitlab"), @@ -338,6 +338,12 @@ test "gitlab release parsing with live data snapshot" { try std.testing.expectEqualStrings("v2.1.0", releases.items[0].tag_name); try std.testing.expectEqualStrings("v2.0.0", releases.items[1].tag_name); try std.testing.expectEqualStrings("v1.9.0", releases.items[2].tag_name); - try std.testing.expectEqualStrings("2024-01-20T14:45:30.123Z", releases.items[0].published_at); + try std.testing.expectEqual( + @as(i64, @intCast(@divTrunc( + (try @import("zeit").instant(.{ .source = .{ .iso8601 = "2024-01-20T14:45:30.123Z" } })).timestamp, + std.time.ns_per_s, + ))), + releases.items[0].published_at, + ); try std.testing.expectEqualStrings("gitlab", releases.items[0].provider); } diff --git a/src/providers/SourceHut.zig b/src/providers/SourceHut.zig index da2560f..d719b74 100644 --- a/src/providers/SourceHut.zig +++ b/src/providers/SourceHut.zig @@ -50,28 +50,6 @@ pub fn fetchReleasesForRepos(self: *Self, allocator: Allocator, repositories: [] return fetchReleasesMultiRepo(allocator, &client, auth_token, repositories); } -pub fn fetchReleasesForReposFiltered(self: *Self, allocator: Allocator, repositories: [][]const u8, token: ?[]const u8, existing_releases: []const Release) !ArrayList(Release) { - var latest_date: i64 = 0; - for (existing_releases) |release| { - if (std.mem.eql(u8, release.provider, "sourcehut")) { - const release_time = utils.parseReleaseTimestamp(release.published_at) catch 0; - if (release_time > latest_date) { - latest_date = release_time; - } - } - } - - const all_releases = try self.fetchReleasesForRepos(allocator, repositories, token); - defer { - for (all_releases.items) |release| { - release.deinit(allocator); - } - all_releases.deinit(); - } - - return filterNewReleases(allocator, all_releases.items, latest_date); -} - pub fn getName(self: *Self) []const u8 { _ = self; return "sourcehut";