Skip to content
This repository has been archived by the owner on Aug 6, 2023. It is now read-only.

Commit

Permalink
Add failing tests first
Browse files Browse the repository at this point in the history
  • Loading branch information
kachick committed Jul 15, 2023
1 parent e4e11f2 commit 2e696ad
Show file tree
Hide file tree
Showing 8 changed files with 149 additions and 4 deletions.
84 changes: 80 additions & 4 deletions core_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"testing"
)

func TestGetCurrentVersion(t *testing.T) {
func TestGetCurrentVersionForFlakeNix(t *testing.T) {
cwd, err := os.Getwd()
if err != nil {
t.Fatalf("failed to get current working directory: %v", err)
Expand All @@ -16,7 +16,34 @@ func TestGetCurrentVersion(t *testing.T) {
t.Fatalf("failed to rollback working directory: %v", err)
}
})
err = os.Chdir("testdata")
err = os.Chdir("testdata/flake")
if err != nil {
t.Fatalf("failed to walk through testdata directory: %v", err)
}

got, err := GetCurrentVersion("flake.nix")
if err != nil {
t.Fatalf("Getting the version has been failed: %s", err.Error())
}
want := "e57b65abbbf7a2d5786acc86fdf56cde060ed026"

if got != want {
t.Errorf("got %q, wanted %q", got, want)
}
}

func TestGetCurrentVersionForDefaultNix(t *testing.T) {
cwd, err := os.Getwd()
if err != nil {
t.Fatalf("failed to get current working directory: %v", err)
}
t.Cleanup(func() {
err := os.Chdir(cwd)
if err != nil {
t.Fatalf("failed to rollback working directory: %v", err)
}
})
err = os.Chdir("testdata/classic")
if err != nil {
t.Fatalf("failed to walk through testdata directory: %v", err)
}
Expand All @@ -32,6 +59,28 @@ func TestGetCurrentVersion(t *testing.T) {
}
}

func TestGetCurrentVersionInEmptyDir(t *testing.T) {
cwd, err := os.Getwd()
if err != nil {
t.Fatalf("failed to get current working directory: %v", err)
}
t.Cleanup(func() {
err := os.Chdir(cwd)
if err != nil {
t.Fatalf("failed to rollback working directory: %v", err)
}
})
err = os.Chdir("testdata/nothing")
if err != nil {
t.Fatalf("failed to walk through testdata directory: %v", err)
}

_, err = GetCurrentVersion("default.nix")
if !os.IsNotExist(err) {
t.Errorf("returned unexpected error: %v", err)
}
}

// Calling actual GitHub API, May be necessary to stub or disabling in CI
func TestGetLastVersion(t *testing.T) {
got, err := GetLastVersion()
Expand All @@ -45,7 +94,7 @@ func TestGetLastVersion(t *testing.T) {
}
}

func TestTargetPath(t *testing.T) {
func TestClassicTargetPath(t *testing.T) {
cwd, err := os.Getwd()
if err != nil {
t.Fatalf("failed to get current working directory: %v", err)
Expand All @@ -56,7 +105,7 @@ func TestTargetPath(t *testing.T) {
t.Fatalf("failed to rollback working directory: %v", err)
}
})
err = os.Chdir("testdata")
err = os.Chdir("testdata/classic")
if err != nil {
t.Fatalf("failed to walk through testdata directory: %v", err)
}
Expand All @@ -71,3 +120,30 @@ func TestTargetPath(t *testing.T) {
t.Errorf("got %q, wanted %q", got, want)
}
}

func TestTargetPathMultipleCandidates(t *testing.T) {
cwd, err := os.Getwd()
if err != nil {
t.Fatalf("failed to get current working directory: %v", err)
}
t.Cleanup(func() {
err := os.Chdir(cwd)
if err != nil {
t.Fatalf("failed to rollback working directory: %v", err)
}
})
err = os.Chdir("testdata/classic/candidates")
if err != nil {
t.Fatalf("failed to walk through testdata directory: %v", err)
}

got, err := GetTargetPath()
if err != nil {
t.Fatalf("Failed to get target files: %s", err.Error())
}
want := "flake.nix"

if got != want {
t.Errorf("got %q, wanted %q", got, want)
}
}
File renamed without changes.
22 changes: 22 additions & 0 deletions testdata/candidates/flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/e57b65abbbf7a2d5786acc86fdf56cde060ed026";
flake-utils.url = "github:numtide/flake-utils";
};

outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
devShells.default = with pkgs;
mkShell {
buildInputs = [
go_1_20
go-task
goreleaser
];
};
});
}
7 changes: 7 additions & 0 deletions testdata/candidates/home.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{ config, pkgs, ... }:

{
# Home Manager needs a bit of information about you and the
# paths it should manage.
home.username = "kachick";
}
9 changes: 9 additions & 0 deletions testdata/candidates/shell.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{ pkgs ? import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/e57b65abbbf7a2d5786acc86fdf56cde060ed026.tar.gz") { } }:

pkgs.mkShell {
buildInputs = [
pkgs.go_1_20
pkgs.go-task
pkgs.goreleaser
];
}
9 changes: 9 additions & 0 deletions testdata/classic/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{ pkgs ? import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/e57b65abbbf7a2d5786acc86fdf56cde060ed026.tar.gz") { } }:

pkgs.mkShell {
buildInputs = [
pkgs.go_1_20
pkgs.go-task
pkgs.goreleaser
];
}
22 changes: 22 additions & 0 deletions testdata/flake/flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/e57b65abbbf7a2d5786acc86fdf56cde060ed026";
flake-utils.url = "github:numtide/flake-utils";
};

outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
devShells.default = with pkgs;
mkShell {
buildInputs = [
go_1_20
go-task
goreleaser
];
};
});
}
Empty file added testdata/nothing/.gitkeep
Empty file.

0 comments on commit 2e696ad

Please sign in to comment.