fleet/tools/github-manage/pkg/ghapi
Ian Littman 04a9f1a2df
Add gm tool for pulling all issues from a repo and filtering client-side-ish to only ones that had a given label at any point (#39524)
This absolutely slams GitHub rate limits, but one API request per page
of issues plus one API request per issue is the only sure way to get
this data, so it is what it is. May need to add a "pick up where you
left off" feature but this is at least a starting point.
2026-02-23 15:18:32 -06:00
..
cache.go Github Manager (#31540) 2025-08-07 15:00:36 -05:00
cli.go Github Manager (#31540) 2025-08-07 15:00:36 -05:00
cli_test.go Github Manager (#31540) 2025-08-07 15:00:36 -05:00
estimates.go Update GitHub Manager to work with milestones and add forecast command (#39070) 2026-01-30 17:01:11 -06:00
issues.go Add gm tool for pulling all issues from a repo and filtering client-side-ish to only ones that had a given label at any point (#39524) 2026-02-23 15:18:32 -06:00
issues_test.go Github Manager (#31540) 2025-08-07 15:00:36 -05:00
milestone.go gkarr gm updates pre sprint (#37446) 2025-12-18 14:55:38 -06:00
models.go Add gm tool for pulling all issues from a repo and filtering client-side-ish to only ones that had a given label at any point (#39524) 2026-02-23 15:18:32 -06:00
models_test.go Github Manager (#31540) 2025-08-07 15:00:36 -05:00
projects.go Update GitHub Manager to work with milestones and add forecast command (#39070) 2026-01-30 17:01:11 -06:00
projects_test.go gkarr gm new workflows (#35712) 2025-11-14 10:13:22 -06:00
README.md Github Manager (#31540) 2025-08-07 15:00:36 -05:00
relations.go gkarr gm updates (#32625) 2025-09-05 16:28:36 -05:00
sort.go adding sum of estimates and fixing workflow progress menu (#32694) 2025-09-11 13:47:46 -05:00
sort_test.go adding sum of estimates and fixing workflow progress menu (#32694) 2025-09-11 13:47:46 -05:00
suite_test.go gkarr gm updates (#32625) 2025-09-05 16:28:36 -05:00
TEST_SUMMARY.md Github Manager (#31540) 2025-08-07 15:00:36 -05:00
user.go Adding direction to add views and workflows (#33177) 2025-09-25 14:05:39 -05:00
views.go adding sum of estimates and fixing workflow progress menu (#32694) 2025-09-11 13:47:46 -05:00
views_test.go Github Manager (#31540) 2025-08-07 15:00:36 -05:00
workflows.go Adding logic that follows expectation with bugs and sub-tasks to milestone close workflow (#38552) 2026-01-22 11:19:08 -06:00
workflows_test.go Github Manager (#31540) 2025-08-07 15:00:36 -05:00

GitHub Manage - ghapi Package Tests

This directory contains comprehensive tests for all functions in the ghapi package.

Test Files

  • cli_test.go - Tests for command line interface functions
  • issues_test.go - Tests for GitHub issues management functions
  • models_test.go - Tests for data models and struct conversion functions
  • projects_test.go - Tests for GitHub Projects API functions
  • views_test.go - Tests for view management and display functions
  • workflows_test.go - Tests for bulk workflow operations
  • suite_test.go - Comprehensive test suite runner and benchmarks

Running Tests

Run All Tests

cd tools/github-manage
go test ./pkg/ghapi -v

Run Specific Test Files

go test ./pkg/ghapi -run TestCLI -v
go test ./pkg/ghapi -run TestIssues -v
go test ./pkg/ghapi -run TestModels -v
go test ./pkg/ghapi -run TestProjects -v
go test ./pkg/ghapi -run TestViews -v
go test ./pkg/ghapi -run TestWorkflows -v

Run Test Suite

go test ./pkg/ghapi -run TestSuite -v

Run Benchmarks

go test ./pkg/ghapi -bench=. -v

Run Tests with Coverage

go test ./pkg/ghapi -cover -v
go test ./pkg/ghapi -coverprofile=coverage.out
go tool cover -html=coverage.out

Test Categories

Unit Tests

  • CLI Functions: Test command execution and output parsing
  • JSON Parsing: Test parsing of GitHub API responses
  • Data Models: Test struct marshaling/unmarshaling and conversions
  • Project Management: Test project field lookups and caching
  • View Management: Test view creation and filtering
  • Workflow Operations: Test bulk operations (currently stubs)

Integration Tests

Some tests are skipped in the unit test suite because they require:

  • GitHub CLI (gh) to be installed and authenticated
  • Access to actual GitHub repositories and projects
  • Network connectivity

To run integration tests, you need to:

  1. Install and authenticate GitHub CLI
  2. Have access to the Fleet repository
  3. Run tests with appropriate environment setup

Mocking

For proper integration testing, consider implementing mocks for:

  • RunCommandAndReturnOutput function
  • GitHub CLI commands
  • External API calls

Test Coverage

The tests cover:

  • Basic function signatures and return types
  • JSON parsing and error handling
  • Data structure validation
  • Struct conversions and transformations
  • Caching mechanisms
  • Error conditions and edge cases
  • ⚠️ GitHub CLI interactions (mocked/skipped)
  • ⚠️ External API calls (mocked/skipped)

Notes

  • Some tests are skipped on Windows due to bash command dependencies
  • GitHub CLI-dependent tests are skipped without proper setup
  • Stub functions (like BulkSprintKickoff) only test basic structure
  • Consider implementing dependency injection for better testability