-
Notifications
You must be signed in to change notification settings - Fork 125
/
Copy pathpnpm_test.rb
119 lines (105 loc) · 3.84 KB
/
pnpm_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# frozen_string_literal: true
require "test_helper"
require "tmpdir"
require "fileutils"
if Licensed::Shell.tool_available?("pnpm")
describe Licensed::Sources::PNPM do
let(:config) { Licensed::AppConfiguration.new({ "source_path" => Dir.pwd }) }
let(:fixtures) { File.expand_path("../../fixtures/pnpm", __FILE__) }
let(:source) { Licensed::Sources::PNPM.new(config) }
it "includes dependency versions in the name identifier" do
assert Licensed::Sources::PNPM.require_matched_dependency_version
end
describe "enabled?" do
it "is true if pnpm-lock.yaml exists" do
Dir.mktmpdir do |dir|
Dir.chdir(dir) do
File.write "pnpm-lock.yaml", ""
assert source.enabled?
end
end
end
it "is false no pnpm configuration exists" do
Dir.mktmpdir do |dir|
Dir.chdir(dir) do
refute source.enabled?
end
end
end
end
describe "dependencies" do
it "includes declared dependencies" do
Dir.chdir fixtures do
dep = source.dependencies.detect { |d| d.name == "[email protected]" }
assert dep
assert_equal "pnpm", dep.record["type"]
assert_equal "5.2.0", dep.version
assert dep.record["homepage"]
assert dep.record["summary"]
end
end
it "includes homepage information if available" do
Dir.chdir fixtures do
dep = source.dependencies.detect { |d| d.name == "[email protected]" }
assert dep
assert_equal "pnpm", dep.record["type"]
assert dep.record["homepage"]
end
end
it "handles scoped dependency names" do
Dir.chdir fixtures do
dep = source.dependencies.detect { |d| d.name == "@github/[email protected]" }
assert dep
assert_equal "1.0.3", dep.version
assert dep.record["homepage"]
assert dep.record["summary"]
end
end
it "includes indirect dependencies" do
Dir.chdir fixtures do
assert source.dependencies.detect { |dep| dep.name == "[email protected]" }
end
end
it "does not include dev dependencies by default" do
Dir.chdir fixtures do
refute source.dependencies.detect { |dep| dep.name == "[email protected]" }
end
end
it "includes dev dependencies if configured" do
Dir.chdir fixtures do
config["pnpm"] = { "production_only" => false }
assert source.dependencies.detect { |dep| dep.name == "[email protected]" }
end
end
it "does not include ignored dependencies" do
Dir.chdir fixtures do
config.ignore({ "type" => Licensed::Sources::PNPM.type, "name" => "autoprefixer", "version" => "5.2.0" }, at_version: true)
refute source.dependencies.detect { |dep| dep.name == "[email protected]" }
end
end
it "raises a Licensed::Sources::Source:Error if pnpm licenses list returns invalid JSON" do
Dir.chdir fixtures do
source.stub(:package_metadata_command, "") do
assert_raises Licensed::Sources::Source::Error do
source.dependencies
end
end
end
end
it "includes dependencies from workspaces" do
Dir.chdir fixtures do
dep = source.dependencies.detect { |d| d.name == "[email protected]" }
assert dep
assert_equal "pnpm", dep.record["type"]
assert_equal "1.1.0", dep.version
end
end
it "does not include workspace projects" do
Dir.chdir fixtures do
refute source.dependencies.detect { |d| d.name == "[email protected]" }
refute source.dependencies.detect { |d| d.name == "[email protected]" }
end
end
end
end
end