[PR #671] [MERGED] testflight: standardize beta testers CSV compatibility and validation #699

Closed
opened 2026-02-26 22:32:10 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/671
Author: @rudrankriyam
Created: 2/20/2026
Status: Merged
Merged: 2/20/2026
Merged by: @rudrankriyam

Base: mainHead: testflight/csv-standard


📝 Commits (3)

  • a6daa02 testflight: standardize beta testers CSV import/export compatibility
  • 637df70 testflight: fix CSV delimiter ambiguity and headerless detection
  • b438aa3 testflight: remove redundant beta testers header allowlist check

📊 Changes

5 files changed (+646 additions, -28 deletions)

View changed files

docs/testflight-beta-testers-csv.md (+64 -0)
📝 internal/cli/cmdtest/testflight_beta_testers_csv_test.go (+216 -1)
📝 internal/cli/testflight/beta_testers_csv.go (+175 -27)
internal/cli/testflight/beta_testers_csv_parsing_test.go (+160 -0)
internal/cli/testflight/testdata/beta_testers_random.csv (+31 -0)

📄 Description

Summary

  • Define and document a TestFlight beta testers CSV standard with a canonical schema and fastlane compatibility modes.
  • Make CSV export deterministic/interoperable by emitting semicolon-delimited group lists and accepting comma/semicolon delimiters on import.
  • Harden CSV import by supporting First/Last/Email/Groups aliases, legacy headerless rows, and strict row-level invalid email validation.
  • Add parser-level and CLI-level tests (including a random-name CSV fixture) covering canonical, fastlane, headerless, and failure-path behavior.

Test plan

  • make format
  • make lint
  • ASC_BYPASS_KEYCHAIN=1 make test
  • go test ./internal/cli/testflight ./internal/cli/cmdtest -run "TestReadBetaTestersCSV|TestTestFlightBetaTestersExport_IncludeGroupsAddsColumn|TestTestFlightBetaTestersImport_FastlaneHeaderAndSemicolonGroups|TestTestFlightBetaTestersImport_HeaderlessFastlaneFormat|TestTestFlightBetaTestersImport_InvalidEmailFailsRow"

Made with Cursor


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/rudrankriyam/App-Store-Connect-CLI/pull/671 **Author:** [@rudrankriyam](https://github.com/rudrankriyam) **Created:** 2/20/2026 **Status:** ✅ Merged **Merged:** 2/20/2026 **Merged by:** [@rudrankriyam](https://github.com/rudrankriyam) **Base:** `main` ← **Head:** `testflight/csv-standard` --- ### 📝 Commits (3) - [`a6daa02`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/a6daa023b267cdee57b309d5e1ad8fdcc3474776) testflight: standardize beta testers CSV import/export compatibility - [`637df70`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/637df70ca7727597b91b7eb9390bbf507b14c5ad) testflight: fix CSV delimiter ambiguity and headerless detection - [`b438aa3`](https://github.com/rudrankriyam/App-Store-Connect-CLI/commit/b438aa32e54085ae8572ac0f394b857fde008423) testflight: remove redundant beta testers header allowlist check ### 📊 Changes **5 files changed** (+646 additions, -28 deletions) <details> <summary>View changed files</summary> ➕ `docs/testflight-beta-testers-csv.md` (+64 -0) 📝 `internal/cli/cmdtest/testflight_beta_testers_csv_test.go` (+216 -1) 📝 `internal/cli/testflight/beta_testers_csv.go` (+175 -27) ➕ `internal/cli/testflight/beta_testers_csv_parsing_test.go` (+160 -0) ➕ `internal/cli/testflight/testdata/beta_testers_random.csv` (+31 -0) </details> ### 📄 Description ## Summary - Define and document a TestFlight beta testers CSV standard with a canonical schema and fastlane compatibility modes. - Make CSV export deterministic/interoperable by emitting semicolon-delimited group lists and accepting comma/semicolon delimiters on import. - Harden CSV import by supporting `First/Last/Email/Groups` aliases, legacy headerless rows, and strict row-level invalid email validation. - Add parser-level and CLI-level tests (including a random-name CSV fixture) covering canonical, fastlane, headerless, and failure-path behavior. ## Test plan - [x] `make format` - [x] `make lint` - [x] `ASC_BYPASS_KEYCHAIN=1 make test` - [x] `go test ./internal/cli/testflight ./internal/cli/cmdtest -run "TestReadBetaTestersCSV|TestTestFlightBetaTestersExport_IncludeGroupsAddsColumn|TestTestFlightBetaTestersImport_FastlaneHeaderAndSemicolonGroups|TestTestFlightBetaTestersImport_HeaderlessFastlaneFormat|TestTestFlightBetaTestersImport_InvalidEmailFailsRow"` Made with [Cursor](https://cursor.com) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-26 22:32:10 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/App-Store-Connect-CLI#699
No description provided.