From 8c3b7e25a85deeaddc8a9a8f97253bdf8b19280a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Thu, 27 Jul 2023 18:59:14 +0200 Subject: [PATCH] Implement security update support for Swift (#7638) --- .../swift/file_updater/lockfile_updater.rb | 21 ++- swift/lib/dependabot/swift/update_checker.rb | 73 +++++++- .../swift/update_checker/version_resolver.rb | 11 +- .../dependabot/swift/update_checker_spec.rb | 90 ++++++++++ swift/spec/fixtures/git/upload_packs/vapor | Bin 0 -> 135904 bytes .../projects/conflicts/Package.resolved | 169 ++++++++++++++++++ .../fixtures/projects/conflicts/Package.swift | 15 ++ 7 files changed, 365 insertions(+), 14 deletions(-) create mode 100644 swift/spec/fixtures/git/upload_packs/vapor create mode 100644 swift/spec/fixtures/projects/conflicts/Package.resolved create mode 100644 swift/spec/fixtures/projects/conflicts/Package.swift diff --git a/swift/lib/dependabot/swift/file_updater/lockfile_updater.rb b/swift/lib/dependabot/swift/file_updater/lockfile_updater.rb index b0f45f9c7c2..0734356a58e 100644 --- a/swift/lib/dependabot/swift/file_updater/lockfile_updater.rb +++ b/swift/lib/dependabot/swift/file_updater/lockfile_updater.rb @@ -2,6 +2,7 @@ require "dependabot/file_updaters/base" require "dependabot/shared_helpers" +require "dependabot/logger" module Dependabot module Swift @@ -18,11 +19,10 @@ def updated_lockfile_content SharedHelpers.in_a_temporary_repo_directory(manifest.directory, repo_contents_path) do File.write(manifest.name, manifest.content) + dependency_names = dependencies.map(&:name).join(" ") + SharedHelpers.with_git_configured(credentials: credentials) do - SharedHelpers.run_shell_command( - "swift package update #{dependencies.map(&:name).join(' ')}", - fingerprint: "swift package update " - ) + try_lockfile_update(dependency_names) File.read("Package.resolved") end @@ -31,6 +31,19 @@ def updated_lockfile_content private + def try_lockfile_update(dependency_names) + SharedHelpers.run_shell_command( + "swift package update #{dependency_names}", + fingerprint: "swift package update " + ) + rescue SharedHelpers::HelperSubprocessFailed => e + # This class is not only used for final lockfile updates, but for + # checking resolvability. So resolvability errors here are expected in + # certain situations and will result in `no_update_possible` outcomes. + # That said, since we're swallowing all errors we at least log them to ease debugging. + Dependabot.logger.info("Lockfile failed to be updated due to error:\n#{e.message}") + end + attr_reader :dependencies, :manifest, :repo_contents_path, :credentials end end diff --git a/swift/lib/dependabot/swift/update_checker.rb b/swift/lib/dependabot/swift/update_checker.rb index b3589f95442..740f2218327 100644 --- a/swift/lib/dependabot/swift/update_checker.rb +++ b/swift/lib/dependabot/swift/update_checker.rb @@ -2,6 +2,7 @@ require "dependabot/update_checkers" require "dependabot/update_checkers/base" +require "dependabot/update_checkers/version_filters" require "dependabot/git_commit_checker" require "dependabot/swift/native_requirement" require "dependabot/swift/file_updater/manifest_updater" @@ -24,6 +25,18 @@ def latest_resolvable_version_with_no_unlock raise NotImplementedError end + def lowest_security_fix_version + @lowest_security_fix_version ||= fetch_lowest_security_fix_version + end + + def lowest_resolvable_security_fix_version + raise "Dependency not vulnerable!" unless vulnerable? + + return @lowest_resolvable_security_fix_version if defined?(@lowest_resolvable_security_fix_version) + + @lowest_resolvable_security_fix_version = fetch_lowest_resolvable_security_fix_version + end + def updated_requirements RequirementsUpdater.new( requirements: old_requirements, @@ -43,14 +56,33 @@ def fetch_latest_version latest_version_tag.fetch(:version) end + def fetch_lowest_security_fix_version + return unless git_commit_checker.pinned_ref_looks_like_version? && latest_version_tag + + lowest_security_fix_version_tag.fetch(:version) + end + def fetch_latest_resolvable_version - Version.new(version_resolver.latest_resolvable_version) + latest_resolvable_version = version_resolver_for(unlocked_requirements).latest_resolvable_version + return current_version unless latest_resolvable_version + + Version.new(latest_resolvable_version) + end + + def fetch_lowest_resolvable_security_fix_version + lowest_resolvable_security_fix_version = version_resolver_for( + force_lowest_security_fix_requirements + ).latest_resolvable_version + return unless lowest_resolvable_security_fix_version + + Version.new(lowest_resolvable_security_fix_version) end - def version_resolver + def version_resolver_for(requirements) VersionResolver.new( dependency: dependency, - manifest: prepared_manifest, + manifest: prepare_manifest_for(requirements), + lockfile: lockfile, repo_contents_path: repo_contents_path, credentials: credentials ) @@ -62,19 +94,29 @@ def unlocked_requirements end end - def prepared_manifest + def force_lowest_security_fix_requirements + NativeRequirement.map_requirements(old_requirements) do |_old_requirement| + "\"#{lowest_security_fix_version}\"...\"#{lowest_security_fix_version}\"" + end + end + + def prepare_manifest_for(new_requirements) DependencyFile.new( name: manifest.name, content: FileUpdater::ManifestUpdater.new( manifest.content, old_requirements: old_requirements, - new_requirements: unlocked_requirements + new_requirements: new_requirements ).updated_manifest_content ) end def manifest - dependency_files.find { |file| file.name == "Package.swift" } + @manifest ||= dependency_files.find { |file| file.name == "Package.swift" } + end + + def lockfile + @lockfile ||= dependency_files.find { |file| file.name == "Package.resolved" } end def latest_version_resolvable_with_full_unlock? @@ -99,6 +141,25 @@ def git_commit_checker def latest_version_tag git_commit_checker.local_tag_for_latest_version end + + def lowest_security_fix_version_tag + tags = git_commit_checker.local_tags_for_allowed_versions + find_lowest_secure_version(tags) + end + + def find_lowest_secure_version(tags) + relevant_tags = Dependabot::UpdateCheckers::VersionFilters.filter_vulnerable_versions(tags, security_advisories) + relevant_tags = filter_lower_tags(relevant_tags) + + relevant_tags.min_by { |tag| tag.fetch(:version) } + end + + def filter_lower_tags(tags_array) + return tags_array unless current_version + + tags_array. + select { |tag| tag.fetch(:version) > current_version } + end end end end diff --git a/swift/lib/dependabot/swift/update_checker/version_resolver.rb b/swift/lib/dependabot/swift/update_checker/version_resolver.rb index 7bde4018e0e..78f2edca6b9 100644 --- a/swift/lib/dependabot/swift/update_checker/version_resolver.rb +++ b/swift/lib/dependabot/swift/update_checker/version_resolver.rb @@ -8,9 +8,10 @@ module Dependabot module Swift class UpdateChecker < Dependabot::UpdateCheckers::Base class VersionResolver - def initialize(dependency:, manifest:, repo_contents_path:, credentials:) + def initialize(dependency:, manifest:, lockfile:, repo_contents_path:, credentials:) @dependency = dependency @manifest = manifest + @lockfile = lockfile @credentials = credentials @repo_contents_path = repo_contents_path end @@ -29,12 +30,14 @@ def fetch_latest_resolvable_version credentials: credentials ).updated_lockfile_content - lockfile = DependencyFile.new( + return if updated_lockfile_content == lockfile.content + + updated_lockfile = DependencyFile.new( name: "Package.resolved", content: updated_lockfile_content ) - dependency_parser(manifest, lockfile).parse.find do |parsed_dep| + dependency_parser(manifest, updated_lockfile).parse.find do |parsed_dep| parsed_dep.name == dependency.name end.version end @@ -47,7 +50,7 @@ def dependency_parser(manifest, lockfile) ) end - attr_reader :dependency, :manifest, :repo_contents_path, :credentials + attr_reader :dependency, :manifest, :lockfile, :repo_contents_path, :credentials end end end diff --git a/swift/spec/dependabot/swift/update_checker_spec.rb b/swift/spec/dependabot/swift/update_checker_spec.rb index 74e9aef5233..81bae080f7e 100644 --- a/swift/spec/dependabot/swift/update_checker_spec.rb +++ b/swift/spec/dependabot/swift/update_checker_spec.rb @@ -129,4 +129,94 @@ it { is_expected.to eq("12.0.1") } end end + + describe "#lowest_security_fix_version" do + subject(:lowest_security_fix_version) { checker.lowest_security_fix_version } + + let(:name) { "nimble" } + let(:url) { "https://github.com/Quick/Nimble" } + let(:upload_pack_fixture) { "nimble" } + + let(:security_advisories) do + [ + Dependabot::SecurityAdvisory.new( + dependency_name: name, + package_manager: "swift", + vulnerable_versions: ["<= 9.2.1"] + ) + ] + end + + before { stub_upload_pack } + + context "when a supported newer version is available" do + it "updates to the least new supported version" do + is_expected.to eq(Dependabot::Swift::Version.new("10.0.0")) + end + end + + context "with ignored versions" do + let(:ignored_versions) { ["= 10.0.0"] } + + it "doesn't return ignored versions" do + is_expected.to eq(Dependabot::Swift::Version.new("11.0.0")) + end + end + end + + describe "#lowest_resolvable_security_fix_version" do + subject(:lowest_resolvable_security_fix_version) { checker.lowest_resolvable_security_fix_version } + + context "when a supported newer version is available, and resolvable" do + let(:name) { "nimble" } + let(:url) { "https://github.com/Quick/Nimble" } + let(:upload_pack_fixture) { "nimble" } + + let(:security_advisories) do + [ + Dependabot::SecurityAdvisory.new( + dependency_name: name, + package_manager: "swift", + vulnerable_versions: ["<= 9.2.1"] + ) + ] + end + + before { stub_upload_pack } + + it "updates to the least new supported version" do + is_expected.to eq(Dependabot::Swift::Version.new("10.0.0")) + end + + context "with ignored versions" do + let(:ignored_versions) { ["= 10.0.0"] } + + it "doesn't return ignored versions" do + is_expected.to eq(Dependabot::Swift::Version.new("11.0.0")) + end + end + end + + context "when fixed version has conflicts with the project" do + let(:project_name) { "conflicts" } + + let(:name) { "vapor" } + let(:url) { "https://github.com/vapor/vapor" } + let(:upload_pack_fixture) { "vapor" } + + let(:security_advisories) do + [ + Dependabot::SecurityAdvisory.new( + dependency_name: name, + package_manager: "swift", + vulnerable_versions: ["<= 4.6.2"] + ) + ] + end + + before { stub_upload_pack } + + it { is_expected.to be_nil } + end + end end diff --git a/swift/spec/fixtures/git/upload_packs/vapor b/swift/spec/fixtures/git/upload_packs/vapor new file mode 100644 index 0000000000000000000000000000000000000000..3731b347b1f044125e64e8278cfcf03ee0af9819 GIT binary patch literal 135904 zcma&vORpqZk{sw+^H(G=>p;1^+}sA}#Q-w|7X(-HSQ7T~tYl|JBqJib(f@uv@r<~3 z)SCpRs=F$)GOk^-W9O)fiioP+Zr%C6{_^eo`Y*rj=Rf`W+xJg@{_*>l_4xG1y8rWk zxaD8nG@Q%hHqXa#bmuS)({`@+eVMxPxh%&tkN4rx-S=TTe)&)T=l}kH{4f9b^Y`z+ z{Z~K#%lE(k_W5UCnfBWN;U($VYPyf1p{{G{C{(7$a-`DN;v;ISuKfZiEfBE)r z|M+@7|0xglzxj)AfBXBn9^d}^W?Y`!S7kKTd^G}*e>|t#a?ah@o!jlWw?FEkFZ}T{B_ify_vD^D@ zxpmLga`f|K|DRm+^Ow)t?_c&j>Zh-NW(mi+vuL+r*q_}vbmwhfm*@O=I4#HRK0lA~ z9M1lJ>mUD37cep&!c~ z+QcrB_wm(1`Tptr#~)x;1eet^6 ztNxm|FdYBC!$`B|e{9*Yza4u&kA1i1iN}KeE*0@^E|i``rOq?)!Pp`?+?G&hxqS$8me?OYfhp)7D<$^KV~7MEm{xw0~W{ z{rz>JVeij=SjWe4zwh4k<6Jj?GmQ7yuAlS2P3tt43w=93AFn9$_5AODp5O9@#%)-< znROnAMOfJPeY|@$%Y1gXV?MfR-<+1mbe3cI{qv`F-_Jk1n$KR-U$14H_Q!CaZri*# zb^UNYALnztb*oKvj>~yFm;QWqLyZb9wSW06NPa%Q=6;6$Shl%)oTnRG$9WLg`=#4$ zq*F`dH7U zd#v;Pc7fr#K-b;vlBw_Pjni^ImOZg>KW(6K+lIb(Q``9?+WfqO>AHY@blk>=$gz!! zUw!Lm2dQ5Md2D-*<2fAzMDSzl|GdC_UEm?p+>T@0_igW{$L=)<`r_1c>P{QD+pXz+ z{t-5RUSRpSz-^E(WxJ#(ulJ`1l6m^^c8s^Z-|G`}%{I6%T`&6VLw7&->F#e<&$0-vkM1$9+aN_fyZP+~ z+B-Z=A>_7JQ&nIZM!2*zt+p)n2675X{neLlQuFt;f zpW9soSm$H^5ek1^pxp+2FLKI<$0T;Ioq#hr2K~9%T+;~}h+fazk3;(N0@pUU9n+En z^*B23<2cUlK6d@)HoC*!kawns9d)m3&^*DOH@NT9b05}Kh;gyKgL}?N*y?UV*HZ+Y z>PGIH8+hDjXZYUPt8Q2jy`SUrwu>CoWFL>`KAh(<{eVwDo}gKQyO(9lJsx1mw(df~ z?k8k$Su!Wf-Hqol`~WFGf4g z;=yxzKI=Z5nl+fExO?}!kK;VeT|f4Ng?M_I=h)5t^L$R5biUV|GBxqAR~hUNt0WKI zEd6)`8=+B|e_gy$uQ9-&hNJ0vi-P8G^y2z<1MC*CRvZT!WNJwKw%+bCr+8a0aBp_9 zjSl=zlQb_c9PkH_b)Q9Y@NS#e-Qvm+bsOB9c;=TK`{F!47r?>7pEeI3lo zOGE+)wt2tr_w}|8>jokSt=7^5}?e-`4~LIb9l%I zvxHfmV7}I{UlyllJ;wX(+*Bdsd0!UcaeCDw60>~-8$N$P$sdQ&1^#h<{q+TpyPN1c zt>-zxSRO#FHHqi8;yh1_MDyGp%X|zqGtbvs=pT;qb~w?{nxA?C2f$;0yB+JRoP(HU zwzs6<0@p1(;F{?^p7XQ`%jXKISXL(+wqAr}HL}xq)_^cKF;TR*SqWvPnu#~ z+X)z`cR^PH(fO*&*n}ii4G?piZnFYGCcDcA`?8Hz12h@86!Ae?^#aXtT$lS`zep{1 z-?Ry^s!YK8JjBD>qOzO3)V`jk$F&ps$EP?hBOVPPZ-6^D)CJTIVIxdRut zR`Grg4$HK6mhSYsRbyR$h}NpK>2~<1QiDaRS7^fOC}PR~>m(x!g5GC;-}>HVz}5XG zz6jafQ3Lzq+KdWL?`{AR{iY;Ysnn&mc>_i}O4v%%=l9o<-&abr)7i9Lrqa-1%0m9O(0YX4Y;Z4jk!S3KlOY;Dx9qa8FgqEjlHM~LX zrFn!ArWwQ|(JL32=3&AWjdv7{2lHBnaoFdzyhcFkBdCdglH&7NETTXlqOP{hEX4}9 z2nO5W;i7vv(B18diolg4r-Dpzf9tHF`uibVzTH8y2BQAs@N>NyP1!Eb_M-7~gS|zg)EXiU#L{l%t_ABj zHoOBk@lducPaqNZB)}-ehI4eXJrdTdh z1%dWZ0ZB*ic0cznC)y)zp;qvGqtx>h*9u#ABX)D-9XqWO9hGrkk=)`UVM(*Pb_~WgEwI;>hX;0#- zr`4h#^*9dK8uX8@$1e!(0!vEV1N6VI5V}ni(Amq6FmwT{cI|Z-JnF7i!Y7Twmjn-| z{zaomTGNBf+fwsj6YK@!BCNR~*)M6AIm#RYW zQ)sEZc0mAOUY^Sx;zbKMU22Z5MwIbd#9nEpXWqC9cv8nWKEX-YW(?n8VMT}f5Y2m-k7co6tlPsO^t&+` z*nob(Dm)!*Fn%K>)B`@2@H(17N{Qr1Vfl2gA-ZejJ5$n^~yq1ZtwAGUY24>$#hvf~)v zFK|Wn$4!Fwq852cOz`5IzI{eT-LPDUwkMiysw_q~H7D9XT{d{}DFrDPJcv|%yK*^E%gFTWQRk%In{+NgJf2-KA(Q~+R+yU^vCR_z-qOZ> zswhPb-@M1op$VP~ccNm#l20PLW3gZuZ?n{!eNtn>bd?=M9|stLEId1T-7XfU4ovm6 zbs}?z=eRqv^%)-REdXZ`YC(a>fs#CZtEUj6<|aqkenc`o-mY-%W?TD{kp)Y1s| zhoC3JiK<@w@|5brb{}#~%E5hd+MtLU7Vpg(qAv+#VHPnWpl?5i(v)ZA&FJNLMv3QE zU&6H$lg;Jy!}5x40Hlyl*b^Z zkOD&|CM3&UwCJ^-46ckuSkow;Qmo8DAFs!8Zr%dc z5-g@uMq|KbyKw|k$RSD}zWGT!S%#sM;N5i?J4nhl6O<3Ohg3`Fy7)1w#$&_C?sv4S zzpoqdalM5O|Ms|{l1{KByyX1`UebpA*u2h9#niE_A5!Iy*Z635vNH3I=y>$=Lg(=l z`yncd(I*({1vn!>#;v}_M{^kIaCz&v9AFtC2_Vr57L}9yyeQhxM7Wh26CceQD6XUq za+CVkp~eB==|>cmBcl8U7-eWQL3xW!0e*WbF18iuCx$L+hQ%(Pu}j2lL0&0INP030 zlnY!hQT$2Ow!tV$CCu`;Y%6Ju7^va|4wTl9iAqp^{>m$Gh}vY&)^;( zjvkJgV4&uPn>ry11%P4_&>X8B)~HvwHiEi98f70C6`6>@ZlMb;Nk&c)CL;CUO&wiA zTHl<7o7H~^rz-Gh!VeGwQ!U9n(6cxa`$$}Kn?a6M# zpvY;c*oE>SF{`*7Bxa4b3$&+^I=oVJ{D5Ptz8K*Fr@@_JG^ph(;4XXCJ7^BWvr`_! zGc%+Nbapq$$`MvE&eRs+{+J^tmv{itG;0uvYm$=(01byI7!a&ytz?mV_A2!3kcNY&u*P-xA;sT6m9(ljQjW z5M;=D3(Z!PI4qpsJr61{6c{6v+=}0QY+Pe60UxjRwg^{9LO?PBKJ67)87$bD&w3Jx z(B@xW1G5KT+E_2p>_k~uP^Vo!Phpkx{ZwDrem89K(ua;f%utic6Aaf|P>=!S&J%Eo z1tv7V2=gNq8_n@XMV6vv$a;b1IFtJ4zE_x#*c^oUF#?x)rGm7rF;l=!R9)SO!?gq< z+iXvG;07x(WStP`xKB&x<_dSn+a~h(fWFqVBFi!f82nrmV$<@Ze!+*)CIPybO7JZ z!iu=$@XmA83p8O}D#D9DMij6#G$p4>Cp+Qire;8d$p5JFl3l%^>oh8n{afjcPGoy? zc+e*g0qzhi)pHyX5_T>7`tgd1H&|#o1)wKN^QJ@%p^KZjxolie!?}%T(sg-+W*gWn zuvHf;ir0W%mrB(+=UoLV#_)?t{|;3B`KELREm7er-4&yAQ=H8=A;$SrL@rMnI4j2h zKi3O10f_-rW#+ZXh~bO?46sL?<6L!fhiz3bq5A3t+OvevRxCY8VjHo+wAvnA#S7SZB1)2%a!= zQ7unso#zt5gVhA7!+k8xy}0BIlm~&x0)K;sxisa zY3=8TBC^bYhje~;K#)K18aE{z*VTA3H~T;-LXvoLUo3G0NrRX$>D1X=6dkOFT%gc$ zS;R*B<-NW`0m*8Ua#^iNRan&zPQVR2Yg4QdwQEdnmD|*IPpgo(PcpoRrWFz72!|73 zqaTPb=fAta6;McoPsia&uD`AHNsnwH#DwTy;btcA%~IB9XpZATaONNit%!1f4!e;l z=MFZbz!o4&RAD!%dwFg$8|xkDO}m% z7NA7MC`YT?NPj&ihhHs_fJZ5w7H)zX)|CTkrGXUks%J0L;T#{PcK9$ z#mXbN!1W%7hhuj~Kq6t$IJU8}(ejacHW-h5r4Ak|fgnm=aXq1kQJdyQ7;^Rw`mc~8 z95QY*_BdUD##rBDqaD-t_|lJ%4LEL=7CT6Q77GL_8!=X)dg4lOyP$Ws#mzuD?h$mm_yAqwB|Y!xDo?#i{ZYDw-&7-UtLud1lNS z_j;aM1^_gP;hHfWQuGo)=Ut%&IN@@@uSuv+L0q4qISwk--J+{?*)A|yKnj`}KZv5H zPof5UT)a2*^UZV zuYkCu@<7k2=J9H3NWN&rhm|N~mO80y(2)xYfFh&5KmE#!tkb>{ub6l<@OFcFF5S?%dJK zE3W?SJ$%HqK`u(4$SRgt!&uZY_D&+BSV#cxf**u`t%Rj(4FLk_L`e}lnBs}02tJaK za2UL4kgg2|OO=h(s+PomW;WGMg$b{-1eKG}sVsGUN@ zr0hg0F!vy*-&U~!>_pimR`HHk(hh(}a6?Z>GtvnFN@WVxD4C%ZpX0jjDerV%phhej z+yiMOR5A0ag2ZuReQOVbg78{{nMS zxC%MpluEr&iVEunD+_)KbFUN|*q8gdl^YrbHb$Sxe_}9896nkh?l)V6>D<_D(w8*? zu=N?5ynt|!6tQ^@-Kk?mt(>j`BO?(Xm*lK$33A9!;Xj6Eh&4DAn7F0 z3Q%fX1+qnnXlzs;tEgkfew7iJkB9_xe8*cX#5|yfHoK4)vU81k2Or^N?3}!rmf?M) zQE66VuTJzdk!|b<&10%cy*l**%|`0tSO`O|(1+5db3RuTb#&}pXat&A87i|oG{;%m z^V%2e5kR6^ca%d1O3P#tfhI)+H%VQBmeZ7$o}(^1Cok?aj9{Fa>OK|{ol(8AL7u2` z9~gSAp(L(XLy00M**i?P=xi95+=APN=LKeQuGF3o<;Ml^T4|+m>QbZW?8&>MH#uNn z3qhP_$Sn8xcNe&}vLY*ObaV;|tx7Gs8kG@FOW~h`U}M5O)z{4RkH3wRPa@xI_P7VQd|k+e^SFSP3Ybnee23Sf zx6m67X05aZoNs%nCDag5NX<1343-U39;oI-&PtIKQB-I>oYi>T_M=dVJ4Ow+pRQ!> zY}r;yQV{DUIUyMF6xA5z=dUMFF2@3Zl+=TmUL?*ekPCRl03eqESWtJaTd{S+ICz`R z9g!XM&Y?+iPb>KuIi|9tVop;_4PV^4EzFUL6|tvki$;(;|`b?A|)bttR3$uuy$kNFLBom>LiCg`A5Pk%f_X~XNM0uTo=6+C@yae?!`H+Sv zpHW=dLtcU|hP=Y8<`EKh{U#P&5k%?L^G#cPp*6`-CBfC>Sk|!K#za-S$i9In)K#n| zT?@0@6xKy1IzHkoC>lUM$oon)|bpgMMw=e7X*|mfHsXm6@Tkd)4+edfd;DL8z6k-x{^b^1JT@x z`HFG+2+P-ZwRGv z!-yjifwLHfHY_dzi?l@Xpo^3KsPKCK-bkFL(^6`;|6?MG6(U9m`9bAMag){6I?TtA z+8YD0G*7^D0f5j3p)(EAdV9E{6aWm&p+!+s4+hvOllTK47>N~3v#i_$87SXTK1xr8 zB;z5aB?c450579v1sC{;C*4yr;oVv|3_%GcL#&F?C1|NJk;+wSSu)!rwI zX$Rmhgir|U^aT=LSwWlj+6DL)@mu;KfD_VbgE5H8bSTjqH?^Wy(tDJnlnY$DfScF8 zLohf7%U&Ry7K`` z6%17QN+nhj6umP+u+9W0f(e}MFp__8dR}wg$1MTE0cpeIO9plqFEI)s3f06Sp+!JV zs~9Tf?FKG@rRdj%M`WdsL6t~&%%XPlSJwf_M^@DM#u-qapxH%-C1B>KEIWMWXP{1k zNJs$#FjV%9cwy#wzk)EgR>-9%VS_l%7N_KJl5cj4S#xYb?Il1Kz3U0e*w zax&6G3$rAcSxjgHFpXQ6|3V#8pP+pNSQe!9n}v@NKWvx;sJG!&91RRX!3&PtPWH~ zZZI9A5}KqGew1{yYOP@bhP~hJ;93J2gkyo&jG;iw2h3jg3S_g0P~ih{D-@~CQg?lsr4@hdwk3I^;&hS!>)LuR->uJ zu%g^i9AjP>Q}B7alO0!wdy9{@KEV|Z5SLNy8Jp2i>MUbe@MzEm(C8S;TJB4OPz?us zELUDao1~#ulYlx!mY*^QPNt2ChTYT(X2wy~`Nn1lg68f>GhUU_+pk14a8iKF@`?g9 zmU-&U8xaT1ek_8Jv)VXXZ^9Nxd2A;NymU?22TCYaFX&bsmbt*kGsMS6-bTFe=8^_8 z*5yGS;cP(y3E({*N<~;>S`*SVjClv}M7nVlH-1(XOJa*V(NR@|<9z!X589fO%o&D) z0AfslWsftEu{LG~TwH2U)v&}>-eY5>(QeP7F-F(`wb`fWEf!Q*7R~GtIVJ|N+R_Ef zek>w!nGKA_cGLAQO`p0=p$u(BU=OgYS`pT?(bqd@4?|4ZP}mF9phcA!#EB6T6mt?9 z13=^We!IZ6hz>HDSBXeeByfS&_}gfE=?4eWY;k$Uw3vDaO~J*q;E4kSgf>Evu7Qk+ zlUA$+W|`KY-|kJJY1mLbh`Mcw05s}hHIi%Yl z+-w{l$Ta#h*qP1?ZWd0OH-PfEGLt$);8t5=2>?T~WQa_jChQ!d9NrRNq9B$vaDk7l ztWg8TMNE78!Cs)7YN3bo*@)C286n5Ips~MRp?M9=eV){hDAB=mXO9X`>?0fwgk%*c z{YE3``vtCBkoruWU=%@Px$V$$3`%(Bti5b2Gk}}5^rl68EF+dr2csXMO=J`VBNMei zxfvU`;Xj^;o5I7DTeyCn-6yq5(t~a1@OT4KHL=SMf*1f-h8{7l{(KV^VXRjNn0-L8 zwEsC46+pnVJYh#c!FFY(gn_8`HBijeD-v|thoD)c3et?@_aWUzO~_pzcK=0^Pc-9}|ggFmO*d zhOk%{;R>rnK}e9HQ3}$~B!*!w($L4C#0kX+qwdlJTVv8SNy3}bTpCX^0v;el=er}l zlA;9J)4Z5qzVuYIcW^}{@jrAE%Z1EHqhNs$QcVj>&J21HvPIpsyu}7zpgRN3kIC@%HIT?2*Vy-E2LkM-^6o3akz#i5Q#NVV=< z`b+o^jLtro$PCj;m*PIp#6|__D;ED#^=J?upB%#Xe8Szzi#p&rL(m0KY6`H+{a)IkLBHv=B z1Cj93%3TLBDIN#oC90P*tp^!ZTL)->*Ap1!!ztjIC8)r5FHO5J;hHUjDJCNn`5tT4 z2m@Rf0FF`CKm{`s3LOh+o0CW23 z_Zym@**@CU4l;%Bu6{DC{l_yfVlmLbV5g01hNIiyOhY6vMRAnLHP|4UQ@w>|4R}Ms z7uxp%&=Y%T3hN6pYEtAeMrhIh-zX&B-j5q_?<7Gjk^1}Yo55e%PwZ58$#T|&j$PBg zph={xfeTz~U=WS-Pa-3Q=~7ZCngGHr?ft^o)O(buCaHQFTknFvtEUx}^a7T`fu;j` zKUU{O^LilSqe78yTQU;mROgio00jrbpKC~LDPboCQ^mMIok`OXHUi$%8&_ez&OSmCuoYqn zbqa6nSd>r8`g6MXkN4P`C)89XGf_GLWOTNK#CyV-rU4<7`>;y*dO}l$7*|M2FC<^2 z_8*Gr4sHn|s#b2Wlna@KXf^$Y`Uve94g3G}BkX;)3n!CM?6JAH^kVT9nWD#o0=Jem zXa`ZsYusRtpip{hbuz*lFg^hrqu`w5G zufkDg8t2<1v?Pj6NS`)kiJ+H01nhW*mt;~J?7}2uVJ$^b7aZGbFS33i3~izildh%9 zkpV%?YK#K@DT9A;o^J@FA)+8vWQU4jFyxCXP6t_-a?ml1J_xG%kg~>l2iF=<*J96Q zgn|rFo48RH0DwS^!HJI~lX@M|x1Vni2FpwuG>j$Fzrrl9`GRKwyM&+9POu{fF?+Ss zS1!7iKp=uFSletTHM0;1<)@*D(iA(EgW=tF6>B#f41)oKD?E?8lp4HENL!u6>rC~+ z*2fuSMe1>E84&hS-eLv}wX!njX z%3VV>2_C!`=yL6r72`BjXJjPZV-T;HjLtkV#a^*%I0iCInL@-(hiAP57x;)MN)$O1 zW#x?-yP)|dm3yWK(1vV6vc1ZilcJoaE4ga8&>+A_CLX$ZU2MuF_?j!k90JseQCC!= zzLab_vVXqD(2peRG=k#Jkh0O+l{qo*xP1{#HA<1M80p%F89EVHIcK$Ync9U)#e;RPGS((WpOvZA1Lo(@7Op^Vt;-5tv|Gnd<~;WLAuF3_>X&u_dM5ooPI# zhN^XSA~DlyKQXRJR(C!lG>S229V6m=U2hS6hKnTi+K*}I;%=nOiQ=YVgdO0aR-q)0W^7078vxHGETtQjQR|I z&>wiERm_NuatBR3&8T=f9}pc8S$j}C zhedb**;NsmcBIlFO+fVm%}EG#h4oSJX5QGtX@HO{EdBl&qr1^YqH7h&NTDA~VA>z7 z9-l%6m|{R)>RK2{!(GhBM3;-N#Q%B+ZMg#pLU)1|LOeVSgSa3V!-E1=!K02=+gFdT zHUGGUe3^g`86Gnw9>UPLuYwAVnV;ulkS7^e=Xwjx8fbRY#b){i6JWnG9oRmEXNqf> zA2HI!LkN~fXke~xd4g1qb2tn*$$`KkzeZxll7tNo0IWT>II8O~6FW0Ui_Da6TOl1+ zK$5}a+eO5(5X;uFj#eUFeyoA6DGM(R!6Rvx_9G!dyhpSJ?VlWMpAl^8GhFYH;_lEw zBC0NSrAPE`?H}A(bb(A=lp@^nTTE>y-rY02Bg20X7ic3dg+?q$0wnNF7*;fyGPvGB zbC_a?H0%P2<^X1fEFWVWSTWZL@(vT7@Yw2MXr3TrGOZE9M80I)X)Mg6Nm zocTr+MSe&JY*1>D8c*8Hs48%fyf-2-LOd=|Rt_VLc_(6kik~Vℑuo08QLsm^VoY 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 literal 0 HcmV?d00001 diff --git a/swift/spec/fixtures/projects/conflicts/Package.resolved b/swift/spec/fixtures/projects/conflicts/Package.resolved new file mode 100644 index 00000000000..3177c8bf797 --- /dev/null +++ b/swift/spec/fixtures/projects/conflicts/Package.resolved @@ -0,0 +1,169 @@ +{ + "object": { + "pins": [ + { + "package": "Console", + "repositoryURL": "https://github.com/vapor/console.git", + "state": { + "branch": null, + "revision": "74cfbea629d4aac34a97cead2447a6870af1950b", + "version": "3.1.1" + } + }, + { + "package": "Core", + "repositoryURL": "https://github.com/vapor/core.git", + "state": { + "branch": null, + "revision": "89c6989fd8b1e08acfd198afba1c38971bb814b2", + "version": "3.10.1" + } + }, + { + "package": "Crypto", + "repositoryURL": "https://github.com/vapor/crypto.git", + "state": { + "branch": null, + "revision": "105c2f875588bf40dd24c00cef3644bf8e327770", + "version": "3.4.1" + } + }, + { + "package": "DatabaseKit", + "repositoryURL": "https://github.com/vapor/database-kit.git", + "state": { + "branch": null, + "revision": "8f352c8e66dab301ab9bfef912a01ce1361ba1e4", + "version": "1.3.3" + } + }, + { + "package": "HTTP", + "repositoryURL": "https://github.com/vapor/http.git", + "state": { + "branch": null, + "revision": "0464b715a4b59f54078bcf7a4b424767b03db5a5", + "version": "3.4.0" + } + }, + { + "package": "Multipart", + "repositoryURL": "https://github.com/vapor/multipart.git", + "state": { + "branch": null, + "revision": "fb216c5a8ef07dcd90aec8a4155e86c831acce97", + "version": "3.1.3" + } + }, + { + "package": "Routing", + "repositoryURL": "https://github.com/vapor/routing.git", + "state": { + "branch": null, + "revision": "d76f339c9716785e5079af9d7075d28ff7da3d92", + "version": "3.1.0" + } + }, + { + "package": "Service", + "repositoryURL": "https://github.com/vapor/service.git", + "state": { + "branch": null, + "revision": "fa5b5de62bd68bcde9a69933f31319e46c7275fb", + "version": "1.0.2" + } + }, + { + "package": "swift-example-vapor3", + "repositoryURL": "https://github.com/dependabot-fixtures/swift-example-vapor3", + "state": { + "branch": null, + "revision": "5f3ac6edfda423354457b34f85af3cc1211e58c3", + "version": "1.0.0" + } + }, + { + "package": "swift-nio", + "repositoryURL": "https://github.com/apple/swift-nio.git", + "state": { + "branch": null, + "revision": "546610d52b19be3e19935e0880bb06b9c03f5cef", + "version": "1.14.4" + } + }, + { + "package": "swift-nio-ssl", + "repositoryURL": "https://github.com/apple/swift-nio-ssl.git", + "state": { + "branch": null, + "revision": "0f3999f3e3c359cc74480c292644c3419e44a12f", + "version": "1.4.0" + } + }, + { + "package": "swift-nio-ssl-support", + "repositoryURL": "https://github.com/apple/swift-nio-ssl-support.git", + "state": { + "branch": null, + "revision": "c02eec4e0e6d351cd092938cf44195a8e669f555", + "version": "1.0.0" + } + }, + { + "package": "swift-nio-zlib-support", + "repositoryURL": "https://github.com/apple/swift-nio-zlib-support.git", + "state": { + "branch": null, + "revision": "37760e9a52030bb9011972c5213c3350fa9d41fd", + "version": "1.0.0" + } + }, + { + "package": "TemplateKit", + "repositoryURL": "https://github.com/vapor/template-kit.git", + "state": { + "branch": null, + "revision": "4370aa99c01fc19cc8272b67bf7204b2d2063680", + "version": "1.5.0" + } + }, + { + "package": "URLEncodedForm", + "repositoryURL": "https://github.com/vapor/url-encoded-form.git", + "state": { + "branch": null, + "revision": "20f68fbe7fac006d4d0617ea4edcba033227359e", + "version": "1.1.0" + } + }, + { + "package": "Validation", + "repositoryURL": "https://github.com/vapor/validation.git", + "state": { + "branch": null, + "revision": "4de213cf319b694e4ce19e5339592601d4dd3ff6", + "version": "2.1.1" + } + }, + { + "package": "Vapor", + "repositoryURL": "https://github.com/vapor/vapor.git", + "state": { + "branch": null, + "revision": "642f3d4d1f0eafad651c85524d0d1c698b55399f", + "version": "3.3.3" + } + }, + { + "package": "WebSocket", + "repositoryURL": "https://github.com/vapor/websocket.git", + "state": { + "branch": null, + "revision": "d85e5b6dce4d04065865f77385fc3324f98178f6", + "version": "1.1.2" + } + } + ] + }, + "version": 1 +} diff --git a/swift/spec/fixtures/projects/conflicts/Package.swift b/swift/spec/fixtures/projects/conflicts/Package.swift new file mode 100644 index 00000000000..c433f601471 --- /dev/null +++ b/swift/spec/fixtures/projects/conflicts/Package.swift @@ -0,0 +1,15 @@ +// swift-tools-version:5.2 +// The swift-tools-version declares the minimum version of Swift required to build this package. +import PackageDescription + +let package = Package( + name: "Foo", + platforms: [ + .macOS(.v10_13), .iOS(.v11), .tvOS(.v11), .watchOS(.v4) + ], + dependencies: [ + .package(url: "https://github.com/vapor/vapor.git", from: "3.0.0"), + .package(url: "https://github.com/dependabot-fixtures/swift-example-vapor3", from: "1.0.0"), + ], + swiftLanguageVersions: [.v5] +)