Skip to content

Commit 2c9d745

Browse files
committed
Move clojure.clr.async.task to clojure.clr.async.task.alpha. Fix some tests.
1 parent 6204788 commit 2c9d745

File tree

4 files changed

+30
-40
lines changed

4 files changed

+30
-40
lines changed

Clojure/Clojure.Compile/Clojure.Compile.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
<Message Importance="high" Text="TargetCmdLine = '$(TargetCmdLine)'"/>
3939
<Exec Condition=" '$(TargetFramework)' == 'net462' OR '$(TargetFramework)' == 'net481'" Command="$(TargetCmdline) clojure.core clojure.core.protocols clojure.core.server clojure.core.reducers clojure.main clojure.set clojure.zip clojure.walk clojure.stacktrace clojure.template clojure.test clojure.test.tap clojure.test.junit clojure.pprint clojure.clr.io clojure.repl clojure.clr.shell clojure.string clojure.data clojure.reflect clojure.edn clojure.datafy clojure.instant clojure.uuid clojure.math clojure.clr.basis.impl clojure.clr.basis clojure.clr.process clojure.tools.deps.interop clojure.repl.deps" WorkingDirectory="$(OutDir)" />
4040
<Exec Condition=" '$(TargetFramework)' == 'net9.0' OR '$(TargetFramework)' == 'net10.0' OR '$(TargetFramework)' == 'net11.0'" Command="$(TargetCmdline) clojure.core clojure.core.protocols clojure.core.server clojure.core.reducers clojure.main clojure.set clojure.zip clojure.walk clojure.stacktrace clojure.template clojure.test clojure.test.tap clojure.test.junit clojure.pprint clojure.clr.io clojure.repl clojure.clr.shell clojure.string clojure.data clojure.reflect clojure.edn clojure.datafy clojure.instant clojure.uuid clojure.math clojure.clr.basis.impl clojure.clr.basis clojure.clr.process clojure.tools.deps.interop clojure.repl.deps" WorkingDirectory="$(OutDir)" />
41-
<Exec Condition=" '$(TargetFramework)' == 'net11.0'" Command="$(TargetCmdline) clojure.core clojure.core.protocols clojure.core.server clojure.core.reducers clojure.main clojure.set clojure.zip clojure.walk clojure.stacktrace clojure.template clojure.test clojure.test.tap clojure.test.junit clojure.pprint clojure.clr.io clojure.repl clojure.clr.shell clojure.string clojure.data clojure.reflect clojure.edn clojure.datafy clojure.instant clojure.uuid clojure.math clojure.clr.basis.impl clojure.clr.basis clojure.clr.process clojure.tools.deps.interop clojure.repl.deps clojure.clr.async.task" WorkingDirectory="$(OutDir)" />
41+
<Exec Condition=" '$(TargetFramework)' == 'net11.0'" Command="$(TargetCmdline) clojure.core clojure.core.protocols clojure.core.server clojure.core.reducers clojure.main clojure.set clojure.zip clojure.walk clojure.stacktrace clojure.template clojure.test clojure.test.tap clojure.test.junit clojure.pprint clojure.clr.io clojure.repl clojure.clr.shell clojure.string clojure.data clojure.reflect clojure.edn clojure.datafy clojure.instant clojure.uuid clojure.math clojure.clr.basis.impl clojure.clr.basis clojure.clr.process clojure.tools.deps.interop clojure.repl.deps clojure.clr.async.task.alpha" WorkingDirectory="$(OutDir)" />
4242

4343
<ItemGroup>
4444
<CljCoreBin Include="$(ProjectDir)$(OutDir)clojure*.dll" />

Clojure/Clojure.Source/Clojure.Source.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@
159159
</ItemGroup>
160160

161161
<ItemGroup>
162-
<None Update="clojure\clr\async\task.clj">
162+
<None Update="clojure\clr\async\task\alpha.clj">
163163
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
164164
</None>
165165
</ItemGroup>

