Skip to content

Commit 573da04

Browse files
authored
Merge pull request #84 from codecrafters-io/CC-1716
Refactor file and directory operations, remove unused code
2 parents 3d25e8d + 75531af commit 573da04

19 files changed

+115
-297
lines changed

.github/workflows/test.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ jobs:
77
runs-on: ubuntu-latest
88
steps:
99
- name: Checkout
10-
uses: actions/checkout@v2
10+
uses: actions/checkout@v4
1111
- name: Set up Go
12-
uses: actions/setup-go@v1
12+
uses: actions/setup-go@v5
1313
with:
14-
go-version: 1.21.x
14+
go-version: 1.24.x
1515
- name: Set up Python
16-
uses: actions/setup-python@v1
16+
uses: actions/setup-python@v5
1717
with:
18-
python-version: '3.8'
18+
python-version: '3.12'
1919
- run: make test

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ test:
1414
go test -v ./internal/
1515

1616
test_with_git: build
17-
CODECRAFTERS_SUBMISSION_DIR=$(shell pwd)/internal/test_helpers/pass_all \
17+
CODECRAFTERS_REPOSITORY_DIR=$(shell pwd)/internal/test_helpers/pass_all \
1818
CODECRAFTERS_TEST_CASES_JSON='[{"slug":"gg4","tester_log_prefix":"stage-1","title":"Stage #1: Initialize the .git directory"},{"slug":"ic4","tester_log_prefix":"stage-2","title":"Stage #2: Read a blob object"},{"slug":"jt4","tester_log_prefix":"stage-3","title":"Stage #3: Create a blob object"},{"slug":"kp1","tester_log_prefix":"stage-4","title":"Stage #4: Read a tree object"},{"slug":"fe4","tester_log_prefix":"stage-5","title":"Stage #5: Write a tree object"},{"slug":"jm9","tester_log_prefix":"stage-6","title":"Stage #6: Create a commit"},{"slug":"mg6","tester_log_prefix":"stage-7","title":"Stage #7: Clone a repository"}]' \
19-
dist/main.out
19+
$(shell pwd)/dist/main.out
2020

2121
copy_course_file:
2222
hub api \

go.mod

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
module github.com/codecrafters-io/git-tester
22

3-
go 1.21
4-
5-
toolchain go1.22.1
3+
go 1.23
64

75
require (
86
github.com/codecrafters-io/tester-utils v0.2.38

internal/stage_clone_repository.go

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@ package internal
22

33
import (
44
"fmt"
5-
"io/ioutil"
6-
"math/rand"
5+
"os"
76
"path"
8-
"time"
97

8+
"github.com/codecrafters-io/tester-utils/random"
109
"github.com/codecrafters-io/tester-utils/test_case_harness"
1110

1211
"github.com/go-git/go-git/v5"
@@ -25,46 +24,46 @@ type TestRepo struct {
2524
}
2625

2726
func (r TestRepo) randomCommit() string {
28-
return r.exampleCommits[rand.Intn(len(r.exampleCommits))]
27+
return r.exampleCommits[random.RandomInt(0, len(r.exampleCommits))]
2928
}
3029

3130
func (r TestRepo) randomFile() TestFile {
32-
return r.exampleFiles[rand.Intn(len(r.exampleFiles))]
31+
return r.exampleFiles[random.RandomInt(0, len(r.exampleFiles))]
3332
}
3433

3534
var testRepos []TestRepo = []TestRepo{
36-
TestRepo{
35+
{
3736
url: "https://github.com/codecrafters-io/git-sample-1",
3837
exampleCommits: []string{
3938
"3b0466d22854e57bf9ad3ccf82008a2d3f199550",
4039
},
4140
exampleFiles: []TestFile{
42-
TestFile{
41+
{
4342
path: "scooby/dooby/doo",
4443
contents: "dooby yikes dumpty scooby monkey donkey horsey humpty vanilla doo",
4544
},
4645
},
4746
},
48-
TestRepo{
47+
{
4948
url: "https://github.com/codecrafters-io/git-sample-2",
5049
exampleCommits: []string{
5150
"b521b9179412d90a893bc36f33f5dcfd987105ef",
5251
},
5352
exampleFiles: []TestFile{
54-
TestFile{
53+
{
5554
path: "humpty/vanilla/yikes",
5655
contents: "scooby yikes dooby",
5756
},
5857
},
5958
},
60-
TestRepo{
59+
{
6160
url: "https://github.com/codecrafters-io/git-sample-3",
6261
exampleCommits: []string{
6362
"23f0bc3b5c7c3108e41c448f01a3db31e7064bbb",
6463
"b521b9179412d90a893bc36f33f5dcfd987105ef",
6564
},
6665
exampleFiles: []TestFile{
67-
TestFile{
66+
{
6867
path: "donkey/donkey/monkey",
6968
contents: "monkey humpty doo scooby dumpty donkey vanilla horsey dooby",
7069
},
@@ -73,17 +72,15 @@ var testRepos []TestRepo = []TestRepo{
7372
}
7473

7574
func randomRepo() TestRepo {
76-
rand.Seed(time.Now().UnixNano())
77-
return testRepos[rand.Intn(3)]
75+
index := random.RandomInt(0, len(testRepos))
76+
return testRepos[index]
7877
}
7978

8079
func testCloneRepository(harness *test_case_harness.TestCaseHarness) error {
81-
initRandom()
82-
8380
logger := harness.Logger
8481
executable := harness.Executable
8582

86-
tempDir, err := ioutil.TempDir("", "worktree")
83+
tempDir, err := os.MkdirTemp("", "worktree")
8784
if err != nil {
8885
return err
8986
}
@@ -128,7 +125,7 @@ func testCloneRepository(harness *test_case_harness.TestCaseHarness) error {
128125
testFile := testRepo.randomFile()
129126

130127
logger.Debugf("Reading contents of a sample file")
131-
bytes, err := ioutil.ReadFile(path.Join(repoDir, testFile.path))
128+
bytes, err := os.ReadFile(path.Join(repoDir, testFile.path))
132129
if err != nil {
133130
return err
134131
}

internal/stage_create_blob.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import (
1212
)
1313

1414
func testCreateBlob(harness *test_case_harness.TestCaseHarness) error {
15-
initRandom()
16-
1715
logger := harness.Logger
1816
executable := harness.Executable
1917

internal/stage_create_commit.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,23 @@ package internal
22

33
import (
44
"fmt"
5-
"io/ioutil"
5+
"os"
66
"path"
77
"strings"
88
"time"
99

10+
"github.com/codecrafters-io/tester-utils/random"
1011
"github.com/codecrafters-io/tester-utils/test_case_harness"
1112
"github.com/go-git/go-git/v5"
1213
"github.com/go-git/go-git/v5/plumbing"
1314
"github.com/go-git/go-git/v5/plumbing/object"
1415
)
1516

1617
func testCreateCommit(harness *test_case_harness.TestCaseHarness) error {
17-
initRandom()
18-
1918
logger := harness.Logger
2019
executable := harness.Executable
2120

22-
tempDir, err := ioutil.TempDir("", "worktree")
21+
tempDir, err := os.MkdirTemp("", "worktree")
2322
if err != nil {
2423
return err
2524
}
@@ -34,11 +33,11 @@ func testCreateCommit(harness *test_case_harness.TestCaseHarness) error {
3433
logger.Debugf("Creating some files & directories")
3534

3635
rootFile := "root.txt"
37-
firstLevel := randomStringsShort(3)
36+
firstLevel := random.RandomWords(3)
3837
rootFile, rootDir1, rootDir2 := firstLevel[0], firstLevel[1], firstLevel[2]
39-
secondLevel := randomStringsShort(2)
38+
secondLevel := random.RandomWords(2)
4039
rootDir1File1, rootDir1File2 := secondLevel[0], secondLevel[1]
41-
thirdLevel := randomStringsShort(2)
40+
thirdLevel := random.RandomWords(2)
4241
rootDir2File1, rootDir2File2 := thirdLevel[0], thirdLevel[1]
4342

4443
writeFile(tempDir, rootFile)
@@ -98,7 +97,7 @@ func testCreateCommit(harness *test_case_harness.TestCaseHarness) error {
9897

9998
treeSha := nextCommit.TreeHash.String()
10099

101-
commitMessage := randomString()
100+
commitMessage := random.RandomString()
102101
logger.Infof("$ ./%s commit-tree <tree_sha> -p <commit_sha> -m <message>", path.Base(executable.Path))
103102
result, err := executable.Run("commit-tree", treeSha, "-p", parentCommitSha, "-m", commitMessage)
104103
if err != nil {

internal/stage_helpers.go

Lines changed: 0 additions & 132 deletions
This file was deleted.

internal/stage_init.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,18 @@ package internal
22

33
import (
44
"fmt"
5-
"io/ioutil"
65
"os"
76
"path"
87

9-
logger "github.com/codecrafters-io/tester-utils/logger"
8+
"github.com/codecrafters-io/tester-utils/logger"
109
"github.com/codecrafters-io/tester-utils/test_case_harness"
1110
)
1211

1312
func testInit(harness *test_case_harness.TestCaseHarness) error {
14-
initRandom()
15-
1613
logger := harness.Logger
1714
executable := harness.Executable
1815

19-
tempDir, err := ioutil.TempDir("", "worktree")
16+
tempDir, err := os.MkdirTemp("", "worktree")
2017
if err != nil {
2118
return err
2219
}
@@ -55,7 +52,7 @@ func testInit(harness *test_case_harness.TestCaseHarness) error {
5552
}
5653

5754
func assertHeadFileContents(friendlyName string, path string) error {
58-
bytes, err := ioutil.ReadFile(path)
55+
bytes, err := os.ReadFile(path)
5956
if err != nil {
6057
return err
6158
}
@@ -102,7 +99,7 @@ func logDebugTree(logger *logger.Logger, dir string) {
10299
}
103100

104101
func doLogDebugTree(logger *logger.Logger, dir string, prefix string) {
105-
entries, err := ioutil.ReadDir(dir)
102+
entries, err := os.ReadDir(dir)
106103
if err != nil {
107104
panic(err)
108105
}

0 commit comments

Comments
 (0)