feat(sdk): always export scramble specs

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Virgil 2026-04-01 21:55:31 +00:00
parent 8bf1fe774c
commit fe0f528581
2 changed files with 20 additions and 3 deletions

View file

@ -85,9 +85,6 @@ func (s *SDK) detectScramble() (string, error) {
}
scrambleSpecPath := ax.Join(s.projectDir, "api.json")
if ax.IsFile(scrambleSpecPath) {
return scrambleSpecPath, nil
}
phpCommand, err := resolvePHPCli()
if err != nil {

View file

@ -146,3 +146,23 @@ func TestDetect_DetectSpecScramble_Good(t *testing.T) {
require.NoError(t, err)
assert.Contains(t, string(data), `"openapi":"3.1.0"`)
}
func TestDetect_DetectSpecScrambleOverwritesExistingSpec_Good(t *testing.T) {
tmpDir := t.TempDir()
require.NoError(t, ax.WriteFile(ax.Join(tmpDir, "composer.json"), []byte(`{"require":{"dedoc/scramble":"^0.1"}}`), 0o644))
require.NoError(t, ax.WriteFile(ax.Join(tmpDir, "api.json"), []byte(`{"openapi":"3.0.0","info":{"title":"stale"}}`), 0o644))
phpDir := t.TempDir()
writeFakePHP(t, phpDir)
t.Setenv("PATH", phpDir)
sdk := New(tmpDir, nil)
got, err := sdk.DetectSpec()
require.NoError(t, err)
assert.Equal(t, ax.Join(tmpDir, "api.json"), got)
data, err := ax.ReadFile(got)
require.NoError(t, err)
assert.NotContains(t, string(data), "stale")
assert.Contains(t, string(data), `"openapi":"3.1.0"`)
}