settings tests
This commit is contained in:
parent
a26b505473
commit
bd9435693c
|
@ -196,7 +196,7 @@ func main() {
|
|||
Questions: []*interact.Question{
|
||||
{
|
||||
Before: func(d interact.Context) error {
|
||||
if _, err := os.Stat(settings.Dir + config); err != nil {
|
||||
if _, err := os.Stat(settings.Directory + config); err != nil {
|
||||
d.Skip()
|
||||
}
|
||||
d.SetDef(false, style.Green.Regular("(n)"))
|
||||
|
@ -894,7 +894,7 @@ func main() {
|
|||
},
|
||||
After: func(d interact.Context) error {
|
||||
if val, _ := d.Qns().Get(0).Ans().Bool(); val {
|
||||
actErr = r.Settings.Remove()
|
||||
actErr = r.Settings.Remove(settings.Directory)
|
||||
if actErr != nil {
|
||||
return actErr
|
||||
}
|
||||
|
@ -946,7 +946,7 @@ func main() {
|
|||
Aliases: []string{"c"},
|
||||
Description: "Remove realize folder.",
|
||||
Action: func(p *cli.Context) error {
|
||||
if err := r.Settings.Remove(); err != nil {
|
||||
if err := r.Settings.Remove(settings.Directory); err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(style.Yellow.Bold("[")+"REALIZE"+style.Yellow.Bold("]"), style.Green.Bold("Realize folder successfully removed."))
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package settings
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSettings_Flimit(t *testing.T) {
|
||||
s := Settings{}
|
||||
s.Config.Flimit = 1
|
||||
if err := s.Flimit(); err != nil {
|
||||
t.Error("Unable to increase limit", err)
|
||||
}
|
||||
}
|
|
@ -17,21 +17,21 @@ func (s Settings) Stream(file string) ([]byte, error) {
|
|||
return content, err
|
||||
}
|
||||
|
||||
// Write a file given a name and a byte stream
|
||||
// Write a file
|
||||
func (s Settings) Write(name string, data []byte) error {
|
||||
err := ioutil.WriteFile(name, data, 0655)
|
||||
err := ioutil.WriteFile(name, data, Permission)
|
||||
return s.Validate(err)
|
||||
}
|
||||
|
||||
// Create a new file and return its pointer
|
||||
func (s Settings) Create(path string, name string) *os.File {
|
||||
var file string
|
||||
if _, err := os.Stat(Dir); err == nil {
|
||||
file = filepath.Join(path, Dir, name)
|
||||
if _, err := os.Stat(Directory); err == nil {
|
||||
file = filepath.Join(path, Directory, name)
|
||||
} else {
|
||||
file = filepath.Join(path, name)
|
||||
}
|
||||
out, err := os.OpenFile(file, os.O_APPEND|os.O_WRONLY|os.O_CREATE|os.O_SYNC, 0655)
|
||||
out, err := os.OpenFile(file, os.O_APPEND|os.O_WRONLY|os.O_CREATE|os.O_SYNC, Permission)
|
||||
s.Validate(err)
|
||||
return out
|
||||
}
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
package settings
|
||||
|
||||
import (
|
||||
"github.com/labstack/gommon/random"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSettings_Stream(t *testing.T) {
|
||||
s := Settings{}
|
||||
filename := random.String(4)
|
||||
if _, err := s.Stream(filename); err == nil {
|
||||
t.Fatal("Error expected, none found", filename, err)
|
||||
}
|
||||
|
||||
filename = "io.go"
|
||||
if _, err := s.Stream(filename); err != nil {
|
||||
t.Fatal("Error unexpected", filename, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSettings_Write(t *testing.T) {
|
||||
s := Settings{}
|
||||
data := "abcdefgh"
|
||||
d, err := ioutil.TempFile("", "io_test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := s.Write(d.Name(), []byte(data)); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSettings_Create(t *testing.T) {
|
||||
s := Settings{}
|
||||
p, err := os.Getwd()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
f := s.Create(p, "io_test")
|
||||
os.Remove(f.Name())
|
||||
}
|
|
@ -6,8 +6,11 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
// realize hidden dir
|
||||
var Dir = ".realize/"
|
||||
// settings const
|
||||
const (
|
||||
Permission = 0775
|
||||
Directory = ".realize/"
|
||||
)
|
||||
|
||||
// Settings defines a group of general settings
|
||||
type Settings struct {
|
||||
|
@ -48,15 +51,16 @@ type Resources struct {
|
|||
// Read from config file
|
||||
func (s *Settings) Read(out interface{}) error {
|
||||
localConfigPath := s.Resources.Config
|
||||
if _, err := os.Stat(Dir + s.Resources.Config); err == nil {
|
||||
localConfigPath = Dir + s.Resources.Config
|
||||
// backward compatibility
|
||||
if _, err := os.Stat(Directory + s.Resources.Config); err == nil {
|
||||
localConfigPath = Directory + s.Resources.Config
|
||||
}
|
||||
content, err := s.Stream(localConfigPath)
|
||||
if err == nil {
|
||||
err = yaml.Unmarshal(content, out)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
return err
|
||||
}
|
||||
|
||||
// Record create and unmarshal the yaml config file
|
||||
|
@ -66,20 +70,21 @@ func (s *Settings) Record(out interface{}) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := os.Stat(Dir); os.IsNotExist(err) {
|
||||
if err = os.Mkdir(Dir, 0770); err != nil {
|
||||
if _, err := os.Stat(Directory); os.IsNotExist(err) {
|
||||
if err = os.Mkdir(Directory, Permission); err != nil {
|
||||
return s.Write(s.Resources.Config, y)
|
||||
}
|
||||
}
|
||||
return s.Write(Dir+s.Resources.Config, y)
|
||||
return s.Write(Directory+s.Resources.Config, y)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Remove realize folder
|
||||
func (s *Settings) Remove() error {
|
||||
if _, err := os.Stat(Dir); !os.IsNotExist(err) {
|
||||
return os.RemoveAll(Dir)
|
||||
func (s *Settings) Remove(d string) error {
|
||||
_, err := os.Stat(d)
|
||||
if !os.IsNotExist(err) {
|
||||
return os.RemoveAll(d)
|
||||
}
|
||||
return nil
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
package settings
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSettings_Read(t *testing.T) {
|
||||
s := Settings{}
|
||||
var a interface{}
|
||||
s.Resources.Config = "settings_b"
|
||||
if err := s.Read(a); err == nil {
|
||||
t.Error("Error unexpected", err)
|
||||
}
|
||||
|
||||
s.Resources.Config = "settings_test.yaml"
|
||||
d, err := ioutil.TempFile("", "settings_test.yaml")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
s.Resources.Config = d.Name()
|
||||
if err := s.Read(a); err != nil {
|
||||
t.Error("Error unexpected", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSettings_Remove(t *testing.T) {
|
||||
s := Settings{}
|
||||
if err := s.Remove("abcd"); err == nil {
|
||||
t.Error("Error unexpected, dir dosn't exist", err)
|
||||
}
|
||||
|
||||
d, err := ioutil.TempDir("", "settings_test")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if err := s.Remove(d); err != nil {
|
||||
t.Error("Error unexpected, dir exist", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSettings_Record(t *testing.T) {
|
||||
s := Settings{}
|
||||
s.Resources.Config = "settings_test.yaml"
|
||||
var a interface{}
|
||||
if err := s.Record(a); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
s.Remove(filepath.Join(Directory, s.Resources.Config))
|
||||
}
|
|
@ -9,7 +9,7 @@ import (
|
|||
"github.com/tockins/realize/style"
|
||||
)
|
||||
|
||||
// Wdir return the current working directory
|
||||
// Wdir return the current working Directory
|
||||
func (s Settings) Wdir() string {
|
||||
dir, err := os.Getwd()
|
||||
s.Validate(err)
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
package settings
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/labstack/gommon/random"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSettings_Wdir(t *testing.T) {
|
||||
s := Settings{}
|
||||
expected, err := os.Getwd()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
result := s.Wdir()
|
||||
if result != filepath.Base(expected) {
|
||||
t.Error("Expected", filepath.Base(expected), "instead", result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSettings_Validate(t *testing.T) {
|
||||
s := Settings{}
|
||||
input := errors.New("")
|
||||
input = nil
|
||||
if err := s.Validate(input); err != nil {
|
||||
t.Error("Expected", input, "instead", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSettings_Name(t *testing.T) {
|
||||
s := Settings{}
|
||||
name := random.String(8)
|
||||
path := random.String(5)
|
||||
dir, err := os.Getwd()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
result := s.Name(name, path)
|
||||
if result != dir && result != filepath.Base(path) {
|
||||
t.Error("Expected", dir, "or", filepath.Base(path), "instead", result)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestSettings_Path(t *testing.T) {
|
||||
s := Settings{}
|
||||
path := random.String(5)
|
||||
expected := strings.Replace(filepath.Clean(path), "\\", "/", -1)
|
||||
result := s.Path(path)
|
||||
if result != expected {
|
||||
t.Error("Expected", expected, "instead", result)
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue