@@ -242,3 +242,53 @@ func TestRubyLibraryWithNoRuntimeDependenciesIncludesNone(t *testing.T) {
242242 t .Fatalf ("expected 0 dependencies for library with no runtime deps, got %d" , got )
243243 }
244244}
245+
246+ func TestGemspecIgnoresCommentedRuntimeDependencies (t * testing.T ) {
247+ resolver := new (GemfileLockResolver )
248+
249+ // Prepare a library project whose gemspec contains a commented runtime dependency line
250+ dir := t .TempDir ()
251+ lockContent := "" +
252+ "GEM\n " +
253+ " remote: https://rubygems.org/\n " +
254+ " specs:\n " +
255+ " rake (13.0.6)\n " +
256+ "\n " +
257+ "PLATFORMS\n " +
258+ " ruby\n " +
259+ "\n " +
260+ "DEPENDENCIES\n " +
261+ " rake\n " +
262+ "\n " +
263+ "BUNDLED WITH\n " +
264+ " 2.4.10\n "
265+ if err := writeFileRuby (filepath .Join (dir , "Gemfile.lock" ), lockContent ); err != nil {
266+ t .Fatal (err )
267+ }
268+
269+ gemspec := "" +
270+ "Gem::Specification.new do |spec|\n " +
271+ " spec.name = \" sample\" \n " +
272+ " spec.version = \" 0.1.0\" \n " +
273+ " spec.summary = \" Sample gem\" \n " +
274+ " spec.description = \" Sample\" \n " +
275+ " spec.authors = [\" Test\" ]\n " +
276+ " spec.files = []\n " +
277+ " # spec.add_dependency(\" git\" , \" >= 1.19.1\" )\n " +
278+ "end\n "
279+ if err := writeFileRuby (filepath .Join (dir , "sample.gemspec" ), gemspec ); err != nil {
280+ t .Fatal (err )
281+ }
282+
283+ lock := filepath .Join (dir , "Gemfile.lock" )
284+ cfg := & ConfigDeps {Files : []string {lock }}
285+ report := Report {}
286+ if err := resolver .Resolve (lock , cfg , & report ); err != nil {
287+ t .Fatal (err )
288+ }
289+
290+ // There are no runtime dependencies in gemspec; the commented one must be ignored
291+ if got := len (report .Resolved ) + len (report .Skipped ); got != 0 {
292+ t .Fatalf ("expected 0 dependencies when runtime deps are only commented, got %d" , got )
293+ }
294+ }
0 commit comments