@@ -52,6 +52,23 @@ func TestProjectName(t *testing.T) {
5252 assert .Equal (t , p .Name , "42my_project_env" )
5353 })
5454
55+ t .Run ("by name must not be empty" , func (t * testing.T ) {
56+ _ , err := NewProjectOptions ([]string {"testdata/simple/compose.yaml" }, WithName ("" ))
57+ assert .ErrorContains (t , err , `project name must not be empty` )
58+ })
59+
60+ t .Run ("by name must not come from root directory" , func (t * testing.T ) {
61+ opts , err := NewProjectOptions ([]string {"testdata/simple/compose.yaml" },
62+ WithWorkingDirectory ("/" ))
63+ assert .NilError (t , err )
64+ p , err := ProjectFromOptions (opts )
65+
66+ // On macOS and Linux, the message will start with "/". On Windows, it will
67+ // start with "\\\\". So we leave that part of the error off here.
68+ assert .ErrorContains (t , err , `is not a valid project name` )
69+ assert .Assert (t , p == nil )
70+ })
71+
5572 t .Run ("by name start with invalid char '-'" , func (t * testing.T ) {
5673 _ , err := NewProjectOptions ([]string {"testdata/simple/compose.yaml" }, WithName ("-my_project" ))
5774 assert .ErrorContains (t , err , `"-my_project" is not a valid project name` )
@@ -61,8 +78,8 @@ func TestProjectName(t *testing.T) {
6178 }))
6279 assert .NilError (t , err )
6380 p , err := ProjectFromOptions (opts )
64- assert .NilError (t , err )
65- assert .Equal (t , p . Name , "my_project" )
81+ assert .ErrorContains (t , err , `"-my_project" is not a valid project name` )
82+ assert .Assert (t , p == nil )
6683 })
6784
6885 t .Run ("by name start with invalid char '_'" , func (t * testing.T ) {
@@ -74,8 +91,8 @@ func TestProjectName(t *testing.T) {
7491 }))
7592 assert .NilError (t , err )
7693 p , err := ProjectFromOptions (opts )
77- assert .NilError (t , err )
78- assert .Equal (t , p . Name , "my_project" )
94+ assert .ErrorContains (t , err , `"_my_project" is not a valid project name` )
95+ assert .Assert (t , p == nil )
7996 })
8097
8198 t .Run ("by name contains dots" , func (t * testing.T ) {
@@ -87,21 +104,21 @@ func TestProjectName(t *testing.T) {
87104 }))
88105 assert .NilError (t , err )
89106 p , err := ProjectFromOptions (opts )
90- assert .NilError (t , err )
91- assert .Equal (t , p . Name , "wwwmyproject" )
107+ assert .ErrorContains (t , err , `"www.my.project" is not a valid project name` )
108+ assert .Assert (t , p == nil )
92109 })
93110
94111 t .Run ("by name uppercase" , func (t * testing.T ) {
95112 _ , err := NewProjectOptions ([]string {"testdata/simple/compose.yaml" }, WithName ("MY_PROJECT" ))
96113 assert .ErrorContains (t , err , `"MY_PROJECT" is not a valid project name` )
97114
98115 opts , err := NewProjectOptions ([]string {"testdata/simple/compose.yaml" }, WithEnv ([]string {
99- fmt .Sprintf ("%s=%s" , consts .ComposeProjectName , "_my_project " ),
116+ fmt .Sprintf ("%s=%s" , consts .ComposeProjectName , "MY_PROJECT " ),
100117 }))
101118 assert .NilError (t , err )
102119 p , err := ProjectFromOptions (opts )
103- assert .NilError (t , err )
104- assert .Equal (t , p . Name , "my_project" )
120+ assert .ErrorContains (t , err , `"MY_PROJECT" is not a valid project name` )
121+ assert .Assert (t , p == nil )
105122 })
106123
107124 t .Run ("by working dir" , func (t * testing.T ) {
0 commit comments