version_test.go 2.3 KB
Newer Older
LinuxSuRen's avatar
LinuxSuRen 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
package cmd

import (
	"bytes"
	"github.com/jenkins-zh/jenkins-cli/app"
	"github.com/jenkins-zh/jenkins-cli/client"
	"io/ioutil"
	"os"

	"github.com/golang/mock/gomock"
	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
)

var _ = Describe("version command", func() {
	var (
17 18 19 20
		ctrl     *gomock.Controller
		buf      *bytes.Buffer
		tempFile *os.File
		err      error
LinuxSuRen's avatar
LinuxSuRen 已提交
21 22 23 24 25
	)

	BeforeEach(func() {
		ctrl = gomock.NewController(GinkgoT())
		rootCmd.SetArgs([]string{})
26 27 28 29

		tempFile, err = ioutil.TempFile("", "test.yaml")
		Expect(err).NotTo(HaveOccurred())

LinuxSuRen's avatar
LinuxSuRen 已提交
30
		rootOptions.Jenkins = ""
31
		rootOptions.ConfigFile = tempFile.Name()
LinuxSuRen's avatar
LinuxSuRen 已提交
32 33 34 35
		buf = new(bytes.Buffer)
		rootCmd.SetOutput(buf)

		var data []byte
LinuxSuRen's avatar
LinuxSuRen 已提交
36
		data, err = GenerateSampleConfig()
LinuxSuRen's avatar
LinuxSuRen 已提交
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
		Expect(err).To(BeNil())
		err = ioutil.WriteFile(rootOptions.ConfigFile, data, 0664)
		Expect(err).To(BeNil())
	})

	AfterEach(func() {
		rootCmd.SetArgs([]string{})
		os.Remove(rootOptions.ConfigFile)
		rootOptions.ConfigFile = ""
		ctrl.Finish()
	})

	Context("normal case", func() {
		It("fake jenkins", func() {
			rootCmd.SetArgs([]string{"version", "--jenkins", "fakeJenkins"})
			_, err = rootCmd.ExecuteC()
			Expect(err).To(HaveOccurred())
			Expect(buf.String()).To(ContainSubstring("cannot found the configuration: fakeJenkins"))
		})

57 58 59 60 61 62 63 64 65
		//		It("should success", func() {
		//			rootCmd.SetArgs([]string{"version", "--jenkins", "yourServer"})
		//			_, err = rootCmd.ExecuteC()
		//			Expect(err).To(BeNil())
		//			Expect(buf.String()).To(ContainSubstring("Current Jenkins is:"))
		//			Expect(buf.String()).To(ContainSubstring(`Version:
		//Commit:
		//`))
		//		})
LinuxSuRen's avatar
LinuxSuRen 已提交
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93

		It("Output changelog", func() {
			ghClient, teardown := client.PrepareForGetJCLIAsset("v0.0.1")
			defer teardown()

			app.SetVersion("dev-v0.0.1")

			versionOption.GitHubClient = ghClient
			rootCmd.SetArgs([]string{"version", "--changelog"})
			_, err = rootCmd.ExecuteC()
			Expect(err).To(BeNil())
			Expect(buf.String()).To(ContainSubstring("body"))
		})

		It("Show the latest", func() {
			ghClient, teardown := client.PrepareForGetLatestJCLIAsset()
			defer teardown()

			versionOption.GitHubClient = ghClient

			rootCmd.SetArgs([]string{"version", "--changelog=false", "--show-latest"})
			_, err = rootCmd.ExecuteC()
			Expect(err).To(BeNil())
			Expect(buf.String()).To(ContainSubstring(`tagName
body`))
		})
	})
})