2016-11-18 22:39:22 +01:00

142 lines
3.8 KiB
Go

package main
import (
check "gopkg.in/check.v1"
)
func (s *Suite) Test_Line_modifications(c *check.C) {
s.UseCommandLine(c, "--show-autofix")
line := NewLine("fname", 1, "dummy", s.NewRawLines(1, "original\n"))
c.Check(line.changed, equals, false)
c.Check(line.raw, check.DeepEquals, s.NewRawLines(1, "original\n"))
line.AutofixReplaceRegexp(`(.)(.*)(.)`, "$3$2$1")
c.Check(line.changed, equals, true)
c.Check(line.raw, check.DeepEquals, s.NewRawLines(1, "original\n", "lriginao\n"))
line.changed = false
line.AutofixReplace("i", "u")
c.Check(line.changed, equals, true)
c.Check(line.raw, check.DeepEquals, s.NewRawLines(1, "original\n", "lruginao\n"))
c.Check(line.raw[0].textnl, equals, "lruginao\n")
line.changed = false
line.AutofixReplace("lruginao", "middle")
c.Check(line.changed, equals, true)
c.Check(line.raw, check.DeepEquals, s.NewRawLines(1, "original\n", "middle\n"))
c.Check(line.raw[0].textnl, equals, "middle\n")
line.AutofixInsertBefore("before")
line.AutofixInsertBefore("between before and middle")
line.AutofixInsertAfter("between middle and after")
line.AutofixInsertAfter("after")
c.Check(line.modifiedLines(), check.DeepEquals, []string{
"before\n",
"between before and middle\n",
"middle\n",
"between middle and after\n",
"after\n"})
line.AutofixDelete()
c.Check(line.modifiedLines(), check.DeepEquals, []string{
"before\n",
"between before and middle\n",
"",
"between middle and after\n",
"after\n"})
}
func (s *Suite) Test_Line_CheckAbsolutePathname(c *check.C) {
line := NewLine("Makefile", 1, "# dummy", nil)
line.CheckAbsolutePathname("bindir=/bin")
line.CheckAbsolutePathname("bindir=/../lib")
c.Check(s.Output(), equals, "WARN: Makefile:1: Found absolute pathname: /bin\n")
}
func (s *Suite) Test_Line_show_autofix_AutofixReplace(c *check.C) {
s.UseCommandLine(c, "--show-autofix", "--source")
line := NewLineMulti("Makefile", 27, 29, "# old", s.NewRawLines(
27, "before\n",
28, "The old song\n",
29, "after\n"))
if !line.AutofixReplace("old", "new") {
line.Warn0("Using \"old\" is deprecated.")
}
c.Check(s.Output(), equals, ""+
"\n"+
"> before\n"+
"- The old song\n"+
"+ The new song\n"+
"> after\n"+
"WARN: Makefile:27--29: Using \"old\" is deprecated.\n"+
"AUTOFIX: Makefile:27--29: Replacing \"old\" with \"new\".\n")
}
func (s *Suite) Test_Line_show_autofix_AutofixInsertBefore(c *check.C) {
s.UseCommandLine(c, "--show-autofix", "--source")
line := NewLine("Makefile", 30, "original", s.NewRawLines(30, "original\n"))
if !line.AutofixInsertBefore("inserted") {
line.Warn0("Dummy")
}
c.Check(s.Output(), equals, ""+
"\n"+
"+ inserted\n"+
"> original\n"+
"WARN: Makefile:30: Dummy\n"+
"AUTOFIX: Makefile:30: Inserting a line \"inserted\" before this line.\n")
}
func (s *Suite) Test_Line_show_autofix_AutofixDelete(c *check.C) {
s.UseCommandLine(c, "--show-autofix", "--source")
line := NewLine("Makefile", 30, "to be deleted", s.NewRawLines(30, "to be deleted\n"))
if !line.AutofixDelete() {
line.Warn0("Dummy")
}
c.Check(s.Output(), equals, ""+
"\n"+
"- to be deleted\n"+
"WARN: Makefile:30: Dummy\n"+
"AUTOFIX: Makefile:30: Deleting this line.\n")
}
func (s *Suite) Test_Line_CheckTrailingWhitespace(c *check.C) {
line := NewLine("Makefile", 32, "The line must go on ", nil)
line.CheckTrailingWhitespace()
c.Check(s.Output(), equals, "NOTE: Makefile:32: Trailing white-space.\n")
}
func (s *Suite) Test_Line_CheckRcsid(c *check.C) {
lines := s.NewLines("fname",
"$"+"NetBSD: dummy $",
"$"+"NetBSD$",
"$"+"Id: dummy $",
"$"+"Id$",
"$"+"FreeBSD$")
for _, line := range lines {
line.CheckRcsid(``, "")
}
c.Check(s.Output(), equals, ""+
"ERROR: fname:3: Expected \"$"+"NetBSD$\".\n"+
"ERROR: fname:4: Expected \"$"+"NetBSD$\".\n"+
"ERROR: fname:5: Expected \"$"+"NetBSD$\".\n")
}