github.com/replit/upm@v0.0.0-20240423230255-9ce4fc3ea24c/test-suite/Remove_test.go (about) 1 package testSuite 2 3 import ( 4 "testing" 5 6 testUtils "github.com/replit/upm/test-suite/utils" 7 ) 8 9 func TestRemove(t *testing.T) { 10 for _, bt := range languageBackends { 11 bt.Start(t) 12 13 var pkgsToRemove map[string][]string 14 switch bt.Backend.Name { 15 case "nodejs-npm": 16 fallthrough 17 case "nodejs-pnpm": 18 fallthrough 19 case "nodejs-yarn": 20 fallthrough 21 case "bun": 22 pkgsToRemove = map[string][]string{ 23 "one-dep": {"express"}, 24 "many-deps": {"express", "eslint", "svelte"}, 25 } 26 27 case "python3-poetry": 28 pkgsToRemove = map[string][]string{ 29 "one-dep": {"django"}, 30 "many-deps": {"django", "boatman", "ws4py"}, 31 } 32 33 case "python3-pip": 34 pkgsToRemove = map[string][]string{ 35 "one-dep": {"django"}, 36 "many-deps": {"django", "boatman", "ws4py"}, 37 } 38 39 default: 40 t.Run(bt.Backend.Name, func(t *testing.T) { 41 t.Skip("no test") 42 }) 43 continue 44 } 45 46 bt.Subtest(bt.Backend.Name, func(bt testUtils.BackendT) { 47 doRemove(bt, pkgsToRemove) 48 }) 49 } 50 } 51 52 func doRemove(bt testUtils.BackendT, templatesToPkgsToRemove map[string][]string) { 53 for tmpl, pkgsToRemove := range templatesToPkgsToRemove { 54 template := bt.Backend.Name + "/" + tmpl + "/" 55 56 if tmpl != "no-deps" { 57 bt.Subtest(tmpl, func(bt testUtils.BackendT) { 58 if bt.Backend.QuirksIsReproducible() { 59 bt.Subtest("locked", func(bt testUtils.BackendT) { 60 bt.Subtest("each", func(bt testUtils.BackendT) { 61 bt.AddTestFile(template+bt.Backend.Specfile, bt.Backend.Specfile) 62 bt.AddTestFile(template+bt.Backend.Lockfile, bt.Backend.Lockfile) 63 for _, pkg := range pkgsToRemove { 64 bt.UpmRemove(pkg) 65 } 66 }) 67 68 bt.Subtest("all", func(bt testUtils.BackendT) { 69 bt.AddTestFile(template+bt.Backend.Specfile, bt.Backend.Specfile) 70 bt.AddTestFile(template+bt.Backend.Lockfile, bt.Backend.Lockfile) 71 bt.UpmRemove(pkgsToRemove...) 72 }) 73 }) 74 } 75 76 if !bt.Backend.QuirkRemoveNeedsLockfile() { 77 bt.Subtest("unlocked", func(bt testUtils.BackendT) { 78 bt.Subtest("each", func(bt testUtils.BackendT) { 79 bt.AddTestFile(template+bt.Backend.Specfile, bt.Backend.Specfile) 80 for _, pkg := range pkgsToRemove { 81 bt.UpmRemove(pkg) 82 } 83 }) 84 85 bt.Subtest("all", func(bt testUtils.BackendT) { 86 bt.AddTestFile(template+bt.Backend.Specfile, bt.Backend.Specfile) 87 bt.UpmRemove(pkgsToRemove...) 88 }) 89 }) 90 } 91 }) 92 } 93 } 94 }