summaryrefslogtreecommitdiff
path: root/pkgtools/pkglint/files/globaldata_test.go
blob: 3dfd757dc35afeacb945f1482fcc60cf54ced27a (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package main

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

func (s *Suite) Test_GlobalData_InitVartypes(c *check.C) {
	G.globalData.InitVartypes()

	c.Check(G.globalData.vartypes["BSD_MAKE_ENV"].basicType.name, equals, "ShellWord")
	c.Check(G.globalData.vartypes["USE_BUILTIN.*"].basicType.name, equals, "YesNoIndirectly")
}

func (s *Suite) Test_parselinesSuggestedUpdates(c *check.C) {
	lines := s.NewLines("doc/TODO",
		"",
		"Suggested package updates",
		"==============",
		"For Perl updates \u2026",
		"",
		"\t"+"o CSP-0.34",
		"\t"+"o freeciv-client-2.5.0 (urgent)",
		"",
		"\t"+"o ignored-0.0")

	todo := parselinesSuggestedUpdates(lines)

	c.Check(todo, check.DeepEquals, []SuggestedUpdate{
		{lines[5], "CSP", "0.34", ""},
		{lines[6], "freeciv-client", "2.5.0", "(urgent)"}})
}

func (s *Suite) Test_GlobalData_loadTools(c *check.C) {
	s.CreateTmpFileLines(c, "mk/tools/bsd.tools.mk",
		".include \"flex.mk\"",
		".include \"gettext.mk\"")
	s.CreateTmpFileLines(c, "mk/tools/defaults.mk",
		"_TOOLS_VARNAME.chown=CHOWN",
		"_TOOLS_VARNAME.gawk=AWK",
		"_TOOLS_VARNAME.mv=MV",
		"_TOOLS_VARNAME.pwd=PWD")
	s.CreateTmpFileLines(c, "mk/tools/flex.mk",
		"# empty")
	s.CreateTmpFileLines(c, "mk/tools/gettext.mk",
		"USE_TOOLS+=msgfmt",
		"TOOLS_CREATE+=msgfmt")
	s.CreateTmpFileLines(c, "mk/bsd.prefs.mk",
		"USE_TOOLS+=\tpwd")
	s.CreateTmpFileLines(c, "mk/bsd.pkg.mk",
		"USE_TOOLS+=\tmv")
	G.globalData.Pkgsrcdir = s.tmpdir
	G.CurrentDir = s.tmpdir
	G.CurPkgsrcdir = "."

	G.globalData.loadTools()

	G.opts.Debug = true
	G.globalData.Tools.Trace()

	c.Check(s.Output(), equals, ""+
		"TRACE: + (*ToolRegistry).Trace()\n"+
		"TRACE: 1   tool &{Name:TOOLS_mv Varname: MustUseVarForm:false Predefined:true UsableAtLoadtime:false}\n"+
		"TRACE: 1   tool &{Name:TOOLS_pwd Varname: MustUseVarForm:false Predefined:true UsableAtLoadtime:true}\n"+
		"TRACE: 1   tool &{Name:chown Varname:CHOWN MustUseVarForm:false Predefined:false UsableAtLoadtime:false}\n"+
		"TRACE: 1   tool &{Name:echo Varname:ECHO MustUseVarForm:true Predefined:true UsableAtLoadtime:true}\n"+
		"TRACE: 1   tool &{Name:echo -n Varname:ECHO_N MustUseVarForm:true Predefined:true UsableAtLoadtime:true}\n"+
		"TRACE: 1   tool &{Name:false Varname:FALSE MustUseVarForm:true Predefined:true UsableAtLoadtime:false}\n"+
		"TRACE: 1   tool &{Name:gawk Varname:AWK MustUseVarForm:false Predefined:false UsableAtLoadtime:false}\n"+
		"TRACE: 1   tool &{Name:msgfmt Varname: MustUseVarForm:false Predefined:false UsableAtLoadtime:false}\n"+
		"TRACE: 1   tool &{Name:mv Varname:MV MustUseVarForm:false Predefined:true UsableAtLoadtime:false}\n"+
		"TRACE: 1   tool &{Name:pwd Varname:PWD MustUseVarForm:false Predefined:true UsableAtLoadtime:true}\n"+
		"TRACE: 1   tool &{Name:test Varname:TEST MustUseVarForm:true Predefined:true UsableAtLoadtime:true}\n"+
		"TRACE: 1   tool &{Name:true Varname:TRUE MustUseVarForm:true Predefined:true UsableAtLoadtime:true}\n"+
		"TRACE: - (*ToolRegistry).Trace()\n")
}

func (s *Suite) Test_GlobalData_loadDocChangesFromFile(c *check.C) {
	s.CreateTmpFile(c, "doc/CHANGES-2015", ""+
		"\tAdded category/package version 1.0 [author1 2015-01-01]\n"+
		"\tUpdated category/package to 1.5 [author2 2015-01-02]\n"+
		"\tRenamed category/package to category/pkg [author3 2015-01-03]\n"+
		"\tMoved category/package to other/package [author4 2015-01-04]\n"+
		"\tRemoved category/package [author5 2015-01-05]\n"+
		"\tRemoved category/package successor category/package2 [author6 2015-01-06]\n"+
		"\tDowngraded category/package to 1.2 [author7 2015-01-07]\n")

	changes := G.globalData.loadDocChangesFromFile(s.tmpdir + "/doc/CHANGES-2015")

	c.Assert(len(changes), equals, 7)
	c.Check(*changes[0], equals, Change{changes[0].Line, "Added", "category/package", "1.0", "author1", "2015-01-01"})
	c.Check(*changes[1], equals, Change{changes[1].Line, "Updated", "category/package", "1.5", "author2", "2015-01-02"})
	c.Check(*changes[2], equals, Change{changes[2].Line, "Renamed", "category/package", "", "author3", "2015-01-03"})
	c.Check(*changes[3], equals, Change{changes[3].Line, "Moved", "category/package", "", "author4", "2015-01-04"})
	c.Check(*changes[4], equals, Change{changes[4].Line, "Removed", "category/package", "", "author5", "2015-01-05"})
	c.Check(*changes[5], equals, Change{changes[5].Line, "Removed", "category/package", "", "author6", "2015-01-06"})
	c.Check(*changes[6], equals, Change{changes[6].Line, "Downgraded", "category/package", "1.2", "author7", "2015-01-07"})
}

func (s *Suite) Test_GlobalData_deprecated(c *check.C) {
	G.globalData.loadDeprecatedVars()

	line := NewLine("Makefile", 5, "USE_PERL5=\tyes", nil)
	NewMkLine(line).checkVarassign()

	c.Check(s.Output(), equals, "WARN: Makefile:5: Definition of USE_PERL5 is deprecated. Use USE_TOOLS+=perl or USE_TOOLS+=perl:run instead.\n")
}