mirror of
https://github.com/cheat/cheat.git
synced 2024-09-08 12:41:34 +02:00
- Re-implemented the project in Golang, and deprecated Python entirely - Implemented several new, long-requested features - Refactored cheatsheets into a separate repository
103 lines
2.4 KiB
Go
103 lines
2.4 KiB
Go
package sheet
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"path"
|
|
"testing"
|
|
)
|
|
|
|
// TestCopyFlat asserts that Copy correctly copies files at a single level of
|
|
// depth
|
|
func TestCopyFlat(t *testing.T) {
|
|
|
|
// mock a cheatsheet file
|
|
text := "this is the cheatsheet text"
|
|
src, err := ioutil.TempFile("", "foo-src")
|
|
if err != nil {
|
|
t.Errorf("failed to mock cheatsheet: %v", err)
|
|
}
|
|
defer src.Close()
|
|
defer os.Remove(src.Name())
|
|
|
|
if _, err := src.WriteString(text); err != nil {
|
|
t.Errorf("failed to write to mock cheatsheet: %v", err)
|
|
}
|
|
|
|
// mock a cheatsheet struct
|
|
sheet, err := New("foo", src.Name(), []string{}, false)
|
|
if err != nil {
|
|
t.Errorf("failed to init cheatsheet: %v", err)
|
|
}
|
|
|
|
// compute the outfile's path
|
|
outpath := path.Join(os.TempDir(), sheet.Title)
|
|
defer os.Remove(outpath)
|
|
|
|
// attempt to copy the cheatsheet
|
|
err = sheet.Copy(outpath)
|
|
if err != nil {
|
|
t.Errorf("failed to copy cheatsheet: %v", err)
|
|
}
|
|
|
|
// assert that the destination file contains the correct text
|
|
got, err := ioutil.ReadFile(outpath)
|
|
if err != nil {
|
|
t.Errorf("failed to read destination file: %v", err)
|
|
}
|
|
if string(got) != text {
|
|
t.Errorf(
|
|
"destination file contained wrong text: want: '%s', got: '%s'",
|
|
text,
|
|
got,
|
|
)
|
|
}
|
|
}
|
|
|
|
// TestCopyDeep asserts that Copy correctly copies files at several levels of
|
|
// depth
|
|
func TestCopyDeep(t *testing.T) {
|
|
|
|
// mock a cheatsheet file
|
|
text := "this is the cheatsheet text"
|
|
src, err := ioutil.TempFile("", "foo-src")
|
|
if err != nil {
|
|
t.Errorf("failed to mock cheatsheet: %v", err)
|
|
}
|
|
defer src.Close()
|
|
defer os.Remove(src.Name())
|
|
|
|
if _, err := src.WriteString(text); err != nil {
|
|
t.Errorf("failed to write to mock cheatsheet: %v", err)
|
|
}
|
|
|
|
// mock a cheatsheet struct
|
|
sheet, err := New("/cheat-tests/alpha/bravo/foo", src.Name(), []string{}, false)
|
|
if err != nil {
|
|
t.Errorf("failed to init cheatsheet: %v", err)
|
|
}
|
|
|
|
// compute the outfile's path
|
|
outpath := path.Join(os.TempDir(), sheet.Title)
|
|
defer os.RemoveAll(path.Join(os.TempDir(), "cheat-tests"))
|
|
|
|
// attempt to copy the cheatsheet
|
|
err = sheet.Copy(outpath)
|
|
if err != nil {
|
|
t.Errorf("failed to copy cheatsheet: %v", err)
|
|
}
|
|
|
|
// assert that the destination file contains the correct text
|
|
got, err := ioutil.ReadFile(outpath)
|
|
if err != nil {
|
|
t.Errorf("failed to read destination file: %v", err)
|
|
}
|
|
if string(got) != text {
|
|
t.Errorf(
|
|
"destination file contained wrong text: want: '%s', got: '%s'",
|
|
text,
|
|
got,
|
|
)
|
|
}
|
|
}
|