From f34f78480318cf4ea74268baa8e0ce2c65298c55 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Thu, 16 Jul 2020 13:47:42 -0400 Subject: [PATCH] Add "timed out?" column to diff output. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- diff.go | 4 ++-- diff_test.go | 6 +++--- hgvs/diff.go | 11 ++++++++--- hgvs/diff_test.go | 3 ++- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/diff.go b/diff.go index 2740104cf8..f1440cef19 100644 --- a/diff.go +++ b/diff.go @@ -64,14 +64,14 @@ func (cmd *diffFasta) RunCommand(prog string, args []string, stdin io.Reader, st } } - variants := hgvs.Diff(string(fasta[0]), string(fasta[1]), *timeout) + variants, timedOut := hgvs.Diff(string(fasta[0]), string(fasta[1]), *timeout) if *offset != 0 { for i := range variants { variants[i].Position += *offset } } for _, v := range variants { - fmt.Fprintf(stdout, "%s:g.%s\t%s\t%d\t%s\t%s\n", *sequence, v.String(), *sequence, v.Position, v.Ref, v.New) + fmt.Fprintf(stdout, "%s:g.%s\t%s\t%d\t%s\t%s\t%v\n", *sequence, v.String(), *sequence, v.Position, v.Ref, v.New, timedOut) } return 0 } diff --git a/diff_test.go b/diff_test.go index 622d6c47ec..00c5f0c598 100644 --- a/diff_test.go +++ b/diff_test.go @@ -26,8 +26,8 @@ func (s *diffSuite) TestDiff(c *check.C) { exited := (&diffFasta{}).RunCommand("diff-fasta", []string{"-sequence", "chr2", "-offset", "1000", tempdir + "/f1.fa", tempdir + "/f2.fa"}, nil, &output, os.Stderr) c.Check(exited, check.Equals, 0) c.Check("\n"+output.String(), check.Equals, ` -chr2:g.1008C>G chr2 1008 C G -chr2:g.1028_1029delinsTT chr2 1028 AA TT -chr2:g.1032_1033insA chr2 1033 A +chr2:g.1008C>G chr2 1008 C G false +chr2:g.1028_1029delinsTT chr2 1028 AA TT false +chr2:g.1032_1033insA chr2 1033 A false `) } diff --git a/hgvs/diff.go b/hgvs/diff.go index 7808259869..a6366eb36f 100644 --- a/hgvs/diff.go +++ b/hgvs/diff.go @@ -30,13 +30,18 @@ func (v *Variant) String() string { } } -func Diff(a, b string, timeout time.Duration) []Variant { +func Diff(a, b string, timeout time.Duration) ([]Variant, bool) { dmp := diffmatchpatch.New() var deadline time.Time if timeout > 0 { deadline = time.Now().Add(timeout) } - diffs := cleanup(dmp.DiffCleanupEfficiency(dmp.DiffBisect(a, b, deadline))) + diffs := dmp.DiffBisect(a, b, deadline) + timedOut := false + if timeout > 0 && time.Now().After(deadline) { + timedOut = true + } + diffs = cleanup(dmp.DiffCleanupEfficiency(diffs)) pos := 1 var variants []Variant for i := 0; i < len(diffs); i++ { @@ -64,7 +69,7 @@ func Diff(a, b string, timeout time.Duration) []Variant { } } } - return variants + return variants, timedOut } func cleanup(in []diffmatchpatch.Diff) (out []diffmatchpatch.Diff) { diff --git a/hgvs/diff_test.go b/hgvs/diff_test.go index 9c04ea75b6..48360efd54 100644 --- a/hgvs/diff_test.go +++ b/hgvs/diff_test.go @@ -61,7 +61,8 @@ func (s *diffSuite) TestDiff(c *check.C) { } { c.Log(trial) var vars []string - for _, v := range Diff(trial.a, trial.b, 0) { + diffs, _ := Diff(trial.a, trial.b, 0) + for _, v := range diffs { vars = append(vars, v.String()) } c.Check(vars, check.DeepEquals, trial.expect) -- 2.30.2