github.com/joey-fossa/fossa-cli@v0.7.34-0.20190708193710-569f1e8679f0/analyzers/ruby/ruby_test.go (about) 1 package ruby_test 2 3 import ( 4 "path/filepath" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 9 "github.com/fossas/fossa-cli/analyzers/ruby" 10 "github.com/fossas/fossa-cli/buildtools/bundler" 11 "github.com/fossas/fossa-cli/module" 12 "github.com/fossas/fossa-cli/pkg" 13 ) 14 15 func TestCustomGemfileLockPath(t *testing.T) { 16 buildTarget := "testdata" 17 m := module.Module{ 18 Name: "test", 19 Type: pkg.Ruby, 20 BuildTarget: buildTarget, 21 Dir: buildTarget, 22 } 23 24 gemModule := m 25 gemModule.Options = map[string]interface{}{ 26 "strategy": "lockfile", 27 } 28 analyzer, err := ruby.New(gemModule) 29 assert.NoError(t, err) 30 31 customModule := m 32 customModule.Options = map[string]interface{}{ 33 "strategy": "lockfile", 34 "gemfile-lock-path": filepath.Join("testdata", "CustomGemfile.lock"), 35 } 36 customLockfileAnalyzer, err := ruby.New(customModule) 37 assert.NoError(t, err) 38 39 analyzed, err := analyzer.Analyze() 40 assert.NoError(t, err) 41 42 analyzedCustom, err := customLockfileAnalyzer.Analyze() 43 assert.NoError(t, err) 44 45 assert.NotEqual(t, analyzed, analyzedCustom) 46 } 47 48 func TestFallbackOnMissingBundler(t *testing.T) { 49 buildTarget := "testdata" 50 useLockfileOptions := map[string]interface{}{ 51 "strategy": "lockfile", 52 } 53 54 useBundlerWithLockfilePathOptions := map[string]interface{}{} 55 56 gemModuleUsingLockfile := module.Module{ 57 Name: "test", 58 Type: pkg.Ruby, 59 BuildTarget: buildTarget, 60 Dir: buildTarget, 61 Options: useLockfileOptions, 62 } 63 64 gemModuleUsingFallbackToLockfile := module.Module{ 65 Name: "test", 66 Type: pkg.Ruby, 67 BuildTarget: buildTarget, 68 Options: useBundlerWithLockfilePathOptions, 69 Dir: buildTarget, 70 } 71 72 lockfileBasedAnalyzer, lockfileBasedAnalyzerErr := ruby.New(gemModuleUsingLockfile) 73 assert.NoError(t, lockfileBasedAnalyzerErr) 74 75 fallbackBasedAnalyzer, fallbackBasedAnalyzerErr := ruby.New(gemModuleUsingFallbackToLockfile) 76 assert.NoError(t, fallbackBasedAnalyzerErr) 77 78 fallbackBasedAnalyzer.Bundler = bundler.Bundler{ 79 Cmd: "doesntWork", 80 } 81 82 lockfileBasedAnalyze, lockfileBasedAnalyzerErr := lockfileBasedAnalyzer.Analyze() 83 assert.NoError(t, lockfileBasedAnalyzerErr) 84 85 fallbackBasedAnalyze, fallbackBasedAnalyzerErr := fallbackBasedAnalyzer.Analyze() 86 assert.NoError(t, fallbackBasedAnalyzerErr) 87 88 // ensure that the arrays are actually populated and we aren't comparing equivalent empty results 89 assert.NotEmpty(t, fallbackBasedAnalyze.Direct) 90 assert.NotEmpty(t, lockfileBasedAnalyze.Direct) 91 assert.Equal(t, fallbackBasedAnalyze, lockfileBasedAnalyze) 92 }