@@ -2,12 +2,14 @@ package module_test
22
33import (
44 "errors"
5+ "fmt"
56 "testing"
67
78 "github.com/commitdev/zero/internal/config/moduleconfig"
89 "github.com/stretchr/testify/assert"
910
1011 "github.com/commitdev/zero/internal/module"
12+ "github.com/commitdev/zero/version"
1113)
1214
1315func TestGetSourceDir (t * testing.T ) {
@@ -33,6 +35,7 @@ func TestParseModuleConfig(t *testing.T) {
3335
3436 t .Run ("Loading module from source" , func (t * testing.T ) {
3537 mod , _ = module .ParseModuleConfig (testModuleSource )
38+ moduleconfig .ValidateZeroVersion (mod )
3639
3740 assert .Equal (t , "CI templates" , mod .Name )
3841 })
@@ -86,6 +89,74 @@ func TestParseModuleConfig(t *testing.T) {
8689 assert .Equal (t , []string {"<%" , "%>" }, mod .TemplateConfig .Delimiters )
8790 })
8891
92+ t .Run ("Parsing zero version constraints" , func (t * testing.T ) {
93+ moduleConstraints := mod .ZeroVersion .Constraints .String ()
94+ assert .Equal (t , ">= 3.0.0, < 4.0.0" , moduleConstraints )
95+ })
96+
97+ t .Run ("Should Fail against old zero version" , func (t * testing.T ) {
98+ moduleConstraints := mod .ZeroVersion .Constraints .String ()
99+
100+ // Mocking zero's version, testing against ">= 3.0.0, <= 4.0.0"
101+ originalVersion := version .AppVersion
102+ version .AppVersion = "2.0.0"
103+ defer func () { version .AppVersion = originalVersion }()
104+ // end of mock
105+
106+ isValid := moduleconfig .ValidateZeroVersion (mod )
107+ assert .Equal (t , false , isValid , fmt .Sprintf ("Version should satisfy %s" , moduleConstraints ))
108+ })
109+
110+ t .Run ("Should Fail against too new zero version" , func (t * testing.T ) {
111+ moduleConstraints := mod .ZeroVersion .Constraints .String ()
112+
113+ // Mocking zero's version, testing against ">= 3.0.0, <= 4.0.0"
114+ originalVersion := version .AppVersion
115+ version .AppVersion = "4.0.0"
116+ defer func () { version .AppVersion = originalVersion }()
117+ // end of mock
118+
119+ isValid := moduleconfig .ValidateZeroVersion (mod )
120+ assert .Equal (t , false , isValid , fmt .Sprintf ("Version should satisfy %s" , moduleConstraints ))
121+ })
122+
123+ t .Run ("Should validate against valid versions" , func (t * testing.T ) {
124+ moduleConstraints := mod .ZeroVersion .Constraints .String ()
125+
126+ // Mocking zero's version, testing against ">= 3.0.0, <= 4.0.0"
127+ const newZeroVersion = "3.0.5"
128+ originalVersion := version .AppVersion
129+ version .AppVersion = newZeroVersion
130+ defer func () { version .AppVersion = originalVersion }()
131+ // end of mock
132+
133+ isValid := moduleconfig .ValidateZeroVersion (mod )
134+ assert .Equal (t , true , isValid , fmt .Sprintf ("Version should satisfy %s" , moduleConstraints ))
135+ })
136+
137+ t .Run ("default to SNAPSHOT version passes tests" , func (t * testing.T ) {
138+ assert .Equal (t , "SNAPSHOT" , version .AppVersion )
139+ isValid := moduleconfig .ValidateZeroVersion (mod )
140+ assert .Equal (t , true , isValid , "default test run should pass version constraint" )
141+ })
142+
143+ }
144+
145+ func TestModuleWithNoVersionConstraint (t * testing.T ) {
146+ testModuleSource := "../../tests/test_data/modules/no-version-constraint"
147+ var mod moduleconfig.ModuleConfig
148+ var err error
149+
150+ t .Run ("Parsing Module with no version constraint" , func (t * testing.T ) {
151+ mod , err = module .ParseModuleConfig (testModuleSource )
152+ assert .Equal (t , "" , mod .ZeroVersion .String ())
153+ assert .Nil (t , err )
154+ })
155+
156+ t .Run ("Should pass Validation if constraint not specified" , func (t * testing.T ) {
157+ isValid := moduleconfig .ValidateZeroVersion (mod )
158+ assert .Equal (t , true , isValid , "Module with no constraint should pass version validation" )
159+ })
89160}
90161
91162func findParameter (params []moduleconfig.Parameter , field string ) (moduleconfig.Parameter , error ) {
0 commit comments