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  }