From 043c0b0887978b8ede8f789d7a9b92d2fed4606c Mon Sep 17 00:00:00 2001 From: faithokamoto Date: Tue, 30 Jun 2026 09:10:58 -0700 Subject: [PATCH 01/14] duplicate name handling --- deps/vcflib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/vcflib b/deps/vcflib index 7ca5c2036d..cf4696d496 160000 --- a/deps/vcflib +++ b/deps/vcflib @@ -1 +1 @@ -Subproject commit 7ca5c2036da5952ff1f262dedd26daafa2a1aeaf +Subproject commit cf4696d49601a365d05e464f79aa466befa89447 From 19eb6c824f1751b9d475b776e49015134de60844 Mon Sep 17 00:00:00 2001 From: faithokamoto Date: Tue, 30 Jun 2026 09:20:48 -0700 Subject: [PATCH 02/14] these dups too --- src/constructor.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/constructor.cpp b/src/constructor.cpp index bd8cd34deb..bbd2a08cff 100644 --- a/src/constructor.cpp +++ b/src/constructor.cpp @@ -2444,6 +2444,11 @@ namespace vg { exit(1); } for (auto& kv : *(reference->index)) { + if (reference_for.count(kv.first)) { + #pragma omp critical (cerr) + cerr << "error:[vg::Constructor] Contig " << kv.first << " appears multiple times" << endl; + exit(1); + } // For every sequence name and index entry, point to this reference reference_for[kv.first] = reference; #ifdef debug From 21f07fd34a7ef60d0d34415f3580262074d25cc0 Mon Sep 17 00:00:00 2001 From: faithokamoto Date: Tue, 30 Jun 2026 09:24:08 -0700 Subject: [PATCH 03/14] test new behavior --- test/t/02_vg_construct.t | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/t/02_vg_construct.t b/test/t/02_vg_construct.t index f82628e775..bef6e07679 100644 --- a/test/t/02_vg_construct.t +++ b/test/t/02_vg_construct.t @@ -120,3 +120,9 @@ is $? 0 "Reference with ambiguity codes has them coerced to Ns" is "$(vg view -j tiny.vg | jq -r '.node[].sequence' | tr -d 'ACGT\n' | wc -c)" "10" "Expected number of Ns are created" rm -f tiny.vg +vg construct -r small/x.fa -r small/x.fa > /dev/null +is $? 1 "Names may not be duplicated across files" +sed "s/y/x/" small/xy.fa > xx.fa +vg construct -r xx.fa > /dev/null +is $? 1 "Names may not be duplicated within a file" +rm -f xx.fa From 3f04dba25416354afbacd333c80e1225cfd809c0 Mon Sep 17 00:00:00 2001 From: Adam Novak Date: Tue, 30 Jun 2026 16:38:13 -0400 Subject: [PATCH 04/14] Point at vcflib that points at right Fastahack --- deps/vcflib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/vcflib b/deps/vcflib index cf4696d496..4baaec94bd 160000 --- a/deps/vcflib +++ b/deps/vcflib @@ -1 +1 @@ -Subproject commit cf4696d49601a365d05e464f79aa466befa89447 +Subproject commit 4baaec94bdaee903b139544c4ff703198e5e6ab6 From 2db3c8f8d5b0bde0ddd25a43437aff07411c87dc Mon Sep 17 00:00:00 2001 From: Adam Novak Date: Tue, 30 Jun 2026 16:42:29 -0400 Subject: [PATCH 05/14] Use vcflib that only changes Fastahack --- deps/vcflib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/vcflib b/deps/vcflib index 4baaec94bd..c65f20626d 160000 --- a/deps/vcflib +++ b/deps/vcflib @@ -1 +1 @@ -Subproject commit 4baaec94bdaee903b139544c4ff703198e5e6ab6 +Subproject commit c65f20626d9fe96633181c4ab90f07b5560ddf5a From f1b5f217d0f953c5c0e7929a193a27f730550dfa Mon Sep 17 00:00:00 2001 From: Adam Novak Date: Tue, 30 Jun 2026 16:54:50 -0400 Subject: [PATCH 06/14] Remember to count new tests --- test/t/02_vg_construct.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/t/02_vg_construct.t b/test/t/02_vg_construct.t index bef6e07679..94b3053488 100644 --- a/test/t/02_vg_construct.t +++ b/test/t/02_vg_construct.t @@ -7,7 +7,7 @@ PATH=../bin:$PATH # for vg export LC_ALL="C" # force a consistent sort order -plan tests 30 +plan tests 32 is $(vg construct -m 1000 -r small/x.fa -v small/x.vcf.gz | vg stats -z - | grep nodes | cut -f 2) 210 "construction produces the right number of nodes" From 0d674adf0670d06bc2de79d8d953fba0a5ac12de Mon Sep 17 00:00:00 2001 From: Adam Novak Date: Wed, 1 Jul 2026 07:10:27 -0700 Subject: [PATCH 07/14] Point vcflib at vgteam fork so our commits can be found --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 3892786a00..a3e2908554 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "vcflib"] path = deps/vcflib - url = https://github.com/vcflib/vcflib.git + url = https://github.com/vgteam/vcflib.git [submodule "gssw"] path = deps/gssw url = https://github.com/vgteam/gssw.git From 2077abe66d9ba159bd59fa0593066f6ff92324a3 Mon Sep 17 00:00:00 2001 From: Adam Novak Date: Wed, 1 Jul 2026 15:00:42 -0400 Subject: [PATCH 08/14] Use a vcflib that points at the vgteam fastahack repo for the submodule --- deps/vcflib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/vcflib b/deps/vcflib index c65f20626d..d43f5c41a2 160000 --- a/deps/vcflib +++ b/deps/vcflib @@ -1 +1 @@ -Subproject commit c65f20626d9fe96633181c4ab90f07b5560ddf5a +Subproject commit d43f5c41a2195e2fe4002795c6b865180791a94c From 03d31dab771e937a7d0d215c341a643386821f2d Mon Sep 17 00:00:00 2001 From: Adam Novak Date: Wed, 1 Jul 2026 15:45:10 -0400 Subject: [PATCH 09/14] See if fetch strategy for submodules is just broken --- .gitlab-ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index afeb0ea524..cbd01ec54b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -195,6 +195,9 @@ build-job: - docker buildx build --cache-from type=local,src=${HOME}/docker-cache/base --cache-from type=local,src=${HOME}/docker-cache/build --cache-from type=local,src=${HOME}/docker-cache/run --cache-to type=inline --platform="${PLATFORMS}" --build-arg THREADS=${THREADS} --target run -t ${CI_REPO}:${DOCKER_TAG} -f Dockerfile --push . variables: GIT_SUBMODULE_STRATEGY: recursive + # Work around + # See + GIT_STRATEGY: clone # The arm container build takes like 90 minutes, so we don't want to run it # before the main test phase where the other long tests live. @@ -243,6 +246,9 @@ production-build-job: # manage to hit a 6 hour timeout on our extremely slow emulators. variables: GIT_SUBMODULE_STRATEGY: recursive + # Work around + # See + GIT_STRATEGY: clone # We also run the toil-vg/pytest-based tests # Note that WE ONLY RUN TESTS LISTED IN vgci/test-list.txt From dd17f162b16d05269ba0af68c734926d3229bf13 Mon Sep 17 00:00:00 2001 From: Faith Okamoto <52177356+faithokamoto@users.noreply.github.com> Date: Wed, 1 Jul 2026 12:50:18 -0700 Subject: [PATCH 10/14] maybe mac doesn't like sed? --- test/t/02_vg_construct.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/t/02_vg_construct.t b/test/t/02_vg_construct.t index 94b3053488..47fe6a24db 100644 --- a/test/t/02_vg_construct.t +++ b/test/t/02_vg_construct.t @@ -122,7 +122,7 @@ rm -f tiny.vg vg construct -r small/x.fa -r small/x.fa > /dev/null is $? 1 "Names may not be duplicated across files" -sed "s/y/x/" small/xy.fa > xx.fa +cat small/x.fa small/x.fa > xx.fa vg construct -r xx.fa > /dev/null is $? 1 "Names may not be duplicated within a file" rm -f xx.fa From b493768c0d9f201de340f1d5c19283c3b54e7005 Mon Sep 17 00:00:00 2001 From: Adam Novak Date: Wed, 1 Jul 2026 18:13:49 -0400 Subject: [PATCH 11/14] Become increasingly paranoid about having the fastahack the repo says should be there --- Makefile | 11 +++++++++-- test/t/02_vg_construct.t | 8 ++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 98b3c238b5..85b5a78844 100644 --- a/Makefile +++ b/Makefile @@ -779,8 +779,15 @@ $(LIB_DIR)/libtabixpp.a: $(LIB_DIR)/libhts.a $(TABIXPP_DIR)/*.cpp $(TABIXPP_DIR) # try and use the latest installed Python over the default one that probably # has headers. $(LIB_DIR)/libvcflib%a $(LIB_DIR)/libwfa2%a: $(LIB_DIR)/libhts.a $(LIB_DIR)/libtabixpp.a $(VCFLIB_DIR)/src/*.cpp $(VCFLIB_DIR)/src/*.hpp $(VCFLIB_DIR)/contrib/*/*.cpp $(VCFLIB_DIR)/contrib/*/*.h $(LIB_DIR)/cleaned_old_catch - +rm -f $(VCFLIB_DIR)/contrib/WFA2-lib/VERSION - +cd $(VCFLIB_DIR) && rm -Rf build && mkdir build && cd build && PKG_CONFIG_PATH="$(CWD)/$(LIB_DIR)/pkgconfig:$(PKG_CONFIG_PATH)" cmake -DCMAKE_C_COMPILER="$(CC)" -DCMAKE_CXX_COMPILER="$(CXX)" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DZIG=OFF -DCMAKE_C_FLAGS="$(CFLAGS)" -DCMAKE_CXX_FLAGS="$(CXXFLAGS) ${CPPFLAGS}" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=$(CWD) -DCMAKE_PREFIX_PATH="/usr;$(OMP_PREFIXES)" -DPYTHON_EXECUTABLE="$(shell which python3)" .. && cmake --build . --target vcflib wfa2_static + # TODO: CI can't seem to check out the right commit here somehow. + +cd deps/vcflib && git rev-parse HEAD + +cd deps/vcflib/contrib/fastahack && git rev-parse HEAD + +if [[ $$(cd deps/vcflib/contrib/fastahack && git rev-parse HEAD) != "5b89a73915b28a1ea68ee45198e21666bd73522b" ]] ; then exit 1 ; fi + +cat deps/vcflib/contrib/fastahack/Fasta.cpp + +md5sum deps/vcflib/contrib/fastahack/Fasta.cpp | cut -f1 -d' ' + +if [[ $$(md5sum deps/vcflib/contrib/fastahack/Fasta.cpp | cut -f1 -d' ') != "94b657747ccf7627d3f75e405d367886" ]] ; then exit 1 ; fi + +rm -f $(VCFLIB_DIR)/contrib/WFA2-lib/VERSION $(VCFLIB_DIR)/contrib/*/*.o + +cd $(VCFLIB_DIR) && rm -Rf build && mkdir build && cd build && PKG_CONFIG_PATH="$(CWD)/$(LIB_DIR)/pkgconfig:$(PKG_CONFIG_PATH)" cmake -DCMAKE_C_COMPILER="$(CC)" -DCMAKE_CXX_COMPILER="$(CXX)" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DZIG=OFF -DCMAKE_C_FLAGS="$(CFLAGS)" -DCMAKE_CXX_FLAGS="$(CXXFLAGS) ${CPPFLAGS}" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=$(CWD) -DCMAKE_PREFIX_PATH="/usr;$(OMP_PREFIXES)" -DPYTHON_EXECUTABLE="$(shell which python3)" .. && cmake --clean-first --build . --target vcflib wfa2_static +cp $(VCFLIB_DIR)/contrib/filevercmp/*.h* $(INC_DIR) +cp $(VCFLIB_DIR)/contrib/fastahack/*.h* $(INC_DIR) +cp $(VCFLIB_DIR)/contrib/smithwaterman/*.h* $(INC_DIR) diff --git a/test/t/02_vg_construct.t b/test/t/02_vg_construct.t index 47fe6a24db..2721a8d201 100644 --- a/test/t/02_vg_construct.t +++ b/test/t/02_vg_construct.t @@ -7,7 +7,7 @@ PATH=../bin:$PATH # for vg export LC_ALL="C" # force a consistent sort order -plan tests 32 +plan tests 33 is $(vg construct -m 1000 -r small/x.fa -v small/x.vcf.gz | vg stats -z - | grep nodes | cut -f 2) 210 "construction produces the right number of nodes" @@ -122,7 +122,11 @@ rm -f tiny.vg vg construct -r small/x.fa -r small/x.fa > /dev/null is $? 1 "Names may not be duplicated across files" -cat small/x.fa small/x.fa > xx.fa +sed "s/y/x/" small/xy.fa > xx.fa vg construct -r xx.fa > /dev/null is $? 1 "Names may not be duplicated within a file" rm -f xx.fa + +strings $(which vg) >strings.txt +grep "\" appears multiple times" strings.txt +is $? 0 "Message string for multiple appearances in a single FASTA is in the vg binary" From 921bff50e06ec68c522080daadf233b267a85c24 Mon Sep 17 00:00:00 2001 From: Adam Novak Date: Wed, 1 Jul 2026 18:28:44 -0400 Subject: [PATCH 12/14] Split out clean --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 85b5a78844..e3f1294e51 100644 --- a/Makefile +++ b/Makefile @@ -787,7 +787,7 @@ $(LIB_DIR)/libvcflib%a $(LIB_DIR)/libwfa2%a: $(LIB_DIR)/libhts.a $(LIB_DIR)/libt +md5sum deps/vcflib/contrib/fastahack/Fasta.cpp | cut -f1 -d' ' +if [[ $$(md5sum deps/vcflib/contrib/fastahack/Fasta.cpp | cut -f1 -d' ') != "94b657747ccf7627d3f75e405d367886" ]] ; then exit 1 ; fi +rm -f $(VCFLIB_DIR)/contrib/WFA2-lib/VERSION $(VCFLIB_DIR)/contrib/*/*.o - +cd $(VCFLIB_DIR) && rm -Rf build && mkdir build && cd build && PKG_CONFIG_PATH="$(CWD)/$(LIB_DIR)/pkgconfig:$(PKG_CONFIG_PATH)" cmake -DCMAKE_C_COMPILER="$(CC)" -DCMAKE_CXX_COMPILER="$(CXX)" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DZIG=OFF -DCMAKE_C_FLAGS="$(CFLAGS)" -DCMAKE_CXX_FLAGS="$(CXXFLAGS) ${CPPFLAGS}" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=$(CWD) -DCMAKE_PREFIX_PATH="/usr;$(OMP_PREFIXES)" -DPYTHON_EXECUTABLE="$(shell which python3)" .. && cmake --clean-first --build . --target vcflib wfa2_static + +cd $(VCFLIB_DIR) && rm -Rf build && mkdir build && cd build && PKG_CONFIG_PATH="$(CWD)/$(LIB_DIR)/pkgconfig:$(PKG_CONFIG_PATH)" cmake -DCMAKE_C_COMPILER="$(CC)" -DCMAKE_CXX_COMPILER="$(CXX)" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DZIG=OFF -DCMAKE_C_FLAGS="$(CFLAGS)" -DCMAKE_CXX_FLAGS="$(CXXFLAGS) ${CPPFLAGS}" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=$(CWD) -DCMAKE_PREFIX_PATH="/usr;$(OMP_PREFIXES)" -DPYTHON_EXECUTABLE="$(shell which python3)" .. && cmake --build . --target clean && cmake --build . --target vcflib wfa2_static +cp $(VCFLIB_DIR)/contrib/filevercmp/*.h* $(INC_DIR) +cp $(VCFLIB_DIR)/contrib/fastahack/*.h* $(INC_DIR) +cp $(VCFLIB_DIR)/contrib/smithwaterman/*.h* $(INC_DIR) From a430f5df1df0a765e25177816a5c1dd55bdff2c1 Mon Sep 17 00:00:00 2001 From: Adam Novak Date: Wed, 1 Jul 2026 19:00:28 -0400 Subject: [PATCH 13/14] Make sure we're sure what's in the index actually being loaded --- test/t/02_vg_construct.t | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test/t/02_vg_construct.t b/test/t/02_vg_construct.t index 2721a8d201..8f0669ee68 100644 --- a/test/t/02_vg_construct.t +++ b/test/t/02_vg_construct.t @@ -122,10 +122,13 @@ rm -f tiny.vg vg construct -r small/x.fa -r small/x.fa > /dev/null is $? 1 "Names may not be duplicated across files" +rm -f xx.fa xx.fa.fai sed "s/y/x/" small/xy.fa > xx.fa vg construct -r xx.fa > /dev/null -is $? 1 "Names may not be duplicated within a file" -rm -f xx.fa +is $? 1 "Names may not be duplicated within an index" +cat xx.fa +cat xx.fa.fai +rm -f xx.fa xx.fa.fai strings $(which vg) >strings.txt grep "\" appears multiple times" strings.txt From aa7273c79f8ba3a348cab750d4af0e5e63b58bf8 Mon Sep 17 00:00:00 2001 From: Adam Novak Date: Wed, 1 Jul 2026 17:31:09 -0700 Subject: [PATCH 14/14] Use a fastahack that forbids both loading and making indexes with duplicate entries --- Makefile | 11 ++--------- deps/vcflib | 2 +- test/t/02_vg_construct.t | 14 +++++++------- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index e3f1294e51..98b3c238b5 100644 --- a/Makefile +++ b/Makefile @@ -779,15 +779,8 @@ $(LIB_DIR)/libtabixpp.a: $(LIB_DIR)/libhts.a $(TABIXPP_DIR)/*.cpp $(TABIXPP_DIR) # try and use the latest installed Python over the default one that probably # has headers. $(LIB_DIR)/libvcflib%a $(LIB_DIR)/libwfa2%a: $(LIB_DIR)/libhts.a $(LIB_DIR)/libtabixpp.a $(VCFLIB_DIR)/src/*.cpp $(VCFLIB_DIR)/src/*.hpp $(VCFLIB_DIR)/contrib/*/*.cpp $(VCFLIB_DIR)/contrib/*/*.h $(LIB_DIR)/cleaned_old_catch - # TODO: CI can't seem to check out the right commit here somehow. - +cd deps/vcflib && git rev-parse HEAD - +cd deps/vcflib/contrib/fastahack && git rev-parse HEAD - +if [[ $$(cd deps/vcflib/contrib/fastahack && git rev-parse HEAD) != "5b89a73915b28a1ea68ee45198e21666bd73522b" ]] ; then exit 1 ; fi - +cat deps/vcflib/contrib/fastahack/Fasta.cpp - +md5sum deps/vcflib/contrib/fastahack/Fasta.cpp | cut -f1 -d' ' - +if [[ $$(md5sum deps/vcflib/contrib/fastahack/Fasta.cpp | cut -f1 -d' ') != "94b657747ccf7627d3f75e405d367886" ]] ; then exit 1 ; fi - +rm -f $(VCFLIB_DIR)/contrib/WFA2-lib/VERSION $(VCFLIB_DIR)/contrib/*/*.o - +cd $(VCFLIB_DIR) && rm -Rf build && mkdir build && cd build && PKG_CONFIG_PATH="$(CWD)/$(LIB_DIR)/pkgconfig:$(PKG_CONFIG_PATH)" cmake -DCMAKE_C_COMPILER="$(CC)" -DCMAKE_CXX_COMPILER="$(CXX)" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DZIG=OFF -DCMAKE_C_FLAGS="$(CFLAGS)" -DCMAKE_CXX_FLAGS="$(CXXFLAGS) ${CPPFLAGS}" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=$(CWD) -DCMAKE_PREFIX_PATH="/usr;$(OMP_PREFIXES)" -DPYTHON_EXECUTABLE="$(shell which python3)" .. && cmake --build . --target clean && cmake --build . --target vcflib wfa2_static + +rm -f $(VCFLIB_DIR)/contrib/WFA2-lib/VERSION + +cd $(VCFLIB_DIR) && rm -Rf build && mkdir build && cd build && PKG_CONFIG_PATH="$(CWD)/$(LIB_DIR)/pkgconfig:$(PKG_CONFIG_PATH)" cmake -DCMAKE_C_COMPILER="$(CC)" -DCMAKE_CXX_COMPILER="$(CXX)" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DZIG=OFF -DCMAKE_C_FLAGS="$(CFLAGS)" -DCMAKE_CXX_FLAGS="$(CXXFLAGS) ${CPPFLAGS}" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=$(CWD) -DCMAKE_PREFIX_PATH="/usr;$(OMP_PREFIXES)" -DPYTHON_EXECUTABLE="$(shell which python3)" .. && cmake --build . --target vcflib wfa2_static +cp $(VCFLIB_DIR)/contrib/filevercmp/*.h* $(INC_DIR) +cp $(VCFLIB_DIR)/contrib/fastahack/*.h* $(INC_DIR) +cp $(VCFLIB_DIR)/contrib/smithwaterman/*.h* $(INC_DIR) diff --git a/deps/vcflib b/deps/vcflib index d43f5c41a2..81624a203e 160000 --- a/deps/vcflib +++ b/deps/vcflib @@ -1 +1 @@ -Subproject commit d43f5c41a2195e2fe4002795c6b865180791a94c +Subproject commit 81624a203ec372703c4731424995e246a504b0fe diff --git a/test/t/02_vg_construct.t b/test/t/02_vg_construct.t index 8f0669ee68..b7583c8a98 100644 --- a/test/t/02_vg_construct.t +++ b/test/t/02_vg_construct.t @@ -122,14 +122,14 @@ rm -f tiny.vg vg construct -r small/x.fa -r small/x.fa > /dev/null is $? 1 "Names may not be duplicated across files" -rm -f xx.fa xx.fa.fai sed "s/y/x/" small/xy.fa > xx.fa +samtools faidx xx.fa +# Samtools drops duplicate entries so we need to manually make an index with duplicates. +cat xx.fa.fai xx.fa.fai >xx.fa.fai2 +mv xx.fa.fai2 xx.fa.fai vg construct -r xx.fa > /dev/null is $? 1 "Names may not be duplicated within an index" -cat xx.fa -cat xx.fa.fai +rm -f xx.fa.fai +vg construct -r xx.fa > /dev/null +is $? 1 "Names may not be duplicated within an unindexed file" rm -f xx.fa xx.fa.fai - -strings $(which vg) >strings.txt -grep "\" appears multiple times" strings.txt -is $? 0 "Message string for multiple appearances in a single FASTA is in the vg binary"