Skip to content

Commit 4b512fd

Browse files
authored
Merge pull request #189 from compose-spec/revert-number-restriction
2 parents a7e1bc3 + 2477aa1 commit 4b512fd

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

cli/options.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,9 +332,9 @@ func ProjectFromOptions(options *ProjectOptions) (*types.Project, error) {
332332
} else if nameFromEnv, ok := options.Environment[ComposeProjectName]; ok && nameFromEnv != "" {
333333
opts.Name = nameFromEnv
334334
} else {
335-
opts.Name = regexp.MustCompile(`(?m)[a-z]+[-_a-z0-9]*`).FindString(strings.ToLower(filepath.Base(absWorkingDir)))
335+
opts.Name = filepath.Base(absWorkingDir)
336336
}
337-
opts.Name = strings.ToLower(opts.Name)
337+
opts.Name = regexp.MustCompile(`(?m)[a-z0-9]+[-_a-z0-9]*`).FindString(strings.ToLower(opts.Name))
338338
}
339339
options.loadOptions = append(options.loadOptions, nameLoadOpt)
340340

cli/options_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package cli
1818

1919
import (
20+
"fmt"
2021
"os"
2122
"path/filepath"
2223
"testing"
@@ -33,6 +34,54 @@ func TestProjectName(t *testing.T) {
3334
assert.Equal(t, p.Name, "my_project")
3435
})
3536

37+
t.Run("by name start with number", func(t *testing.T) {
38+
opts, err := NewProjectOptions([]string{"testdata/simple/compose.yaml"}, WithName("42my_project_num"))
39+
assert.NilError(t, err)
40+
p, err := ProjectFromOptions(opts)
41+
assert.NilError(t, err)
42+
assert.Equal(t, p.Name, "42my_project_num")
43+
44+
opts, err = NewProjectOptions([]string{"testdata/simple/compose.yaml"}, WithEnv([]string{
45+
fmt.Sprintf("%s=%s", ComposeProjectName, "42my_project_env"),
46+
}))
47+
assert.NilError(t, err)
48+
p, err = ProjectFromOptions(opts)
49+
assert.NilError(t, err)
50+
assert.Equal(t, p.Name, "42my_project_env")
51+
})
52+
53+
t.Run("by name start with invalid char '-'", func(t *testing.T) {
54+
opts, err := NewProjectOptions([]string{"testdata/simple/compose.yaml"}, WithName("-my_project"))
55+
assert.NilError(t, err)
56+
p, err := ProjectFromOptions(opts)
57+
assert.NilError(t, err)
58+
assert.Equal(t, p.Name, "my_project")
59+
60+
opts, err = NewProjectOptions([]string{"testdata/simple/compose.yaml"}, WithEnv([]string{
61+
fmt.Sprintf("%s=%s", ComposeProjectName, "-my_project"),
62+
}))
63+
assert.NilError(t, err)
64+
p, err = ProjectFromOptions(opts)
65+
assert.NilError(t, err)
66+
assert.Equal(t, p.Name, "my_project")
67+
})
68+
69+
t.Run("by name start with invalid char '_'", func(t *testing.T) {
70+
opts, err := NewProjectOptions([]string{"testdata/simple/compose.yaml"}, WithName("_my_project"))
71+
assert.NilError(t, err)
72+
p, err := ProjectFromOptions(opts)
73+
assert.NilError(t, err)
74+
assert.Equal(t, p.Name, "my_project")
75+
76+
opts, err = NewProjectOptions([]string{"testdata/simple/compose.yaml"}, WithEnv([]string{
77+
fmt.Sprintf("%s=%s", ComposeProjectName, "_my_project"),
78+
}))
79+
assert.NilError(t, err)
80+
p, err = ProjectFromOptions(opts)
81+
assert.NilError(t, err)
82+
assert.Equal(t, p.Name, "my_project")
83+
})
84+
3685
t.Run("by working dir", func(t *testing.T) {
3786
opts, err := NewProjectOptions([]string{"testdata/simple/compose.yaml"}, WithWorkingDirectory("."))
3887
assert.NilError(t, err)

0 commit comments

Comments
 (0)