@@ -162,6 +162,67 @@ func TestIntegrationInitNormalizesForbiddenDirName(t *testing.T) {
162162 }
163163}
164164
165+ func TestIntegrationGhAuthPersistsInSprite (t * testing.T ) {
166+ if os .Getenv ("SEVEN_INTEGRATION" ) != "1" {
167+ t .Skip ("set SEVEN_INTEGRATION=1 to run integration tests" )
168+ }
169+
170+ if _ , err := exec .LookPath ("sprite" ); err != nil {
171+ t .Skip ("sprite CLI not found in PATH" )
172+ }
173+ if err := exec .Command ("sprite" , "list" ).Run (); err != nil {
174+ t .Skip ("sprite list failed; ensure you are logged in" )
175+ }
176+ if _ , err := exec .LookPath ("gh" ); err != nil {
177+ t .Skip ("gh CLI not found in PATH" )
178+ }
179+ if _ , err := exec .LookPath ("git" ); err != nil {
180+ t .Skip ("git not available" )
181+ }
182+
183+ tokenOut , err := exec .Command ("gh" , "auth" , "token" ).CombinedOutput ()
184+ if err != nil || strings .TrimSpace (string (tokenOut )) == "" {
185+ t .Skip ("gh auth token not available on host" )
186+ }
187+
188+ repo := t .TempDir ()
189+ if err := initGitRepo (repo , "https://github.com/1to10partners/seven.git" ); err != nil {
190+ t .Fatalf ("git setup failed: %v" , err )
191+ }
192+
193+ cmdInit := exec .Command (testSevenBin , "init" , "--assume-logged-in" )
194+ cmdInit .Dir = repo
195+ cmdInit .Stdout = os .Stdout
196+ cmdInit .Stderr = os .Stderr
197+ cmdInit .Env = os .Environ ()
198+ if err := cmdInit .Run (); err != nil {
199+ t .Fatalf ("seven init failed: %v" , err )
200+ }
201+
202+ spriteFile := filepath .Join (repo , ".sprite" )
203+ data , err := os .ReadFile (spriteFile )
204+ if err != nil {
205+ t .Fatalf ("expected .sprite file: %v" , err )
206+ }
207+ name := strings .TrimSpace (string (data ))
208+ if name == "" {
209+ t .Fatalf (".sprite should contain a name" )
210+ }
211+
212+ defer destroySprite (t , repo )
213+
214+ if err := exec .Command ("sprite" , "exec" , "-s" , name , "gh" , "--version" ).Run (); err != nil {
215+ t .Skip ("gh not available in sprite" )
216+ }
217+
218+ auth := exec .Command ("sprite" , "exec" , "-s" , name , "gh" , "auth" , "status" , "-h" , "github.com" )
219+ auth .Stdout = os .Stdout
220+ auth .Stderr = os .Stderr
221+ if err := auth .Run (); err != nil {
222+ t .Fatalf ("expected gh auth status to succeed in sprite: %v" , err )
223+ }
224+ }
225+
165226func spriteListed (name string ) bool {
166227 out , err := exec .Command ("sprite" , "list" ).CombinedOutput ()
167228 if err != nil {
0 commit comments