Skip to content
This repository has been archived by the owner on Jul 12, 2022. It is now read-only.

Feature/unix tests for init #174

Merged
merged 12 commits into from
Jun 18, 2020
4 changes: 2 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ jobs:
- run:
name: Running Functional tests for team
command: |
go test -v (go list ./functional/team/... | grep -v vendor/)
go test -v -count=1 -p 1 (go list ./functional/team/... | grep -v vendor/)

windows_functional_test_single:
executor: windows-executor
Expand All @@ -233,7 +233,7 @@ jobs:
- run:
name: Running Functional tests for single
command: |
go test -v (go list ./functional/single/... | grep -v vendor/)
go test -v -count=1 -p 1 (go list ./functional/single/... | grep -v vendor/)


build:
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,11 @@ unit-test:

functional-test-single:
mkdir -p $(BIN)
$(GOTEST) -v `go list ./functional/single/... | grep -v vendor/`
$(GOTEST) -v -count=1 -p 1 `go list ./functional/single/... | grep -v vendor/`

functional-test-team:
mkdir -p $(BIN)
$(GOTEST) -v `go list ./functional/team/... | grep -v vendor/`
$(GOTEST) -v -count=1 -p 1 `go list ./functional/team/... | grep -v vendor/`

rebase-nightly:
git config --global user.email "$(GIT_EMAIL)"
Expand Down
13 changes: 12 additions & 1 deletion functional/runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (scenario *Scenario) RunSteps() (string, error) {
}

