iwp
This commit is contained in:
@@ -49,7 +49,7 @@ func (files Files) TempSetLastNLines(n int, lines []string) error {
|
|||||||
}
|
}
|
||||||
defer r.Close()
|
defer r.Close()
|
||||||
|
|
||||||
if _, err := peekLastNLines(w, r, n); err != nil {
|
if _, err := peekLastNLines(w, bufio.NewReader(r), n); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for i := range lines {
|
for i := range lines {
|
||||||
|
|||||||
@@ -354,6 +354,47 @@ func TestFilesTempSetLastNLines(t *testing.T) {
|
|||||||
want string
|
want string
|
||||||
}{
|
}{
|
||||||
"empty": {},
|
"empty": {},
|
||||||
|
"append to empty": {
|
||||||
|
input: []string{"hello", "world"},
|
||||||
|
n: 100,
|
||||||
|
want: "hello\nworld\n",
|
||||||
|
},
|
||||||
|
"replace last 10 of 1 lines with 2": {
|
||||||
|
given: "ohno",
|
||||||
|
input: []string{"hello", "world"},
|
||||||
|
n: 10,
|
||||||
|
want: "hello\nworld\n",
|
||||||
|
},
|
||||||
|
"replace last 1 of 1 lines with 2": {
|
||||||
|
given: "ohno",
|
||||||
|
input: []string{"hello", "world"},
|
||||||
|
n: 1,
|
||||||
|
want: "hello\nworld\n",
|
||||||
|
},
|
||||||
|
"replace last 0 of 1 lines with 2": {
|
||||||
|
given: "ohno",
|
||||||
|
input: []string{"hello", "world"},
|
||||||
|
n: 0,
|
||||||
|
want: "ohno\nhello\nworld\n",
|
||||||
|
},
|
||||||
|
"replace last 1 of 1 lines with 0": {
|
||||||
|
given: "ohno",
|
||||||
|
input: []string{},
|
||||||
|
n: 1,
|
||||||
|
want: "",
|
||||||
|
},
|
||||||
|
"replace last 1 of 2 lines with 1": {
|
||||||
|
given: "ohno\nhaha",
|
||||||
|
input: []string{"replaced"},
|
||||||
|
n: 1,
|
||||||
|
want: "ohno\nreplaced\n",
|
||||||
|
},
|
||||||
|
"replace last 1 of 2 lines with 2": {
|
||||||
|
given: "ohno\nhaha",
|
||||||
|
input: []string{"replac", "ed"},
|
||||||
|
n: 1,
|
||||||
|
want: "ohno\nreplac\ned\n",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for name, d := range cases {
|
for name, d := range cases {
|
||||||
@@ -363,11 +404,18 @@ func TestFilesTempSetLastNLines(t *testing.T) {
|
|||||||
os.WriteFile(p, []byte(c.given), os.ModePerm)
|
os.WriteFile(p, []byte(c.given), os.ModePerm)
|
||||||
files := Files([]string{p})
|
files := Files([]string{p})
|
||||||
if err := files.TempSetLastNLines(c.n, c.input); err != nil {
|
if err := files.TempSetLastNLines(c.n, c.input); err != nil {
|
||||||
|
s := err.Error()
|
||||||
|
if _, err := os.Stat(s); err == nil {
|
||||||
|
got, _ := os.ReadFile(s)
|
||||||
|
if string(got) != c.want {
|
||||||
|
t.Errorf("want\n%s, got\n%s", c.want, got)
|
||||||
|
}
|
||||||
|
}
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
got, _ := os.ReadFile(p)
|
got, _ := os.ReadFile(p)
|
||||||
if string(got) != c.want {
|
if string(got) != c.want {
|
||||||
t.Errorf("want\n\t%s, got\n\t%s", c.want, got)
|
t.Errorf("want\n%s, got\n%s", c.want, got)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user