about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2025-03-12 17:01:24 +0100
committerRory& <root@rory.gay>2026-02-06 14:14:40 +0100
commite4485010db2947dccb0d96b14bf82e0c2001f609 (patch)
treeff65d9bedaef094c0d6fe44599cf466c0752f1e7
parentIncrease footer contrast (diff)
downloadcgit-magenta-e4485010db2947dccb0d96b14bf82e0c2001f609.tar.xz
Add test stack, fix git version in makefile
-rw-r--r--.gitignore1
-rwxr-xr-xtest.sh13
-rw-r--r--tests/nginx.conf113
3 files changed, 127 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore

index df496ce..02ff00c 100644 --- a/.gitignore +++ b/.gitignore
@@ -12,3 +12,4 @@ cgitrc.5.xml *.d .idea result +test_utils diff --git a/test.sh b/test.sh new file mode 100755
index 0000000..2dd3214 --- /dev/null +++ b/test.sh
@@ -0,0 +1,13 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i bash -p + +make all || exit 1 +#bozohttpd -c ./cgit -I 9000 . -f -V -C '' cgit -p . +mkdir test_utils +nix build nixpkgs#nginx --out-link test_utils/nginx +nix build nixpkgs#fcgiwrap --out-link test_utils/fcgiwrap +nix build nixpkgs#git --out-link test_utils/git + + +test_utils/fcgiwrap/bin/fcgiwrap -s unix:test_utils/fcgiwrap.sock -c 4 & +test_utils/nginx/bin/nginx -c $(pwd)/tests/nginx.conf -p $(pwd)/test_utils diff --git a/tests/nginx.conf b/tests/nginx.conf new file mode 100644
index 0000000..283362a --- /dev/null +++ b/tests/nginx.conf
@@ -0,0 +1,113 @@ +error_log stderr; +events { + #use kqueue; + worker_connections 512; +} +http { + # Load mime types and configure maximum size of the types hash tables. + include ../test_utils/nginx/conf/fastcgi.conf; + include ../test_utils/nginx/conf/uwsgi_params; + default_type application/octet-stream; + + # optimisation + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + proxy_redirect off; + proxy_connect_timeout 60s; + proxy_send_timeout 60s; + proxy_read_timeout 60s; + proxy_http_version 1.1; + # don't let clients close the keep-alive connection to upstream. See the nginx blog for details: + # https://www.nginx.com/blog/avoiding-top-10-nginx-configuration-mistakes/#no-keepalives + proxy_set_header "Connection" ""; + + + server { + listen 127.0.0.1:9001 ; + server_name localhost ; + http2 on; + root ../; + + location / { + #fastcgi_param CGIT_CONFIG "/nix/store/jn11qwy9fccfv28fj44i68qj5qwp4m0y-cgitrc"; + fastcgi_param CONTENT_LENGTH "$content_length"; + fastcgi_param CONTENT_TYPE "$content_type"; + fastcgi_param DOCUMENT_ROOT "$document_root"; + fastcgi_param DOCUMENT_URI "$document_uri"; + fastcgi_param GATEWAY_INTERFACE "CGI/1.1"; + fastcgi_param HTTPS "$https if_not_empty"; + fastcgi_param HTTP_HOST "$server_name"; + fastcgi_param QUERY_STRING "$args"; + fastcgi_param REDIRECT_STATUS "200"; + fastcgi_param REMOTE_ADDR "$remote_addr"; + fastcgi_param REMOTE_PORT "$remote_port"; + fastcgi_param REQUEST_METHOD "$request_method"; + fastcgi_param REQUEST_SCHEME "$scheme"; + fastcgi_param REQUEST_URI "$request_uri"; + fastcgi_param SCRIPT_FILENAME "./cgit"; + fastcgi_param SCRIPT_NAME "$fastcgi_script_name"; + fastcgi_param SERVER_ADDR "$server_addr"; + fastcgi_param SERVER_NAME "$server_name"; + fastcgi_param SERVER_PORT "$server_port"; + fastcgi_param SERVER_PROTOCOL "$server_protocol"; + fastcgi_param SERVER_SOFTWARE "nginx/$nginx_version"; + fastcgi_param PATH_INFO $uri; + fastcgi_pass unix:test_utils/fcgiwrap.sock; + } + #location = /cgit.css { + # alias ./cgit.css; + #} + #location = /cgit.png { + # alias ./cgit.png; + #} + #location = /favicon.ico { + # alias ./favicon.ico; + #} + #location = /robots.txt { + # alias ./robots.txt; + #} + location ~ /.+/(info/refs|git-upload-pack) { + fastcgi_param CONTENT_LENGTH "$content_length"; + fastcgi_param CONTENT_TYPE "$content_type"; + fastcgi_param DOCUMENT_ROOT "$document_root"; + fastcgi_param DOCUMENT_URI "$document_uri"; + fastcgi_param GATEWAY_INTERFACE "CGI/1.1"; + fastcgi_param GIT_HTTP_EXPORT_ALL "1"; + fastcgi_param GIT_PROJECT_ROOT "/data/git"; + fastcgi_param HOME "/data/git"; + fastcgi_param HTTPS "$https if_not_empty"; + fastcgi_param QUERY_STRING "$query_string"; + fastcgi_param REDIRECT_STATUS "200"; + fastcgi_param REMOTE_ADDR "$remote_addr"; + fastcgi_param REMOTE_PORT "$remote_port"; + fastcgi_param REQUEST_METHOD "$request_method"; + fastcgi_param REQUEST_SCHEME "$scheme"; + fastcgi_param REQUEST_URI "$request_uri"; + fastcgi_param SCRIPT_FILENAME "./test_utils/git/libexec/git-core/git-http-backend"; + fastcgi_param SCRIPT_NAME "$fastcgi_script_name"; + fastcgi_param SERVER_ADDR "$server_addr"; + fastcgi_param SERVER_NAME "$server_name"; + fastcgi_param SERVER_PORT "$server_port"; + fastcgi_param SERVER_PROTOCOL "$server_protocol"; + fastcgi_param SERVER_SOFTWARE "nginx/$nginx_version"; + fastcgi_param PATH_INFO $uri; + fastcgi_pass unix:/run/fcgiwrap-cgit-main.sock; + } + autoindex on; + more_set_headers 'Access-Control-Allow-Origin: *'; + more_set_headers 'Access-Control-Allow-Methods: GET, POST, OPTIONS'; + more_set_headers 'Access-Control-Allow-Headers: DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; + more_set_headers 'Access-Control-Expose-Headers: Content-Length,Content-Range'; + more_set_headers 'Access-Control-Allow-Credentials: true'; + } + + disable_symlinks off; + log_format combined_vhosts '$remote_addr - $remote_user [$time_local] {host="$host",server_name="$server_name",upstream=$upstream_addr,t=$request_time[u_conn=$upstream_connect_time,u_hdr=$upstream_header_time,u_resp=$upstream_response_time]} "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'; + access_log nginx-access.log combined_vhosts; +} +pid nginx.pid; +error_log nginx-error.log; +daemon off; +master_process off; \ No newline at end of file