fix:next/mine 漏掉空倉庫中的分派 issue(#43)
iterOrgRepos(issue 掃描,供 Mine 與 members --has-work)不再跳過 empty=true 的倉庫——Gitea 允許空倉庫持有 open issue(「初始化項目」 型工作),行為基準 gitea.py 的 for_all_repositories 掃 issue 時 本來就不檢查 empty;teai 先前過度套用了空倉庫跳過條件,導致 teai next 對 colony-tick-demo issue #1 回 null。 PR 掃描(iterOpenPulls)、stalled、milestone overview 維持跳過 空倉庫不變(與 gitea.py 一致)。附回歸測試兩則。
This commit is contained in:
@@ -164,6 +164,51 @@ func TestNextLayerFallbackToIssue(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestNextPicksIssueInEmptyRepo 回歸測試(#43):空倉庫(empty=true)中
|
||||
// 分派給目前帳號的 open issue 應被第三層拾取——gitea.py 的
|
||||
// for_all_repositories 掃 issue 不跳過空倉庫(「初始化項目」型工作)。
|
||||
func TestNextPicksIssueInEmptyRepo(t *testing.T) {
|
||||
s, fc := newTestScanner()
|
||||
fc.repos["alterminal"] = []Repo{
|
||||
{Name: "teai"},
|
||||
{Name: "colony-tick-demo", Empty: true},
|
||||
}
|
||||
fc.issues["alterminal/colony-tick-demo"] = []Issue{
|
||||
{
|
||||
Number: 1, Title: "初始化項目", UpdatedAt: "2026-09-08T00:00:00Z",
|
||||
Assignees: []User{*mkUser("alex")},
|
||||
Repository: &Repository{FullName: "alterminal/colony-tick-demo"},
|
||||
HTMLURL: "https://gitea.alterminal.com/alterminal/colony-tick-demo/issues/1",
|
||||
},
|
||||
}
|
||||
work, err := s.Next()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if work == nil || work.Type != "issue" || work.Number != 1 || work.Repo != "alterminal/colony-tick-demo" {
|
||||
t.Errorf("應拾取空倉庫中的 issue #1,得到 %+v", work)
|
||||
}
|
||||
}
|
||||
|
||||
// TestMineIncludesEmptyRepoIssues 回歸測試(#43):mine 同樣不因倉庫為空而漏列。
|
||||
func TestMineIncludesEmptyRepoIssues(t *testing.T) {
|
||||
s, fc := newTestScanner()
|
||||
fc.repos["alterminal"] = []Repo{
|
||||
{Name: "teai"},
|
||||
{Name: "colony-tick-demo", Empty: true},
|
||||
}
|
||||
fc.issues["alterminal/colony-tick-demo"] = []Issue{
|
||||
{Number: 1, Title: "初始化項目", UpdatedAt: "2026-09-08T00:00:00Z", Assignees: []User{*mkUser("alex")}},
|
||||
}
|
||||
issues, err := s.Mine()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(issues) != 1 || issues[0].Num() != 1 {
|
||||
t.Errorf("mine 應列出空倉庫中的 issue #1,得到 %d 件", len(issues))
|
||||
}
|
||||
}
|
||||
|
||||
func TestNextNone(t *testing.T) {
|
||||
s, _ := newTestScanner()
|
||||
work, err := s.Next()
|
||||
|
||||
Reference in New Issue
Block a user