github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/cf/appfiles/cf_ignore_test.go (about) 1 package appfiles_test 2 3 import ( 4 . "code.cloudfoundry.org/cli/cf/appfiles" 5 . "github.com/onsi/ginkgo" 6 . "github.com/onsi/gomega" 7 ) 8 9 var _ = Describe("CF Ignore", func() { 10 It("excludes files based on exact path matches", func() { 11 ignore := NewCfIgnore(`the-dir/the-path`) 12 Expect(ignore.FileShouldBeIgnored("the-dir/the-path")).To(BeTrue()) 13 }) 14 15 It("excludes the contents of directories based on exact path matches", func() { 16 ignore := NewCfIgnore(`dir1/dir2`) 17 Expect(ignore.FileShouldBeIgnored("dir1/dir2/the-file")).To(BeTrue()) 18 Expect(ignore.FileShouldBeIgnored("dir1/dir2/dir3/the-file")).To(BeTrue()) 19 }) 20 21 It("excludes the directories based on relative path matches", func() { 22 ignore := NewCfIgnore(`dir1`) 23 Expect(ignore.FileShouldBeIgnored("dir1")).To(BeTrue()) 24 Expect(ignore.FileShouldBeIgnored("dir2/dir1")).To(BeTrue()) 25 Expect(ignore.FileShouldBeIgnored("dir3/dir2/dir1")).To(BeTrue()) 26 Expect(ignore.FileShouldBeIgnored("dir3/dir1/dir2")).To(BeTrue()) 27 }) 28 29 It("excludes files based on star patterns", func() { 30 ignore := NewCfIgnore(`dir1/*.so`) 31 Expect(ignore.FileShouldBeIgnored("dir1/file1.so")).To(BeTrue()) 32 Expect(ignore.FileShouldBeIgnored("dir1/file2.cc")).To(BeFalse()) 33 }) 34 35 It("excludes files based on double-star patterns", func() { 36 ignore := NewCfIgnore(`dir1/**/*.so`) 37 Expect(ignore.FileShouldBeIgnored("dir1/dir2/dir3/file1.so")).To(BeTrue()) 38 Expect(ignore.FileShouldBeIgnored("different-dir/dir2/file.so")).To(BeFalse()) 39 }) 40 41 It("allows files to be explicitly included", func() { 42 ignore := NewCfIgnore(` 43 node_modules/* 44 !node_modules/common 45 `) 46 47 Expect(ignore.FileShouldBeIgnored("node_modules/something-else")).To(BeTrue()) 48 Expect(ignore.FileShouldBeIgnored("node_modules/common")).To(BeFalse()) 49 }) 50 51 It("applies the patterns in order from top to bottom", func() { 52 ignore := NewCfIgnore(` 53 stuff/* 54 !stuff/*.c 55 stuff/exclude.c`) 56 57 Expect(ignore.FileShouldBeIgnored("stuff/something.txt")).To(BeTrue()) 58 Expect(ignore.FileShouldBeIgnored("stuff/exclude.c")).To(BeTrue()) 59 Expect(ignore.FileShouldBeIgnored("stuff/include.c")).To(BeFalse()) 60 }) 61 62 It("ignores certain commonly ingored files by default", func() { 63 ignore := NewCfIgnore(``) 64 Expect(ignore.FileShouldBeIgnored(".git/objects")).To(BeTrue()) 65 66 ignore = NewCfIgnore(`!.git`) 67 Expect(ignore.FileShouldBeIgnored(".git/objects")).To(BeFalse()) 68 }) 69 70 Describe("files named manifest.yml", func() { 71 var ( 72 ignore CfIgnore 73 ) 74 75 BeforeEach(func() { 76 ignore = NewCfIgnore("") 77 }) 78 79 It("ignores manifest.yml at the top level", func() { 80 Expect(ignore.FileShouldBeIgnored("manifest.yml")).To(BeTrue()) 81 }) 82 83 It("does not ignore nested manifest.yml files", func() { 84 Expect(ignore.FileShouldBeIgnored("public/assets/manifest.yml")).To(BeFalse()) 85 }) 86 }) 87 })