@@ -165,4 +165,55 @@ describe('parseRepositoryInfo', () => {
165165 } )
166166 } )
167167 } )
168+
169+ describe ( 'Tangled support' , ( ) => {
170+ it ( 'parses Tangled URL with tangled.org domain' , ( ) => {
171+ const result = parseRepositoryInfo ( {
172+ url : 'https://tangled.org/nonbinary.computer/weaver' ,
173+ } )
174+ expect ( result ) . toMatchObject ( {
175+ provider : 'tangled' ,
176+ owner : 'nonbinary.computer' ,
177+ repo : 'weaver' ,
178+ rawBaseUrl : 'https://tangled.sh/nonbinary.computer/weaver/raw/branch/main' ,
179+ } )
180+ } )
181+
182+ it ( 'parses Tangled URL with tangled.sh domain' , ( ) => {
183+ const result = parseRepositoryInfo ( {
184+ url : 'https://tangled.sh/pds.ls/pdsls' ,
185+ } )
186+ expect ( result ) . toMatchObject ( {
187+ provider : 'tangled' ,
188+ owner : 'pds.ls' ,
189+ repo : 'pdsls' ,
190+ rawBaseUrl : 'https://tangled.sh/pds.ls/pdsls/raw/branch/main' ,
191+ } )
192+ } )
193+
194+ it ( 'parses Tangled URL with .git suffix' , ( ) => {
195+ const result = parseRepositoryInfo ( {
196+ type : 'git' ,
197+ url : 'https://tangled.org/owner/repo.git' ,
198+ } )
199+ expect ( result ) . toMatchObject ( {
200+ provider : 'tangled' ,
201+ owner : 'owner' ,
202+ repo : 'repo' ,
203+ } )
204+ } )
205+
206+ it ( 'parses Tangled URL with directory (monorepo)' , ( ) => {
207+ const result = parseRepositoryInfo ( {
208+ url : 'https://tangled.org/tangled.org/core' ,
209+ directory : 'packages/web' ,
210+ } )
211+ expect ( result ) . toMatchObject ( {
212+ provider : 'tangled' ,
213+ owner : 'tangled.org' ,
214+ repo : 'core' ,
215+ directory : 'packages/web' ,
216+ } )
217+ } )
218+ } )
168219} )
0 commit comments