annotate benchmark/benchmark_utils.jl @ 2015:5c2448d6a201 feature/grids/geometry_functions tip

Structure tests a bit more
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 09 May 2025 15:57:38 +0200
parents 9d708f3300d5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
1 import PkgBenchmark
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
2 import Markdown
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
3 import Mustache
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
4 import Dates
1172
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
6 import Diffinitive
1172
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
8 const diffinitive_root = splitpath(pathof(Diffinitive))[1:end-2] |> joinpath
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
9 const results_dir = mkpath(joinpath(diffinitive_root, "benchmark/results"))
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
10 const template_path = joinpath(diffinitive_root, "benchmark/result.tmpl")
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
11
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
12 """
1881
e1d64f4110bd Fix typos in benchmark_utils.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
13 main(;rev=nothing, target=nothing, baseline=nothing , kwargs...)
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
14
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
15 Calls `run_benchmark(args...; kwargs...)` and writes the results as an HTML
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
16 file in `benchmark/results`.
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
17
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
18 * If `rev` is set, the benchmarks are run for the given mercurial revision.
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
19 * If only `baseline` is set, the current working directory is compared with
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
20 the revision given in `baseline`.
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
21 * If both `target` and `baseline` is set those revision are compared.
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
22
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
23 For control over what happens to the benchmark result datastructure see the
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
24 different methods of [`run_benchmark`](@ref)
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
25 """
1536
5193e6cd6c6a Add optional name parameter for benchmark helper. Update benchmark manifest
Jonatan Werpers <jonatan@werpers.com>
parents: 1321
diff changeset
26 function main(;rev=nothing, target=nothing, baseline=nothing, name=nothing, kwargs...)
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
27 if !isnothing(rev)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
28 r = run_benchmark(rev; kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
29 elseif !isnothing(baseline)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
30 if isnothing(target)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
31 r = compare_benchmarks(baseline; kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
32 else
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
33 r = compare_benchmarks(target, baseline; kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
34 end
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
35 else
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
36 # Neither rev, or baseline were set => Run on current working directory.
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
37 r = run_benchmark(;kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
38 end
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
39
1536
5193e6cd6c6a Add optional name parameter for benchmark helper. Update benchmark manifest
Jonatan Werpers <jonatan@werpers.com>
parents: 1321
diff changeset
40 file_path = write_result_html(r; name)
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
41 open_in_default_browser(file_path)
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
42 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
43
1180
37f29a3a78dc Add some comments
Jonatan Werpers <jonatan@werpers.com>
parents: 1179
diff changeset
44
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
45 """
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
46 run_benchmark()
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
47
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
48 Run the benchmark suite for the current working directory and return a
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
49 `PkgBenchmark.BenchmarkResult`
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
50 """
1197
5e20c0815e07 Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents: 1192
diff changeset
51 function run_benchmark(;kwargs...)
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
52 r = PkgBenchmark.benchmarkpkg(Diffinitive; kwargs...)
1176
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
53
1315
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
54 rev = hg_rev() # Should be changed to hg_id() when the html can handle it.
1181
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
55
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
56 return add_rev_info(r, rev)
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
57 end
1176
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
58
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
59 """
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
60 run_benchmark(rev)
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
61
1305
7894d29ea8fa Improve docs for run_benchmark(rev)
Jonatan Werpers <jonatan@werpers.com>
parents: 1303
diff changeset
62 Updates the repository to the given revison and runs the benchmark suite. When
7894d29ea8fa Improve docs for run_benchmark(rev)
Jonatan Werpers <jonatan@werpers.com>
parents: 1303
diff changeset
63 done, reverts the repository to the original state. `rev` can be any
7894d29ea8fa Improve docs for run_benchmark(rev)
Jonatan Werpers <jonatan@werpers.com>
parents: 1303
diff changeset
64 identifier compatible with `hg update`.
1185
6fc0adcd5b97 Add info about supported rev identifiers
Jonatan Werpers <jonatan@werpers.com>
parents: 1184
diff changeset
65
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
66 Returns a `PkgBenchmark.BenchmarkResult`
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
67 """
1197
5e20c0815e07 Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents: 1192
diff changeset
68 function run_benchmark(rev; kwargs...)
1317
7110851b9c87 Change run_benchmark(rev) to use hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1315
diff changeset
69 return hg_at_revision(rev) do
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
70 run_benchmark(; kwargs...)
1317
7110851b9c87 Change run_benchmark(rev) to use hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1315
diff changeset
71 end
1181
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
72 end
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
73
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
74 """
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
75 compare_benchmarks(target, baseline, f=minimum; judgekwargs=Dict())
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
76
1318
e883085a091a Improve docstring for run_benchmark(target,baseline)
Jonatan Werpers <jonatan@werpers.com>
parents: 1317
diff changeset
77 Runs the benchmark at revisions `target` and `baseline` and compares them
e883085a091a Improve docstring for run_benchmark(target,baseline)
Jonatan Werpers <jonatan@werpers.com>
parents: 1317
diff changeset
78 using `PkgBenchmark.judge`. `f` is the function used to compare. `judgekwargs`
e883085a091a Improve docstring for run_benchmark(target,baseline)
Jonatan Werpers <jonatan@werpers.com>
parents: 1317
diff changeset
79 are keyword arguments passed to `judge`.
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
80
1185
6fc0adcd5b97 Add info about supported rev identifiers
Jonatan Werpers <jonatan@werpers.com>
parents: 1184
diff changeset
81 `target` and `baseline` can be any identifier compatible with `hg update`.
6fc0adcd5b97 Add info about supported rev identifiers
Jonatan Werpers <jonatan@werpers.com>
parents: 1184
diff changeset
82
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
83 Returns a `PkgBenchmark.BenchmarkJudgement`
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
84 """
1896
9d708f3300d5 Fix bug in benchmark_utils.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 1881
diff changeset
85 function compare_benchmarks(target, baseline; f=minimum, judgekwargs=Dict(), kwargs...)
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
86 t = run_benchmark(target; kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
87 b = run_benchmark(baseline; kwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
88
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
89 return PkgBenchmark.judge(t,b,f; judgekwargs...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
90 end
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
91
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
92 """
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
93 compare_benchmarks(baseline, ...)
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
94
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
95 Compare the results at the current working directory with the revision
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
96 specified in `baseline`.
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
97
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
98 Accepts the same arguments as the two revision version.
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
99 """
1896
9d708f3300d5 Fix bug in benchmark_utils.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 1881
diff changeset
100 function compare_benchmarks(baseline; f=minimum, judgekwargs=Dict(), kwargs...)
1197
5e20c0815e07 Pass kwargs from main() and run_benchmarks() to benchmarkpkg()
Jonatan Werpers <jonatan@werpers.com>
parents: 1192
diff changeset
101 t = run_benchmark(;kwargs...)
1320
6ae2ec4cef5a Rename functions for comparing benchmarks. Refactor their code. Allow comparing the current working directory
Jonatan Werpers <jonatan@werpers.com>
parents: 1319
diff changeset
102 b = run_benchmark(baseline; kwargs...)
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
103
1188
d2e73d7b417d Fix bug in runbenchmark(t,b)
Jonatan Werpers <jonatan@werpers.com>
parents: 1187
diff changeset
104 return PkgBenchmark.judge(t,b,f; judgekwargs...)
1184
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
105 end
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
106
c06d8eb8b0f0 Add docstrings, comparing version of run_benchmark, and allow main to call any version of run_benchmark
Jonatan Werpers <jonatan@werpers.com>
parents: 1183
diff changeset
107
1181
f49bac53e72b Factor out function for adding mercurial rev info
Jonatan Werpers <jonatan@werpers.com>
parents: 1180
diff changeset
108 function add_rev_info(benchmarkresult, rev)
1315
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
109 if endswith(rev,"+")
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
110 revstr = "+$rev" # Workaround for the bad presentation of BenchmarkResults.
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
111 else
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
112 revstr = rev
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
113 end
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
114
1176
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
115 return PkgBenchmark.BenchmarkResults(
1183
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
116 benchmarkresult.name,
1315
0551fd71682f Workaround for the display of revision in html
Jonatan Werpers <jonatan@werpers.com>
parents: 1313
diff changeset
117 revstr,
1183
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
118 benchmarkresult.benchmarkgroup,
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
119 benchmarkresult.date,
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
120 benchmarkresult.julia_commit,
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
121 benchmarkresult.vinfo,
aefe4b551901 Fix add_rev_info
Jonatan Werpers <jonatan@werpers.com>
parents: 1181
diff changeset
122 benchmarkresult.benchmarkconfig,
1176
27ee001df3e5 Make run_benchmark include hg info
Jonatan Werpers <jonatan@werpers.com>
parents: 1175
diff changeset
123 )
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
124 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
125
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
126
1177
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
127 function write_result_html(io, r)
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
128 iobuffer = IOBuffer()
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
129 PkgBenchmark.export_markdown(iobuffer, r)
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
130
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
131 parsed_md = Markdown.parse(String(take!(iobuffer)))
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
132 content = Markdown.html(parsed_md)
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
133
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
134 template = Mustache.load(template_path)
1177
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
135
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
136 dt = Dates.format(PkgBenchmark.date(r), "yyyy-mm-dd HH:MM:SS")
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
137 Mustache.render(io, template, Dict("title"=>dt, "content"=>content))
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
138 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
139
1536
5193e6cd6c6a Add optional name parameter for benchmark helper. Update benchmark manifest
Jonatan Werpers <jonatan@werpers.com>
parents: 1321
diff changeset
140 function write_result_html(r; name=nothing)
1179
d6038ceba882 Better file names för results
Jonatan Werpers <jonatan@werpers.com>
parents: 1178
diff changeset
141 dt = Dates.format(PkgBenchmark.date(r), "yyyy-mm-dd HHMMSS")
1536
5193e6cd6c6a Add optional name parameter for benchmark helper. Update benchmark manifest
Jonatan Werpers <jonatan@werpers.com>
parents: 1321
diff changeset
142
5193e6cd6c6a Add optional name parameter for benchmark helper. Update benchmark manifest
Jonatan Werpers <jonatan@werpers.com>
parents: 1321
diff changeset
143 if isnothing(name)
5193e6cd6c6a Add optional name parameter for benchmark helper. Update benchmark manifest
Jonatan Werpers <jonatan@werpers.com>
parents: 1321
diff changeset
144 file_path = joinpath(results_dir, dt*".html")
5193e6cd6c6a Add optional name parameter for benchmark helper. Update benchmark manifest
Jonatan Werpers <jonatan@werpers.com>
parents: 1321
diff changeset
145 else
5193e6cd6c6a Add optional name parameter for benchmark helper. Update benchmark manifest
Jonatan Werpers <jonatan@werpers.com>
parents: 1321
diff changeset
146 file_path = joinpath(results_dir, dt*" "*name*".html")
5193e6cd6c6a Add optional name parameter for benchmark helper. Update benchmark manifest
Jonatan Werpers <jonatan@werpers.com>
parents: 1321
diff changeset
147 end
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
148
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
149 open(file_path, "w") do io
1177
68445e87fa93 Use benchmark time field instead of now()
Jonatan Werpers <jonatan@werpers.com>
parents: 1176
diff changeset
150 write_result_html(io, r)
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
151 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
152
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
153 return file_path
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
154 end
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
155
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
156
1189
525015283843 Add the date function to BenchmarkJudment
Jonatan Werpers <jonatan@werpers.com>
parents: 1188
diff changeset
157 PkgBenchmark.date(j::PkgBenchmark.BenchmarkJudgement) = PkgBenchmark.date(PkgBenchmark.target_result(j))
525015283843 Add the date function to BenchmarkJudment
Jonatan Werpers <jonatan@werpers.com>
parents: 1188
diff changeset
158
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
159
1175
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
160 function hg_id()
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
161 cmd = Cmd(`hg id`, dir=diffinitive_root)
1175
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
162 return readchomp(addenv(cmd, "HGPLAIN"=>""))
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
163 end
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
164
1178
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
165 function hg_rev()
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
166 cmd = Cmd(`hg id -i`, dir=diffinitive_root)
1178
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
167 return readchomp(addenv(cmd, "HGPLAIN"=>""))
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
168 end
5c34dfc73b37 Add function for getting the hg rev id
Jonatan Werpers <jonatan@werpers.com>
parents: 1177
diff changeset
169
1175
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
170 function hg_update(rev)
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
171 cmd = Cmd(`hg update --check -r $rev`, dir=diffinitive_root)
1175
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
172 run(addenv(cmd, "HGPLAIN"=>""))
1308
a8e76daaf2ae Better return for hg_update()
Jonatan Werpers <jonatan@werpers.com>
parents: 1307
diff changeset
173
a8e76daaf2ae Better return for hg_update()
Jonatan Werpers <jonatan@werpers.com>
parents: 1307
diff changeset
174 return nothing
1175
a0ab801b62c2 Add some hg functions
Jonatan Werpers <jonatan@werpers.com>
parents: 1174
diff changeset
175 end
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
176
1307
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
177 """
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
178 hg_commit(msg; secret=false)
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
179
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
180 Make a hg commit with the provided message. If `secret` is true the commit is
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
181 in the secret phase stopping it from being pushed.
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
182 """
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
183 function hg_commit(msg; secret=false)
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
184 if secret
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
185 cmd = Cmd(`hg commit --verbose --secret --message $msg`, dir=diffinitive_root)
1307
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
186 else
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
187 cmd = Cmd(`hg commit --verbose --message $msg`, dir=diffinitive_root)
1307
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
188 end
27afd53511d4 Add flag to make commit secret in hg_commit()
Jonatan Werpers <jonatan@werpers.com>
parents: 1306
diff changeset
189
1303
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
190 out = readchomp(addenv(cmd, "HGPLAIN"=>""))
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
191
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
192 return only(match(r"committed changeset \d+:([0-9a-z]+)", out))
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
193 end
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
194
1310
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
195 """
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
196 hg_strip(rev; keep=false)
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
197
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
198 Strips the given commit from the repo. If `keep` is true, the changes of the
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
199 commit are kept in the working directory.
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
200 """
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
201 function hg_strip(rev; keep=false)
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
202 if keep
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
203 cmd = Cmd(`hg --config extensions.strip= strip --keep -r $rev`, dir=diffinitive_root)
1310
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
204 else
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
205 cmd = Cmd(`hg --config extensions.strip= strip -r $rev`, dir=diffinitive_root)
1310
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
206 end
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
207
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
208 run(addenv(cmd, "HGPLAIN"=>""))
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
209
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
210 return nothing
8754d0f06ce4 Add hg_strip()
Jonatan Werpers <jonatan@werpers.com>
parents: 1309
diff changeset
211 end
1311
5eb1d0ae0ac1 Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents: 1310
diff changeset
212
5eb1d0ae0ac1 Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents: 1310
diff changeset
213 """
5eb1d0ae0ac1 Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents: 1310
diff changeset
214 hg_is_dirty()
5eb1d0ae0ac1 Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents: 1310
diff changeset
215
5eb1d0ae0ac1 Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents: 1310
diff changeset
216 Return true if the repositopry has uncommited changes.
5eb1d0ae0ac1 Add docs for hg_is_dirty
Jonatan Werpers <jonatan@werpers.com>
parents: 1310
diff changeset
217 """
1303
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
218 function hg_is_dirty()
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1536
diff changeset
219 cmd = Cmd(`hg identify --id`, dir=diffinitive_root)
1303
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
220 out = readchomp(addenv(cmd, "HGPLAIN"=>""))
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
221
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
222 return endswith(out, "+")
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
223 end
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
224
1312
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
225 """
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
226 hg_at_revision(f, rev)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
227
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
228 Update the repository to the given revision and run the function `f`. After
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
229 `f` is run the working directory is restored. If there are uncommited changes
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
230 a temporary commit will be used to save the state of the working directory.
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
231 """
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
232 function hg_at_revision(f, rev)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
233 if hg_is_dirty()
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
234 hg_with_temporary_commit() do
1313
708dbfd5edb9 Make hg_at_revision() return the result of f
Jonatan Werpers <jonatan@werpers.com>
parents: 1312
diff changeset
235 return _hg_at_revision(f, rev)
1312
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
236 end
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
237 else
1313
708dbfd5edb9 Make hg_at_revision() return the result of f
Jonatan Werpers <jonatan@werpers.com>
parents: 1312
diff changeset
238 return _hg_at_revision(f, rev)
1312
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
239 end
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
240 end
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
241
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
242 function _hg_at_revision(f, rev)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
243 @assert !hg_is_dirty()
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
244
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
245 origin_rev = hg_rev()
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
246
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
247 hg_update(rev)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
248 try
1313
708dbfd5edb9 Make hg_at_revision() return the result of f
Jonatan Werpers <jonatan@werpers.com>
parents: 1312
diff changeset
249 return f()
1312
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
250 finally
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
251 hg_update(origin_rev)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
252 end
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
253 end
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
254
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
255 """
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
256 hg_with_temporary_commit(f)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
257
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
258 Run the function `f` after making a temporary commit with the current working
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
259 directory. After `f` has finished the working directory is restored to its
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
260 original state and the temporary commit stripped.
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
261 """
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
262 function hg_with_temporary_commit(f)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
263 @assert hg_is_dirty()
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
264
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
265 origin_rev = hg_commit("[Automatic commit by julia]",secret=true)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
266
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
267 try
1313
708dbfd5edb9 Make hg_at_revision() return the result of f
Jonatan Werpers <jonatan@werpers.com>
parents: 1312
diff changeset
268 return f()
1312
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
269 finally
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
270 hg_update(origin_rev)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
271 hg_strip(origin_rev; keep=true)
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
272 end
f7621dd600e4 Add hg_at_revision()
Jonatan Werpers <jonatan@werpers.com>
parents: 1311
diff changeset
273 end
1303
2d34290fdc58 Add functions for hg commit and checking if the repo is clean
Jonatan Werpers <jonatan@werpers.com>
parents: 1302
diff changeset
274
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
275
1172
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
276 # From Pluto.jl/src/webserver/WebServer.jl (2023-01-24)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
277 function open_in_default_browser(url::AbstractString)::Bool
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
278 try
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
279 if Sys.isapple()
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
280 Base.run(`open $url`)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
281 true
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
282 elseif Sys.iswindows() || detectwsl()
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
283 Base.run(`powershell.exe Start "'$url'"`)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
284 true
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
285 elseif Sys.islinux()
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
286 Base.run(`xdg-open $url`)
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
287 true
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
288 else
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
289 false
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
290 end
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
291 catch ex
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
292 false
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
293 end
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
294 end
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
295
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
296
1174
50c31500eb97 Clean up run_and_view
Jonatan Werpers <jonatan@werpers.com>
parents: 1172
diff changeset
297 main
1172
34446df5733f Add run_and_view script
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
298
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
299 # TODO: Better logging of what is happening
1191
12b525cd3da6 More todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
300 # TODO: Improve the workflow? How?
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
301
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
302 # TODO: Clean up the HTML output?
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
303 # TODO: Make the codeblocks in the table look nicer
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
304 # TODO: Change width of tables and code blocks so everything is visible
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
305 # TODO: Fix the commit id, it chops off all the important info
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
306 # TODO: Make title less verbose
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
307 # TBD: Do we have to replace export_markdown? Could use a template instead.
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
308
1319
cb4d57ce2ed1 Update todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1318
diff changeset
309 # Should be able to run the current benchmark script at a different revision.
1321
42738616422e Add todo
Jonatan Werpers <jonatan@werpers.com>
parents: 1320
diff changeset
310 # Should have a way to filter the benchmark suite
1190
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
311
1aca445216b8 Clean up todos
Jonatan Werpers <jonatan@werpers.com>
parents: 1189
diff changeset
312 # TBD: What parts are PkgBenchmark contributing? Can it be stripped out?
1306
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
313
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
314
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
315 ## Catching the exit code and errors from a command can be done with code similar to
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
316 # proc = open(cmd)
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
317 # if success(proc)
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
318
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
319 # else
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
320
c14370f7c731 Add note about how to hande command exit
Jonatan Werpers <jonatan@werpers.com>
parents: 1305
diff changeset
321 # end