From f9dd4e9b68dfdf7d943c17665a4afd22fb5ea09a Mon Sep 17 00:00:00 2001 From: Boming Zhang Date: Mon, 20 May 2024 17:50:53 -0400 Subject: [PATCH] feat: new test dir --- .gitignore | 1 + Makefile | 1 + cmd/joj3/main_test.go | 2 +- examples/dummy/error | 2 +- examples/dummy/success | 2 +- scripts/prepare_test_repos.sh | 31 +++++++++++++++++++++++++++++++ 6 files changed, 36 insertions(+), 3 deletions(-) create mode 100755 scripts/prepare_test_repos.sh diff --git a/.gitignore b/.gitignore index 60874eb..4c5caca 100644 --- a/.gitignore +++ b/.gitignore @@ -124,3 +124,4 @@ $RECYCLE.BIN/ build/ !examples/**/*.out +tmp/ diff --git a/Makefile b/Makefile index 5dace32..d5ba0a4 100644 --- a/Makefile +++ b/Makefile @@ -15,4 +15,5 @@ prepare-test: git submodule update --init --remote test: + ./scripts/prepare_test_repos.sh go test -coverprofile cover.out -v ./... diff --git a/cmd/joj3/main_test.go b/cmd/joj3/main_test.go index 2169197..22cbb78 100644 --- a/cmd/joj3/main_test.go +++ b/cmd/joj3/main_test.go @@ -63,7 +63,7 @@ func readStageResults(t *testing.T, path string) []stage.StageResult { func TestMain(t *testing.T) { var tests []string - root := "../../examples/" + root := "../../tmp/submodules/JOJ3-examples" err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { if err != nil { return err diff --git a/examples/dummy/error b/examples/dummy/error index 3ebebbc..6cbfd9f 160000 --- a/examples/dummy/error +++ b/examples/dummy/error @@ -1 +1 @@ -Subproject commit 3ebebbc913534fb4c4598d3ed313d1bb3ff29020 +Subproject commit 6cbfd9ff1ea95cd5c6c5f832e99cda6f9f2ea851 diff --git a/examples/dummy/success b/examples/dummy/success index 4bca6f0..b1afead 160000 --- a/examples/dummy/success +++ b/examples/dummy/success @@ -1 +1 @@ -Subproject commit 4bca6f0e4b5e263532b8410afecca615e90524e9 +Subproject commit b1afead762d2b2704823af83847c9155c6a1422b diff --git a/scripts/prepare_test_repos.sh b/scripts/prepare_test_repos.sh new file mode 100755 index 0000000..5efa0ae --- /dev/null +++ b/scripts/prepare_test_repos.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -ex +declare -A repo_names +tmp_dir="./tmp" +submodules_dir="$tmp_dir/submodules" +rm -rf $submodules_dir +mkdir -p $submodules_dir +submodules=$(git config --file .gitmodules --get-regexp path | awk '{ print $2 }') +for submodule in $submodules; do + url=$(git config --file .gitmodules --get-regexp "submodule.$submodule.url" | awk '{ print $2 }') + repo_name=$(echo $url | rev | cut -d'/' -f 1 | rev | cut -d'.' -f 1) + commit=$(git submodule status $submodule | awk '{ print $1 }' | sed 's/^[+-]//') + repo_dir="$tmp_dir/$repo_name" + if [[ ! -v repo_names["$repo_name"] ]]; then + if [ ! -d "$repo_dir" ]; then + git clone $url $repo_dir + else + cd $repo_dir + git fetch --all + cd - + fi + fi + repo_names[$repo_name]=1 + cd $repo_dir + git checkout -q $commit + cd - + submodule_dir="$submodules_dir/$repo_name/$submodule" + mkdir -p $submodule_dir + cp -rT $repo_dir $submodule_dir +done