Skip to content

Commit e6be8ef

Browse files
authored
Add more context to errors (#216)
* Add more context to errors * Unify project location format * Fix test
1 parent 2f71c9c commit e6be8ef

File tree

4 files changed

+13
-11
lines changed

4 files changed

+13
-11
lines changed

xcodeproject/xcodeproj/schemes.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func (p XcodeProj) Schemes() ([]xcscheme.Scheme, error) {
4343

4444
isAutocreateSchemesEnabled, err := p.isAutocreateSchemesEnabled()
4545
if err != nil {
46-
return nil, err
46+
return nil, fmt.Errorf("failed to read the project autocreate scheme option: %w", err)
4747
}
4848

4949
if isAutocreateSchemesEnabled {

xcodeproject/xcworkspace/file_ref.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func (f FileRef) TypeAndPath() (FileRefType, string, error) {
3838
case "container":
3939
return ContainerFileRefType, s[1], nil
4040
default:
41-
return "", "", fmt.Errorf("unknown file reference type: %s", s[0])
41+
return "", "", fmt.Errorf("unknown file reference type: %s, value: %s", s[0], s[1])
4242
}
4343
}
4444

xcodeproject/xcworkspace/schemes.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ func (w Workspace) Schemes() (map[string][]xcscheme.Scheme, error) {
2626

2727
sharedSchemes, err := w.sharedSchemes()
2828
if err != nil {
29-
return nil, err
29+
return nil, fmt.Errorf("failed to read shared schemes: %w", err)
3030
}
3131

3232
userSchemes, err := w.userSchemes()
3333
if err != nil {
34-
return nil, err
34+
return nil, fmt.Errorf("failed to read user schemes: %w", err)
3535
}
3636

3737
workspaceSchemes := append(sharedSchemes, userSchemes...)
@@ -44,30 +44,30 @@ func (w Workspace) Schemes() (map[string][]xcscheme.Scheme, error) {
4444
// project schemes
4545
projectLocations, err := w.ProjectFileLocations()
4646
if err != nil {
47-
return nil, err
47+
return nil, fmt.Errorf("failed to get project locations from workspace: %w", err)
4848
}
4949

5050
isAutocreateSchemesEnabled, err := w.isAutocreateSchemesEnabled()
5151
if err != nil {
52-
return nil, err
52+
return nil, fmt.Errorf("failed to read the workspace autocreate scheme option: %w", err)
5353
}
5454

5555
for _, projectLocation := range projectLocations {
5656
if exist, err := pathutil.IsPathExists(projectLocation); err != nil {
57-
return nil, fmt.Errorf("failed to check if project exist at: %s, error: %s", projectLocation, err)
57+
return nil, fmt.Errorf("failed to check if project (%s) exists: %w", projectLocation, err)
5858
} else if !exist {
5959
// at this point we are interested the schemes visible for the workspace
6060
continue
6161
}
6262

6363
project, err := xcodeproj.Open(projectLocation)
6464
if err != nil {
65-
return nil, err
65+
return nil, fmt.Errorf("failed to open project (%s): %w", projectLocation, err)
6666
}
6767

6868
projectSchemes, err := project.SchemesWithAutocreateEnabled(isAutocreateSchemesEnabled)
6969
if err != nil {
70-
return nil, err
70+
return nil, fmt.Errorf("failed to read project (%s) schemes: %w", projectLocation, err)
7171
}
7272

7373
if len(projectSchemes) > 0 {
@@ -179,7 +179,7 @@ func (w Workspace) isAutocreateSchemesEnabled() (bool, error) {
179179

180180
var settings serialized.Object
181181
if _, err := plist.Unmarshal(workspaceSettingsContent, &settings); err != nil {
182-
return false, err
182+
return false, fmt.Errorf("failed to unmarshall settings: %w", err)
183183
}
184184

185185
autoCreate, err := settings.Bool("IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded")

xcodeproject/xcworkspace/schemes_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package xcworkspace
22

33
import (
4+
"fmt"
45
"path/filepath"
56
"testing"
67

@@ -66,7 +67,8 @@ func Test_GivenNewlyGeneratedWorkspaceWithAutocreateSchemesDisabled_WhenListingS
6667
require.NoError(t, err)
6768

6869
schemesByContainer, err := workspace.Schemes()
69-
require.EqualError(t, err, `no schemes found and the Xcode project's 'Autocreate schemes' option is disabled`)
70+
expectedMessage := fmt.Sprintf(`failed to read project (%s) schemes: no schemes found and the Xcode project's 'Autocreate schemes' option is disabled`, xcodeProjectPath)
71+
require.EqualError(t, err, expectedMessage)
7072
require.Equal(t, 0, len(schemesByContainer))
7173
}
7274

0 commit comments

Comments
 (0)