Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Decide format and placement of versioning information #10

Closed
sshine opened this issue Aug 6, 2019 · 2 comments
Closed

Decide format and placement of versioning information #10

sshine opened this issue Aug 6, 2019 · 2 comments
Assignees
Labels
discussion Discussion of track policies

Comments

@sshine
Copy link
Contributor

sshine commented Aug 6, 2019

For #5 and #9 I've gone with set version 1.2.0.0 so that it can be extracted with:

tclsh <<< 'source test.tcl; puts $version'

and so that it is distributed with the handout files.

@glennj: In #9 you requested that .meta/version be used (instead / in addition?). Do you have an example of a track that uses .meta/version, and does this track have a mechanism for distributing it to the student? Or are you thinking ahead wrt. exercism/discussions#239?

As I understand, exercism/discussions#239 has not reached any consensus for a standard on the placement of such a version number; if this were .meta/version, @NobbZ who suggested it also said he'd have them in the Erlang dependency file.

@sshine sshine added the discussion Discussion of track policies label Aug 6, 2019
@glennj
Copy link
Contributor

glennj commented Aug 6, 2019

The bash track uses it, but it's not downloaded to the student.
However, I do agree that putting it into the test file is preferable, as it adds visibility.

@sshine
Copy link
Contributor Author

sshine commented Aug 6, 2019

The Haskell track has a 4th part to the version which gets bumped every time files that tests are updated. This means we can keep track of differences in tests when they don't reflect an update to canonical tests.

But since there is no consensus about the format of .meta/version in exercism/discussions#239 yet, we cannot really assume that a version like 1.2.0.0 can go into that file. Curious as to how many tracks that employ .meta/version:

all-tracks $ for d in *; do if [ -d $d ]; then echo -n "$d: "; find $d -name version | wc -l; fi; done | grep -vP ' 0$'
bash: 85
java: 99
kotlin: 58

Going over the discussion in exercism/discussions#239 again, I suspect that .meta/version with x.y.z in it is the right way to go, and additionally having set version x.y.z in test.tcl is also nice.

  • Add .meta/version to hello-world and two-fer (two-fer: Create exercise #9).
  • Add CI hook that fails if .meta/version is not in sync with set version ... of test.tcl.
  • Add CI hook that fails if changes are made to test.tcl and 4th component isn't bumped.

Update 1: Somewhere along the path of PRs for initial exercise implementations, we decided to omit the 4th component.

sshine added a commit that referenced this issue Aug 8, 2019
Since this is the only exercise besides hello-world, make it succeed it
on the core track. Since a model solution uses default parameters and
could focus on teaching them, list "arguments" as a covered topic.

Following the discussion in #10, we place the canonical test version in
both `.meta/version` (plainly) and in `test.tcl` (as `set version ...`).
@sshine sshine closed this as completed Sep 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Discussion of track policies
Projects
None yet
Development

No branches or pull requests

2 participants