func (scenario *Scenario) RunStdin() (string, error) {
fmt.Println("Running: " + scenario.Entry)
fmt.Println("Running STDIN: " + scenario.Entry)
os := runtime.GOOS
if os == "windows" {
b2, err := scenario.runStdinForWindows()
Expand All @@ -66,6 +66,16 @@ func RitInit() {
fmt.Println("Setup Done..")
}

func RitClearConfigs() {
os := runtime.GOOS
if os == "windows" {
setUpClearSetupWindows()
} else {
setUpClearSetupUnix()
}
fmt.Println("Setup Done..")
}

func LoadScenarios(file string) []Scenario {
jsonFile, err := os.Open(file)
if err != nil {
Expand All @@ -90,3 +100,4 @@ func scannerTerminal(out io.Reader) *bufio.Scanner {
scanner.Split(bufio.ScanLines)
return scanner
}

29 changes: 29 additions & 0 deletions functional/runner_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ import (
"fmt"
"io"
"log"
"os"
"os/exec"
"os/user"
"path/filepath"
"strings"
"time"

Expand All @@ -30,6 +33,8 @@ func (scenario *Scenario) runStdinForUnix() (bytes.Buffer, error) {
if errorEcho != nil {
log.Printf("Error while running: %q", errorEcho)
}
var stderr bytes.Buffer
commandRit.Stderr = &stderr

errorRit := commandRit.Start()
if errorRit != nil {
Expand All @@ -46,6 +51,7 @@ func (scenario *Scenario) runStdinForUnix() (bytes.Buffer, error) {
errorRit = commandRit.Wait()
if errorRit != nil {
log.Printf("Error while running: %q", errorRit)
b2 = stderr
}

fmt.Println(&b2)
Expand Down Expand Up @@ -76,6 +82,29 @@ func setUpRitUnix() {
}
}

func setUpClearSetupUnix() {
fmt.Println("Running Clear for Unix..")
myPath := "/.rit/"
usr, _ := user.Current()
dir := usr.HomeDir + myPath

d, err := os.Open(dir)
if err != nil {
log.Printf("Error Open dir: %q", err)
}
defer d.Close()
names, err := d.Readdirnames(-1)
if err != nil {
log.Printf("Error Readdirnames: %q", err)
}
for _, name := range names {
err := os.RemoveAll(filepath.Join(dir, name))
if err != nil {
log.Printf("Error cleaning repo rit: %q", err)
}
}
}

func (scenario *Scenario) runStepsForUnix() (error, string) {
args := strings.Fields(scenario.Steps[0].Value)
cmd, stdin, out, err := execRit(args)
Expand Down
30 changes: 30 additions & 0 deletions functional/runner_win.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ import (
"fmt"
"io"
"log"
"os"
"os/exec"
"os/user"
"path/filepath"
"strings"
)

Expand All @@ -17,6 +20,9 @@ func (scenario *Scenario) runStdinForWindows() (bytes.Buffer, error) {
_, pipeWriter := io.Pipe()
cmd.Stdout = pipeWriter

var stderr bytes.Buffer
cmd.Stderr = &stderr

var b2 bytes.Buffer
cmd.Stdout = &b2

Expand All @@ -28,6 +34,7 @@ func (scenario *Scenario) runStdinForWindows() (bytes.Buffer, error) {
err = cmd.Wait()
if err != nil {
log.Printf("Error while running: %q", err)
b2 = stderr
}

pipeWriter.Close()
Expand All @@ -48,3 +55,26 @@ func setUpRitWin() {
}
fmt.Printf("%s\n", stdoutStderr)
}

func setUpClearSetupWindows() {
fmt.Println("Running Clear for Windows..")
myPath := "\\.rit\\"
usr, _ := user.Current()
dir := usr.HomeDir + myPath

d, err := os.Open(dir)
if err != nil {
log.Printf("Error Open dir: %q", err)
}
defer d.Close()
names, err := d.Readdirnames(-1)
if err != nil {
log.Printf("Error Readdirnames: %q", err)
}
for _, name := range names {
err := os.RemoveAll(filepath.Join(dir, name))
if err != nil {
log.Printf("Error cleaning repo rit: %q", err)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,25 @@
package single
package core

import (
"testing"

. "github.com/onsi/ginkgo"
. "github.com/onsi/ginkgo/extensions/table"
. "github.com/onsi/gomega"

"github.com/ZupIT/ritchie-cli/functional"
)

func TestRitSingleCore(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Rit Suite Core")
}

var _ = Describe("RitCore", func() {
BeforeSuite(func() {
functional.RitInit()
})

scenariosCore := functional.LoadScenarios("core_feature.json")

DescribeTable("When running core command",
Expand Down
152 changes: 152 additions & 0 deletions functional/single/init/init_feature.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
[
{
"entry":"Show context",
"steps":[
{
"key":"",
"value":"show context",
"action":"main"
}
],
"result":"To start using rit, you need to initialize rit first."
},
{
"entry":"Set context",
"steps":[
{
"key":"",
"value":"set context",
"action":"main"
}
],
"result":"To start using rit, you need to initialize rit first."
},
{
"entry":"Delete context",
"steps":[
{
"key":"",
"value":"delete context",
"action":"main"
}

],
"result":"To start using rit, you need to initialize rit first."
},
{
"entry":"Add new repo",
"steps":[
{
"key":"",
"value":"add repo",
"action":"main"
}
],
"result":"To start using rit, you need to initialize rit first."
},
{
"entry":"Clean repo",
"steps":[
{
"key":"",
"value":"clean repo",
"action":"main"
}
],
"result":"To start using rit, you need to initialize rit first."
},
{
"entry":"List repo",
"steps":[
{
"key":"",
"value":"list repo",
"action":"main"
}
],
"result":"To start using rit, you need to initialize rit first."
},
{
"entry":"Delete repo",
"steps":[
{
"key":"",
"value":"delete repo",
"action":"main"
}
],
"result":"To start using rit, you need to initialize rit first."
},
{
"entry":"Set credentials",
"steps":[
{
"key":"",
"value":"set credential",
"action":"main"
}
],
"result":"To start using rit, you need to initialize rit first."
},
{
"entry":"Update repo",
"steps":[
{
"key":"",
"value":"update repo",
"action":"main"
}
],
"result":"To start using rit, you need to initialize rit first."
},
{
"entry":"Do INIT",
"steps":[
{
"key":"",
"value":"init",
"action":"main"
},
{
"key":"Define a passphrase for your machine:",
"value":"12345",
"action":"sendkey"
}
],
"result":""
},
{
"entry":"Set Login STDIN",
"steps":[
{
"key":"",
"value":"{\"passphrase\":\"12345\"}",
"action":"echo"
},
{
"key":"",
"value":"init --stdin",
"action":"main"
}

],
"result":""
},
{
"entry":"Set Login STDIN without passphrase",
"steps":[
{
"key":"",
"value":"{\"name\":\"12345\"}",
"action":"echo"
},
{
"key":"",
"value":"init --stdin",
"action":"main"
}

],
"result":"Error: passphrase is required"
}
]
Loading