Clojure/Clojure.Source/clojure/clr/async/task.clj renamed to Clojure/Clojure.Source/clojure/clr/async/task/alpha.clj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(ns clojure.clr.async.task
1+
(ns clojure.clr.async.task.alpha
22
"Task-based async/await interop for .NET 11+ runtime async.
33
Provides idiomatic Clojure wrappers around System.Threading.Tasks.Task."
44
(:refer-clojure :exclude [await])
@@ -42,7 +42,7 @@
4242
or an (async ...) block.
4343
4444
Usage:
45-
(require '[clojure.clr.async.task :as t])
45+
(require '[clojure.clr.async.task.alpha :as t])
4646
(t/await (.ReadAllTextAsync System.IO.File path))"
4747
[task-expr]
4848
`(await* ~task-expr))

Clojure/Clojure.Tests/clojure/test_clojure/clr/async/task.clj

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(ns clojure.test-clojure.clr.async.task
22
(:require [clojure.test :refer [deftest is testing]]
3-
[clojure.clr.async.task :as t])
3+
[clojure.clr.async.task.alpha :as t])
44
(:import [System.Threading.Tasks Task]))
55

66
(set! *warn-on-reflection* true)
@@ -46,41 +46,33 @@
4646
(is (t/task? task))
4747
(is (= 6 (t/result task))))))
4848

49-
;; ── Async tests (require .NET 11+ runtime async) ─────────────────────
49+
;; ── wait-XXX tests ─────────────────────
5050

51-
(deftest await-all-returns-results
51+
(deftest wait-all-results-returns-results
5252
(when async-supported?
53-
(testing "await-all returns array of results from multiple tasks"
54-
(let [result (t/result
55-
(t/async
56-
(vec (t/await (t/await-all
57-
[(t/->task "a")
58-
(t/->task "b")
59-
(t/->task "c")])))))]
53+
(testing "wait-all-results returns array of results from multiple tasks"
54+
(let [result (vec (t/wait-all-results [(t/->task "a")
55+
(t/->task "b")
56+
(t/->task "c")]))]
6057
(is (= ["a" "b" "c"] result))))))
6158

62-
(deftest await-all-with-async-work
63-
(when async-supported?
64-
(testing "await-all with tasks that actually do work"
65-
(let [result (t/result
66-
(t/async
67-
(let [tasks [(t/run (fn [] (System.Threading.Thread/Sleep 50) "a"))
68-
(t/run (fn [] (System.Threading.Thread/Sleep 50) "b"))
69-
(t/run (fn [] (System.Threading.Thread/Sleep 50) "c"))]
70-
results (t/await (t/await-all tasks))]
71-
(vec results))))]
72-
(is (= ["a" "b" "c"] result))))))
59+
(deftest wait-all-runs-all-tasks-to-completion
60+
(when async-supported?
61+
(testing "wait-all runs all tasks to completion"
62+
(let [tasks [(t/delay-task 100)
63+
(t/delay-task 200)
64+
(t/delay-task 300)]]
65+
(t/wait-all tasks)
66+
(is (every? #(.IsCompleted ^Task %) tasks))))))
7367

74-
(deftest await-any-returns-first
68+
69+
(deftest wait-any-returns-first-task
7570
(when async-supported?
76-
(testing "await-any returns the first completed task"
77-
(let [result (t/result
78-
(t/async
79-
(let [fast (t/->task "fast")
80-
slow (t/delay-task 5000)
81-
^Task winner (t/await (t/await-any [fast slow]))]
82-
(t/result winner))))]
83-
(is (= "fast" result))))))
71+
(testing "wait-any returns the first completed task"
72+
(let [fast (t/->task "fast")
73+
slow (t/delay-task 5000)
74+
^Task winner (t/wait-any [fast slow])]
75+
(is (= fast winner))))))
8476

8577
(deftest delay-task-waits
8678
(when async-supported?
@@ -105,12 +97,10 @@
10597
(deftest await-all-mixed-task-types
10698
(when async-supported?
10799
(testing "await-all works with Task<string> and other Task<T> types"
108-
(let [result (t/result
109-
(t/async
110-
(vec (t/await (t/await-all
111-
[(Task/FromResult (type-args String) "a")
112-
(t/->task "b")
113-
(Task/FromResult (type-args String) "c")])))))]
100+
(let [result (t/wait-all-results
101+
[(Task/FromResult (type-args String) "a")
102+
(t/->task "b")
103+
(Task/FromResult (type-args String) "c")])]
114104
(is (= ["a" "b" "c"] result))))))
115105

116106
(deftest result-blocks-until-complete

0 commit comments

Comments
 (0)