mirror of
https://github.com/redhat-developer/odo.git
synced 2025-10-19 03:06:19 +03:00
* Set character mode for input stream * Move watchers in receiver + sync when p pressed * Integration tests manual sync * Add a console to DevSession * Vendor * Skip pressKey tests on Windows * Add interactive test for p press * Add info about pressing p key * Doc * Review * Rephrase Manul sync * Fix HotReloadCapable * Document timers * Document enableCharInput * Document geyKey and getKeyWatcher functions * Avoid to Kill in AfterEach after running Kill before
168 lines
5.4 KiB
Go
168 lines
5.4 KiB
Go
package integration
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
|
|
"github.com/redhat-developer/odo/tests/helper"
|
|
)
|
|
|
|
var _ = Describe("odo dev interactive command tests", func() {
|
|
|
|
var commonVar helper.CommonVar
|
|
|
|
// This is run before every Spec (It)
|
|
var _ = BeforeEach(func() {
|
|
commonVar = helper.CommonBeforeEach(helper.SetupClusterTrue)
|
|
helper.Chdir(commonVar.Context)
|
|
})
|
|
|
|
// Clean up after the test
|
|
// This is run after every Spec (It)
|
|
var _ = AfterEach(func() {
|
|
helper.CommonAfterEach(commonVar)
|
|
})
|
|
|
|
When("directory is not empty", func() {
|
|
|
|
BeforeEach(func() {
|
|
helper.CopyExample(filepath.Join("source", "python"), commonVar.Context)
|
|
Expect(helper.ListFilesInDir(commonVar.Context)).To(
|
|
SatisfyAll(
|
|
HaveLen(2),
|
|
ContainElements("requirements.txt", "wsgi.py")))
|
|
})
|
|
It("should run alizer to download devfile successfully even with -v flag", func() {
|
|
|
|
language := "python"
|
|
_, _ = helper.RunInteractive([]string{"odo", "dev", "--random-ports", "-v", "4"},
|
|
nil,
|
|
func(ctx helper.InteractiveContext) {
|
|
helper.ExpectString(ctx, "Based on the files in the current directory odo detected")
|
|
|
|
helper.ExpectString(ctx, fmt.Sprintf("Language: %s", language))
|
|
|
|
helper.ExpectString(ctx, fmt.Sprintf("Project type: %s", language))
|
|
|
|
helper.ExpectString(ctx,
|
|
fmt.Sprintf("The devfile %q from the registry \"DefaultDevfileRegistry\" will be downloaded.", language))
|
|
|
|
helper.ExpectString(ctx, "Is this correct")
|
|
helper.SendLine(ctx, "")
|
|
|
|
helper.ExpectString(ctx, "Select container for which you want to change configuration")
|
|
helper.SendLine(ctx, "")
|
|
|
|
helper.ExpectString(ctx, "Enter component name")
|
|
helper.SendLine(ctx, "my-app")
|
|
|
|
helper.ExpectString(ctx, "[Ctrl+c] - Exit")
|
|
ctx.StopCommand()
|
|
})
|
|
|
|
Expect(helper.ListFilesInDir(commonVar.Context)).To(ContainElements("devfile.yaml"))
|
|
})
|
|
|
|
It("should run alizer to download devfile", func() {
|
|
|
|
language := "python"
|
|
_, _ = helper.RunInteractive([]string{"odo", "dev", "--random-ports"},
|
|
nil,
|
|
func(ctx helper.InteractiveContext) {
|
|
helper.ExpectString(ctx, "Based on the files in the current directory odo detected")
|
|
|
|
helper.ExpectString(ctx, fmt.Sprintf("Language: %s", language))
|
|
|
|
helper.ExpectString(ctx, fmt.Sprintf("Project type: %s", language))
|
|
|
|
helper.ExpectString(ctx,
|
|
fmt.Sprintf("The devfile %q from the registry \"DefaultDevfileRegistry\" will be downloaded.", language))
|
|
|
|
helper.ExpectString(ctx, "Is this correct")
|
|
helper.SendLine(ctx, "")
|
|
|
|
helper.ExpectString(ctx, "Select container for which you want to change configuration")
|
|
helper.SendLine(ctx, "")
|
|
|
|
helper.ExpectString(ctx, "Enter component name")
|
|
helper.SendLine(ctx, "my-app")
|
|
|
|
helper.ExpectString(ctx, "[Ctrl+c] - Exit")
|
|
ctx.StopCommand()
|
|
})
|
|
|
|
Expect(helper.ListFilesInDir(commonVar.Context)).To(ContainElements("devfile.yaml"))
|
|
})
|
|
|
|
It("should display welcoming messages first", func() {
|
|
|
|
if os.Getenv("SKIP_WELCOMING_MESSAGES") == "true" {
|
|
Skip("This is a Unix specific scenario, skipping")
|
|
}
|
|
|
|
language := "python"
|
|
output, _ := helper.RunInteractive([]string{"odo", "dev", "--random-ports"},
|
|
// Setting verbosity level to 0, because we would be asserting the welcoming message is the first
|
|
// message displayed to the end user. So we do not want any potential debug lines to be printed first.
|
|
// Using envvars here (and not via the -v flag), because of https://github.com/redhat-developer/odo/issues/5513
|
|
[]string{"ODO_LOG_LEVEL=0"},
|
|
func(ctx helper.InteractiveContext) {
|
|
helper.ExpectString(ctx, "Based on the files in the current directory odo detected")
|
|
|
|
helper.ExpectString(ctx, fmt.Sprintf("Language: %s", language))
|
|
|
|
helper.ExpectString(ctx, fmt.Sprintf("Project type: %s", language))
|
|
|
|
helper.ExpectString(ctx,
|
|
fmt.Sprintf("The devfile %q from the registry \"DefaultDevfileRegistry\" will be downloaded.", language))
|
|
|
|
helper.ExpectString(ctx, "Is this correct")
|
|
helper.SendLine(ctx, "")
|
|
|
|
helper.ExpectString(ctx, "Select container for which you want to change configuration")
|
|
helper.SendLine(ctx, "")
|
|
|
|
helper.ExpectString(ctx, "Enter component name")
|
|
helper.SendLine(ctx, "my-app")
|
|
|
|
helper.ExpectString(ctx, "[Ctrl+c] - Exit")
|
|
ctx.StopCommand()
|
|
})
|
|
|
|
lines, err := helper.ExtractLines(output)
|
|
Expect(err).To(BeNil())
|
|
Expect(lines).To(Not(BeEmpty()))
|
|
Expect(lines[0]).To(Equal("The current directory already contains source code. " +
|
|
"odo will try to autodetect the language and project type in order to select the best suited Devfile for your project."))
|
|
})
|
|
})
|
|
|
|
When("a component is bootstrapped", func() {
|
|
|
|
var cmpName string
|
|
|
|
BeforeEach(func() {
|
|
cmpName = helper.RandString(6)
|
|
helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context)
|
|
helper.Cmd("odo", "init", "--name", cmpName, "--devfile-path", helper.GetExamplePath("source", "devfiles", "nodejs", "devfile.yaml")).ShouldPass()
|
|
})
|
|
|
|
It("should sync files when p is pressed", func() {
|
|
_, _ = helper.RunInteractive([]string{"odo", "dev", "--random-ports", "--no-watch"},
|
|
nil,
|
|
func(ctx helper.InteractiveContext) {
|
|
helper.ExpectString(ctx, "[p] - Manually apply")
|
|
|
|
helper.PressKey(ctx, 'p')
|
|
|
|
helper.ExpectString(ctx, "Pushing files")
|
|
ctx.StopCommand()
|
|
})
|
|
})
|
|
})
|
|
})
|