Skip to content

Commit

Permalink
testing and comment logic (#420)
Browse files Browse the repository at this point in the history
  • Loading branch information
zlav committed Mar 13, 2019
1 parent 2a2a23f commit cbd0f75
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 3 deletions.
7 changes: 5 additions & 2 deletions buildtools/pip/pip.go
Expand Up @@ -59,15 +59,18 @@ func FromFile(filename string) ([]Requirement, error) {

var reqs []Requirement
for _, line := range strings.Split(string(contents), "\n") {
trimmed := strings.TrimSpace(line)
// Remove all line comments and whitespace.
commentSplit := strings.Split(line, "#")
trimmed := strings.TrimSpace(commentSplit[0])
if strings.HasPrefix(trimmed, "#") || strings.HasPrefix(trimmed, "-") || trimmed == "" {
continue
}

log.WithField("line", line).Debug("parsing line")
// See https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-format
// and https://pip.pypa.io/en/stable/reference/pip_install/#pip-install-examples
matched := false
operators := []string{"<=", ">=", "==", ">", "<", "!="}
operators := []string{"===", "<=", ">=", "==", ">", "<", "!=", "~="}
for _, op := range operators {
sections := strings.Split(trimmed, op)
if len(sections) == 2 {
Expand Down
5 changes: 4 additions & 1 deletion buildtools/pip/pip_test.go
Expand Up @@ -11,12 +11,15 @@ import (
func TestFromFile(t *testing.T) {
reqs, err := pip.FromFile("testdata/requirements.txt")
assert.NoError(t, err)
assert.Equal(t, 5, len(reqs))
assert.Equal(t, 8, len(reqs))
assert.Contains(t, reqs, pip.Requirement{Name: "simple", Revision: "1.0.0", Operator: "=="})
assert.Contains(t, reqs, pip.Requirement{Name: "extra", Revision: "2.0.0", Operator: "=="})
assert.Contains(t, reqs, pip.Requirement{Name: "latest"})
assert.Contains(t, reqs, pip.Requirement{Name: "latestExtra"})
assert.Contains(t, reqs, pip.Requirement{Name: "notEqualOp", Revision: "3.0.0", Operator: ">="})
assert.Contains(t, reqs, pip.Requirement{Name: "comment-version", Revision: "2.0.0", Operator: "==="})
assert.Contains(t, reqs, pip.Requirement{Name: "comment"})
assert.Contains(t, reqs, pip.Requirement{Name: "tilde", Revision: "2.0.0", Operator: "~="})
assert.NotContains(t, reqs, pip.Requirement{Name: "-r other-requirements.txt"})
assert.NotContains(t, reqs, pip.Requirement{Name: "--option test-option"})
}
3 changes: 3 additions & 0 deletions buildtools/pip/testdata/requirements.txt
Expand Up @@ -5,3 +5,6 @@ extra[extra]==2.0.0
latest
latestExtra[security]
notEqualOp>=3.0.0
tilde~=2.0.0
comment-version===2.0.0 #comment
comment #comment

0 comments on commit cbd0f75

Please sign in to comment.