summaryrefslogtreecommitdiff
path: root/pkgtools/pkglint/files/mkcond_test.go
blob: 2f6a1036fabc6e4064b710e407f90042e0673d4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main

import (
	check "gopkg.in/check.v1"
)

func (s *Suite) TestParseMkCond_NotEmptyMatch(c *check.C) {
	line := NewLine("fname", "1", "dummy", nil)

	cond := parseMkCond(line, "!empty(USE_LIBTOOL:M[Yy][Ee][Ss])")

	c.Check(cond, check.DeepEquals, NewTree("not", NewTree("empty", NewTree("match", "USE_LIBTOOL", "[Yy][Ee][Ss]"))))
}

func (s *Suite) TestParseMkCond_Compare(c *check.C) {
	line := NewLine("fname", "1", "dummy", nil)

	cond := parseMkCond(line, "${VARNAME} != \"Value\"")

	c.Check(cond, check.DeepEquals, NewTree("compareVarStr", "VARNAME", "!=", "Value"))
}

func (s *Suite) TestChecklineMkCondition(c *check.C) {
	s.UseCommandLine("-Wtypes")
	G.globalData.InitVartypes()
	line := NewLine("fname", "1", "", nil)

	checklineMkCondition(line, "!empty(PKGSRC_COMPILER:Mmycc)")

	c.Check(s.Stdout(), equals, "WARN: fname:1: Invalid :M value \"mycc\". "+
		"Only { ccache ccc clang distcc f2c gcc hp icc ido gcc mipspro "+
		"mipspro-ucode pcc sunpro xlc } are allowed.\n")

	checklineMkCondition(line, "${A} != ${B}")

	c.Check(s.Stdout(), equals, "") // Unknown condition types are silently ignored

	checklineMkCondition(line, "${HOMEPAGE} == \"mailto:someone@example.org\"")

	c.Check(s.Output(), equals, "WARN: fname:1: \"mailto:someone@example.org\" is not a valid URL.\n")
}