diff options
| author | Shulhan <ms@kilabit.info> | 2018-05-17 03:49:02 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2018-05-17 03:49:02 +0700 |
| commit | fb989eced7d80da08973f04a561464f54a5f08d8 (patch) | |
| tree | facb34dcb0c54829f54317314502ccd8369aca4a | |
| parent | f089e57911b102c3ef94184a8ef32f457b940eb4 (diff) | |
| download | beku-fb989eced7d80da08973f04a561464f54a5f08d8.tar.xz | |
Move Package.IsTag to common.IsTagVersion and add unit test for it
| -rw-r--r-- | common.go | 18 | ||||
| -rw-r--r-- | common_test.go | 35 | ||||
| -rw-r--r-- | env.go | 2 | ||||
| -rw-r--r-- | package.go | 22 |
4 files changed, 56 insertions, 21 deletions
@@ -32,6 +32,24 @@ func IsIgnoredDir(name string) bool { } // +// IsTagVersion return true if "version" prefixed with "v" or contains at +// least one dot "." character. +// +func IsTagVersion(version string) bool { + version = strings.TrimSpace(version) + if len(version) == 0 { + return false + } + if version[0] == prefixTag && len(version) > 1 { + return true + } + if strings.IndexByte(version, sepVersion) > 0 { + return true + } + return false +} + +// // confirm display a question to standard output and read for answer // from "in" for simple "y" or "n" answer. // If "in" is nil, it will set to standard input. diff --git a/common_test.go b/common_test.go index 9f2950c..f504b47 100644 --- a/common_test.go +++ b/common_test.go @@ -55,6 +55,41 @@ func TestIsIgnoredDir(t *testing.T) { } } +func TestIsTagVersion(t *testing.T) { + cases := []struct { + ver string + exp bool + }{{ + ver: "", + }, { + ver: " v", + }, { + ver: "v1", + exp: true, + }, { + ver: "1", + exp: false, + }, { + ver: "1.0", + exp: true, + }, { + ver: "alpha", + exp: false, + }, { + ver: "abcdef1", + exp: false, + }} + + var got bool + for _, c := range cases { + t.Log(c) + + got = IsTagVersion(c.ver) + + test.Assert(t, "", c.exp, got, true) + } +} + func TestConfirm(t *testing.T) { cases := []struct { defIsYes bool @@ -469,7 +469,7 @@ func (env *Env) Sync(pkgName, importPath string) (err error) { if len(version) > 0 { newPkg.Version = version - newPkg.setIsTag() + newPkg.isTag = IsTagVersion(version) } // (2) @@ -120,30 +120,12 @@ func (pkg *Package) Scan() (err error) { return } - pkg.setIsTag() + pkg.isTag = IsTagVersion(pkg.Version) return } // -// setIsTag will set isTag to true if `Version` prefixed with `v` or contains -// dot `.` character. -// -func (pkg *Package) setIsTag() { - if len(pkg.Version) == 0 { - pkg.isTag = false - return - } - if pkg.Version[0] == prefixTag { - pkg.isTag = true - return - } - if strings.IndexByte(pkg.Version, sepVersion) > 0 { - pkg.isTag = true - } -} - -// // ScanDeps will scan package dependencies, removing standard packages, keep // only external dependencies. // @@ -318,7 +300,7 @@ func (pkg *Package) load(sec *ini.Section) { pkg.RemoteURL = v.Value case keyVersion: pkg.Version = v.Value - pkg.setIsTag() + pkg.isTag = IsTagVersion(pkg.Version) case keyDeps: pkg.Deps = append(pkg.Deps, v.Value) case keyDepsMissing: |
