summaryrefslogtreecommitdiff
path: root/tests/format/junctions
diff options
context:
space:
mode:
Diffstat (limited to 'tests/format/junctions')
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/project.conf9
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject/subproject1.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/sub.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject/subproject2.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/sub2.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject3.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject3/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject3/sub3.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/subproject3/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-full-path/target.bst6
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/project.conf7
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject/project.conf7
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/sub.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/sub2.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject3.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject3/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject3/sub3.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/subproject3/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-incomplete/target.bst6
-rw-r--r--tests/format/junctions/duplicates-nested-link1/project.conf8
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject/project.conf7
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject/subproject1-link.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject/subproject1.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject/subproject1/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject/subproject1/sub.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject/subproject1/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject/subproject2.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject/subproject2/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject/subproject2/sub2.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject/subproject2/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject3.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject3/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject3/sub3.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-link1/subproject3/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link1/target.bst6
-rw-r--r--tests/format/junctions/duplicates-nested-link2/project.conf7
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject/project.conf8
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject/subproject1.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject/subproject1/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject/subproject1/sub.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject/subproject1/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject/subproject2.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject/subproject2/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject/subproject2/sub2.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject/subproject2/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject2-link.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject3.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject3/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject3/sub3.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-link2/subproject3/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-link2/target.bst6
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/project.conf8
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject/project.conf7
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject/subproject1-link.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject/subproject1.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/sub.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject/subproject2.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/sub2.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject3.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject3/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject3/sub3.txt1
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/subproject3/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested-not-found/target.bst6
-rw-r--r--tests/format/junctions/duplicates-nested/project.conf7
-rw-r--r--tests/format/junctions/duplicates-nested/subproject.bst4
-rw-r--r--tests/format/junctions/duplicates-nested/subproject/project.conf8
-rw-r--r--tests/format/junctions/duplicates-nested/subproject/subproject1.bst4
-rw-r--r--tests/format/junctions/duplicates-nested/subproject/subproject1/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested/subproject/subproject1/sub.txt1
-rw-r--r--tests/format/junctions/duplicates-nested/subproject/subproject1/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested/subproject/subproject2.bst4
-rw-r--r--tests/format/junctions/duplicates-nested/subproject/subproject2/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested/subproject/subproject2/sub2.txt1
-rw-r--r--tests/format/junctions/duplicates-nested/subproject/subproject2/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested/subproject3.bst4
-rw-r--r--tests/format/junctions/duplicates-nested/subproject3/project.conf2
-rw-r--r--tests/format/junctions/duplicates-nested/subproject3/sub3.txt1
-rw-r--r--tests/format/junctions/duplicates-nested/subproject3/target.bst4
-rw-r--r--tests/format/junctions/duplicates-nested/target.bst6
-rw-r--r--tests/format/junctions/duplicates-override-dup/project.conf2
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject.bst8
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject/project.conf8
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject/subproject1.bst4
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject/subproject1/project.conf2
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject/subproject1/sub.txt1
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject/subproject1/target.bst4
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject/subproject2.bst4
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject/subproject2/project.conf2
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject/subproject2/sub2.txt1
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject/subproject2/target.bst4
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject3.bst4
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject3/project.conf2
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject3/sub3.txt1
-rw-r--r--tests/format/junctions/duplicates-override-dup/subproject3/target.bst4
-rw-r--r--tests/format/junctions/duplicates-override-dup/target.bst5
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/duplicate.bst4
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/duplicate/duplicate.txt1
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/duplicate/project.conf2
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/duplicate/target.bst4
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/override.bst4
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/override/overridden-again.txt1
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/override/project.conf2
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/override/target.bst4
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/project.conf7
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject.bst8
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject/override.bst4
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject/override/overridden.txt1
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject/override/project.conf2
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject/override/target.bst4
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject/project.conf7
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject.bst8
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/project.conf2
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject.bst4
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/original.txt1
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/project.conf2
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/target.bst4
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/subproject/subsubsubproject-link.bst4
-rw-r--r--tests/format/junctions/duplicates-override-twice-link/target.bst5
-rw-r--r--tests/format/junctions/duplicates-simple-incomplete/project.conf7
-rw-r--r--tests/format/junctions/duplicates-simple-incomplete/subproject1.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-incomplete/subproject1/project.conf2
-rw-r--r--tests/format/junctions/duplicates-simple-incomplete/subproject1/sub.txt1
-rw-r--r--tests/format/junctions/duplicates-simple-incomplete/subproject1/target.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-incomplete/subproject2.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-incomplete/subproject2/project.conf2
-rw-r--r--tests/format/junctions/duplicates-simple-incomplete/subproject2/sub2.txt1
-rw-r--r--tests/format/junctions/duplicates-simple-incomplete/subproject2/target.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-incomplete/target.bst5
-rw-r--r--tests/format/junctions/duplicates-simple-link/project.conf8
-rw-r--r--tests/format/junctions/duplicates-simple-link/subproject1.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-link/subproject1/project.conf2
-rw-r--r--tests/format/junctions/duplicates-simple-link/subproject1/sub.txt1
-rw-r--r--tests/format/junctions/duplicates-simple-link/subproject1/target.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-link/subproject2-link.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-link/subproject2.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-link/subproject2/project.conf2
-rw-r--r--tests/format/junctions/duplicates-simple-link/subproject2/sub2.txt1
-rw-r--r--tests/format/junctions/duplicates-simple-link/subproject2/target.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-link/target.bst5
-rw-r--r--tests/format/junctions/duplicates-simple-not-found/project.conf8
-rw-r--r--tests/format/junctions/duplicates-simple-not-found/subproject1.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-not-found/subproject1/project.conf2
-rw-r--r--tests/format/junctions/duplicates-simple-not-found/subproject1/sub.txt1
-rw-r--r--tests/format/junctions/duplicates-simple-not-found/subproject1/target.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-not-found/subproject2.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-not-found/subproject2/project.conf2
-rw-r--r--tests/format/junctions/duplicates-simple-not-found/subproject2/sub2.txt1
-rw-r--r--tests/format/junctions/duplicates-simple-not-found/subproject2/target.bst4
-rw-r--r--tests/format/junctions/duplicates-simple-not-found/target.bst5
-rw-r--r--tests/format/junctions/duplicates-simple/project.conf8
-rw-r--r--tests/format/junctions/duplicates-simple/subproject1.bst4
-rw-r--r--tests/format/junctions/duplicates-simple/subproject1/project.conf2
-rw-r--r--tests/format/junctions/duplicates-simple/subproject1/sub.txt1
-rw-r--r--tests/format/junctions/duplicates-simple/subproject1/target.bst4
-rw-r--r--tests/format/junctions/duplicates-simple/subproject2.bst4
-rw-r--r--tests/format/junctions/duplicates-simple/subproject2/project.conf2
-rw-r--r--tests/format/junctions/duplicates-simple/subproject2/sub2.txt1
-rw-r--r--tests/format/junctions/duplicates-simple/subproject2/target.bst4
-rw-r--r--tests/format/junctions/duplicates-simple/target.bst5
179 files changed, 639 insertions, 0 deletions
diff --git a/tests/format/junctions/duplicates-nested-full-path/project.conf b/tests/format/junctions/duplicates-nested-full-path/project.conf
new file mode 100644
index 000000000..ddac93c49
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/project.conf
@@ -0,0 +1,9 @@
+name: test
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubtest:
+ - subproject.bst:subproject1.bst
+ - subproject.bst:subproject2.bst
+ - subproject3.bst
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject.bst b/tests/format/junctions/duplicates-nested-full-path/subproject.bst
new file mode 100644
index 000000000..c88189cb0
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject/project.conf b/tests/format/junctions/duplicates-nested-full-path/subproject/project.conf
new file mode 100644
index 000000000..39a53e2ab
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject/project.conf
@@ -0,0 +1,2 @@
+name: subtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject/subproject1.bst b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject1.bst
new file mode 100644
index 000000000..bfd692d00
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject1.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject1
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/project.conf b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/sub.txt b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/sub.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/sub.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/target.bst b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/target.bst
new file mode 100644
index 000000000..e24d9bbb4
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub.txt
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject/subproject2.bst b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject2.bst
new file mode 100644
index 000000000..2343652e1
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject2.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject2
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/project.conf b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/sub2.txt b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/sub2.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/sub2.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/target.bst b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/target.bst
new file mode 100644
index 000000000..a1d15e942
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub2.txt
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject3.bst b/tests/format/junctions/duplicates-nested-full-path/subproject3.bst
new file mode 100644
index 000000000..e4ee2f1d5
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject3.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject3
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject3/project.conf b/tests/format/junctions/duplicates-nested-full-path/subproject3/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject3/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject3/sub3.txt b/tests/format/junctions/duplicates-nested-full-path/subproject3/sub3.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject3/sub3.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-full-path/subproject3/target.bst b/tests/format/junctions/duplicates-nested-full-path/subproject3/target.bst
new file mode 100644
index 000000000..cb81ea97f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/subproject3/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub3.txt
diff --git a/tests/format/junctions/duplicates-nested-full-path/target.bst b/tests/format/junctions/duplicates-nested-full-path/target.bst
new file mode 100644
index 000000000..c9199fe0f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-full-path/target.bst
@@ -0,0 +1,6 @@
+kind: stack
+
+depends:
+- subproject.bst:subproject1.bst:target.bst
+- subproject.bst:subproject2.bst:target.bst
+- subproject3.bst:target.bst
diff --git a/tests/format/junctions/duplicates-nested-incomplete/project.conf b/tests/format/junctions/duplicates-nested-incomplete/project.conf
new file mode 100644
index 000000000..2e4aff856
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/project.conf
@@ -0,0 +1,7 @@
+name: test
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubtest:
+ - subproject3.bst
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject.bst b/tests/format/junctions/duplicates-nested-incomplete/subproject.bst
new file mode 100644
index 000000000..c88189cb0
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject/project.conf b/tests/format/junctions/duplicates-nested-incomplete/subproject/project.conf
new file mode 100644
index 000000000..b9cc870a8
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject/project.conf
@@ -0,0 +1,7 @@
+name: subtest
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubtest:
+ - subproject1.bst
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1.bst b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1.bst
new file mode 100644
index 000000000..bfd692d00
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject1
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/project.conf b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/sub.txt b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/sub.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/sub.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/target.bst b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/target.bst
new file mode 100644
index 000000000..e24d9bbb4
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub.txt
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2.bst b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2.bst
new file mode 100644
index 000000000..2343652e1
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject2
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/project.conf b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/sub2.txt b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/sub2.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/sub2.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/target.bst b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/target.bst
new file mode 100644
index 000000000..a1d15e942
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub2.txt
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject3.bst b/tests/format/junctions/duplicates-nested-incomplete/subproject3.bst
new file mode 100644
index 000000000..e4ee2f1d5
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject3.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject3
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject3/project.conf b/tests/format/junctions/duplicates-nested-incomplete/subproject3/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject3/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject3/sub3.txt b/tests/format/junctions/duplicates-nested-incomplete/subproject3/sub3.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject3/sub3.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-incomplete/subproject3/target.bst b/tests/format/junctions/duplicates-nested-incomplete/subproject3/target.bst
new file mode 100644
index 000000000..cb81ea97f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/subproject3/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub3.txt
diff --git a/tests/format/junctions/duplicates-nested-incomplete/target.bst b/tests/format/junctions/duplicates-nested-incomplete/target.bst
new file mode 100644
index 000000000..28e981ea3
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-incomplete/target.bst
@@ -0,0 +1,6 @@
+kind: stack
+
+depends:
+- subproject3.bst:target.bst
+- subproject.bst:subproject1.bst:target.bst
+- subproject.bst:subproject2.bst:target.bst
diff --git a/tests/format/junctions/duplicates-nested-link1/project.conf b/tests/format/junctions/duplicates-nested-link1/project.conf
new file mode 100644
index 000000000..e229b9f1f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/project.conf
@@ -0,0 +1,8 @@
+name: test
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubtest:
+ - subproject3.bst
+ - subproject.bst:subproject1-link.bst
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject.bst b/tests/format/junctions/duplicates-nested-link1/subproject.bst
new file mode 100644
index 000000000..c88189cb0
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject/project.conf b/tests/format/junctions/duplicates-nested-link1/subproject/project.conf
new file mode 100644
index 000000000..0be41104a
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject/project.conf
@@ -0,0 +1,7 @@
+name: subtest
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubtest:
+ - subproject2.bst
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject/subproject1-link.bst b/tests/format/junctions/duplicates-nested-link1/subproject/subproject1-link.bst
new file mode 100644
index 000000000..0e6d8a484
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject/subproject1-link.bst
@@ -0,0 +1,4 @@
+kind: link
+
+config:
+ target: subproject1.bst
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject/subproject1.bst b/tests/format/junctions/duplicates-nested-link1/subproject/subproject1.bst
new file mode 100644
index 000000000..bfd692d00
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject/subproject1.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject1
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject/subproject1/project.conf b/tests/format/junctions/duplicates-nested-link1/subproject/subproject1/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject/subproject1/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject/subproject1/sub.txt b/tests/format/junctions/duplicates-nested-link1/subproject/subproject1/sub.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject/subproject1/sub.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject/subproject1/target.bst b/tests/format/junctions/duplicates-nested-link1/subproject/subproject1/target.bst
new file mode 100644
index 000000000..e24d9bbb4
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject/subproject1/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub.txt
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject/subproject2.bst b/tests/format/junctions/duplicates-nested-link1/subproject/subproject2.bst
new file mode 100644
index 000000000..2343652e1
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject/subproject2.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject2
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject/subproject2/project.conf b/tests/format/junctions/duplicates-nested-link1/subproject/subproject2/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject/subproject2/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject/subproject2/sub2.txt b/tests/format/junctions/duplicates-nested-link1/subproject/subproject2/sub2.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject/subproject2/sub2.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject/subproject2/target.bst b/tests/format/junctions/duplicates-nested-link1/subproject/subproject2/target.bst
new file mode 100644
index 000000000..a1d15e942
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject/subproject2/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub2.txt
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject3.bst b/tests/format/junctions/duplicates-nested-link1/subproject3.bst
new file mode 100644
index 000000000..e4ee2f1d5
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject3.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject3
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject3/project.conf b/tests/format/junctions/duplicates-nested-link1/subproject3/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject3/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject3/sub3.txt b/tests/format/junctions/duplicates-nested-link1/subproject3/sub3.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject3/sub3.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-link1/subproject3/target.bst b/tests/format/junctions/duplicates-nested-link1/subproject3/target.bst
new file mode 100644
index 000000000..cb81ea97f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/subproject3/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub3.txt
diff --git a/tests/format/junctions/duplicates-nested-link1/target.bst b/tests/format/junctions/duplicates-nested-link1/target.bst
new file mode 100644
index 000000000..c9199fe0f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link1/target.bst
@@ -0,0 +1,6 @@
+kind: stack
+
+depends:
+- subproject.bst:subproject1.bst:target.bst
+- subproject.bst:subproject2.bst:target.bst
+- subproject3.bst:target.bst
diff --git a/tests/format/junctions/duplicates-nested-link2/project.conf b/tests/format/junctions/duplicates-nested-link2/project.conf
new file mode 100644
index 000000000..2e4aff856
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/project.conf
@@ -0,0 +1,7 @@
+name: test
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubtest:
+ - subproject3.bst
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject.bst b/tests/format/junctions/duplicates-nested-link2/subproject.bst
new file mode 100644
index 000000000..c88189cb0
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject/project.conf b/tests/format/junctions/duplicates-nested-link2/subproject/project.conf
new file mode 100644
index 000000000..99ccfa68c
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject/project.conf
@@ -0,0 +1,8 @@
+name: subtest
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubtest:
+ - subproject1.bst
+ - subproject2.bst
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject/subproject1.bst b/tests/format/junctions/duplicates-nested-link2/subproject/subproject1.bst
new file mode 100644
index 000000000..bfd692d00
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject/subproject1.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject1
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject/subproject1/project.conf b/tests/format/junctions/duplicates-nested-link2/subproject/subproject1/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject/subproject1/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject/subproject1/sub.txt b/tests/format/junctions/duplicates-nested-link2/subproject/subproject1/sub.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject/subproject1/sub.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject/subproject1/target.bst b/tests/format/junctions/duplicates-nested-link2/subproject/subproject1/target.bst
new file mode 100644
index 000000000..e24d9bbb4
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject/subproject1/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub.txt
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject/subproject2.bst b/tests/format/junctions/duplicates-nested-link2/subproject/subproject2.bst
new file mode 100644
index 000000000..2343652e1
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject/subproject2.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject2
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject/subproject2/project.conf b/tests/format/junctions/duplicates-nested-link2/subproject/subproject2/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject/subproject2/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject/subproject2/sub2.txt b/tests/format/junctions/duplicates-nested-link2/subproject/subproject2/sub2.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject/subproject2/sub2.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject/subproject2/target.bst b/tests/format/junctions/duplicates-nested-link2/subproject/subproject2/target.bst
new file mode 100644
index 000000000..a1d15e942
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject/subproject2/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub2.txt
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject2-link.bst b/tests/format/junctions/duplicates-nested-link2/subproject2-link.bst
new file mode 100644
index 000000000..c7803f902
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject2-link.bst
@@ -0,0 +1,4 @@
+kind: link
+
+config:
+ target: subproject.bst:subproject2.bst
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject3.bst b/tests/format/junctions/duplicates-nested-link2/subproject3.bst
new file mode 100644
index 000000000..e4ee2f1d5
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject3.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject3
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject3/project.conf b/tests/format/junctions/duplicates-nested-link2/subproject3/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject3/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject3/sub3.txt b/tests/format/junctions/duplicates-nested-link2/subproject3/sub3.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject3/sub3.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-link2/subproject3/target.bst b/tests/format/junctions/duplicates-nested-link2/subproject3/target.bst
new file mode 100644
index 000000000..cb81ea97f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/subproject3/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub3.txt
diff --git a/tests/format/junctions/duplicates-nested-link2/target.bst b/tests/format/junctions/duplicates-nested-link2/target.bst
new file mode 100644
index 000000000..3e3906da0
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-link2/target.bst
@@ -0,0 +1,6 @@
+kind: stack
+
+depends:
+- subproject.bst:subproject1.bst:target.bst
+- subproject2-link.bst:target.bst
+- subproject3.bst:target.bst
diff --git a/tests/format/junctions/duplicates-nested-not-found/project.conf b/tests/format/junctions/duplicates-nested-not-found/project.conf
new file mode 100644
index 000000000..e229b9f1f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/project.conf
@@ -0,0 +1,8 @@
+name: test
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubtest:
+ - subproject3.bst
+ - subproject.bst:subproject1-link.bst
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject.bst b/tests/format/junctions/duplicates-nested-not-found/subproject.bst
new file mode 100644
index 000000000..c88189cb0
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject/project.conf b/tests/format/junctions/duplicates-nested-not-found/subproject/project.conf
new file mode 100644
index 000000000..0be41104a
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject/project.conf
@@ -0,0 +1,7 @@
+name: subtest
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubtest:
+ - subproject2.bst
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1-link.bst b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1-link.bst
new file mode 100644
index 000000000..642ab8c42
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1-link.bst
@@ -0,0 +1,4 @@
+kind: link
+
+config:
+ target: subproject5.bst
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1.bst b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1.bst
new file mode 100644
index 000000000..bfd692d00
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject1
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/project.conf b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/sub.txt b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/sub.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/sub.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/target.bst b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/target.bst
new file mode 100644
index 000000000..e24d9bbb4
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub.txt
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject/subproject2.bst b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject2.bst
new file mode 100644
index 000000000..2343652e1
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject2.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject2
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/project.conf b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/sub2.txt b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/sub2.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/sub2.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/target.bst b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/target.bst
new file mode 100644
index 000000000..a1d15e942
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub2.txt
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject3.bst b/tests/format/junctions/duplicates-nested-not-found/subproject3.bst
new file mode 100644
index 000000000..e4ee2f1d5
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject3.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject3
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject3/project.conf b/tests/format/junctions/duplicates-nested-not-found/subproject3/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject3/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject3/sub3.txt b/tests/format/junctions/duplicates-nested-not-found/subproject3/sub3.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject3/sub3.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested-not-found/subproject3/target.bst b/tests/format/junctions/duplicates-nested-not-found/subproject3/target.bst
new file mode 100644
index 000000000..cb81ea97f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/subproject3/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub3.txt
diff --git a/tests/format/junctions/duplicates-nested-not-found/target.bst b/tests/format/junctions/duplicates-nested-not-found/target.bst
new file mode 100644
index 000000000..c9199fe0f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested-not-found/target.bst
@@ -0,0 +1,6 @@
+kind: stack
+
+depends:
+- subproject.bst:subproject1.bst:target.bst
+- subproject.bst:subproject2.bst:target.bst
+- subproject3.bst:target.bst
diff --git a/tests/format/junctions/duplicates-nested/project.conf b/tests/format/junctions/duplicates-nested/project.conf
new file mode 100644
index 000000000..2e4aff856
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/project.conf
@@ -0,0 +1,7 @@
+name: test
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubtest:
+ - subproject3.bst
diff --git a/tests/format/junctions/duplicates-nested/subproject.bst b/tests/format/junctions/duplicates-nested/subproject.bst
new file mode 100644
index 000000000..c88189cb0
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject
diff --git a/tests/format/junctions/duplicates-nested/subproject/project.conf b/tests/format/junctions/duplicates-nested/subproject/project.conf
new file mode 100644
index 000000000..99ccfa68c
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject/project.conf
@@ -0,0 +1,8 @@
+name: subtest
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubtest:
+ - subproject1.bst
+ - subproject2.bst
diff --git a/tests/format/junctions/duplicates-nested/subproject/subproject1.bst b/tests/format/junctions/duplicates-nested/subproject/subproject1.bst
new file mode 100644
index 000000000..bfd692d00
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject/subproject1.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject1
diff --git a/tests/format/junctions/duplicates-nested/subproject/subproject1/project.conf b/tests/format/junctions/duplicates-nested/subproject/subproject1/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject/subproject1/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested/subproject/subproject1/sub.txt b/tests/format/junctions/duplicates-nested/subproject/subproject1/sub.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject/subproject1/sub.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested/subproject/subproject1/target.bst b/tests/format/junctions/duplicates-nested/subproject/subproject1/target.bst
new file mode 100644
index 000000000..e24d9bbb4
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject/subproject1/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub.txt
diff --git a/tests/format/junctions/duplicates-nested/subproject/subproject2.bst b/tests/format/junctions/duplicates-nested/subproject/subproject2.bst
new file mode 100644
index 000000000..2343652e1
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject/subproject2.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject2
diff --git a/tests/format/junctions/duplicates-nested/subproject/subproject2/project.conf b/tests/format/junctions/duplicates-nested/subproject/subproject2/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject/subproject2/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested/subproject/subproject2/sub2.txt b/tests/format/junctions/duplicates-nested/subproject/subproject2/sub2.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject/subproject2/sub2.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested/subproject/subproject2/target.bst b/tests/format/junctions/duplicates-nested/subproject/subproject2/target.bst
new file mode 100644
index 000000000..a1d15e942
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject/subproject2/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub2.txt
diff --git a/tests/format/junctions/duplicates-nested/subproject3.bst b/tests/format/junctions/duplicates-nested/subproject3.bst
new file mode 100644
index 000000000..e4ee2f1d5
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject3.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject3
diff --git a/tests/format/junctions/duplicates-nested/subproject3/project.conf b/tests/format/junctions/duplicates-nested/subproject3/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject3/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-nested/subproject3/sub3.txt b/tests/format/junctions/duplicates-nested/subproject3/sub3.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject3/sub3.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-nested/subproject3/target.bst b/tests/format/junctions/duplicates-nested/subproject3/target.bst
new file mode 100644
index 000000000..cb81ea97f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/subproject3/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub3.txt
diff --git a/tests/format/junctions/duplicates-nested/target.bst b/tests/format/junctions/duplicates-nested/target.bst
new file mode 100644
index 000000000..c9199fe0f
--- /dev/null
+++ b/tests/format/junctions/duplicates-nested/target.bst
@@ -0,0 +1,6 @@
+kind: stack
+
+depends:
+- subproject.bst:subproject1.bst:target.bst
+- subproject.bst:subproject2.bst:target.bst
+- subproject3.bst:target.bst
diff --git a/tests/format/junctions/duplicates-override-dup/project.conf b/tests/format/junctions/duplicates-override-dup/project.conf
new file mode 100644
index 000000000..20636c446
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/project.conf
@@ -0,0 +1,2 @@
+name: test
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-override-dup/subproject.bst b/tests/format/junctions/duplicates-override-dup/subproject.bst
new file mode 100644
index 000000000..376ac11ee
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject.bst
@@ -0,0 +1,8 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject
+
+config:
+ overrides:
+ subproject1.bst: subproject3.bst
diff --git a/tests/format/junctions/duplicates-override-dup/subproject/project.conf b/tests/format/junctions/duplicates-override-dup/subproject/project.conf
new file mode 100644
index 000000000..99ccfa68c
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject/project.conf
@@ -0,0 +1,8 @@
+name: subtest
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubtest:
+ - subproject1.bst
+ - subproject2.bst
diff --git a/tests/format/junctions/duplicates-override-dup/subproject/subproject1.bst b/tests/format/junctions/duplicates-override-dup/subproject/subproject1.bst
new file mode 100644
index 000000000..bfd692d00
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject/subproject1.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject1
diff --git a/tests/format/junctions/duplicates-override-dup/subproject/subproject1/project.conf b/tests/format/junctions/duplicates-override-dup/subproject/subproject1/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject/subproject1/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-override-dup/subproject/subproject1/sub.txt b/tests/format/junctions/duplicates-override-dup/subproject/subproject1/sub.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject/subproject1/sub.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-override-dup/subproject/subproject1/target.bst b/tests/format/junctions/duplicates-override-dup/subproject/subproject1/target.bst
new file mode 100644
index 000000000..e24d9bbb4
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject/subproject1/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub.txt
diff --git a/tests/format/junctions/duplicates-override-dup/subproject/subproject2.bst b/tests/format/junctions/duplicates-override-dup/subproject/subproject2.bst
new file mode 100644
index 000000000..2343652e1
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject/subproject2.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject2
diff --git a/tests/format/junctions/duplicates-override-dup/subproject/subproject2/project.conf b/tests/format/junctions/duplicates-override-dup/subproject/subproject2/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject/subproject2/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-override-dup/subproject/subproject2/sub2.txt b/tests/format/junctions/duplicates-override-dup/subproject/subproject2/sub2.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject/subproject2/sub2.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-override-dup/subproject/subproject2/target.bst b/tests/format/junctions/duplicates-override-dup/subproject/subproject2/target.bst
new file mode 100644
index 000000000..a1d15e942
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject/subproject2/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub2.txt
diff --git a/tests/format/junctions/duplicates-override-dup/subproject3.bst b/tests/format/junctions/duplicates-override-dup/subproject3.bst
new file mode 100644
index 000000000..e4ee2f1d5
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject3.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject3
diff --git a/tests/format/junctions/duplicates-override-dup/subproject3/project.conf b/tests/format/junctions/duplicates-override-dup/subproject3/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject3/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-override-dup/subproject3/sub3.txt b/tests/format/junctions/duplicates-override-dup/subproject3/sub3.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject3/sub3.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-override-dup/subproject3/target.bst b/tests/format/junctions/duplicates-override-dup/subproject3/target.bst
new file mode 100644
index 000000000..cb81ea97f
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/subproject3/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub3.txt
diff --git a/tests/format/junctions/duplicates-override-dup/target.bst b/tests/format/junctions/duplicates-override-dup/target.bst
new file mode 100644
index 000000000..6ca140afb
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-dup/target.bst
@@ -0,0 +1,5 @@
+kind: stack
+
+depends:
+- subproject.bst:subproject1.bst:target.bst
+- subproject.bst:subproject2.bst:target.bst
diff --git a/tests/format/junctions/duplicates-override-twice-link/duplicate.bst b/tests/format/junctions/duplicates-override-twice-link/duplicate.bst
new file mode 100644
index 000000000..4acb6e63b
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/duplicate.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: duplicate
diff --git a/tests/format/junctions/duplicates-override-twice-link/duplicate/duplicate.txt b/tests/format/junctions/duplicates-override-twice-link/duplicate/duplicate.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/duplicate/duplicate.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-override-twice-link/duplicate/project.conf b/tests/format/junctions/duplicates-override-twice-link/duplicate/project.conf
new file mode 100644
index 000000000..e508da808
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/duplicate/project.conf
@@ -0,0 +1,2 @@
+name: subsubsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-override-twice-link/duplicate/target.bst b/tests/format/junctions/duplicates-override-twice-link/duplicate/target.bst
new file mode 100644
index 000000000..8b350a12f
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/duplicate/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: duplicate.txt
diff --git a/tests/format/junctions/duplicates-override-twice-link/override.bst b/tests/format/junctions/duplicates-override-twice-link/override.bst
new file mode 100644
index 000000000..c0564b631
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/override.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: override
diff --git a/tests/format/junctions/duplicates-override-twice-link/override/overridden-again.txt b/tests/format/junctions/duplicates-override-twice-link/override/overridden-again.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/override/overridden-again.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-override-twice-link/override/project.conf b/tests/format/junctions/duplicates-override-twice-link/override/project.conf
new file mode 100644
index 000000000..e508da808
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/override/project.conf
@@ -0,0 +1,2 @@
+name: subsubsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-override-twice-link/override/target.bst b/tests/format/junctions/duplicates-override-twice-link/override/target.bst
new file mode 100644
index 000000000..c05396c42
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/override/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: overridden-again.txt
diff --git a/tests/format/junctions/duplicates-override-twice-link/project.conf b/tests/format/junctions/duplicates-override-twice-link/project.conf
new file mode 100644
index 000000000..3dbb08c35
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/project.conf
@@ -0,0 +1,7 @@
+name: test
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubsubtest:
+ - duplicate.bst
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject.bst b/tests/format/junctions/duplicates-override-twice-link/subproject.bst
new file mode 100644
index 000000000..297dbe90d
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject.bst
@@ -0,0 +1,8 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject
+
+config:
+ overrides:
+ subsubproject.bst:subsubsubproject.bst: override.bst
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject/override.bst b/tests/format/junctions/duplicates-override-twice-link/subproject/override.bst
new file mode 100644
index 000000000..c0564b631
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject/override.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: override
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject/override/overridden.txt b/tests/format/junctions/duplicates-override-twice-link/subproject/override/overridden.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject/override/overridden.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject/override/project.conf b/tests/format/junctions/duplicates-override-twice-link/subproject/override/project.conf
new file mode 100644
index 000000000..e508da808
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject/override/project.conf
@@ -0,0 +1,2 @@
+name: subsubsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject/override/target.bst b/tests/format/junctions/duplicates-override-twice-link/subproject/override/target.bst
new file mode 100644
index 000000000..8a725bab6
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject/override/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: overridden.txt
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject/project.conf b/tests/format/junctions/duplicates-override-twice-link/subproject/project.conf
new file mode 100644
index 000000000..cf2fbc7f3
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject/project.conf
@@ -0,0 +1,7 @@
+name: subtest
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subsubsubtest:
+ - subsubsubproject-link.bst
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject.bst b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject.bst
new file mode 100644
index 000000000..fd5101878
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject.bst
@@ -0,0 +1,8 @@
+kind: junction
+sources:
+- kind: local
+ path: subsubproject
+
+config:
+ overrides:
+ subsubsubproject.bst: override.bst
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/project.conf b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/project.conf
new file mode 100644
index 000000000..d11bcbb30
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/project.conf
@@ -0,0 +1,2 @@
+name: subsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject.bst b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject.bst
new file mode 100644
index 000000000..bce64597b
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subsubsubproject
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/original.txt b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/original.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/original.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/project.conf b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/project.conf
new file mode 100644
index 000000000..e508da808
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/project.conf
@@ -0,0 +1,2 @@
+name: subsubsubtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/target.bst b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/target.bst
new file mode 100644
index 000000000..61edc6467
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: original.txt
diff --git a/tests/format/junctions/duplicates-override-twice-link/subproject/subsubsubproject-link.bst b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubsubproject-link.bst
new file mode 100644
index 000000000..d397fb794
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/subproject/subsubsubproject-link.bst
@@ -0,0 +1,4 @@
+kind: link
+
+config:
+ target: subsubproject.bst:subsubsubproject.bst
diff --git a/tests/format/junctions/duplicates-override-twice-link/target.bst b/tests/format/junctions/duplicates-override-twice-link/target.bst
new file mode 100644
index 000000000..efbe3330b
--- /dev/null
+++ b/tests/format/junctions/duplicates-override-twice-link/target.bst
@@ -0,0 +1,5 @@
+kind: stack
+
+depends:
+- subproject.bst:subsubproject.bst:subsubsubproject.bst:target.bst
+- duplicate.bst:target.bst
diff --git a/tests/format/junctions/duplicates-simple-incomplete/project.conf b/tests/format/junctions/duplicates-simple-incomplete/project.conf
new file mode 100644
index 000000000..e7e7d8d63
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-incomplete/project.conf
@@ -0,0 +1,7 @@
+name: test
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subtest:
+ - subproject2.bst
diff --git a/tests/format/junctions/duplicates-simple-incomplete/subproject1.bst b/tests/format/junctions/duplicates-simple-incomplete/subproject1.bst
new file mode 100644
index 000000000..bfd692d00
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-incomplete/subproject1.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject1
diff --git a/tests/format/junctions/duplicates-simple-incomplete/subproject1/project.conf b/tests/format/junctions/duplicates-simple-incomplete/subproject1/project.conf
new file mode 100644
index 000000000..39a53e2ab
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-incomplete/subproject1/project.conf
@@ -0,0 +1,2 @@
+name: subtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-simple-incomplete/subproject1/sub.txt b/tests/format/junctions/duplicates-simple-incomplete/subproject1/sub.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-incomplete/subproject1/sub.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-simple-incomplete/subproject1/target.bst b/tests/format/junctions/duplicates-simple-incomplete/subproject1/target.bst
new file mode 100644
index 000000000..e24d9bbb4
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-incomplete/subproject1/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub.txt
diff --git a/tests/format/junctions/duplicates-simple-incomplete/subproject2.bst b/tests/format/junctions/duplicates-simple-incomplete/subproject2.bst
new file mode 100644
index 000000000..2343652e1
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-incomplete/subproject2.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject2
diff --git a/tests/format/junctions/duplicates-simple-incomplete/subproject2/project.conf b/tests/format/junctions/duplicates-simple-incomplete/subproject2/project.conf
new file mode 100644
index 000000000..39a53e2ab
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-incomplete/subproject2/project.conf
@@ -0,0 +1,2 @@
+name: subtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-simple-incomplete/subproject2/sub2.txt b/tests/format/junctions/duplicates-simple-incomplete/subproject2/sub2.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-incomplete/subproject2/sub2.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-simple-incomplete/subproject2/target.bst b/tests/format/junctions/duplicates-simple-incomplete/subproject2/target.bst
new file mode 100644
index 000000000..a1d15e942
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-incomplete/subproject2/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub2.txt
diff --git a/tests/format/junctions/duplicates-simple-incomplete/target.bst b/tests/format/junctions/duplicates-simple-incomplete/target.bst
new file mode 100644
index 000000000..fd4734b99
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-incomplete/target.bst
@@ -0,0 +1,5 @@
+kind: stack
+
+depends:
+- subproject1.bst:target.bst
+- subproject2.bst:target.bst
diff --git a/tests/format/junctions/duplicates-simple-link/project.conf b/tests/format/junctions/duplicates-simple-link/project.conf
new file mode 100644
index 000000000..1e1ebae69
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-link/project.conf
@@ -0,0 +1,8 @@
+name: test
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subtest:
+ - subproject1.bst
+ - subproject2-link.bst
diff --git a/tests/format/junctions/duplicates-simple-link/subproject1.bst b/tests/format/junctions/duplicates-simple-link/subproject1.bst
new file mode 100644
index 000000000..bfd692d00
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-link/subproject1.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject1
diff --git a/tests/format/junctions/duplicates-simple-link/subproject1/project.conf b/tests/format/junctions/duplicates-simple-link/subproject1/project.conf
new file mode 100644
index 000000000..39a53e2ab
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-link/subproject1/project.conf
@@ -0,0 +1,2 @@
+name: subtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-simple-link/subproject1/sub.txt b/tests/format/junctions/duplicates-simple-link/subproject1/sub.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-link/subproject1/sub.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-simple-link/subproject1/target.bst b/tests/format/junctions/duplicates-simple-link/subproject1/target.bst
new file mode 100644
index 000000000..e24d9bbb4
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-link/subproject1/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub.txt
diff --git a/tests/format/junctions/duplicates-simple-link/subproject2-link.bst b/tests/format/junctions/duplicates-simple-link/subproject2-link.bst
new file mode 100644
index 000000000..a8aebfa2c
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-link/subproject2-link.bst
@@ -0,0 +1,4 @@
+kind: link
+
+config:
+ target: subproject2.bst
diff --git a/tests/format/junctions/duplicates-simple-link/subproject2.bst b/tests/format/junctions/duplicates-simple-link/subproject2.bst
new file mode 100644
index 000000000..2343652e1
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-link/subproject2.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject2
diff --git a/tests/format/junctions/duplicates-simple-link/subproject2/project.conf b/tests/format/junctions/duplicates-simple-link/subproject2/project.conf
new file mode 100644
index 000000000..39a53e2ab
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-link/subproject2/project.conf
@@ -0,0 +1,2 @@
+name: subtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-simple-link/subproject2/sub2.txt b/tests/format/junctions/duplicates-simple-link/subproject2/sub2.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-link/subproject2/sub2.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-simple-link/subproject2/target.bst b/tests/format/junctions/duplicates-simple-link/subproject2/target.bst
new file mode 100644
index 000000000..a1d15e942
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-link/subproject2/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub2.txt
diff --git a/tests/format/junctions/duplicates-simple-link/target.bst b/tests/format/junctions/duplicates-simple-link/target.bst
new file mode 100644
index 000000000..b674ed66c
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-link/target.bst
@@ -0,0 +1,5 @@
+kind: stack
+
+depends:
+- subproject1.bst:target.bst
+- subproject2-link.bst:target.bst
diff --git a/tests/format/junctions/duplicates-simple-not-found/project.conf b/tests/format/junctions/duplicates-simple-not-found/project.conf
new file mode 100644
index 000000000..793c6bf9b
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-not-found/project.conf
@@ -0,0 +1,8 @@
+name: test
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subtest:
+ - subproject1.bst
+ - subproject5.bst
diff --git a/tests/format/junctions/duplicates-simple-not-found/subproject1.bst b/tests/format/junctions/duplicates-simple-not-found/subproject1.bst
new file mode 100644
index 000000000..bfd692d00
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-not-found/subproject1.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject1
diff --git a/tests/format/junctions/duplicates-simple-not-found/subproject1/project.conf b/tests/format/junctions/duplicates-simple-not-found/subproject1/project.conf
new file mode 100644
index 000000000..39a53e2ab
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-not-found/subproject1/project.conf
@@ -0,0 +1,2 @@
+name: subtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-simple-not-found/subproject1/sub.txt b/tests/format/junctions/duplicates-simple-not-found/subproject1/sub.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-not-found/subproject1/sub.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-simple-not-found/subproject1/target.bst b/tests/format/junctions/duplicates-simple-not-found/subproject1/target.bst
new file mode 100644
index 000000000..e24d9bbb4
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-not-found/subproject1/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub.txt
diff --git a/tests/format/junctions/duplicates-simple-not-found/subproject2.bst b/tests/format/junctions/duplicates-simple-not-found/subproject2.bst
new file mode 100644
index 000000000..2343652e1
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-not-found/subproject2.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject2
diff --git a/tests/format/junctions/duplicates-simple-not-found/subproject2/project.conf b/tests/format/junctions/duplicates-simple-not-found/subproject2/project.conf
new file mode 100644
index 000000000..39a53e2ab
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-not-found/subproject2/project.conf
@@ -0,0 +1,2 @@
+name: subtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-simple-not-found/subproject2/sub2.txt b/tests/format/junctions/duplicates-simple-not-found/subproject2/sub2.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-not-found/subproject2/sub2.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-simple-not-found/subproject2/target.bst b/tests/format/junctions/duplicates-simple-not-found/subproject2/target.bst
new file mode 100644
index 000000000..a1d15e942
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-not-found/subproject2/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub2.txt
diff --git a/tests/format/junctions/duplicates-simple-not-found/target.bst b/tests/format/junctions/duplicates-simple-not-found/target.bst
new file mode 100644
index 000000000..fd4734b99
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple-not-found/target.bst
@@ -0,0 +1,5 @@
+kind: stack
+
+depends:
+- subproject1.bst:target.bst
+- subproject2.bst:target.bst
diff --git a/tests/format/junctions/duplicates-simple/project.conf b/tests/format/junctions/duplicates-simple/project.conf
new file mode 100644
index 000000000..3f5ac145d
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple/project.conf
@@ -0,0 +1,8 @@
+name: test
+min-version: 2.0
+
+junctions:
+ duplicates:
+ subtest:
+ - subproject1.bst
+ - subproject2.bst
diff --git a/tests/format/junctions/duplicates-simple/subproject1.bst b/tests/format/junctions/duplicates-simple/subproject1.bst
new file mode 100644
index 000000000..bfd692d00
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple/subproject1.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject1
diff --git a/tests/format/junctions/duplicates-simple/subproject1/project.conf b/tests/format/junctions/duplicates-simple/subproject1/project.conf
new file mode 100644
index 000000000..39a53e2ab
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple/subproject1/project.conf
@@ -0,0 +1,2 @@
+name: subtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-simple/subproject1/sub.txt b/tests/format/junctions/duplicates-simple/subproject1/sub.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple/subproject1/sub.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-simple/subproject1/target.bst b/tests/format/junctions/duplicates-simple/subproject1/target.bst
new file mode 100644
index 000000000..e24d9bbb4
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple/subproject1/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub.txt
diff --git a/tests/format/junctions/duplicates-simple/subproject2.bst b/tests/format/junctions/duplicates-simple/subproject2.bst
new file mode 100644
index 000000000..2343652e1
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple/subproject2.bst
@@ -0,0 +1,4 @@
+kind: junction
+sources:
+- kind: local
+ path: subproject2
diff --git a/tests/format/junctions/duplicates-simple/subproject2/project.conf b/tests/format/junctions/duplicates-simple/subproject2/project.conf
new file mode 100644
index 000000000..39a53e2ab
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple/subproject2/project.conf
@@ -0,0 +1,2 @@
+name: subtest
+min-version: 2.0
diff --git a/tests/format/junctions/duplicates-simple/subproject2/sub2.txt b/tests/format/junctions/duplicates-simple/subproject2/sub2.txt
new file mode 100644
index 000000000..f73f3093f
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple/subproject2/sub2.txt
@@ -0,0 +1 @@
+file
diff --git a/tests/format/junctions/duplicates-simple/subproject2/target.bst b/tests/format/junctions/duplicates-simple/subproject2/target.bst
new file mode 100644
index 000000000..a1d15e942
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple/subproject2/target.bst
@@ -0,0 +1,4 @@
+kind: import
+sources:
+- kind: local
+ path: sub2.txt
diff --git a/tests/format/junctions/duplicates-simple/target.bst b/tests/format/junctions/duplicates-simple/target.bst
new file mode 100644
index 000000000..fd4734b99
--- /dev/null
+++ b/tests/format/junctions/duplicates-simple/target.bst
@@ -0,0 +1,5 @@
+kind: stack
+
+depends:
+- subproject1.bst:target.bst
+- subproject2.bst:target.bst