How to use MkEmpty method of integration_test Package

Best Ginkgo code snippet using integration_test.MkEmpty

subcommand_test.go

Source:subcommand_test.go Github

copy

Full Screen

...11 Describe("ginkgo bootstrap", func() {12 var pkg string13 BeforeEach(func() {14 pkg = "foo"15 fm.MkEmpty(pkg)16 })17 It("should generate a bootstrap file, as long as one does not exist", func() {18 session := startGinkgo(fm.PathTo(pkg), "bootstrap")19 Eventually(session).Should(gexec.Exit(0))20 output := session.Out.Contents()21 Ω(output).Should(ContainSubstring("foo_suite_test.go"))22 content := fm.ContentOf(pkg, "foo_suite_test.go")23 Ω(content).Should(ContainSubstring("package foo_test"))24 Ω(content).Should(ContainSubstring("func TestFoo(t *testing.T) {"))25 Ω(content).Should(ContainSubstring("RegisterFailHandler"))26 Ω(content).Should(ContainSubstring("RunSpecs"))27 Ω(content).Should(ContainSubstring("\t" + `. "github.com/onsi/ginkgo/v2"`))28 Ω(content).Should(ContainSubstring("\t" + `. "github.com/onsi/gomega"`))29 session = startGinkgo(fm.PathTo(pkg))30 Eventually(session).Should(gexec.Exit(0))31 session = startGinkgo(fm.PathTo(pkg), "bootstrap")32 Eventually(session).Should(gexec.Exit(1))33 output = session.Err.Contents()34 Ω(output).Should(ContainSubstring("foo_suite_test.go"))35 Ω(output).Should(ContainSubstring("already exists"))36 })37 It("should generate a bootstrap file with a working package name if the folder starts with a numeral", func() {38 fm.MkEmpty("7")39 session := startGinkgo(fm.PathTo("7"), "bootstrap")40 Eventually(session).Should(gexec.Exit(0))41 content := fm.ContentOf("7", "7_suite_test.go")42 pkg := strings.Split(content, "\n")[0]43 Ω(pkg).Should(Equal("package seven_test"))44 session = startGinkgo(fm.PathTo("7"))45 Eventually(session).Should(gexec.Exit(0))46 })47 It("should import nodot declarations when told to", func() {48 session := startGinkgo(fm.PathTo(pkg), "bootstrap", "--nodot")49 Eventually(session).Should(gexec.Exit(0))50 output := session.Out.Contents()51 Ω(output).Should(ContainSubstring("foo_suite_test.go"))52 content := fm.ContentOf(pkg, "foo_suite_test.go")53 Ω(content).Should(ContainSubstring("package foo_test"))54 Ω(content).Should(ContainSubstring("func TestFoo(t *testing.T) {"))55 Ω(content).Should(ContainSubstring("gomega.RegisterFailHandler"))56 Ω(content).Should(ContainSubstring("ginkgo.RunSpecs"))57 Ω(content).Should(ContainSubstring("\t" + `"github.com/onsi/ginkgo/v2"`))58 Ω(content).Should(ContainSubstring("\t" + `"github.com/onsi/gomega"`))59 session = startGinkgo(fm.PathTo(pkg))60 Eventually(session).Should(gexec.Exit(0))61 })62 It("should generate a bootstrap file using a template when told to", func() {63 fm.WriteFile(pkg, ".bootstrap", `package {{.Package}}64 import (65 {{.GinkgoImport}}66 {{.GomegaImport}}67 "testing"68 "binary"69 )70 func Test{{.FormattedName}}(t *testing.T) {71 // This is a {{.Package}} test72 }`)73 session := startGinkgo(fm.PathTo(pkg), "bootstrap", "--template", ".bootstrap")74 Eventually(session).Should(gexec.Exit(0))75 output := session.Out.Contents()76 Ω(output).Should(ContainSubstring("foo_suite_test.go"))77 content := fm.ContentOf(pkg, "foo_suite_test.go")78 Ω(content).Should(ContainSubstring("package foo_test"))79 Ω(content).Should(ContainSubstring(`. "github.com/onsi/ginkgo/v2"`))80 Ω(content).Should(ContainSubstring(`. "github.com/onsi/gomega"`))81 Ω(content).Should(ContainSubstring(`"binary"`))82 Ω(content).Should(ContainSubstring("// This is a foo_test test"))83 })84 It("should generate a bootstrap file using a template that contains functions when told to", func() {85 fm.WriteFile(pkg, ".bootstrap", `package {{.Package}}86 import (87 {{.GinkgoImport}}88 {{.GomegaImport}}89 "testing"90 "binary"91 )92 func Test{{.FormattedName}}(t *testing.T) {93 // This is a {{.Package | repeat 3}} test94 }`)95 session := startGinkgo(fm.PathTo(pkg), "bootstrap", "--template", ".bootstrap")96 Eventually(session).Should(gexec.Exit(0))97 output := session.Out.Contents()98 Ω(output).Should(ContainSubstring("foo_suite_test.go"))99 content := fm.ContentOf(pkg, "foo_suite_test.go")100 Ω(content).Should(ContainSubstring("package foo_test"))101 Ω(content).Should(ContainSubstring(`. "github.com/onsi/ginkgo/v2"`))102 Ω(content).Should(ContainSubstring(`. "github.com/onsi/gomega"`))103 Ω(content).Should(ContainSubstring(`"binary"`))104 Ω(content).Should(ContainSubstring("// This is a foo_testfoo_testfoo_test test"))105 })106 })107 Describe("ginkgo generate", func() {108 var pkg string109 BeforeEach(func() {110 pkg = "foo_bar"111 fm.MkEmpty(pkg)112 Eventually(startGinkgo(fm.PathTo(pkg), "bootstrap")).Should(gexec.Exit(0))113 })114 Context("with no arguments", func() {115 It("should generate a test file named after the package", func() {116 session := startGinkgo(fm.PathTo(pkg), "generate")117 Eventually(session).Should(gexec.Exit(0))118 output := session.Out.Contents()119 Ω(output).Should(ContainSubstring("foo_bar_test.go"))120 By("having the correct content")121 content := fm.ContentOf(pkg, "foo_bar_test.go")122 Ω(content).Should(ContainSubstring("package foo_bar_test"))123 Ω(content).Should(ContainSubstring(`var _ = Describe("FooBar", func() {`))124 Ω(content).Should(ContainSubstring("\t" + `. "github.com/onsi/ginkgo/v2"`))125 Ω(content).Should(ContainSubstring("\t" + `. "github.com/onsi/gomega"`))126 By("compiling correctly (we append to the file to make sure gomega is used)")127 fm.WriteFile(pkg, "foo_bar.go", "package foo_bar\nvar TRUE=true\n")128 fm.AppendToFile(pkg, "foo_bar_test.go", strings.Join([]string{``,129 `var _ = It("works", func() {`,130 ` Expect(foo_bar.TRUE).To(BeTrue())`,131 `})`,132 }, "\n"))133 Eventually(startGinkgo(fm.PathTo(pkg))).Should(gexec.Exit(0))134 By("refusing to overwrite the file if generate is called again")135 session = startGinkgo(fm.PathTo(pkg), "generate")136 Eventually(session).Should(gexec.Exit(1))137 output = session.Err.Contents()138 Ω(output).Should(ContainSubstring("foo_bar_test.go"))139 Ω(output).Should(ContainSubstring("already exists"))140 })141 })142 Context("with template argument", func() {143 It("should generate a test file using a template", func() {144 fm.WriteFile(pkg, ".generate", `package {{.Package}}145 import (146 {{.GinkgoImport}}147 {{.GomegaImport}}148 {{if .ImportPackage}}"{{.PackageImportPath}}"{{end}}149 )150 var _ = Describe("{{.Subject}}", func() {151 // This is a {{.Package}} test152 })`)153 session := startGinkgo(fm.PathTo(pkg), "generate", "--template", ".generate")154 Eventually(session).Should(gexec.Exit(0))155 output := session.Out.Contents()156 Ω(output).Should(ContainSubstring("foo_bar_test.go"))157 content := fm.ContentOf(pkg, "foo_bar_test.go")158 Ω(content).Should(ContainSubstring("package foo_bar_test"))159 Ω(content).Should(ContainSubstring(`. "github.com/onsi/ginkgo/v2"`))160 Ω(content).Should(ContainSubstring(`. "github.com/onsi/gomega"`))161 Ω(content).Should(ContainSubstring(`/foo_bar"`))162 Ω(content).Should(ContainSubstring("// This is a foo_bar_test test"))163 })164 It("should generate a test file using a template that contains functions", func() {165 fm.WriteFile(pkg, ".generate", `package {{.Package}}166 import (167 {{.GinkgoImport}}168 {{.GomegaImport}}169 {{if .ImportPackage}}"{{.PackageImportPath}}"{{end}}170 )171 var _ = Describe("{{.Subject}}", func() {172 // This is a {{.Package | repeat 3 }} test173 })`)174 session := startGinkgo(fm.PathTo(pkg), "generate", "--template", ".generate")175 Eventually(session).Should(gexec.Exit(0))176 output := session.Out.Contents()177 Ω(output).Should(ContainSubstring("foo_bar_test.go"))178 content := fm.ContentOf(pkg, "foo_bar_test.go")179 Ω(content).Should(ContainSubstring("package foo_bar_test"))180 Ω(content).Should(ContainSubstring(`. "github.com/onsi/ginkgo/v2"`))181 Ω(content).Should(ContainSubstring(`. "github.com/onsi/gomega"`))182 Ω(content).Should(ContainSubstring(`/foo_bar"`))183 Ω(content).Should(ContainSubstring("// This is a foo_bar_testfoo_bar_testfoo_bar_test test"))184 })185 })186 Context("with an argument of the form: foo", func() {187 It("should generate a test file named after the argument", func() {188 session := startGinkgo(fm.PathTo(pkg), "generate", "baz_buzz")189 Eventually(session).Should(gexec.Exit(0))190 output := session.Out.Contents()191 Ω(output).Should(ContainSubstring("baz_buzz_test.go"))192 content := fm.ContentOf(pkg, "baz_buzz_test.go")193 Ω(content).Should(ContainSubstring("package foo_bar_test"))194 Ω(content).Should(ContainSubstring(`var _ = Describe("BazBuzz", func() {`))195 })196 })197 Context("with an argument of the form: foo.go", func() {198 It("should generate a test file named after the argument", func() {199 session := startGinkgo(fm.PathTo(pkg), "generate", "baz_buzz.go")200 Eventually(session).Should(gexec.Exit(0))201 output := session.Out.Contents()202 Ω(output).Should(ContainSubstring("baz_buzz_test.go"))203 content := fm.ContentOf(pkg, "baz_buzz_test.go")204 Ω(content).Should(ContainSubstring("package foo_bar_test"))205 Ω(content).Should(ContainSubstring(`var _ = Describe("BazBuzz", func() {`))206 })207 })208 Context("with an argument of the form: foo_test", func() {209 It("should generate a test file named after the argument", func() {210 session := startGinkgo(fm.PathTo(pkg), "generate", "baz_buzz_test")211 Eventually(session).Should(gexec.Exit(0))212 output := session.Out.Contents()213 Ω(output).Should(ContainSubstring("baz_buzz_test.go"))214 content := fm.ContentOf(pkg, "baz_buzz_test.go")215 Ω(content).Should(ContainSubstring("package foo_bar_test"))216 Ω(content).Should(ContainSubstring(`var _ = Describe("BazBuzz", func() {`))217 })218 })219 Context("with an argument of the form: foo-test", func() {220 It("should generate a test file named after the argument", func() {221 session := startGinkgo(fm.PathTo(pkg), "generate", "baz-buzz-test")222 Eventually(session).Should(gexec.Exit(0))223 output := session.Out.Contents()224 Ω(output).Should(ContainSubstring("baz_buzz_test.go"))225 content := fm.ContentOf(pkg, "baz_buzz_test.go")226 Ω(content).Should(ContainSubstring("package foo_bar_test"))227 Ω(content).Should(ContainSubstring(`var _ = Describe("BazBuzz", func() {`))228 })229 })230 Context("with an argument of the form: foo_test.go", func() {231 It("should generate a test file named after the argument", func() {232 session := startGinkgo(fm.PathTo(pkg), "generate", "baz_buzz_test.go")233 Eventually(session).Should(gexec.Exit(0))234 output := session.Out.Contents()235 Ω(output).Should(ContainSubstring("baz_buzz_test.go"))236 content := fm.ContentOf(pkg, "baz_buzz_test.go")237 Ω(content).Should(ContainSubstring("package foo_bar_test"))238 Ω(content).Should(ContainSubstring(`var _ = Describe("BazBuzz", func() {`))239 })240 })241 Context("with multiple arguments", func() {242 It("should generate a test file named after the argument", func() {243 session := startGinkgo(fm.PathTo(pkg), "generate", "baz", "buzz")244 Eventually(session).Should(gexec.Exit(0))245 output := session.Out.Contents()246 Ω(output).Should(ContainSubstring("baz_test.go"))247 Ω(output).Should(ContainSubstring("buzz_test.go"))248 content := fm.ContentOf(pkg, "baz_test.go")249 Ω(content).Should(ContainSubstring("package foo_bar_test"))250 Ω(content).Should(ContainSubstring(`var _ = Describe("Baz", func() {`))251 content = fm.ContentOf(pkg, "buzz_test.go")252 Ω(content).Should(ContainSubstring("package foo_bar_test"))253 Ω(content).Should(ContainSubstring(`var _ = Describe("Buzz", func() {`))254 })255 })256 Context("with nodot", func() {257 It("should not import ginkgo or gomega", func() {258 session := startGinkgo(fm.PathTo(pkg), "generate", "--nodot")259 Eventually(session).Should(gexec.Exit(0))260 output := session.Out.Contents()261 Ω(output).Should(ContainSubstring("foo_bar_test.go"))262 content := fm.ContentOf(pkg, "foo_bar_test.go")263 Ω(content).Should(ContainSubstring("package foo_bar_test"))264 Ω(content).ShouldNot(ContainSubstring("\t" + `. "github.com/onsi/ginkgo/v2"`))265 Ω(content).ShouldNot(ContainSubstring("\t" + `. "github.com/onsi/gomega"`))266 Ω(content).Should(ContainSubstring("\t" + `"github.com/onsi/ginkgo/v2"`))267 Ω(content).Should(ContainSubstring("\t" + `"github.com/onsi/gomega"`))268 By("compiling correctly (we append to the file to make sure gomega is used)")269 fm.WriteFile(pkg, "foo_bar.go", "package foo_bar\nvar TRUE=true\n")270 fm.AppendToFile(pkg, "foo_bar_test.go", strings.Join([]string{``,271 `var _ = ginkgo.It("works", func() {`,272 ` gomega.Expect(foo_bar.TRUE).To(gomega.BeTrue())`,273 `})`,274 }, "\n"))275 Eventually(startGinkgo(fm.PathTo(pkg))).Should(gexec.Exit(0))276 })277 })278 })279 Describe("ginkgo bootstrap/generate", func() {280 var pkg string281 BeforeEach(func() {282 pkg = "some-crazy-thing"283 fm.MkEmpty(pkg)284 })285 Context("when the working directory is empty", func() {286 It("generates correctly named bootstrap and generate files with a package name derived from the directory", func() {287 session := startGinkgo(fm.PathTo(pkg), "bootstrap")288 Eventually(session).Should(gexec.Exit(0))289 content := fm.ContentOf(pkg, "some_crazy_thing_suite_test.go")290 Ω(content).Should(ContainSubstring("package some_crazy_thing_test"))291 Ω(content).Should(ContainSubstring("SomeCrazyThing Suite"))292 session = startGinkgo(fm.PathTo(pkg), "generate")293 Eventually(session).Should(gexec.Exit(0))294 content = fm.ContentOf(pkg, "some_crazy_thing_test.go")295 Ω(content).Should(ContainSubstring("package some_crazy_thing_test"))296 Ω(content).Should(ContainSubstring("SomeCrazyThing"))297 })298 })299 Context("when the working directory contains a file with a package name", func() {300 BeforeEach(func() {301 fm.WriteFile(pkg, "foo.go", "package main\n\nfunc main() {}")302 })303 It("generates correctly named bootstrap and generate files with the package name", func() {304 session := startGinkgo(fm.PathTo(pkg), "bootstrap")305 Eventually(session).Should(gexec.Exit(0))306 content := fm.ContentOf(pkg, "some_crazy_thing_suite_test.go")307 Ω(content).Should(ContainSubstring("package main_test"))308 Ω(content).Should(ContainSubstring("SomeCrazyThing Suite"))309 session = startGinkgo(fm.PathTo(pkg), "generate")310 Eventually(session).Should(gexec.Exit(0))311 content = fm.ContentOf(pkg, "some_crazy_thing_test.go")312 Ω(content).Should(ContainSubstring("package main_test"))313 Ω(content).Should(ContainSubstring("SomeCrazyThing"))314 })315 })316 })317 Describe("Go module and ginkgo bootstrap/generate", func() {318 var (319 pkg string320 savedGoPath string321 )322 BeforeEach(func() {323 pkg = "myamazingmodule"324 fm.MkEmpty(pkg)325 fm.WriteFile(pkg, "go.mod", "module fake.com/me/myamazingmodule\n")326 savedGoPath = os.Getenv("GOPATH")327 Expect(os.Setenv("GOPATH", "")).To(Succeed())328 Expect(os.Setenv("GO111MODULE", "on")).To(Succeed()) // needed pre-Go 1.13329 })330 AfterEach(func() {331 Expect(os.Setenv("GOPATH", savedGoPath)).To(Succeed())332 Expect(os.Setenv("GO111MODULE", "")).To(Succeed())333 })334 It("generates correctly named bootstrap and generate files with the module name", func() {335 session := startGinkgo(fm.PathTo(pkg), "bootstrap")336 Eventually(session).Should(gexec.Exit(0))337 content := fm.ContentOf(pkg, "myamazingmodule_suite_test.go")338 Expect(content).To(ContainSubstring("package myamazingmodule_test"), string(content))...

Full Screen

Full Screen

integration_suite_test.go

Source:integration_suite_test.go Github

copy

Full Screen

...72 dst = filepath.Join(dst, subPackage[0])73 }74 f.copyAndRewrite(src, dst)75}76func (f FixtureManager) MkEmpty(pkg string) {77 ExpectWithOffset(1, os.MkdirAll(f.PathTo(pkg), 0700)).Should(Succeed())78}79func (f FixtureManager) copyAndRewrite(src string, dst string) {80 Expect(os.MkdirAll(dst, 0777)).To(Succeed())81 files, err := os.ReadDir(src)82 Expect(err).NotTo(HaveOccurred())83 for _, file := range files {84 srcPath := filepath.Join(src, file.Name())85 dstPath := filepath.Join(dst, file.Name())86 if file.IsDir() {87 f.copyAndRewrite(srcPath, dstPath)88 continue89 }90 srcContent, err := os.ReadFile(srcPath)...

Full Screen

Full Screen

MkEmpty

Using AI Code Generation

copy

Full Screen

1func main() {2 t := new(integration_test)3 t.MkEmpty()4}5func main() {6 t := new(integration_test)7 t.MkEmpty()8}

Full Screen

Full Screen

MkEmpty

Using AI Code Generation

copy

Full Screen

1import (2func TestMkEmpty(t *testing.T) {3 fmt.Println("TestMkEmpty")4 itest.MkEmpty()5}6import (7func TestMkEmpty(t *testing.T) {8 fmt.Println("TestMkEmpty")9 itest.MkEmpty()10}11import (12func TestMkEmpty(t *testing.T) {13 fmt.Println("TestMkEmpty")14 itest.MkEmpty()15}16import (17func TestMkEmpty(t *testing.T) {18 fmt.Println("TestMkEmpty")19 itest.MkEmpty()20}21import (22func TestMkEmpty(t *testing.T) {23 fmt.Println("TestMkEmpty")24 itest.MkEmpty()25}26import (27func TestMkEmpty(t *testing.T) {28 fmt.Println("TestMkEmpty")29 itest.MkEmpty()30}31import (32func TestMkEmpty(t *testing.T) {33 fmt.Println("TestMkEmpty")34 itest.MkEmpty()35}36import (37func TestMkEmpty(t *testing

Full Screen

Full Screen

MkEmpty

Using AI Code Generation

copy

Full Screen

1func main() {2 i := integration_test.MkEmpty()3 fmt.Println(i)4}5func MkEmpty() string {6}7func TestMkEmpty(t *testing.T) {8 i := MkEmpty()9 if i != "empty" {10 t.Error("Expected empty, got ", i)11 }12}13--- PASS: TestMkEmpty (0.00s)14import (15import (16func TestMkEmpty(t *testing.T) {17 i := integration_test.MkEmpty()18 if i != "empty" {19 t.Error("Expected empty, got ", i)20 }21}22func MkEmpty() string {23}24import "testing"25func TestMkEmpty(t *testing.T) {26 i := MkEmpty()27 if i != "empty" {28 t.Error("Expected empty

Full Screen

Full Screen

MkEmpty

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 test := integration_test.New()4 fmt.Println(test.MkEmpty())5}6import (7type IntegrationTest struct {8}9func New() *IntegrationTest {10 return &IntegrationTest{}11}12func (i *IntegrationTest) MkEmpty() string {13 return i.Test.MkEmpty()14}15type Test struct{}16func (t *Test) MkEmpty() string {17}18import (19func TestMkEmpty(t *testing.T) {20 test := Test{}21 if test.MkEmpty() != "empty" {22 t.Error("Expected 'empty' but got", test.MkEmpty())23 }24}25import (26func TestMkEmpty(t *testing.T) {27 test := New()28 if test.MkEmpty() != "empty" {29 t.Error("Expected 'empty' but got", test.MkEmpty())30 }31}32 /usr/local/go/src/github.com/username/repo/integration_test (from $GOROOT)33 /home/username/go/src/github.com/username/repo/integration_test (from $GOPATH)34I am new to go and I am trying to understand how to use go modules. I have a project with a go.mod file in the root directory. I am trying to add a sub directory to the project and I want to use go modules for that sub directory as well. I have added a go.mod file to the sub directory and I am trying to import a package from the root directory in the sub directory. I am using go modules and I have tried using go mod vendor to vendor the packages. I am getting the following error:

Full Screen

Full Screen

MkEmpty

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 integration.MkEmpty()4 fmt.Println("Hello World")5}6 /usr/local/go/src/test/integration (from $GOROOT)7 /home/user/go/src/test/integration (from $GOPATH)8Your name to display (optional):9Your name to display (optional):10Your name to display (optional):

Full Screen

Full Screen

MkEmpty

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 fmt.Println("Hello World!")4 integration_test.MkEmpty()5}6import (7func MkEmpty() {8 f, err := os.Create("empty.txt")9 if err != nil {10 fmt.Println(err)11 }12 defer f.Close()13}14--- PASS: TestMkEmpty (0.00s)15--- PASS: TestMkEmpty (0.00s)16--- PASS: TestMkEmpty (0.00s)17--- PASS: TestMkEmpty (0.00s)18--- FAIL: TestMkEmpty (0.00s)19--- FAIL: TestMkEmpty (0.00s)

Full Screen

Full Screen

MkEmpty

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 obj := integration.Integration{}4 obj.MkEmpty()5 fmt.Println(obj)6}7{[]}

Full Screen

Full Screen

MkEmpty

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 fmt.Println("Hello, World!")4 integration_test.MkEmpty()5}6import (7func MkEmpty() {8 err := ioutil.WriteFile("empty.txt", []byte(""), 0644)9 if err != nil {10 log.Fatal(err)11 }12}13--- PASS: TestEmptyFile (0.00s)

Full Screen

Full Screen

MkEmpty

Using AI Code Generation

copy

Full Screen

1import "fmt"2import "github.com/AnilMishra1/GoLang/GoLangPackage/MyPackage"3func main() {4 i.MkEmpty()5 fmt.Println(i)6}7{0 0}

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful