Simplifying.

This commit is contained in:
2026-08-09 14:42:54 +02:00
parent 43516e7715
commit 4689c56e4d
6 changed files with 201 additions and 126 deletions
+29 -19
View File
@@ -11,13 +11,13 @@
(lambda ()
(make-directory (build-path tmp "sub"))
(parameterize ([current-directory tmp])
(git init)
(git 'init)
(check-true (git-repository?))
(check-equal? (git-current-branch) "master")
(check-true (git-clean?))
(git config "user.name" "Racket Git Test")
(git config "user.email" "racket-git-test@example.invalid")
(git 'config "user.name" "Racket Git Test")
(git 'config "user.email" "racket-git-test@example.invalid")
(check-equal? (git-config "user.name") "Racket Git Test")
(call-with-output-file ".gitignore"
@@ -33,41 +33,51 @@
(check-equal? (git-status-lines)
'("?? .gitignore" "?? sub/hello.txt"))
(define status-output (open-output-string))
(define displayed-status
(parameterize ([current-output-port status-output])
(dgit 'status)))
(check-equal? displayed-status (git 'status))
(check-equal? (get-output-string status-output)
"New - .gitignore\nNew - sub/hello.txt\n")
(check-false (regexp-match? #rx"ignored[.]txt"
(get-output-string status-output)))
(parameterize ([current-directory (build-path tmp "sub")])
(git add "hello.txt"))
(git 'add "hello.txt"))
(check-equal? (git-status-lines)
'("?? .gitignore" "A sub/hello.txt"))
(git add ".gitignore")
(git 'add ".gitignore")
(define first (git-commit "initial commit"))
(check-equal? (string-length first) 40)
(check-true (git-clean?))
(git checkout -b "work")
(git 'checkout '-b "work")
(call-with-output-file (build-path "sub" "hello.txt")
#:exists 'truncate/replace
(lambda (out) (displayln "work" out)))
(git add)
(git commit "work change")
(git 'add)
(git 'commit "work change")
(check-equal? (file->string (build-path "sub" "hello.txt")) "work\n")
(git checkout "master")
(git 'checkout "master")
(check-equal? (file->string (build-path "sub" "hello.txt")) "hello\n")
(check-equal? (git-current-branch) "master")
(check-not-false (member "work" (git branch)))
(check-not-false (member "work" (git 'branch)))
(git branch -d "work")
(check-false (member "work" (git branch)))
(git 'branch '-d "work")
(check-false (member "work" (git 'branch)))
(define tag-id (git tag "v0.1"))
(define tag-id (git 'tag "v0.1"))
(check-equal? (string-length tag-id) 40)
(check-equal? (git tag) '("v0.1"))
(git checkout "v0.1")
(check-equal? (git 'tag) '("v0.1"))
(git 'checkout "v0.1")
(check-false (git-current-branch))
(git checkout "master")
(git tag -d "v0.1")
(check-equal? (git tag) '())
(git 'checkout "master")
(git 'tag '-d "v0.1")
(check-equal? (git 'tag) '())
(check-equal? (length (git log 10)) 1)))
(check-equal? (length (git 'log 10)) 1)))
(lambda ()
(delete-directory/files tmp)))
+23 -23
View File
@@ -10,8 +10,8 @@
(define b (build-path tmp "b"))
(define (configure!)
(git config "user.name" "Racket Git Test")
(git config "user.email" "racket-git-test@example.invalid"))
(git 'config "user.name" "Racket Git Test")
(git 'config "user.email" "racket-git-test@example.invalid"))
(dynamic-wind
void
@@ -20,17 +20,17 @@
(make-directory a)
(parameterize ([current-directory a])
(git init)
(git 'init)
(configure!)
(call-with-output-file "value.txt"
#:exists 'truncate/replace
(lambda (out) (displayln "one" out)))
(git add "value.txt")
(git commit "one")
(git remote add "origin" (path->string origin))
(check-equal? (git remote) '("origin"))
(check-equal? (git remote get-url "origin") (path->string origin))
(git push))
(git 'add "value.txt")
(git 'commit "one")
(git 'remote 'add "origin" (path->string origin))
(check-equal? (git 'remote) '("origin"))
(check-equal? (git 'remote 'get-url "origin") (path->string origin))
(git 'push))
(git-clone (path->string origin) b)
(parameterize ([current-directory b])
@@ -39,38 +39,38 @@
(call-with-output-file "value.txt"
#:exists 'truncate/replace
(lambda (out) (displayln "two" out)))
(git add "value.txt")
(git commit "two")
(git push)
(git tag "v2")
(git push-tag "v2"))
(git 'add "value.txt")
(git 'commit "two")
(git 'push)
(git 'tag "v2")
(git 'push-tag "v2"))
(parameterize ([current-directory a])
(check-equal? (file->string "value.txt") "one\n")
(check-equal? (string-length (git pull)) 40)
(check-equal? (string-length (git 'pull)) 40)
(check-equal? (file->string "value.txt") "two\n")
(check-true (git-clean?))
(git fetch)
(check-equal? (git tag) '("v2"))
(git 'fetch)
(check-equal? (git 'tag) '("v2"))
(call-with-output-file "local.txt"
#:exists 'truncate/replace
(lambda (out) (displayln "local" out)))
(git add "local.txt")
(git commit "local change"))
(git 'add "local.txt")
(git 'commit "local change"))
(parameterize ([current-directory b])
(call-with-output-file "remote.txt"
#:exists 'truncate/replace
(lambda (out) (displayln "remote" out)))
(git add "remote.txt")
(git commit "remote change")
(git push))
(git 'add "remote.txt")
(git 'commit "remote change")
(git 'push))
(parameterize ([current-directory a])
(define before (git-head))
(check-exn #rx"non-fast-forward"
(lambda () (git pull)))
(lambda () (git 'pull)))
(check-equal? (git-head) before)
(check-true (file-exists? "local.txt"))
(check-false (file-exists? "remote.txt"))))