33
44require "spec_helper"
55require "dependabot/dependency_file"
6- require "dependabot/bazel /file_parser"
6+ require "dependabot/<%= ecosystem_module %> /file_parser"
77require_common_spec "file_parsers/shared_examples_for_file_parsers"
88
9- RSpec.describe Dependabot::Bazel ::FileParser do
9+ RSpec.describe Dependabot::<%= ecosystem_module %> ::FileParser do
1010 subject(:parser) do
1111 described_class.new(
1212 dependency_files: dependency_files,
@@ -32,121 +32,15 @@ RSpec.describe Dependabot::Bazel::FileParser do
3232 end
3333
3434 let(:module_file_content) do
35- < < ~BAZEL
36- module(name = "my-module", version = "1.0")
37-
38- bazel_dep(name = "rules_cc", version = "0.1.1")
39- bazel_dep(name = "platforms", version = "0.0.11")
40- bazel_dep(name = "abseil-cpp", version = "20230125.3")
41- BAZEL
35+ << ~<%= ecosystem_module %>
36+ <%= ecosystem_module %>
4237 end
4338
44- describe "#parse" do
45- it "returns the expected dependencies" do
46- dependencies = parser.parse
47-
48- expect(dependencies.length).to eq(3)
49-
50- expect(dependencies.map(&:name)).to contain_exactly(
51- "rules_cc",
52- "platforms",
53- "abseil-cpp"
54- )
55-
56- rules_cc_dep = dependencies.find { |d| d.name == "rules_cc" }
57- expect(rules_cc_dep.version).to eq("0.1.1")
58- expect(rules_cc_dep.package_manager).to eq("bazel")
59- expect(rules_cc_dep.requirements.first[:file]).to eq("MODULE.bazel")
60- end
61- end
62-
63- context "with WORKSPACE file" do
64- let(:dependency_files) { [workspace_file] }
65-
66- let(:workspace_file) do
67- Dependabot::DependencyFile.new(
68- name: "WORKSPACE",
69- content: workspace_file_content
70- )
71- end
39+ it_behaves_like "a dependency file parser"
7240
73- let(:workspace_file_content) do
74- < < ~BAZEL
75- load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
76-
77- http_archive(
78- name = "rules_cc",
79- urls = ["https://github.com/bazelbuild/rules_cc/archive/v0.1.1.tar.gz"],
80- sha256 = "abc123...",
81- )
82-
83- http_archive(
84- name = "abseil-cpp",
85- urls = ["https://github.com/abseil/abseil-cpp/archive/20230125.3.tar.gz"],
86- sha256 = "def456...",
87- )
88- BAZEL
89- end
90-
91- it "parses WORKSPACE dependencies" do
92- dependencies = parser.parse
93-
94- expect(dependencies.length).to eq(2)
95- expect(dependencies.map(&:name)).to contain_exactly("rules_cc", "abseil-cpp")
96-
97- rules_cc_dep = dependencies.find { |d| d.name == "rules_cc" }
98- expect(rules_cc_dep.version).to eq("0.1.1")
99- end
100- end
101-
102- context "with BUILD file" do
103- let(:dependency_files) { [module_file, build_file] }
104-
105- let(:build_file) do
106- Dependabot::DependencyFile.new(
107- name: "BUILD",
108- content: build_file_content
109- )
110- end
111-
112- let(:build_file_content) do
113- < < ~BAZEL
114- load("@rules_go//go:def.bzl", "go_library", "go_binary")
115- load("@rules_cc//cc:defs.bzl", "cc_library")
116-
117- cc_library(
118- name = "my_lib",
119- srcs = ["lib.cc"],
120- deps = [
121- "@abseil-cpp//absl/strings",
122- ],
123- )
124- BAZEL
125- end
126-
127- it "parses load statements from BUILD files" do
128- dependencies = parser.parse
129-
130- # Should include MODULE.bazel deps plus load references
131- expect(dependencies.length).to be > = 3
132-
133- load_deps = dependencies.select { |d| d.requirements.first[:groups] == ["load_references"] }
134- expect(load_deps.map(&:name)).to include("rules_go", "rules_cc")
135- end
136- end
137-
138- context "with .bazelversion file" do
139- let(:dependency_files) { [module_file, bazelversion_file] }
140-
141- let(:bazelversion_file) do
142- Dependabot::DependencyFile.new(
143- name: ".bazelversion",
144- content: "6.4.0"
145- )
146- end
147-
148- it "detects the Bazel version" do
149- expect(parser.send(:bazel_version)).to eq("6.4.0")
150- end
151- end
41+ # TODO: Add test cases
42+ # Example:
43+ # it "Parses Dependencies in files" do
44+ # # Test implementation
45+ # end
15246end
0 commit comments